Version 1.16.0-dev.3.0

Merge commit 'ba608694b7aa481b8e62f6aeb22ee388646b4f0b' into dev
diff --git a/.gitignore b/.gitignore
index eaa131d..e66367d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -75,6 +75,7 @@
 *.rej
 
 # Generated files.
+tools/dartium/out
 tools/out
 tools/xcodebuild
 editor/util/testing/mac/CodeLab.suite/Results
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 10c8136..3e3bef8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 ## 1.16.0
 
+### Core library changes
+
+* `dart:core`
+  * Fixed DateTime implementation in the VM (issue #19923), but no API change.
+
 ### Analyzer
 
 *   Static checking of `for in` statements. These will now produce static
diff --git a/DEPS b/DEPS
index 8e35a96..a696162 100644
--- a/DEPS
+++ b/DEPS
@@ -76,7 +76,7 @@
   "pub_semver_tag": "@1.2.1",
   "quiver_tag": "@0.21.4",
   "resource_rev":"@a49101ba2deb29c728acba6fb86000a8f730f4b1",
-  "root_certificates_rev": "@c3a41df63afacec62fcb8135196177e35fe72f71",
+  "root_certificates_rev": "@aed07942ce98507d2be28cbd29e879525410c7fc",
   "scheduled_test_tag": "@0.12.5+2",
   "shelf_tag": "@0.6.5",
   "smoke_rev" : "@f3361191cc2a85ebc1e4d4c33aec672d7915aba9",
@@ -97,7 +97,7 @@
   "watcher_tag": "@0.9.7",
   "when_tag": "@0.2.0+2",
   "which_tag": "@0.1.3+1",
-  "web_components_rev": "@0e636b534d9b12c9e96f841e6679398e91a986ec",
+  "web_components_rev": "@6349e09f9118dce7ae1b309af5763745e25a9d61",
   "web_socket_channel_tag": "@1.0.0",
   "WebCore_rev": "@a86fe28efadcfc781f836037a80f27e22a5dad17",
   "yaml_tag": "@2.1.5",
diff --git a/pkg/analysis_server/benchmark/integration/instrumentation_input_converter.dart b/pkg/analysis_server/benchmark/integration/instrumentation_input_converter.dart
index a43d4b4..1bbd728 100644
--- a/pkg/analysis_server/benchmark/integration/instrumentation_input_converter.dart
+++ b/pkg/analysis_server/benchmark/integration/instrumentation_input_converter.dart
@@ -6,8 +6,8 @@
 
 import 'dart:convert';
 
-import 'package:analyzer/src/generated/java_engine.dart';
 import 'package:analyzer/instrumentation/instrumentation.dart';
+import 'package:analyzer/src/generated/java_engine.dart';
 import 'package:logging/logging.dart';
 
 import 'input_converter.dart';
diff --git a/pkg/analysis_server/benchmark/integration/local_runner.dart b/pkg/analysis_server/benchmark/integration/local_runner.dart
index bd0ff6b..c355ed8 100644
--- a/pkg/analysis_server/benchmark/integration/local_runner.dart
+++ b/pkg/analysis_server/benchmark/integration/local_runner.dart
@@ -3,7 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:io';
+
 import 'package:path/path.dart';
+
 import 'main.dart' as performance;
 
 // Local driver for performance measurement
@@ -15,8 +17,8 @@
   if (args.length < 3) printHelp('Expected 3 arguments');
   var gitDir = new Directory(args[0]);
   if (!gitDir.existsSync()) printHelp('${gitDir.path} does not exist');
-  if (!new Directory(join(gitDir.path, '.git')).existsSync()) printHelp(
-      '${gitDir.path} does not appear to be a local git repository');
+  if (!new Directory(join(gitDir.path, '.git')).existsSync())
+    printHelp('${gitDir.path} does not appear to be a local git repository');
   var branch = args[1];
   var inputFile = new File(args[2]);
   if (!inputFile.existsSync()) printHelp('${inputFile.path} does not exist');
diff --git a/pkg/analysis_server/benchmark/integration/log_file_input_converter.dart b/pkg/analysis_server/benchmark/integration/log_file_input_converter.dart
index 0781bae..ba98b3b 100644
--- a/pkg/analysis_server/benchmark/integration/log_file_input_converter.dart
+++ b/pkg/analysis_server/benchmark/integration/log_file_input_converter.dart
@@ -13,9 +13,9 @@
 import 'operation.dart';
 
 const CONNECTED_MSG_FRAGMENT = ' <= {"event":"server.connected"';
-final int NINE = '9'.codeUnitAt(0);
 const RECEIVED_FRAGMENT = ' <= {';
 const SENT_FRAGMENT = ' => {';
+final int NINE = '9'.codeUnitAt(0);
 final int ZERO = '0'.codeUnitAt(0);
 
 /**
diff --git a/pkg/analysis_server/benchmark/perf/completion_timing_tests.dart b/pkg/analysis_server/benchmark/perf/completion_timing_tests.dart
index a36a54a..7b9829a 100644
--- a/pkg/analysis_server/benchmark/perf/completion_timing_tests.dart
+++ b/pkg/analysis_server/benchmark/perf/completion_timing_tests.dart
@@ -33,13 +33,13 @@
   Future.wait([new CompletionTimingTest().test_timing()]);
 }
 
+const COMPLETION_OFFSET = 'offset';
 const PRIORITY_FILE_OPTION = 'priority';
 const SOURCE_OPTION = 'source';
-const COMPLETION_OFFSET = 'offset';
 
+int offset;
 String priorityFile;
 String source;
-int offset;
 
 ArgParser _createArgParser() => new ArgParser()
   ..addOption(SOURCE_OPTION, help: 'full path to source directory for analysis')
diff --git a/pkg/analysis_server/benchmark/perf/performance_tests.dart b/pkg/analysis_server/benchmark/perf/performance_tests.dart
index 62a752c..b784c0c 100644
--- a/pkg/analysis_server/benchmark/perf/performance_tests.dart
+++ b/pkg/analysis_server/benchmark/perf/performance_tests.dart
@@ -56,6 +56,11 @@
   }
 
   /**
+   * After every test, the server is stopped.
+   */
+  Future shutdown() async => await shutdownIfNeeded();
+
+  /**
    * Enable [SERVER_STATUS] notifications so that [analysisFinished]
    * can be used.
    */
@@ -64,11 +69,6 @@
     futures.add(sendServerSetSubscriptions([ServerService.STATUS]));
     return Future.wait(futures);
   }
-
-  /**
-   * After every test, the server is stopped.
-   */
-  Future shutdown() async => await shutdownIfNeeded();
 }
 
 class AbstractTimingTest extends AbstractAnalysisServerPerformanceTest {
diff --git a/pkg/analysis_server/lib/plugin/edit/assist/assist_core.dart b/pkg/analysis_server/lib/plugin/edit/assist/assist_core.dart
index 14bdcb3..c216260 100644
--- a/pkg/analysis_server/lib/plugin/edit/assist/assist_core.dart
+++ b/pkg/analysis_server/lib/plugin/edit/assist/assist_core.dart
@@ -26,9 +26,9 @@
    * A comparator that can be used to sort assists by their relevance. The most
    * relevant assists will be sorted before assists with a lower relevance.
    */
-  static final Comparator<Assist> SORT_BY_RELEVANCE = (Assist firstAssist,
-          Assist secondAssist) =>
-      firstAssist.kind.relevance - secondAssist.kind.relevance;
+  static final Comparator<Assist> SORT_BY_RELEVANCE =
+      (Assist firstAssist, Assist secondAssist) =>
+          firstAssist.kind.relevance - secondAssist.kind.relevance;
 
   /**
    * A description of the assist being proposed.
diff --git a/pkg/analysis_server/lib/plugin/edit/fix/fix_core.dart b/pkg/analysis_server/lib/plugin/edit/fix/fix_core.dart
index 0ff626f..aaf2c00 100644
--- a/pkg/analysis_server/lib/plugin/edit/fix/fix_core.dart
+++ b/pkg/analysis_server/lib/plugin/edit/fix/fix_core.dart
@@ -27,9 +27,9 @@
    * A comparator that can be used to sort fixes by their relevance. The most
    * relevant fixes will be sorted before fixes with a lower relevance.
    */
-  static final Comparator<Fix> SORT_BY_RELEVANCE = (Fix firstFix,
-          Fix secondFix) =>
-      firstFix.kind.relevance - secondFix.kind.relevance;
+  static final Comparator<Fix> SORT_BY_RELEVANCE =
+      (Fix firstFix, Fix secondFix) =>
+          firstFix.kind.relevance - secondFix.kind.relevance;
 
   /**
    * A description of the fix being proposed.
diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
index 4e5036d..101348b 100644
--- a/pkg/analysis_server/lib/src/analysis_server.dart
+++ b/pkg/analysis_server/lib/src/analysis_server.dart
@@ -1471,6 +1471,16 @@
     onContextsChanged.listen((ContextsChangedEvent event) {
       for (AnalysisContext context in event.added) {
         context
+            .onResultChanged(RESOLVED_UNIT2)
+            .listen((ResultChangedEvent event) {
+          if (event.wasComputed) {
+            Object value = event.value;
+            if (value is CompilationUnit) {
+              index.indexDeclarations(value);
+            }
+          }
+        });
+        context
             .onResultChanged(RESOLVED_UNIT)
             .listen((ResultChangedEvent event) {
           if (event.wasInvalidated) {
diff --git a/pkg/analysis_server/lib/src/computer/computer_overrides.dart b/pkg/analysis_server/lib/src/computer/computer_overrides.dart
index e174b7d..018999a 100644
--- a/pkg/analysis_server/lib/src/computer/computer_overrides.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_overrides.dart
@@ -6,9 +6,9 @@
 
 import 'package:analysis_server/src/collections.dart';
 import 'package:analysis_server/src/protocol_server.dart' as proto;
+import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/dart/ast/ast.dart';
 
 /**
  * Return the elements that the given [element] overrides.
diff --git a/pkg/analysis_server/lib/src/constants.dart b/pkg/analysis_server/lib/src/constants.dart
index 0d90251..5054f7b 100644
--- a/pkg/analysis_server/lib/src/constants.dart
+++ b/pkg/analysis_server/lib/src/constants.dart
@@ -7,137 +7,124 @@
 //
 // Server methods
 //
-const String SERVER_GET_VERSION = 'server.getVersion';
-const String SERVER_SHUTDOWN = 'server.shutdown';
-const String SERVER_SET_SUBSCRIPTIONS = 'server.setSubscriptions';
+const String ADD = 'add';
+const String ADDED = 'added';
+const String ANALYSIS_ANALYZED_FILES = 'analysis.analyzedFiles';
 
 //
 // Server notifications
 //
-const String SERVER_CONNECTED = 'server.connected';
-const String SERVER_ERROR = 'server.error';
-const String SERVER_STATUS = 'server.status';
+const String ANALYSIS_ERRORS = 'analysis.errors';
+const String ANALYSIS_GET_ERRORS = 'analysis.getErrors';
+const String ANALYSIS_GET_HOVER = 'analysis.getHover';
 
 //
 // Analysis methods
 //
-const String ANALYSIS_GET_ERRORS = 'analysis.getErrors';
-const String ANALYSIS_GET_HOVER = 'analysis.getHover';
 const String ANALYSIS_GET_LIBRARY_DEPENDENCIES =
     'analysis.getLibraryDependencies';
 const String ANALYSIS_GET_NAVIGATION = 'analysis.getNavigation';
 const String ANALYSIS_GET_REACHABLE_SOURCES = 'analysis.getReachableSources';
-const String ANALYSIS_REANALYZE = 'analysis.reanalyze';
-const String ANALYSIS_SET_ANALYSIS_ROOTS = 'analysis.setAnalysisRoots';
-const String ANALYSIS_SET_GENERAL_SUBSCRIPTIONS =
-    'analysis.setGeneralSubscriptions';
-const String ANALYSIS_SET_PRIORITY_FILES = 'analysis.setPriorityFiles';
-const String ANALYSIS_SET_SUBSCRIPTIONS = 'analysis.setSubscriptions';
-const String ANALYSIS_UPDATE_CONTENT = 'analysis.updateContent';
-const String ANALYSIS_UPDATE_OPTIONS = 'analysis.updateOptions';
-
-//
-// Analysis notifications
-//
-const String ANALYSIS_ANALYZED_FILES = 'analysis.analyzedFiles';
-const String ANALYSIS_ERRORS = 'analysis.errors';
 const String ANALYSIS_HIGHLIGHTS = 'analysis.highlights';
 const String ANALYSIS_IMPLEMENTED = 'analysis.implemented';
 const String ANALYSIS_NAVIGATION = 'analysis.navigation';
 const String ANALYSIS_OCCURRENCES = 'analysis.occurrences';
 const String ANALYSIS_OUTLINE = 'analysis.outline';
 const String ANALYSIS_OVERRIDES = 'analysis.overrides';
+const String ANALYSIS_REANALYZE = 'analysis.reanalyze';
+const String ANALYSIS_SET_ANALYSIS_ROOTS = 'analysis.setAnalysisRoots';
+const String ANALYSIS_SET_GENERAL_SUBSCRIPTIONS =
+    'analysis.setGeneralSubscriptions';
+
+//
+// Analysis notifications
+//
+const String ANALYSIS_SET_PRIORITY_FILES = 'analysis.setPriorityFiles';
+const String ANALYSIS_SET_SUBSCRIPTIONS = 'analysis.setSubscriptions';
+const String ANALYSIS_UPDATE_CONTENT = 'analysis.updateContent';
+const String ANALYSIS_UPDATE_OPTIONS = 'analysis.updateOptions';
+const String ASSISTS = 'assists';
+const String CHANGE = 'change';
+const String CHILDREN = 'children';
+const String CLASS_ELEMENT = 'classElement';
 
 //
 // Code Completion methods
 //
-const String COMPLETION_GET_SUGGESTIONS = 'completion.getSuggestions';
+const String CLASS_NAME = 'className';
 
 //
 // Code Completion notifications
 //
-const String COMPLETION_RESULTS = 'completion.results';
+const String CODE = 'code';
 
 //
 // Search methods
 //
-const String SEARCH_FIND_ELEMENT_REFERENCES = 'search.findElementReferences';
-const String SEARCH_FIND_MEMBER_DECLARATIONS = 'search.findMemberDeclarations';
-const String SEARCH_FIND_MEMBER_REFERENCES = 'search.findMemberReferences';
-const String SEARCH_FIND_TOP_LEVEL_DECLARATIONS =
-    'search.findTopLevelDeclarations';
-const String SEARCH_GET_TYPE_HIERARCHY = 'search.getTypeHierarchy';
+const String COMPLETION = 'completion';
+const String COMPLETION_GET_SUGGESTIONS = 'completion.getSuggestions';
+const String COMPLETION_RESULTS = 'completion.results';
+const String CONTAINING_LIBRARY_NAME = 'containingLibraryName';
+const String CONTAINING_LIBRARY_PATH = 'containingLibraryPath';
 
 //
 // Search notifications
 //
-const String SEARCH_RESULTS = 'search.results';
+const String CONTENT = 'content';
 
 //
 // Edit methods
 //
+const String CORRECTION = 'correction';
+const String DART_DOC = 'dartdoc';
+const String DEFAULT = 'default';
+const String DISPLAY_NAME = 'displayName';
 const String EDIT_FORMAT = 'edit.format';
 const String EDIT_GET_ASSISTS = 'edit.getAssists';
 const String EDIT_GET_AVAILABLE_REFACTORINGS = 'edit.getAvailableRefactorings';
+
+//
+// Execution methods
+//
 const String EDIT_GET_FIXES = 'edit.getFixes';
 const String EDIT_GET_REFACTORING = 'edit.getRefactoring';
 const String EDIT_ORGANIZE_DIRECTIVES = 'edit.organizeDirectives';
 const String EDIT_SORT_MEMBERS = 'edit.sortMembers';
 
 //
-// Execution methods
-//
-const String EXECUTION_CREATE_CONTEXT = 'execution.createContext';
-const String EXECUTION_DELETE_CONTEXT = 'execution.deleteContext';
-const String EXECUTION_MAP_URI = 'execution.mapUri';
-const String EXECUTION_SET_SUBSCRIPTIONS = 'execution.setSubscriptions';
-
-//
 // Execution notifications
 //
-const String EXECUTION_LAUNCH_DATA = 'execution.launchData';
+const String EDITS = 'edits';
 
 //
 // Analysis option names
 //
+const String ELEMENT = 'element'; // boolean
+const String ELEMENT_DESCRIPTION = 'elementDescription'; // boolean
+const String ELEMENT_KIND = 'elementKind'; // boolean
 const String ENABLE_ASYNC = 'enableAsync'; // boolean
 const String ENABLE_DEFERRED_LOADING = 'enableDeferredLoading'; // boolean
-const String ENABLE_ENUMS = 'enableEnums'; // boolean
-const String GENERATE_DART2JS_HINTS = 'generateDart2jsHints'; // boolean
-const String GENERATE_HINTS = 'generateHints'; // boolean
 
 //
 // Property names
 //
-const String ADD = 'add';
-const String ADDED = 'added';
-const String ASSISTS = 'assists';
-const String CHANGE = 'change';
-const String CHILDREN = 'children';
-const String CLASS_ELEMENT = 'classElement';
-const String CLASS_NAME = 'className';
-const String CODE = 'code';
-const String COMPLETION = 'completion';
-const String CONTAINING_LIBRARY_NAME = 'containingLibraryName';
-const String CONTAINING_LIBRARY_PATH = 'containingLibraryPath';
-const String CONTENT = 'content';
-const String CORRECTION = 'correction';
-const String DART_DOC = 'dartdoc';
-const String DEFAULT = 'default';
-const String DISPLAY_NAME = 'displayName';
-const String EDITS = 'edits';
-const String ELEMENT = 'element';
-const String ELEMENT_DESCRIPTION = 'elementDescription';
-const String ELEMENT_KIND = 'elementKind';
-const String EXCLUDED = 'excluded';
+const String ENABLE_ENUMS = 'enableEnums';
 const String ERROR = 'error';
 const String ERRORS = 'errors';
+const String EXCLUDED = 'excluded';
+const String EXECUTION_CREATE_CONTEXT = 'execution.createContext';
+const String EXECUTION_DELETE_CONTEXT = 'execution.deleteContext';
+const String EXECUTION_LAUNCH_DATA = 'execution.launchData';
+const String EXECUTION_MAP_URI = 'execution.mapUri';
+const String EXECUTION_SET_SUBSCRIPTIONS = 'execution.setSubscriptions';
 const String FATAL = 'fatal';
 const String FILE = 'file';
 const String FILE_STAMP = 'fileStamp';
 const String FILES = 'files';
 const String FIXES = 'fixes';
 const String FLAGS = 'flags';
+const String GENERATE_DART2JS_HINTS = 'generateDart2jsHints';
+const String GENERATE_HINTS = 'generateHints';
 const String HAS_FIX = 'hasFix';
 const String HIERARCHY_ITEMS = 'hierarchyItems';
 const String HOVERS = 'hovers';
@@ -178,14 +165,27 @@
 const String REMOVE = 'remove';
 const String REMOVED = 'removed';
 const String REPLACEMENT = 'replacement';
-const String REPLACEMENT_OFFSET = 'replacementOffset';
 const String REPLACEMENT_LENGTH = 'replacementLength';
-const String RETURN_TYPE = 'returnType';
+const String REPLACEMENT_OFFSET = 'replacementOffset';
 const String RESULTS = 'results';
+const String RETURN_TYPE = 'returnType';
+const String SEARCH_FIND_ELEMENT_REFERENCES = 'search.findElementReferences';
+const String SEARCH_FIND_MEMBER_DECLARATIONS = 'search.findMemberDeclarations';
+const String SEARCH_FIND_MEMBER_REFERENCES = 'search.findMemberReferences';
+const String SEARCH_FIND_TOP_LEVEL_DECLARATIONS =
+    'search.findTopLevelDeclarations';
+const String SEARCH_GET_TYPE_HIERARCHY = 'search.getTypeHierarchy';
+const String SEARCH_RESULTS = 'search.results';
 const String SELECTION = 'selection';
-const String SEVERITY = 'severity';
 const String SELECTION_LENGTH = 'selectionLength';
 const String SELECTION_OFFSET = 'selectionOffset';
+const String SERVER_CONNECTED = 'server.connected';
+const String SERVER_ERROR = 'server.error';
+const String SERVER_GET_VERSION = 'server.getVersion';
+const String SERVER_SET_SUBSCRIPTIONS = 'server.setSubscriptions';
+const String SERVER_SHUTDOWN = 'server.shutdown';
+const String SERVER_STATUS = 'server.status';
+const String SEVERITY = 'severity';
 const String STACK_TRACE = 'stackTrace';
 const String START_COLUMN = 'startColumn';
 const String START_LINE = 'startLine';
@@ -193,8 +193,8 @@
 const String SUBCLASSES = 'subclasses';
 const String SUBSCRIPTIONS = 'subscriptions';
 const String SUGGESTIONS = 'suggestions';
-const String SUPERCLASS = 'superclass';
 const String SUPER_CLASS_MEMBER = 'superclassMember';
+const String SUPERCLASS = 'superclass';
 const String TARGETS = 'targets';
 const String TYPE = 'type';
 const String VALUE = 'value';
diff --git a/pkg/analysis_server/lib/src/context_manager.dart b/pkg/analysis_server/lib/src/context_manager.dart
index 4ce26ae..fc2573c 100644
--- a/pkg/analysis_server/lib/src/context_manager.dart
+++ b/pkg/analysis_server/lib/src/context_manager.dart
@@ -637,13 +637,13 @@
   }
 
   /**
-   * Return the options from the analysis options file in the given [folder], or
-   * `null` if there is no file in the folder or if the contents of the file are
-   * not valid YAML.
+   * Return the options from the analysis options file in the given [folder]
+   * if exists, or in one of the parent folders, or `null` if no analysis
+   * options file is found or if the contents of the file are not valid YAML.
    */
   Map<String, Object> readOptions(Folder folder) {
     try {
-      return analysisOptionsProvider.getOptions(folder);
+      return analysisOptionsProvider.getOptions(folder, crawlUp: true);
     } catch (_) {
       // Parse errors are reported by GenerateOptionsErrorsTask.
     }
diff --git a/pkg/analysis_server/lib/src/operation/operation_analysis.dart b/pkg/analysis_server/lib/src/operation/operation_analysis.dart
index c16924a..6f71721 100644
--- a/pkg/analysis_server/lib/src/operation/operation_analysis.dart
+++ b/pkg/analysis_server/lib/src/operation/operation_analysis.dart
@@ -250,10 +250,12 @@
  * Sets the cache size in the given [context] to the given value.
  */
 void setCacheSize(AnalysisContext context, int cacheSize) {
-  AnalysisOptionsImpl options =
-      new AnalysisOptionsImpl.from(context.analysisOptions);
-  options.cacheSize = cacheSize;
-  context.analysisOptions = options;
+  // TODO(scheglov) The cache size cannot be changed with task model.
+  // TODO(scheglov) Consider removing this function.
+//  AnalysisOptionsImpl options =
+//      new AnalysisOptionsImpl.from(context.analysisOptions);
+//  options.cacheSize = cacheSize;
+//  context.analysisOptions = options;
 }
 
 String _computeLibraryName(CompilationUnit unit) {
diff --git a/pkg/analysis_server/lib/src/provisional/completion/dart/completion_plugin.dart b/pkg/analysis_server/lib/src/provisional/completion/dart/completion_plugin.dart
index d5b4916..253a4ad 100644
--- a/pkg/analysis_server/lib/src/provisional/completion/dart/completion_plugin.dart
+++ b/pkg/analysis_server/lib/src/provisional/completion/dart/completion_plugin.dart
@@ -51,9 +51,6 @@
    */
   ExtensionPoint _contributorExtensionPoint;
 
-  @override
-  String get uniqueIdentifier => UNIQUE_IDENTIFIER;
-
   /**
    * Return a list containing all of the Dart specific completion contributors.
    */
@@ -62,6 +59,9 @@
           .map((DartCompletionContributorFactory factory) => factory());
 
   @override
+  String get uniqueIdentifier => UNIQUE_IDENTIFIER;
+
+  @override
   void registerExtensionPoints(RegisterExtensionPoint registerExtensionPoint) {
     _contributorExtensionPoint = registerExtensionPoint(
         CONTRIBUTOR_EXTENSION_POINT,
diff --git a/pkg/analysis_server/lib/src/server/driver.dart b/pkg/analysis_server/lib/src/server/driver.dart
index c053754..73867fe 100644
--- a/pkg/analysis_server/lib/src/server/driver.dart
+++ b/pkg/analysis_server/lib/src/server/driver.dart
@@ -399,16 +399,16 @@
       // Use DirectoryBasedDartSdk.defaultSdkDirectory, which will make a guess.
       defaultSdkDirectory = DirectoryBasedDartSdk.defaultSdkDirectory;
     }
-    SdkCreator defaultSdkCreator = () {
+    SdkCreator defaultSdkCreator = (AnalysisOptions options) {
       DirectoryBasedDartSdk sdk =
           new DirectoryBasedDartSdk(defaultSdkDirectory);
-      sdk.useSummary = true;
+      sdk.analysisOptions = options;
       return sdk;
     };
     // TODO(brianwilkerson) It would be nice to avoid creating an SDK that
     // cannot be re-used, but the SDK is needed to create a package map provider
     // in the case where we need to run `pub` in order to get the package map.
-    DirectoryBasedDartSdk defaultSdk = defaultSdkCreator();
+    DirectoryBasedDartSdk defaultSdk = defaultSdkCreator(null);
     //
     // Initialize the instrumentation service.
     //
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart
index 1a1352f..e3a8f0b 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart
@@ -79,6 +79,32 @@
 }
 
 /**
+ * Determine if the completion target is the label for a named argument.
+ */
+bool _isEditingNamedArgLabel(DartCompletionRequest request) {
+  AstNode node = request.target.containingNode;
+  if (node is ArgumentList) {
+    var entity = request.target.entity;
+    if (entity is NamedExpression) {
+      int offset = request.offset;
+      if (entity.offset < offset && offset < entity.end) {
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+/**
+ * Determine if the completion target is an emtpy argument list.
+ */
+bool _isEmptyArgList(DartCompletionRequest request) {
+  AstNode node = request.target.containingNode;
+  return node is ArgumentList &&
+      node.leftParenthesis.next == node.rightParenthesis;
+}
+
+/**
  * Determine if the completion target is in the middle or beginning of the list
  * of named parameters and is not preceded by a comma. This method assumes that
  * _isAppendingToArgList has been called and is false.
@@ -117,32 +143,6 @@
 }
 
 /**
- * Determine if the completion target is the label for a named argument.
- */
-bool _isEditingNamedArgLabel(DartCompletionRequest request) {
-  AstNode node = request.target.containingNode;
-  if (node is ArgumentList) {
-    var entity = request.target.entity;
-    if (entity is NamedExpression) {
-      int offset = request.offset;
-      if (entity.offset < offset && offset < entity.end) {
-        return true;
-      }
-    }
-  }
-  return false;
-}
-
-/**
- * Determine if the completion target is an emtpy argument list.
- */
-bool _isEmptyArgList(DartCompletionRequest request) {
-  AstNode node = request.target.containingNode;
-  return node is ArgumentList &&
-      node.leftParenthesis.next == node.rightParenthesis;
-}
-
-/**
  * Return a collection of currently specified named arguments
  */
 Iterable<String> _namedArgs(DartCompletionRequest request) {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/combinator_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/combinator_contributor.dart
index 8b1d7a2..4010ece 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/combinator_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/combinator_contributor.dart
@@ -10,8 +10,8 @@
     hide Element, ElementKind;
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
-import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/element/element.dart';
 
 /**
  * A contributor for calculating `completion.getSuggestions` request results
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
index 42ae3df..42d6823 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
@@ -18,6 +18,7 @@
 import 'package:analysis_server/src/services/completion/dart/contribution_sorter.dart';
 import 'package:analysis_server/src/services/completion/dart/optype.dart';
 import 'package:analysis_server/src/services/search/search_engine.dart';
+import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type.dart';
@@ -25,7 +26,6 @@
 import 'package:analyzer/src/context/context.dart'
     show AnalysisFutureHelper, AnalysisContextImpl;
 import 'package:analyzer/src/dart/ast/token.dart';
-import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/src/generated/engine.dart' hide AnalysisContextImpl;
 import 'package:analyzer/src/generated/java_engine.dart';
 import 'package:analyzer/src/generated/source.dart';
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/local_declaration_visitor.dart b/pkg/analysis_server/lib/src/services/completion/dart/local_declaration_visitor.dart
index 63c291e..e46b7e5 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/local_declaration_visitor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/local_declaration_visitor.dart
@@ -4,10 +4,10 @@
 
 library services.completion.dart.local.declaration.visitor;
 
-import 'package:analyzer/dart/ast/token.dart';
-import 'package:analyzer/src/dart/ast/token.dart';
 import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/dart/ast/visitor.dart';
+import 'package:analyzer/src/dart/ast/token.dart';
 
 /**
  * `LocalDeclarationCollector` visits an [AstNode] and its parent recursively
diff --git a/pkg/analysis_server/lib/src/services/correction/assist.dart b/pkg/analysis_server/lib/src/services/correction/assist.dart
index f4c51be..2024b75 100644
--- a/pkg/analysis_server/lib/src/services/correction/assist.dart
+++ b/pkg/analysis_server/lib/src/services/correction/assist.dart
@@ -4,12 +4,13 @@
 
 library services.correction.assist;
 
+import 'dart:async';
+
 import 'package:analysis_server/plugin/edit/assist/assist_core.dart';
 import 'package:analysis_server/src/plugin/server_plugin.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/java_engine.dart';
 import 'package:analyzer/src/generated/source.dart';
-import 'dart:async';
 
 /**
  * Compute and return the assists available at the given selection (described by
diff --git a/pkg/analysis_server/lib/src/services/correction/organize_directives.dart b/pkg/analysis_server/lib/src/services/correction/organize_directives.dart
index 5d8a96db..0d35566 100644
--- a/pkg/analysis_server/lib/src/services/correction/organize_directives.dart
+++ b/pkg/analysis_server/lib/src/services/correction/organize_directives.dart
@@ -7,8 +7,8 @@
 import 'package:analysis_server/plugin/protocol/protocol.dart'
     hide AnalysisError, Element;
 import 'package:analysis_server/src/services/correction/strings.dart';
-import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/src/generated/error.dart';
 
 /**
diff --git a/pkg/analysis_server/lib/src/services/dependencies/reachable_source_collector.dart b/pkg/analysis_server/lib/src/services/dependencies/reachable_source_collector.dart
index a0273ce..d0160d8 100644
--- a/pkg/analysis_server/lib/src/services/dependencies/reachable_source_collector.dart
+++ b/pkg/analysis_server/lib/src/services/dependencies/reachable_source_collector.dart
@@ -33,7 +33,6 @@
   }
 
   void _addDependencies(Source source) {
-
     String sourceUri = source.uri.toString();
 
     // Careful not to revisit.
diff --git a/pkg/analysis_server/lib/src/services/index/index.dart b/pkg/analysis_server/lib/src/services/index/index.dart
index 5e866bc..bf5e47d 100644
--- a/pkg/analysis_server/lib/src/services/index/index.dart
+++ b/pkg/analysis_server/lib/src/services/index/index.dart
@@ -77,10 +77,21 @@
   }
 
   /**
+   * Index declarations in the given partially resolved [unit].
+   */
+  void indexDeclarations(CompilationUnit unit) {
+    if (unit?.element?.library == null) {
+      return;
+    }
+    AnalysisContext context = unit.element.context;
+    _getContextIndex(context).indexDeclarations(unit);
+  }
+
+  /**
    * Index the given fully resolved [unit].
    */
   void indexUnit(CompilationUnit unit) {
-    if (unit == null || unit.element == null) {
+    if (unit?.element?.library == null) {
       return;
     }
     AnalysisContext context = unit.element.context;
@@ -256,18 +267,21 @@
   }
 
   /**
+   * Index declarations in the given partially resolved [unit].
+   */
+  void indexDeclarations(CompilationUnit unit) {
+    PackageIndexAssembler assembler = new PackageIndexAssembler();
+    assembler.indexDeclarations(unit);
+    _putUnitIndexBuilder(unit, assembler);
+  }
+
+  /**
    * Index the given fully resolved [unit].
    */
   void indexUnit(CompilationUnit unit) {
-    // Index the unit.
     PackageIndexAssembler assembler = new PackageIndexAssembler();
-    assembler.index(unit);
-    PackageIndexBuilder indexBuilder = assembler.assemble();
-    // Put the index into the map.
-    List<int> indexBytes = indexBuilder.toBuffer();
-    PackageIndex index = new PackageIndex.fromBuffer(indexBytes);
-    String key = _getUnitKeyForElement(unit.element);
-    indexMap[key] = index;
+    assembler.indexUnit(unit);
+    _putUnitIndexBuilder(unit, assembler);
   }
 
   /**
@@ -300,6 +314,16 @@
     }
     return locations;
   }
+
+  void _putUnitIndexBuilder(
+      CompilationUnit unit, PackageIndexAssembler assembler) {
+    PackageIndexBuilder indexBuilder = assembler.assemble();
+    // Put the index into the map.
+    List<int> indexBytes = indexBuilder.toBuffer();
+    PackageIndex index = new PackageIndex.fromBuffer(indexBytes);
+    String key = _getUnitKeyForElement(unit.element);
+    indexMap[key] = index;
+  }
 }
 
 /**
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 5387a81..c7c5776 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart
@@ -17,10 +17,10 @@
 import 'package:analysis_server/src/services/refactoring/naming_conventions.dart';
 import 'package:analysis_server/src/services/refactoring/refactoring.dart';
 import 'package:analysis_server/src/services/refactoring/refactoring_internal.dart';
-import 'package:analyzer/dart/ast/token.dart';
-import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/dart/ast/visitor.dart';
+import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/src/dart/ast/utilities.dart';
 import 'package:analyzer/src/generated/java_core.dart';
 import 'package:analyzer/src/generated/source.dart';
diff --git a/pkg/analysis_server/test/analysis/notification_analysis_options_test.dart b/pkg/analysis_server/test/analysis/notification_analysis_options_test.dart
index 265ee9b..e8cf7c4 100644
--- a/pkg/analysis_server/test/analysis/notification_analysis_options_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_analysis_options_test.dart
@@ -297,11 +297,8 @@
 
     if (enabled) {
       // Should produce a type warning.
-      expect(
-          errors.map((error) => error.type),
-          unorderedEquals([
-            AnalysisErrorType.STATIC_TYPE_WARNING
-          ]));
+      expect(errors.map((error) => error.type),
+          unorderedEquals([AnalysisErrorType.STATIC_TYPE_WARNING]));
     } else {
       // Should only produce a hint.
       expect(errors.map((error) => error.type),
diff --git a/pkg/analysis_server/test/analysis_abstract.dart b/pkg/analysis_server/test/analysis_abstract.dart
index b241eda..cf8aed1 100644
--- a/pkg/analysis_server/test/analysis_abstract.dart
+++ b/pkg/analysis_server/test/analysis_abstract.dart
@@ -129,7 +129,7 @@
         index,
         serverPlugin,
         new AnalysisServerOptions(),
-        () => new MockSdk(),
+        (_) => new MockSdk(),
         InstrumentationService.NULL_SERVICE);
   }
 
diff --git a/pkg/analysis_server/test/analysis_server_test.dart b/pkg/analysis_server/test/analysis_server_test.dart
index 85a6bbc..8527528e 100644
--- a/pkg/analysis_server/test/analysis_server_test.dart
+++ b/pkg/analysis_server/test/analysis_server_test.dart
@@ -144,7 +144,7 @@
         null,
         plugin,
         new AnalysisServerOptions(),
-        () => new MockSdk(),
+        (_) => new MockSdk(),
         InstrumentationService.NULL_SERVICE,
         rethrowExceptions: true);
     processRequiredPlugins();
diff --git a/pkg/analysis_server/test/completion_test.dart b/pkg/analysis_server/test/completion_test.dart
index 86defe8..f2cd236 100644
--- a/pkg/analysis_server/test/completion_test.dart
+++ b/pkg/analysis_server/test/completion_test.dart
@@ -365,14 +365,14 @@
 class JsonDecoderX{}
 f1() {var x=new !2j!1s!3}''',
         <String>[
-      "1+json",
-      "1+jxx",
-      "2+json",
-      "2+jxx",
-      "2-JsonDecoder",
-      "3+json",
-      "3-jxx"
-    ]);
+          "1+json",
+          "1+jxx",
+          "2+json",
+          "2+jxx",
+          "2-JsonDecoder",
+          "3+json",
+          "3-jxx"
+        ]);
 
     buildTests(
         'testCommentSnippets050',
@@ -389,17 +389,17 @@
   const x!2dr.!3a(1, 2, 3);
 }''',
         <String>[
-      "1+xdr",
-      "1+xa",
-      "1+xdr.a",
-      "1+xdr.b",
-      "2+xa", // suggest default constructor
-      "2+xdr", // suggest normal constructor
-      "2+xdr.a",
-      "2+xdr.b", // suggest named constructor
-      "3+b", // suggest named constructor
-      "3+a"
-    ]);
+          "1+xdr",
+          "1+xa",
+          "1+xdr.a",
+          "1+xdr.b",
+          "2+xa", // suggest default constructor
+          "2+xdr", // suggest normal constructor
+          "2+xdr.a",
+          "2+xdr.b", // suggest named constructor
+          "3+b", // suggest named constructor
+          "3+a"
+        ]);
 
     // Type propagation.
     buildTests(
@@ -569,18 +569,18 @@
   }
 }''',
         <String>[
-      "1+a",
-      "2+b",
-      "1-g",
-      "2-h",
-      "3+b",
-      "4+c",
-      "5+a",
-      "6+c",
-      "7+g",
-      "8+j",
-      "9+h"
-    ]);
+          "1+a",
+          "2+b",
+          "1-g",
+          "2-h",
+          "3+b",
+          "4+c",
+          "5+a",
+          "6+c",
+          "7+g",
+          "8+j",
+          "9+h"
+        ]);
 
     buildTests(
         'testCommentSnippets065',
@@ -818,12 +818,12 @@
 }
 f() => new Fil!1''',
         <String>[
-      "1+File",
-      "1+File.fromPath",
-      "1+FileMode",
-      "1+FileMode._internal1",
-      "1+FileMode._internal"
-    ]);
+          "1+File",
+          "1+File.fromPath",
+          "1+FileMode",
+          "1+FileMode._internal1",
+          "1+FileMode._internal"
+        ]);
 
     buildTests(
         'testCommentSnippets078',
@@ -1265,14 +1265,14 @@
   methodB() {}
 }''',
         <String>[
-      "1+aaa",
-      "1-bbb",
-      "2+int",
-      "2-double",
-      "3+methodA",
-      "3+methodB",
-      "3-int"
-    ]);
+          "1+aaa",
+          "1-bbb",
+          "2+int",
+          "2-double",
+          "3+methodA",
+          "3+methodB",
+          "3-int"
+        ]);
 
     buildTests(
         'testCompletion_dartDoc_reference_incomplete',
@@ -1292,13 +1292,13 @@
  */
 class C {}''',
         <String>[
-      "1+double",
-      "1-int",
-      "2+int",
-      "2+String",
-      "3+int",
-      "3+String"
-    ]);
+          "1+double",
+          "1-int",
+          "2+int",
+          "2+String",
+          "3+int",
+          "3+String"
+        ]);
 
     buildTests(
         'testCompletion_double_inFractionPart',
@@ -1328,14 +1328,14 @@
   Str!3;
 }''',
         <String>[
-      "1+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/,
-      "1+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/,
-      "2+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/,
-      "2+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/,
-      "3+String" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/,
-      "3+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/,
-      "3+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/
-    ]);
+          "1+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/,
+          "1+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/,
+          "2+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/,
+          "2+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/,
+          "3+String" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/,
+          "3+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/,
+          "3+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/
+        ]);
 
     buildTests(
         'testCompletion_export_dart',
@@ -1594,13 +1594,13 @@
   var v2 = p is!4;
 }''',
         <String>[
-      "1+MyClass",
-      "2+MyClass",
-      "3+MyClass",
-      "3-v1",
-      "4+is",
-      "4-isVariable"
-    ]);
+          "1+MyClass",
+          "2+MyClass",
+          "3+MyClass",
+          "3-v1",
+          "4+is",
+          "4-isVariable"
+        ]);
 
     buildTests(
         'testCompletion_is_asIdentifierStart',
@@ -1719,9 +1719,9 @@
   foo(Functions.!1);
 }''',
         <String>[
-      "1+myFunc" /*":" + ProposalKind.METHOD*/,
-      "1+myFunc" /*":" + ProposalKind.METHOD_NAME*/
-    ]);
+          "1+myFunc" /*":" + ProposalKind.METHOD*/,
+          "1+myFunc" /*":" + ProposalKind.METHOD_NAME*/
+        ]);
 
     buildTests(
         'testCompletion_namedArgument_alreadyUsed',
@@ -2209,13 +2209,13 @@
             f2() {var x=new json.JsonDe!2}
             f3() {var x=new json.JsonDecoder!3}''',
         <String>[
-      "1+JsonDecoder",
-      "1-JsonDecoderX",
-      "2+JsonDecoder",
-      "2-JsonDecoderX",
-      "3+JsonDecoder",
-      "3-JsonDecoderX"
-    ]);
+          "1+JsonDecoder",
+          "1-JsonDecoderX",
+          "2+JsonDecoder",
+          "2-JsonDecoderX",
+          "3+JsonDecoder",
+          "3-JsonDecoderX"
+        ]);
 
     // TODO Enable after type propagation is implemented. Not yet.
     // TODO Include corelib analysis
@@ -2357,14 +2357,14 @@
   v.!1toString!2().!3hash!4Code
 }''',
         <String>[
-      "1+toString",
-      "1-==",
-      "2+toString",
-      "3+hashCode",
-      "3+toString",
-      "4+hashCode",
-      "4-toString"
-    ]);
+          "1+toString",
+          "1-==",
+          "2+toString",
+          "3+hashCode",
+          "3+toString",
+          "4+hashCode",
+          "4-toString"
+        ]);
 
     buildTests(
         'test002',
@@ -2748,22 +2748,22 @@
   }
 }''',
         <String>[
-      "1+m",
-      "2+_m",
-      "3+g",
-      "4+m",
-      "5+_m",
-      "6+g",
-      "7-g",
-      "8-m",
-      "9-_m",
-      "A+_m",
-      "B+m",
-      "C+g",
-      "D+_m",
-      "E+m",
-      "F+g"
-    ]);
+          "1+m",
+          "2+_m",
+          "3+g",
+          "4+m",
+          "5+_m",
+          "6+g",
+          "7-g",
+          "8-m",
+          "9-_m",
+          "A+_m",
+          "B+m",
+          "C+g",
+          "D+_m",
+          "E+m",
+          "F+g"
+        ]);
 
     buildTests('test026', '''var aBcD; var x=ab!1''', <String>["1+aBcD"]);
 
@@ -2799,15 +2799,15 @@
   }
 }''',
         <String>[
-      "1+ONE",
-      "1-UKSI",
-      "2+EIN",
-      "2-ICHI",
-      "3+ICHI",
-      "3+UKSI",
-      "3+EIN",
-      "3+ONE"
-    ]);
+          "1+ONE",
+          "1-UKSI",
+          "2+EIN",
+          "2-ICHI",
+          "3+ICHI",
+          "3+UKSI",
+          "3+EIN",
+          "3+ONE"
+        ]);
 
     buildTests(
         'test033',
diff --git a/pkg/analysis_server/test/context_manager_test.dart b/pkg/analysis_server/test/context_manager_test.dart
index 8dbe635..cee64f0 100644
--- a/pkg/analysis_server/test/context_manager_test.dart
+++ b/pkg/analysis_server/test/context_manager_test.dart
@@ -153,7 +153,7 @@
     processRequiredPlugins();
     resourceProvider = new MemoryResourceProvider();
     packageMapProvider = new MockPackageMapProvider();
-    DartSdkManager sdkManager = new DartSdkManager(() {
+    DartSdkManager sdkManager = new DartSdkManager((_) {
       return new MockSdk();
     });
     manager = new ContextManagerImpl(
diff --git a/pkg/analysis_server/test/domain_analysis_test.dart b/pkg/analysis_server/test/domain_analysis_test.dart
index f8c0afd..da13829 100644
--- a/pkg/analysis_server/test/domain_analysis_test.dart
+++ b/pkg/analysis_server/test/domain_analysis_test.dart
@@ -47,7 +47,7 @@
         null,
         serverPlugin,
         new AnalysisServerOptions(),
-        () => new MockSdk(),
+        (_) => new MockSdk(),
         InstrumentationService.NULL_SERVICE);
     handler = new AnalysisDomainHandler(server);
   });
@@ -474,7 +474,7 @@
         null,
         serverPlugin,
         new AnalysisServerOptions(),
-        () => new MockSdk(),
+        (_) => new MockSdk(),
         InstrumentationService.NULL_SERVICE);
     handler = new AnalysisDomainHandler(server);
     // listen for notifications
diff --git a/pkg/analysis_server/test/domain_completion_test.dart b/pkg/analysis_server/test/domain_completion_test.dart
index 61734b6..3435be7 100644
--- a/pkg/analysis_server/test/domain_completion_test.dart
+++ b/pkg/analysis_server/test/domain_completion_test.dart
@@ -211,47 +211,6 @@
     });
   }
 
-  test_invocation() {
-    addTestFile('class A {b() {}} main() {A a; a.^}');
-    return getSuggestions().then((_) {
-      expect(replacementOffset, equals(completionOffset));
-      expect(replacementLength, equals(0));
-      assertHasResult(CompletionSuggestionKind.INVOCATION, 'b');
-    });
-  }
-
-  test_invocation_sdk_relevancy_off() {
-    var originalSorter = DartCompletionManager.contributionSorter;
-    var mockSorter = new MockRelevancySorter();
-    DartCompletionManager.contributionSorter = mockSorter;
-    addTestFile('main() {Map m; m.^}');
-    return getSuggestions().then((_) {
-      // Assert that the CommonUsageComputer has been replaced
-      expect(suggestions.any((s) => s.relevance == DART_RELEVANCE_COMMON_USAGE),
-          isFalse);
-      DartCompletionManager.contributionSorter = originalSorter;
-      mockSorter.enabled = false;
-    });
-  }
-
-  test_invocation_sdk_relevancy_on() {
-    addTestFile('main() {Map m; m.^}');
-    return getSuggestions().then((_) {
-      // Assert that the CommonUsageComputer is working
-      expect(suggestions.any((s) => s.relevance == DART_RELEVANCE_COMMON_USAGE),
-          isTrue);
-    });
-  }
-
-  test_invocation_withTrailingStmt() {
-    addTestFile('class A {b() {}} main() {A a; a.^ int x = 7;}');
-    return getSuggestions().then((_) {
-      expect(replacementOffset, equals(completionOffset));
-      expect(replacementLength, equals(0));
-      assertHasResult(CompletionSuggestionKind.INVOCATION, 'b');
-    });
-  }
-
   test_inComment_block_beforeNode() async {
     addTestFile('''
   main(aaa, bbb) {
@@ -348,6 +307,47 @@
     });
   }
 
+  test_invocation() {
+    addTestFile('class A {b() {}} main() {A a; a.^}');
+    return getSuggestions().then((_) {
+      expect(replacementOffset, equals(completionOffset));
+      expect(replacementLength, equals(0));
+      assertHasResult(CompletionSuggestionKind.INVOCATION, 'b');
+    });
+  }
+
+  test_invocation_sdk_relevancy_off() {
+    var originalSorter = DartCompletionManager.contributionSorter;
+    var mockSorter = new MockRelevancySorter();
+    DartCompletionManager.contributionSorter = mockSorter;
+    addTestFile('main() {Map m; m.^}');
+    return getSuggestions().then((_) {
+      // Assert that the CommonUsageComputer has been replaced
+      expect(suggestions.any((s) => s.relevance == DART_RELEVANCE_COMMON_USAGE),
+          isFalse);
+      DartCompletionManager.contributionSorter = originalSorter;
+      mockSorter.enabled = false;
+    });
+  }
+
+  test_invocation_sdk_relevancy_on() {
+    addTestFile('main() {Map m; m.^}');
+    return getSuggestions().then((_) {
+      // Assert that the CommonUsageComputer is working
+      expect(suggestions.any((s) => s.relevance == DART_RELEVANCE_COMMON_USAGE),
+          isTrue);
+    });
+  }
+
+  test_invocation_withTrailingStmt() {
+    addTestFile('class A {b() {}} main() {A a; a.^ int x = 7;}');
+    return getSuggestions().then((_) {
+      expect(replacementOffset, equals(completionOffset));
+      expect(replacementLength, equals(0));
+      assertHasResult(CompletionSuggestionKind.INVOCATION, 'b');
+    });
+  }
+
   test_keyword() {
     addTestFile('library A; cl^');
     return getSuggestions().then((_) {
diff --git a/pkg/analysis_server/test/domain_diagnostic_test.dart b/pkg/analysis_server/test/domain_diagnostic_test.dart
index 277279a..d6de07f 100644
--- a/pkg/analysis_server/test/domain_diagnostic_test.dart
+++ b/pkg/analysis_server/test/domain_diagnostic_test.dart
@@ -53,7 +53,7 @@
         null,
         serverPlugin,
         new AnalysisServerOptions(),
-        () => new MockSdk(),
+        (_) => new MockSdk(),
         InstrumentationService.NULL_SERVICE);
     handler = new DiagnosticDomainHandler(server);
   });
diff --git a/pkg/analysis_server/test/domain_execution_test.dart b/pkg/analysis_server/test/domain_execution_test.dart
index e6d1dfb..7824a1b 100644
--- a/pkg/analysis_server/test/domain_execution_test.dart
+++ b/pkg/analysis_server/test/domain_execution_test.dart
@@ -48,7 +48,7 @@
           null,
           serverPlugin,
           new AnalysisServerOptions(),
-          () => new MockSdk(),
+          (_) => new MockSdk(),
           InstrumentationService.NULL_SERVICE);
       handler = new ExecutionDomainHandler(server);
     });
diff --git a/pkg/analysis_server/test/domain_server_test.dart b/pkg/analysis_server/test/domain_server_test.dart
index 6dc24d1..5c3d75e 100644
--- a/pkg/analysis_server/test/domain_server_test.dart
+++ b/pkg/analysis_server/test/domain_server_test.dart
@@ -37,7 +37,7 @@
         null,
         serverPlugin,
         new AnalysisServerOptions(),
-        () => new MockSdk(),
+        (_) => new MockSdk(),
         InstrumentationService.NULL_SERVICE);
     handler = new ServerDomainHandler(server);
   });
diff --git a/pkg/analysis_server/test/edit/format_test.dart b/pkg/analysis_server/test/edit/format_test.dart
index e04ccf1..d864ef9 100644
--- a/pkg/analysis_server/test/edit/format_test.dart
+++ b/pkg/analysis_server/test/edit/format_test.dart
@@ -107,7 +107,7 @@
 
   Future test_format_withErrors() {
     addTestFile('''
-main() { int x = 
+main() { int x =
 ''');
     return waitForTasksFinished().then((_) {
       Request request = new EditFormatParams(testFile, 0, 3).toRequest('0');
@@ -119,8 +119,9 @@
   EditFormatResult _formatAt(int selectionOffset, int selectionLength,
       {int lineLength}) {
     Request request = new EditFormatParams(
-        testFile, selectionOffset, selectionLength,
-        lineLength: lineLength).toRequest('0');
+            testFile, selectionOffset, selectionLength,
+            lineLength: lineLength)
+        .toRequest('0');
     Response response = handleSuccessfulRequest(request);
     return new EditFormatResult.fromResponse(response);
   }
diff --git a/pkg/analysis_server/test/integration/analysis/update_content_test.dart b/pkg/analysis_server/test/integration/analysis/update_content_test.dart
index 6ea46cf..b451396 100644
--- a/pkg/analysis_server/test/integration/analysis/update_content_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/update_content_test.dart
@@ -27,36 +27,44 @@
     String badText = goodText.replaceAll(';', '');
     writeFile(pathname, badText);
     standardAnalysisSetup();
-    return analysisFinished.then((_) {
-      // The contents on disk (badText) are missing a semicolon.
-      expect(currentAnalysisErrors[pathname], isNotEmpty);
-    })
+    return analysisFinished
+        .then((_) {
+          // The contents on disk (badText) are missing a semicolon.
+          expect(currentAnalysisErrors[pathname], isNotEmpty);
+        })
         .then((_) => sendAnalysisUpdateContent(
             {pathname: new AddContentOverlay(goodText)}))
         .then((result) => analysisFinished)
         .then((_) {
-      // There should be no errors now because the contents on disk have been
-      // overriden with goodText.
-      expect(currentAnalysisErrors[pathname], isEmpty);
-      return sendAnalysisUpdateContent({
-        pathname: new ChangeContentOverlay(
-            [new SourceEdit(goodText.indexOf(';'), 1, '')])
-      });
-    }).then((result) => analysisFinished).then((_) {
-      // There should be errors now because we've removed the semicolon.
-      expect(currentAnalysisErrors[pathname], isNotEmpty);
-      return sendAnalysisUpdateContent({
-        pathname: new ChangeContentOverlay(
-            [new SourceEdit(goodText.indexOf(';'), 0, ';')])
-      });
-    }).then((result) => analysisFinished).then((_) {
-      // There should be no errors now because we've added the semicolon back.
-      expect(currentAnalysisErrors[pathname], isEmpty);
-      return sendAnalysisUpdateContent({pathname: new RemoveContentOverlay()});
-    }).then((result) => analysisFinished).then((_) {
-      // Now there should be errors again, because the contents on disk are no
-      // longer overridden.
-      expect(currentAnalysisErrors[pathname], isNotEmpty);
-    });
+          // There should be no errors now because the contents on disk have been
+          // overriden with goodText.
+          expect(currentAnalysisErrors[pathname], isEmpty);
+          return sendAnalysisUpdateContent({
+            pathname: new ChangeContentOverlay(
+                [new SourceEdit(goodText.indexOf(';'), 1, '')])
+          });
+        })
+        .then((result) => analysisFinished)
+        .then((_) {
+          // There should be errors now because we've removed the semicolon.
+          expect(currentAnalysisErrors[pathname], isNotEmpty);
+          return sendAnalysisUpdateContent({
+            pathname: new ChangeContentOverlay(
+                [new SourceEdit(goodText.indexOf(';'), 0, ';')])
+          });
+        })
+        .then((result) => analysisFinished)
+        .then((_) {
+          // There should be no errors now because we've added the semicolon back.
+          expect(currentAnalysisErrors[pathname], isEmpty);
+          return sendAnalysisUpdateContent(
+              {pathname: new RemoveContentOverlay()});
+        })
+        .then((result) => analysisFinished)
+        .then((_) {
+          // Now there should be errors again, because the contents on disk are no
+          // longer overridden.
+          expect(currentAnalysisErrors[pathname], isNotEmpty);
+        });
   }
 }
diff --git a/pkg/analysis_server/test/mock_sdk.dart b/pkg/analysis_server/test/mock_sdk.dart
index c43ef63..dc028c4 100644
--- a/pkg/analysis_server/test/mock_sdk.dart
+++ b/pkg/analysis_server/test/mock_sdk.dart
@@ -219,7 +219,7 @@
   @override
   AnalysisContext get context {
     if (_analysisContext == null) {
-      _analysisContext = new SdkAnalysisContext();
+      _analysisContext = new SdkAnalysisContext(null);
       SourceFactory factory = new SourceFactory([new DartUriResolver(this)]);
       _analysisContext.sourceFactory = factory;
     }
diff --git a/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
index e7f4fea..c435848 100644
--- a/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
@@ -77,19 +77,6 @@
   }
 
   /**
-   * Assert that the specified suggestions are the only suggestions.
-   */
-  void assertSuggestions(List<String> suggestions) {
-    List<CompletionSuggestion> expected = new List<CompletionSuggestion>();
-    for (String suggestion in suggestions) {
-      expected.add(assertSuggest('$suggestion',
-          csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
-          relevance: DART_RELEVANCE_NAMED_PARAMETER));
-    }
-    assertNoOtherSuggestions(expected);
-  }
-
-  /**
    * Assert that the specified named argument suggestions are the only
    * suggestions.
    */
@@ -103,18 +90,48 @@
     assertNoOtherSuggestions(expected);
   }
 
+  /**
+   * Assert that the specified suggestions are the only suggestions.
+   */
+  void assertSuggestions(List<String> suggestions) {
+    List<CompletionSuggestion> expected = new List<CompletionSuggestion>();
+    for (String suggestion in suggestions) {
+      expected.add(assertSuggest('$suggestion',
+          csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
+          relevance: DART_RELEVANCE_NAMED_PARAMETER));
+    }
+    assertNoOtherSuggestions(expected);
+  }
+
   @override
   DartCompletionContributor createContributor() {
     return new ArgListContributor();
   }
 
-  test_Annotation_local_constructor_named_param_negative() async {
+  fail_test_Annotation_local_constructor_named_param_10() async {
     addTestSource('''
-class A { const A(int one, int two, int three, {int four, String five:
-  'defaultValue'}); }
-@A(1, ^, 3) main() { }''');
+class A { const A({int one, String two: 'defaultValue'}); }
+@A(two: '2' ^) main() { }''');
     await computeSuggestions();
-    assertNoSuggestions();
+    assertSuggestions([', one: ']);
+  }
+
+  fail_test_Annotation_local_constructor_named_param_9() async {
+    addTestSource('''
+class A { const A({int one, String two: 'defaultValue'}); }
+@A(two: '2'^) main() { }''');
+    await computeSuggestions();
+    assertSuggestions([', one: ']);
+  }
+
+  test_Annotation_imported_constructor_named_param() async {
+    addSource(
+        '/libA.dart',
+        '''
+library libA; class A { const A({int one, String two: 'defaultValue'}); }''');
+    addTestSource('import "/libA.dart"; @A(^) main() { }');
+    await computeSuggestions();
+    assertSuggestArguments(namedArguments: ['one', 'two']);
   }
 
   test_Annotation_local_constructor_named_param() async {
@@ -125,6 +142,14 @@
     assertSuggestArguments(namedArguments: ['one', 'two']);
   }
 
+  test_Annotation_local_constructor_named_param_11() async {
+    addTestSource('''
+class A { const A({int one, String two: 'defaultValue'}); }
+@A(two: '2', ^) main() { }''');
+    await computeSuggestions();
+    assertSuggestArguments(namedArguments: ['one']);
+  }
+
   test_Annotation_local_constructor_named_param_2() async {
     addTestSource('''
 class A { const A({int one, String two: 'defaultValue'}); }
@@ -181,38 +206,13 @@
     assertSuggestions(['one: ,']);
   }
 
-  fail_test_Annotation_local_constructor_named_param_9() async {
+  test_Annotation_local_constructor_named_param_negative() async {
     addTestSource('''
-class A { const A({int one, String two: 'defaultValue'}); }
-@A(two: '2'^) main() { }''');
+class A { const A(int one, int two, int three, {int four, String five:
+  'defaultValue'}); }
+@A(1, ^, 3) main() { }''');
     await computeSuggestions();
-    assertSuggestions([', one: ']);
-  }
-
-  fail_test_Annotation_local_constructor_named_param_10() async {
-    addTestSource('''
-class A { const A({int one, String two: 'defaultValue'}); }
-@A(two: '2' ^) main() { }''');
-    await computeSuggestions();
-    assertSuggestions([', one: ']);
-  }
-
-  test_Annotation_local_constructor_named_param_11() async {
-    addTestSource('''
-class A { const A({int one, String two: 'defaultValue'}); }
-@A(two: '2', ^) main() { }''');
-    await computeSuggestions();
-    assertSuggestArguments(namedArguments: ['one']);
-  }
-
-  test_Annotation_imported_constructor_named_param() async {
-    addSource(
-        '/libA.dart',
-        '''
-library libA; class A { const A({int one, String two: 'defaultValue'}); }''');
-    addTestSource('import "/libA.dart"; @A(^) main() { }');
-    await computeSuggestions();
-    assertSuggestArguments(namedArguments: ['one', 'two']);
+    assertNoSuggestions();
   }
 
   test_ArgumentList_getter() async {
diff --git a/pkg/analysis_server/test/services/completion/dart/combinator_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/combinator_contributor_test.dart
index 921525b..90856f7 100644
--- a/pkg/analysis_server/test/services/completion/dart/combinator_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/combinator_contributor_test.dart
@@ -7,11 +7,11 @@
 import 'package:analysis_server/plugin/protocol/protocol.dart';
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/combinator_contributor.dart';
+import 'package:analyzer/src/generated/source.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../../utils.dart';
 import 'completion_contributor_util.dart';
-import 'package:analyzer/src/generated/source.dart';
 
 main() {
   initializeTestEnvironment();
diff --git a/pkg/analysis_server/test/services/completion/dart/inherited_reference_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/inherited_reference_contributor_test.dart
index a864b34..568d796 100644
--- a/pkg/analysis_server/test/services/completion/dart/inherited_reference_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/inherited_reference_contributor_test.dart
@@ -4,6 +4,7 @@
 
 library test.services.completion.contributor.dart.inherited_ref;
 
+import 'package:analysis_server/src/protocol_server.dart';
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/inherited_reference_contributor.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -11,7 +12,6 @@
 
 import '../../../utils.dart';
 import 'completion_contributor_util.dart';
-import 'package:analysis_server/src/protocol_server.dart';
 
 main() {
   initializeTestEnvironment();
diff --git a/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart
index fd218a0..ddb0211 100644
--- a/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart
@@ -32,6 +32,21 @@
     assertNotSuggested('loadLibrary');
   }
 
+  test_libraryPrefix2() async {
+    // SimpleIdentifier  MethodInvocation  ExpressionStatement
+    addTestSource('import "dart:async" as bar; foo() {bar.^ print("f")}');
+    await computeSuggestions();
+    assertSuggestClass('Future');
+  }
+
+  test_libraryPrefix3() async {
+    // SimpleIdentifier  MethodInvocation  ExpressionStatement
+    addTestSource('import "dart:async" as bar; foo() {new bar.F^ print("f")}');
+    await computeSuggestions();
+    assertSuggestConstructor('Future');
+    assertSuggestConstructor('Future.delayed');
+  }
+
   test_libraryPrefix_cascade() async {
     addTestSource('''
     import "dart:math" as math;
@@ -64,21 +79,6 @@
     assertSuggestFunction('min', 'num');
   }
 
-  test_libraryPrefix2() async {
-    // SimpleIdentifier  MethodInvocation  ExpressionStatement
-    addTestSource('import "dart:async" as bar; foo() {bar.^ print("f")}');
-    await computeSuggestions();
-    assertSuggestClass('Future');
-  }
-
-  test_libraryPrefix3() async {
-    // SimpleIdentifier  MethodInvocation  ExpressionStatement
-    addTestSource('import "dart:async" as bar; foo() {new bar.F^ print("f")}');
-    await computeSuggestions();
-    assertSuggestConstructor('Future');
-    assertSuggestConstructor('Future.delayed');
-  }
-
   test_libraryPrefix_deferred() async {
     // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
     addTestSource('import "dart:async" deferred as bar; foo() {bar.^}');
diff --git a/pkg/analysis_server/test/services/completion/dart/local_constructor_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_constructor_contributor_test.dart
index 64773f4..172d767 100644
--- a/pkg/analysis_server/test/services/completion/dart/local_constructor_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/local_constructor_contributor_test.dart
@@ -61,333 +61,6 @@
     return new LocalConstructorContributor();
   }
 
-  test_constructor_parameters_mixed_required_and_named() async {
-    addTestSource('class A {A(x, {int y}) {^}}');
-    await computeSuggestions();
-    assertNotSuggested('x');
-    assertNotSuggested('y');
-  }
-
-  test_constructor_parameters_mixed_required_and_positional() async {
-    addTestSource('class A {A(x, [int y]) {^}}');
-    await computeSuggestions();
-    assertNotSuggested('x');
-    assertNotSuggested('y');
-  }
-
-  test_constructor_parameters_named() async {
-    addTestSource('class A {A({x, int y}) {^}}');
-    await computeSuggestions();
-    assertNotSuggested('x');
-    assertNotSuggested('y');
-  }
-
-  test_constructor_parameters_positional() async {
-    addTestSource('class A {A([x, int y]) {^}}');
-    await computeSuggestions();
-    assertNotSuggested('x');
-    assertNotSuggested('y');
-  }
-
-  test_constructor_parameters_required() async {
-    addTestSource('class A {A(x, int y) {^}}');
-    await computeSuggestions();
-    assertNotSuggested('x');
-    assertNotSuggested('y');
-  }
-
-  test_enum() async {
-    addTestSource('enum E { one, two } main() {^}');
-    await computeSuggestions();
-    assertNotSuggested('E');
-    assertNotSuggested('one');
-    assertNotSuggested('two');
-  }
-
-  test_enum_deprecated() async {
-    addTestSource('@deprecated enum E { one, two } main() {^}');
-    await computeSuggestions();
-    assertNotSuggested('E');
-    assertNotSuggested('one');
-    assertNotSuggested('two');
-  }
-
-  test_function_parameters_mixed_required_and_named() async {
-    addTestSource('''
-void m(x, {int y}) {}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_function_parameters_mixed_required_and_positional() async {
-    addTestSource('''
-void m(x, [int y]) {}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_function_parameters_named() async {
-    addTestSource('''
-void m({x, int y}) {}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_function_parameters_none() async {
-    addTestSource('''
-void m() {}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_function_parameters_positional() async {
-    addTestSource('''
-void m([x, int y]) {}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_function_parameters_required() async {
-    addTestSource('''
-void m(x, int y) {}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_ignore_symbol_being_completed() async {
-    addTestSource('class MyClass { } main(MC^) { }');
-    await computeSuggestions();
-    assertNotSuggested('MyClass');
-    assertNotSuggested('MC');
-  }
-
-  test_inDartDoc_reference1() async {
-    addTestSource('''
-/// The [^
-main(aaa, bbb) {}''');
-    await computeSuggestions();
-    assertNotSuggested('main');
-  }
-
-  test_inDartDoc_reference2() async {
-    addTestSource('''
-/// The [m^
-main(aaa, bbb) {}''');
-    await computeSuggestions();
-    assertNotSuggested('main');
-  }
-
-  test_inDartDoc_reference3() async {
-    addTestSource('''
-/// The [^]
-main(aaa, bbb) {}''');
-    await computeSuggestions();
-    assertNotSuggested('main');
-  }
-
-  test_inDartDoc_reference4() async {
-    addTestSource('''
-/// The [m^]
-main(aaa, bbb) {}''');
-    await computeSuggestions();
-    assertNotSuggested('main');
-  }
-
-  test_InstanceCreationExpression() async {
-    addTestSource('''
-class A {foo(){var f; {var x;}}}
-class B {B(this.x, [String boo]) { } int x;}
-class C {C.bar({boo: 'hoo', int z: 0}) { } }
-main() {new ^ String x = "hello";}''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion;
-
-    suggestion = assertSuggestConstructor('A', elemOffset: -1);
-    expect(suggestion.element.parameters, '()');
-    expect(suggestion.element.returnType, 'A');
-    expect(suggestion.declaringType, 'A');
-    expect(suggestion.parameterNames, hasLength(0));
-    expect(suggestion.requiredParameterCount, 0);
-    expect(suggestion.hasNamedParameters, false);
-
-    suggestion = assertSuggestConstructor('B');
-    expect(suggestion.element.parameters, '(int x, [String boo])');
-    expect(suggestion.element.returnType, 'B');
-    expect(suggestion.declaringType, 'B');
-    expect(suggestion.parameterNames, hasLength(2));
-    expect(suggestion.parameterNames[0], 'x');
-    expect(suggestion.parameterTypes[0], 'int');
-    expect(suggestion.parameterNames[1], 'boo');
-    expect(suggestion.parameterTypes[1], 'String');
-    expect(suggestion.requiredParameterCount, 1);
-    expect(suggestion.hasNamedParameters, false);
-
-    suggestion = assertSuggestConstructor('C.bar');
-    expect(suggestion.element.parameters, '({dynamic boo: \'hoo\', int z: 0})');
-    expect(suggestion.element.returnType, 'C');
-    expect(suggestion.declaringType, 'C');
-    expect(suggestion.parameterNames, hasLength(2));
-    expect(suggestion.parameterNames[0], 'boo');
-    expect(suggestion.parameterTypes[0], 'dynamic');
-    expect(suggestion.parameterNames[1], 'z');
-    expect(suggestion.parameterTypes[1], 'int');
-    expect(suggestion.requiredParameterCount, 0);
-    expect(suggestion.hasNamedParameters, true);
-  }
-
-  test_method_parameters_mixed_required_and_named() async {
-    addTestSource('''
-class A {
-  void m(x, {int y}) {}
-}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_method_parameters_mixed_required_and_positional() async {
-    addTestSource('''
-class A {
-  void m(x, [int y]) {}
-}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_method_parameters_named() async {
-    addTestSource('''
-class A {
-  void m({x, int y}) {}
-}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_method_parameters_none() async {
-    addTestSource('''
-class A {
-  void m() {}
-}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_method_parameters_positional() async {
-    addTestSource('''
-class A {
-  void m([x, int y]) {}
-}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_method_parameters_required() async {
-    addTestSource('''
-class A {
-  void m(x, int y) {}
-}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_missing_params_constructor() async {
-    addTestSource('class C1{C1{} main(){C^}}');
-    await computeSuggestions();
-  }
-
-  test_missing_params_function() async {
-    addTestSource('int f1{} main(){f^}');
-    await computeSuggestions();
-  }
-
-  test_missing_params_method() async {
-    addTestSource('class C1{int f1{} main(){f^}}');
-    await computeSuggestions();
-  }
-
-  test_overrides() async {
-    addTestSource('''
-class A {m() {}}
-class B extends A {m() {^}}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_prioritization() async {
-    addTestSource('main() {var ab; var _ab; ^}');
-    await computeSuggestions();
-    assertNotSuggested('ab');
-    assertNotSuggested('_ab');
-  }
-
-  test_prioritization_private() async {
-    addTestSource('main() {var ab; var _ab; _^}');
-    await computeSuggestions();
-    assertNotSuggested('ab');
-    assertNotSuggested('_ab');
-  }
-
-  test_prioritization_public() async {
-    addTestSource('main() {var ab; var _ab; a^}');
-    await computeSuggestions();
-    assertNotSuggested('ab');
-    assertNotSuggested('_ab');
-  }
-
-  test_shadowed_name() async {
-    addTestSource('var a; class A { var a; m() { ^ } }');
-    await computeSuggestions();
-    assertNotSuggested('a');
-  }
-
   test_ArgumentList() async {
     // ArgumentList  MethodInvocation  ExpressionStatement  Block
     addSource(
@@ -1946,6 +1619,41 @@
     //assertNotSuggested('T1');
   }
 
+  test_constructor_parameters_mixed_required_and_named() async {
+    addTestSource('class A {A(x, {int y}) {^}}');
+    await computeSuggestions();
+    assertNotSuggested('x');
+    assertNotSuggested('y');
+  }
+
+  test_constructor_parameters_mixed_required_and_positional() async {
+    addTestSource('class A {A(x, [int y]) {^}}');
+    await computeSuggestions();
+    assertNotSuggested('x');
+    assertNotSuggested('y');
+  }
+
+  test_constructor_parameters_named() async {
+    addTestSource('class A {A({x, int y}) {^}}');
+    await computeSuggestions();
+    assertNotSuggested('x');
+    assertNotSuggested('y');
+  }
+
+  test_constructor_parameters_positional() async {
+    addTestSource('class A {A([x, int y]) {^}}');
+    await computeSuggestions();
+    assertNotSuggested('x');
+    assertNotSuggested('y');
+  }
+
+  test_constructor_parameters_required() async {
+    addTestSource('class A {A(x, int y) {^}}');
+    await computeSuggestions();
+    assertNotSuggested('x');
+    assertNotSuggested('y');
+  }
+
   test_ConstructorName_importedClass() async {
     // SimpleIdentifier  PrefixedIdentifier  TypeName  ConstructorName
     // InstanceCreationExpression
@@ -2078,6 +1786,22 @@
     assertNotSuggested('bar');
   }
 
+  test_enum() async {
+    addTestSource('enum E { one, two } main() {^}');
+    await computeSuggestions();
+    assertNotSuggested('E');
+    assertNotSuggested('one');
+    assertNotSuggested('two');
+  }
+
+  test_enum_deprecated() async {
+    addTestSource('@deprecated enum E { one, two } main() {^}');
+    await computeSuggestions();
+    assertNotSuggested('E');
+    assertNotSuggested('one');
+    assertNotSuggested('two');
+  }
+
   test_ExpressionStatement_identifier() async {
     // SimpleIdentifier  ExpressionStatement  Block
     addSource(
@@ -2301,6 +2025,72 @@
     assertNotSuggested('bar');
   }
 
+  test_function_parameters_mixed_required_and_named() async {
+    addTestSource('''
+void m(x, {int y}) {}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
+  test_function_parameters_mixed_required_and_positional() async {
+    addTestSource('''
+void m(x, [int y]) {}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
+  test_function_parameters_named() async {
+    addTestSource('''
+void m({x, int y}) {}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
+  test_function_parameters_none() async {
+    addTestSource('''
+void m() {}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
+  test_function_parameters_positional() async {
+    addTestSource('''
+void m([x, int y]) {}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
+  test_function_parameters_required() async {
+    addTestSource('''
+void m(x, int y) {}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
   test_FunctionDeclaration_returnType_afterComment() async {
     // ClassDeclaration  CompilationUnit
     addSource(
@@ -2473,6 +2263,13 @@
     assertNotSuggested('==');
   }
 
+  test_ignore_symbol_being_completed() async {
+    addTestSource('class MyClass { } main(MC^) { }');
+    await computeSuggestions();
+    assertNotSuggested('MyClass');
+    assertNotSuggested('MC');
+  }
+
   test_ImportDirective_dart() async {
     // SimpleStringLiteral  ImportDirective
     addTestSource('''
@@ -2483,6 +2280,38 @@
     assertNoSuggestions();
   }
 
+  test_inDartDoc_reference1() async {
+    addTestSource('''
+/// The [^
+main(aaa, bbb) {}''');
+    await computeSuggestions();
+    assertNotSuggested('main');
+  }
+
+  test_inDartDoc_reference2() async {
+    addTestSource('''
+/// The [m^
+main(aaa, bbb) {}''');
+    await computeSuggestions();
+    assertNotSuggested('main');
+  }
+
+  test_inDartDoc_reference3() async {
+    addTestSource('''
+/// The [^]
+main(aaa, bbb) {}''');
+    await computeSuggestions();
+    assertNotSuggested('main');
+  }
+
+  test_inDartDoc_reference4() async {
+    addTestSource('''
+/// The [m^]
+main(aaa, bbb) {}''');
+    await computeSuggestions();
+    assertNotSuggested('main');
+  }
+
   test_IndexExpression() async {
     // ExpressionStatement  Block
     addSource(
@@ -2533,6 +2362,48 @@
     //assertNotSuggested('T1');
   }
 
+  test_InstanceCreationExpression() async {
+    addTestSource('''
+class A {foo(){var f; {var x;}}}
+class B {B(this.x, [String boo]) { } int x;}
+class C {C.bar({boo: 'hoo', int z: 0}) { } }
+main() {new ^ String x = "hello";}''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion;
+
+    suggestion = assertSuggestConstructor('A', elemOffset: -1);
+    expect(suggestion.element.parameters, '()');
+    expect(suggestion.element.returnType, 'A');
+    expect(suggestion.declaringType, 'A');
+    expect(suggestion.parameterNames, hasLength(0));
+    expect(suggestion.requiredParameterCount, 0);
+    expect(suggestion.hasNamedParameters, false);
+
+    suggestion = assertSuggestConstructor('B');
+    expect(suggestion.element.parameters, '(int x, [String boo])');
+    expect(suggestion.element.returnType, 'B');
+    expect(suggestion.declaringType, 'B');
+    expect(suggestion.parameterNames, hasLength(2));
+    expect(suggestion.parameterNames[0], 'x');
+    expect(suggestion.parameterTypes[0], 'int');
+    expect(suggestion.parameterNames[1], 'boo');
+    expect(suggestion.parameterTypes[1], 'String');
+    expect(suggestion.requiredParameterCount, 1);
+    expect(suggestion.hasNamedParameters, false);
+
+    suggestion = assertSuggestConstructor('C.bar');
+    expect(suggestion.element.parameters, '({dynamic boo: \'hoo\', int z: 0})');
+    expect(suggestion.element.returnType, 'C');
+    expect(suggestion.declaringType, 'C');
+    expect(suggestion.parameterNames, hasLength(2));
+    expect(suggestion.parameterNames[0], 'boo');
+    expect(suggestion.parameterTypes[0], 'dynamic');
+    expect(suggestion.parameterNames[1], 'z');
+    expect(suggestion.parameterTypes[1], 'int');
+    expect(suggestion.requiredParameterCount, 0);
+    expect(suggestion.hasNamedParameters, true);
+  }
+
   test_InstanceCreationExpression_imported() async {
     // SimpleIdentifier  TypeName  ConstructorName  InstanceCreationExpression
     addSource(
@@ -2811,6 +2682,14 @@
     assertNoSuggestions();
   }
 
+  test_localVariableDeclarationName() async {
+    addTestSource('main() {String m^}');
+    await computeSuggestions();
+
+    assertNotSuggested('main');
+    assertNotSuggested('min');
+  }
+
   test_MapLiteralEntry() async {
     // MapLiteralEntry  MapLiteral  VariableDeclaration
     addSource(
@@ -2890,6 +2769,84 @@
     assertNotSuggested('T2');
   }
 
+  test_method_parameters_mixed_required_and_named() async {
+    addTestSource('''
+class A {
+  void m(x, {int y}) {}
+}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
+  test_method_parameters_mixed_required_and_positional() async {
+    addTestSource('''
+class A {
+  void m(x, [int y]) {}
+}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
+  test_method_parameters_named() async {
+    addTestSource('''
+class A {
+  void m({x, int y}) {}
+}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
+  test_method_parameters_none() async {
+    addTestSource('''
+class A {
+  void m() {}
+}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
+  test_method_parameters_positional() async {
+    addTestSource('''
+class A {
+  void m([x, int y]) {}
+}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
+  test_method_parameters_required() async {
+    addTestSource('''
+class A {
+  void m(x, int y) {}
+}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
   test_MethodDeclaration_body_getters() async {
     // Block  BlockFunctionBody  MethodDeclaration
     addTestSource('class A {@deprecated X get f => 0; Z a() {^} get _g => 1;}');
@@ -3147,6 +3104,21 @@
     assertNotSuggested('==');
   }
 
+  test_missing_params_constructor() async {
+    addTestSource('class C1{C1{} main(){C^}}');
+    await computeSuggestions();
+  }
+
+  test_missing_params_function() async {
+    addTestSource('int f1{} main(){f^}');
+    await computeSuggestions();
+  }
+
+  test_missing_params_method() async {
+    addTestSource('class C1{int f1{} main(){f^}}');
+    await computeSuggestions();
+  }
+
   test_new_instance() async {
     addTestSource('import "dart:math"; class A {x() {new Random().^}}');
     await computeSuggestions();
@@ -3159,6 +3131,15 @@
     assertNotSuggested('A');
   }
 
+  test_overrides() async {
+    addTestSource('''
+class A {m() {}}
+class B extends A {m() {^}}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
   test_parameterName_excludeTypes() async {
     addTestSource('m(int ^) {}');
     await computeSuggestions();
@@ -3595,14 +3576,6 @@
     assertNotSuggested('length');
   }
 
-  test_localVariableDeclarationName() async {
-    addTestSource('main() {String m^}');
-    await computeSuggestions();
-
-    assertNotSuggested('main');
-    assertNotSuggested('min');
-  }
-
   test_PrefixedIdentifier_trailingStmt_param2() async {
     // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
     addTestSource('f(String g) {g.^ int y = 0;}');
@@ -3619,6 +3592,27 @@
     assertNotSuggested('length');
   }
 
+  test_prioritization() async {
+    addTestSource('main() {var ab; var _ab; ^}');
+    await computeSuggestions();
+    assertNotSuggested('ab');
+    assertNotSuggested('_ab');
+  }
+
+  test_prioritization_private() async {
+    addTestSource('main() {var ab; var _ab; _^}');
+    await computeSuggestions();
+    assertNotSuggested('ab');
+    assertNotSuggested('_ab');
+  }
+
+  test_prioritization_public() async {
+    addTestSource('main() {var ab; var _ab; a^}');
+    await computeSuggestions();
+    assertNotSuggested('ab');
+    assertNotSuggested('_ab');
+  }
+
   test_PropertyAccess_expression() async {
     // SimpleIdentifier  MethodInvocation  PropertyAccess  ExpressionStatement
     addTestSource('class A {a() {"hello".to^String().length}}');
@@ -3665,6 +3659,12 @@
     assertNotSuggested('==');
   }
 
+  test_shadowed_name() async {
+    addTestSource('var a; class A { var a; m() { ^ } }');
+    await computeSuggestions();
+    assertNotSuggested('a');
+  }
+
   test_SwitchStatement_c() async {
     // SwitchStatement  Block  BlockFunctionBody  MethodDeclaration
     addTestSource('class A {String g(int x) {switch(x) {c^}}}');
diff --git a/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart
index fc707f9..eeab8d7 100644
--- a/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart
@@ -64,6 +64,45 @@
         relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
   }
 
+  test_partFile_Constructor2() async {
+    // SimpleIdentifier  TypeName  ConstructorName
+    addSource(
+        '/testB.dart',
+        '''
+        lib B;
+        int T1;
+        F1() { }
+        class X {X.c(); X._d(); z() {}}''');
+    addSource(
+        '/testA.dart',
+        '''
+        part of libA;
+        class B { }''');
+    addTestSource('''
+        library libA;
+        import "/testB.dart";
+        part "/testA.dart";
+        class A { A({String boo: 'hoo'}) { } }
+        main() {new ^}
+        var m;''');
+    await computeLibrariesContaining();
+    await computeSuggestions();
+    expect(replacementOffset, completionOffset);
+    expect(replacementLength, 0);
+    assertSuggestConstructor('B');
+    // Suggested by ConstructorContributor
+    assertNotSuggested('A');
+    // Suggested by ImportedReferenceContributor
+    assertNotSuggested('Object');
+    assertNotSuggested('X.c');
+    assertNotSuggested('X._d');
+    assertNotSuggested('F1');
+    assertNotSuggested('T1');
+    assertNotSuggested('_d');
+    assertNotSuggested('z');
+    assertNotSuggested('m');
+  }
+
   test_partFile_TypeName() async {
     addSource(
         '/testB.dart',
@@ -111,45 +150,6 @@
     assertNotSuggested('z');
   }
 
-  test_partFile_Constructor2() async {
-    // SimpleIdentifier  TypeName  ConstructorName
-    addSource(
-        '/testB.dart',
-        '''
-        lib B;
-        int T1;
-        F1() { }
-        class X {X.c(); X._d(); z() {}}''');
-    addSource(
-        '/testA.dart',
-        '''
-        part of libA;
-        class B { }''');
-    addTestSource('''
-        library libA;
-        import "/testB.dart";
-        part "/testA.dart";
-        class A { A({String boo: 'hoo'}) { } }
-        main() {new ^}
-        var m;''');
-    await computeLibrariesContaining();
-    await computeSuggestions();
-    expect(replacementOffset, completionOffset);
-    expect(replacementLength, 0);
-    assertSuggestConstructor('B');
-    // Suggested by ConstructorContributor
-    assertNotSuggested('A');
-    // Suggested by ImportedReferenceContributor
-    assertNotSuggested('Object');
-    assertNotSuggested('X.c');
-    assertNotSuggested('X._d');
-    assertNotSuggested('F1');
-    assertNotSuggested('T1');
-    assertNotSuggested('_d');
-    assertNotSuggested('z');
-    assertNotSuggested('m');
-  }
-
   test_partFile_TypeName2() async {
     addSource(
         '/testB.dart',
diff --git a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
index e5d854d..a9389c0 100644
--- a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
@@ -61,335 +61,6 @@
     return new LocalReferenceContributor();
   }
 
-  test_constructor_parameters_mixed_required_and_named() async {
-    addTestSource('class A {A(x, {int y}) {^}}');
-    await computeSuggestions();
-    assertSuggestParameter('x', null);
-    assertSuggestParameter('y', 'int');
-  }
-
-  test_constructor_parameters_mixed_required_and_positional() async {
-    addTestSource('class A {A(x, [int y]) {^}}');
-    await computeSuggestions();
-    assertSuggestParameter('x', null);
-    assertSuggestParameter('y', 'int');
-  }
-
-  test_constructor_parameters_named() async {
-    addTestSource('class A {A({x, int y}) {^}}');
-    await computeSuggestions();
-    assertSuggestParameter('x', null);
-    assertSuggestParameter('y', 'int');
-  }
-
-  test_constructor_parameters_positional() async {
-    addTestSource('class A {A([x, int y]) {^}}');
-    await computeSuggestions();
-    assertSuggestParameter('x', null);
-    assertSuggestParameter('y', 'int');
-  }
-
-  test_constructor_parameters_required() async {
-    addTestSource('class A {A(x, int y) {^}}');
-    await computeSuggestions();
-    assertSuggestParameter('x', null);
-    assertSuggestParameter('y', 'int');
-  }
-
-  test_enum() async {
-    addTestSource('enum E { one, two } main() {^}');
-    await computeSuggestions();
-    assertSuggestEnum('E');
-    assertNotSuggested('one');
-    assertNotSuggested('two');
-  }
-
-  test_enum_deprecated() async {
-    addTestSource('@deprecated enum E { one, two } main() {^}');
-    await computeSuggestions();
-    assertSuggestEnum('E', isDeprecated: true);
-    assertNotSuggested('one');
-    assertNotSuggested('two');
-  }
-
-  test_function_parameters_mixed_required_and_named() async {
-    addTestSource('''
-void m(x, {int y}) {}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
-        relevance: DART_RELEVANCE_LOCAL_FUNCTION);
-    expect(suggestion.parameterNames, hasLength(2));
-    expect(suggestion.parameterNames[0], 'x');
-    expect(suggestion.parameterTypes[0], 'dynamic');
-    expect(suggestion.parameterNames[1], 'y');
-    expect(suggestion.parameterTypes[1], 'int');
-    expect(suggestion.requiredParameterCount, 1);
-    expect(suggestion.hasNamedParameters, true);
-  }
-
-  test_function_parameters_mixed_required_and_positional() async {
-    addTestSource('''
-void m(x, [int y]) {}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
-        relevance: DART_RELEVANCE_LOCAL_FUNCTION);
-    expect(suggestion.parameterNames, hasLength(2));
-    expect(suggestion.parameterNames[0], 'x');
-    expect(suggestion.parameterTypes[0], 'dynamic');
-    expect(suggestion.parameterNames[1], 'y');
-    expect(suggestion.parameterTypes[1], 'int');
-    expect(suggestion.requiredParameterCount, 1);
-    expect(suggestion.hasNamedParameters, false);
-  }
-
-  test_function_parameters_named() async {
-    addTestSource('''
-void m({x, int y}) {}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
-        relevance: DART_RELEVANCE_LOCAL_FUNCTION);
-    expect(suggestion.parameterNames, hasLength(2));
-    expect(suggestion.parameterNames[0], 'x');
-    expect(suggestion.parameterTypes[0], 'dynamic');
-    expect(suggestion.parameterNames[1], 'y');
-    expect(suggestion.parameterTypes[1], 'int');
-    expect(suggestion.requiredParameterCount, 0);
-    expect(suggestion.hasNamedParameters, true);
-  }
-
-  test_function_parameters_none() async {
-    addTestSource('''
-void m() {}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
-        relevance: DART_RELEVANCE_LOCAL_FUNCTION);
-    expect(suggestion.parameterNames, isEmpty);
-    expect(suggestion.parameterTypes, isEmpty);
-    expect(suggestion.requiredParameterCount, 0);
-    expect(suggestion.hasNamedParameters, false);
-  }
-
-  test_function_parameters_positional() async {
-    addTestSource('''
-void m([x, int y]) {}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
-        relevance: DART_RELEVANCE_LOCAL_FUNCTION);
-    expect(suggestion.parameterNames, hasLength(2));
-    expect(suggestion.parameterNames[0], 'x');
-    expect(suggestion.parameterTypes[0], 'dynamic');
-    expect(suggestion.parameterNames[1], 'y');
-    expect(suggestion.parameterTypes[1], 'int');
-    expect(suggestion.requiredParameterCount, 0);
-    expect(suggestion.hasNamedParameters, false);
-  }
-
-  test_function_parameters_required() async {
-    addTestSource('''
-void m(x, int y) {}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
-        relevance: DART_RELEVANCE_LOCAL_FUNCTION);
-    expect(suggestion.parameterNames, hasLength(2));
-    expect(suggestion.parameterNames[0], 'x');
-    expect(suggestion.parameterTypes[0], 'dynamic');
-    expect(suggestion.parameterNames[1], 'y');
-    expect(suggestion.parameterTypes[1], 'int');
-    expect(suggestion.requiredParameterCount, 2);
-    expect(suggestion.hasNamedParameters, false);
-  }
-
-  test_ignore_symbol_being_completed() async {
-    addTestSource('class MyClass { } main(MC^) { }');
-    await computeSuggestions();
-    assertSuggestClass('MyClass');
-    assertNotSuggested('MC');
-  }
-
-  test_inDartDoc_reference3() async {
-    addTestSource('''
-/// The [^]
-main(aaa, bbb) {}''');
-    await computeSuggestions();
-    assertSuggestFunction('main', null,
-        kind: CompletionSuggestionKind.IDENTIFIER,
-        relevance: DART_RELEVANCE_LOCAL_FUNCTION);
-  }
-
-  test_inDartDoc_reference4() async {
-    addTestSource('''
-/// The [m^]
-main(aaa, bbb) {}''');
-    await computeSuggestions();
-    assertSuggestFunction('main', null,
-        kind: CompletionSuggestionKind.IDENTIFIER,
-        relevance: DART_RELEVANCE_LOCAL_FUNCTION);
-  }
-
-  test_InstanceCreationExpression() async {
-    addTestSource('''
-class A {foo(){var f; {var x;}}}
-class B {B(this.x, [String boo]) { } int x;}
-class C {C.bar({boo: 'hoo', int z: 0}) { } }
-main() {new ^ String x = "hello";}''');
-    await computeSuggestions();
-    // Suggested by LocalConstructorContributor
-    assertNoSuggestions();
-  }
-
-  test_method_parameters_mixed_required_and_named() async {
-    addTestSource('''
-class A {
-  void m(x, {int y}) {}
-}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_method_parameters_mixed_required_and_positional() async {
-    addTestSource('''
-class A {
-  void m(x, [int y]) {}
-}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_method_parameters_named() async {
-    addTestSource('''
-class A {
-  void m({x, int y}) {}
-}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_method_parameters_none() async {
-    addTestSource('''
-class A {
-  void m() {}
-}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_method_parameters_positional() async {
-    addTestSource('''
-class A {
-  void m([x, int y]) {}
-}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_method_parameters_required() async {
-    addTestSource('''
-class A {
-  void m(x, int y) {}
-}
-class B extends A {
-  main() {^}
-}
-''');
-    await computeSuggestions();
-    assertNotSuggested('m');
-  }
-
-  test_missing_params_constructor() async {
-    addTestSource('class C1{C1{} main(){C^}}');
-    await computeSuggestions();
-  }
-
-  test_missing_params_function() async {
-    addTestSource('int f1{} main(){f^}');
-    await computeSuggestions();
-  }
-
-  test_missing_params_method() async {
-    addTestSource('class C1{int f1{} main(){f^}}');
-    await computeSuggestions();
-  }
-
-  test_overrides() async {
-    addTestSource('''
-class A {m() {}}
-class B extends A {m() {^}}
-''');
-    await computeSuggestions();
-    assertSuggestMethod('m', 'B', null, relevance: DART_RELEVANCE_LOCAL_METHOD);
-  }
-
-  test_prioritization() async {
-    addTestSource('main() {var ab; var _ab; ^}');
-    await computeSuggestions();
-    assertSuggestLocalVariable('ab', null);
-    assertSuggestLocalVariable('_ab', null, relevance: DART_RELEVANCE_DEFAULT);
-  }
-
-  test_prioritization_private() async {
-    addTestSource('main() {var ab; var _ab; _^}');
-    await computeSuggestions();
-    assertSuggestLocalVariable('ab', null);
-    assertSuggestLocalVariable('_ab', null);
-  }
-
-  test_prioritization_public() async {
-    addTestSource('main() {var ab; var _ab; a^}');
-    await computeSuggestions();
-    assertSuggestLocalVariable('ab', null);
-    assertSuggestLocalVariable('_ab', null, relevance: DART_RELEVANCE_DEFAULT);
-  }
-
-  test_shadowed_name() async {
-    addTestSource('var a; class A { var a; m() { ^ } }');
-    await computeSuggestions();
-    assertSuggestField('a', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
-  }
-
   test_ArgumentList() async {
     // ArgumentList  MethodInvocation  ExpressionStatement  Block
     addSource(
@@ -2003,6 +1674,41 @@
     //assertNotSuggested('T1');
   }
 
+  test_constructor_parameters_mixed_required_and_named() async {
+    addTestSource('class A {A(x, {int y}) {^}}');
+    await computeSuggestions();
+    assertSuggestParameter('x', null);
+    assertSuggestParameter('y', 'int');
+  }
+
+  test_constructor_parameters_mixed_required_and_positional() async {
+    addTestSource('class A {A(x, [int y]) {^}}');
+    await computeSuggestions();
+    assertSuggestParameter('x', null);
+    assertSuggestParameter('y', 'int');
+  }
+
+  test_constructor_parameters_named() async {
+    addTestSource('class A {A({x, int y}) {^}}');
+    await computeSuggestions();
+    assertSuggestParameter('x', null);
+    assertSuggestParameter('y', 'int');
+  }
+
+  test_constructor_parameters_positional() async {
+    addTestSource('class A {A([x, int y]) {^}}');
+    await computeSuggestions();
+    assertSuggestParameter('x', null);
+    assertSuggestParameter('y', 'int');
+  }
+
+  test_constructor_parameters_required() async {
+    addTestSource('class A {A(x, int y) {^}}');
+    await computeSuggestions();
+    assertSuggestParameter('x', null);
+    assertSuggestParameter('y', 'int');
+  }
+
   test_ConstructorName_importedClass() async {
     // SimpleIdentifier  PrefixedIdentifier  TypeName  ConstructorName
     // InstanceCreationExpression
@@ -2136,6 +1842,22 @@
     assertNotSuggested('bar');
   }
 
+  test_enum() async {
+    addTestSource('enum E { one, two } main() {^}');
+    await computeSuggestions();
+    assertSuggestEnum('E');
+    assertNotSuggested('one');
+    assertNotSuggested('two');
+  }
+
+  test_enum_deprecated() async {
+    addTestSource('@deprecated enum E { one, two } main() {^}');
+    await computeSuggestions();
+    assertSuggestEnum('E', isDeprecated: true);
+    assertNotSuggested('one');
+    assertNotSuggested('two');
+  }
+
   test_ExpressionStatement_identifier() async {
     // SimpleIdentifier  ExpressionStatement  Block
     addSource(
@@ -2216,6 +1938,39 @@
     assertNoSuggestions();
   }
 
+  test_ForEachStatement() async {
+    // SimpleIdentifier  ForEachStatement
+    addTestSource('main() {List<int> values; for (int index in ^)}');
+    await computeSuggestions();
+
+    expect(replacementOffset, completionOffset);
+    expect(replacementLength, 0);
+    assertSuggestLocalVariable('values', 'List');
+    assertNotSuggested('index');
+  }
+
+  test_ForEachStatement2() async {
+    // SimpleIdentifier  ForEachStatement
+    addTestSource('main() {List<int> values; for (int index in i^)}');
+    await computeSuggestions();
+
+    expect(replacementOffset, completionOffset - 1);
+    expect(replacementLength, 1);
+    assertSuggestLocalVariable('values', 'List');
+    assertNotSuggested('index');
+  }
+
+  test_ForEachStatement3() async {
+    // SimpleIdentifier ParenthesizedExpression  ForEachStatement
+    addTestSource('main() {List<int> values; for (int index in (i^))}');
+    await computeSuggestions();
+
+    expect(replacementOffset, completionOffset - 1);
+    expect(replacementLength, 1);
+    assertSuggestLocalVariable('values', 'List');
+    assertNotSuggested('index');
+  }
+
   test_ForEachStatement_body_typed() async {
     // Block  ForEachStatement
     addTestSource('main(args) {for (int foo in bar) {^}}');
@@ -2304,39 +2059,6 @@
     assertNotSuggested('bar');
   }
 
-  test_ForEachStatement() async {
-    // SimpleIdentifier  ForEachStatement
-    addTestSource('main() {List<int> values; for (int index in ^)}');
-    await computeSuggestions();
-
-    expect(replacementOffset, completionOffset);
-    expect(replacementLength, 0);
-    assertSuggestLocalVariable('values', 'List');
-    assertNotSuggested('index');
-  }
-
-  test_ForEachStatement2() async {
-    // SimpleIdentifier  ForEachStatement
-    addTestSource('main() {List<int> values; for (int index in i^)}');
-    await computeSuggestions();
-
-    expect(replacementOffset, completionOffset - 1);
-    expect(replacementLength, 1);
-    assertSuggestLocalVariable('values', 'List');
-    assertNotSuggested('index');
-  }
-
-  test_ForEachStatement3() async {
-    // SimpleIdentifier ParenthesizedExpression  ForEachStatement
-    addTestSource('main() {List<int> values; for (int index in (i^))}');
-    await computeSuggestions();
-
-    expect(replacementOffset, completionOffset - 1);
-    expect(replacementLength, 1);
-    assertSuggestLocalVariable('values', 'List');
-    assertNotSuggested('index');
-  }
-
   test_ForStatement_body() async {
     // Block  ForStatement
     addTestSource('main(args) {for (int i; i < 10; ++i) {^}}');
@@ -2395,6 +2117,117 @@
     assertNotSuggested('bar');
   }
 
+  test_function_parameters_mixed_required_and_named() async {
+    addTestSource('''
+void m(x, {int y}) {}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
+        relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+    expect(suggestion.parameterNames, hasLength(2));
+    expect(suggestion.parameterNames[0], 'x');
+    expect(suggestion.parameterTypes[0], 'dynamic');
+    expect(suggestion.parameterNames[1], 'y');
+    expect(suggestion.parameterTypes[1], 'int');
+    expect(suggestion.requiredParameterCount, 1);
+    expect(suggestion.hasNamedParameters, true);
+  }
+
+  test_function_parameters_mixed_required_and_positional() async {
+    addTestSource('''
+void m(x, [int y]) {}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
+        relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+    expect(suggestion.parameterNames, hasLength(2));
+    expect(suggestion.parameterNames[0], 'x');
+    expect(suggestion.parameterTypes[0], 'dynamic');
+    expect(suggestion.parameterNames[1], 'y');
+    expect(suggestion.parameterTypes[1], 'int');
+    expect(suggestion.requiredParameterCount, 1);
+    expect(suggestion.hasNamedParameters, false);
+  }
+
+  test_function_parameters_named() async {
+    addTestSource('''
+void m({x, int y}) {}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
+        relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+    expect(suggestion.parameterNames, hasLength(2));
+    expect(suggestion.parameterNames[0], 'x');
+    expect(suggestion.parameterTypes[0], 'dynamic');
+    expect(suggestion.parameterNames[1], 'y');
+    expect(suggestion.parameterTypes[1], 'int');
+    expect(suggestion.requiredParameterCount, 0);
+    expect(suggestion.hasNamedParameters, true);
+  }
+
+  test_function_parameters_none() async {
+    addTestSource('''
+void m() {}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
+        relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+    expect(suggestion.parameterNames, isEmpty);
+    expect(suggestion.parameterTypes, isEmpty);
+    expect(suggestion.requiredParameterCount, 0);
+    expect(suggestion.hasNamedParameters, false);
+  }
+
+  test_function_parameters_positional() async {
+    addTestSource('''
+void m([x, int y]) {}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
+        relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+    expect(suggestion.parameterNames, hasLength(2));
+    expect(suggestion.parameterNames[0], 'x');
+    expect(suggestion.parameterTypes[0], 'dynamic');
+    expect(suggestion.parameterNames[1], 'y');
+    expect(suggestion.parameterTypes[1], 'int');
+    expect(suggestion.requiredParameterCount, 0);
+    expect(suggestion.hasNamedParameters, false);
+  }
+
+  test_function_parameters_required() async {
+    addTestSource('''
+void m(x, int y) {}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion = assertSuggestFunction('m', 'void',
+        relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+    expect(suggestion.parameterNames, hasLength(2));
+    expect(suggestion.parameterNames[0], 'x');
+    expect(suggestion.parameterTypes[0], 'dynamic');
+    expect(suggestion.parameterNames[1], 'y');
+    expect(suggestion.parameterTypes[1], 'int');
+    expect(suggestion.requiredParameterCount, 2);
+    expect(suggestion.hasNamedParameters, false);
+  }
+
   test_FunctionDeclaration_returnType_afterComment() async {
     // ClassDeclaration  CompilationUnit
     addSource(
@@ -2588,6 +2421,13 @@
     assertNotSuggested('==');
   }
 
+  test_ignore_symbol_being_completed() async {
+    addTestSource('class MyClass { } main(MC^) { }');
+    await computeSuggestions();
+    assertSuggestClass('MyClass');
+    assertNotSuggested('MC');
+  }
+
   test_ImportDirective_dart() async {
     // SimpleStringLiteral  ImportDirective
     addTestSource('''
@@ -2598,6 +2438,26 @@
     assertNoSuggestions();
   }
 
+  test_inDartDoc_reference3() async {
+    addTestSource('''
+/// The [^]
+main(aaa, bbb) {}''');
+    await computeSuggestions();
+    assertSuggestFunction('main', null,
+        kind: CompletionSuggestionKind.IDENTIFIER,
+        relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+  }
+
+  test_inDartDoc_reference4() async {
+    addTestSource('''
+/// The [m^]
+main(aaa, bbb) {}''');
+    await computeSuggestions();
+    assertSuggestFunction('main', null,
+        kind: CompletionSuggestionKind.IDENTIFIER,
+        relevance: DART_RELEVANCE_LOCAL_FUNCTION);
+  }
+
   test_IndexExpression() async {
     // ExpressionStatement  Block
     addSource(
@@ -2651,6 +2511,17 @@
     //assertNotSuggested('T1');
   }
 
+  test_InstanceCreationExpression() async {
+    addTestSource('''
+class A {foo(){var f; {var x;}}}
+class B {B(this.x, [String boo]) { } int x;}
+class C {C.bar({boo: 'hoo', int z: 0}) { } }
+main() {new ^ String x = "hello";}''');
+    await computeSuggestions();
+    // Suggested by LocalConstructorContributor
+    assertNoSuggestions();
+  }
+
   test_InstanceCreationExpression_imported() async {
     // SimpleIdentifier  TypeName  ConstructorName  InstanceCreationExpression
     addSource(
@@ -2936,6 +2807,14 @@
     assertNoSuggestions();
   }
 
+  test_localVariableDeclarationName() async {
+    addTestSource('main() {String m^}');
+    await computeSuggestions();
+
+    assertNotSuggested('main');
+    assertNotSuggested('min');
+  }
+
   test_MapLiteralEntry() async {
     // MapLiteralEntry  MapLiteral  VariableDeclaration
     addSource(
@@ -3018,6 +2897,84 @@
         relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE);
   }
 
+  test_method_parameters_mixed_required_and_named() async {
+    addTestSource('''
+class A {
+  void m(x, {int y}) {}
+}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
+  test_method_parameters_mixed_required_and_positional() async {
+    addTestSource('''
+class A {
+  void m(x, [int y]) {}
+}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
+  test_method_parameters_named() async {
+    addTestSource('''
+class A {
+  void m({x, int y}) {}
+}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
+  test_method_parameters_none() async {
+    addTestSource('''
+class A {
+  void m() {}
+}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
+  test_method_parameters_positional() async {
+    addTestSource('''
+class A {
+  void m([x, int y]) {}
+}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
+  test_method_parameters_required() async {
+    addTestSource('''
+class A {
+  void m(x, int y) {}
+}
+class B extends A {
+  main() {^}
+}
+''');
+    await computeSuggestions();
+    assertNotSuggested('m');
+  }
+
   test_MethodDeclaration_body_getters() async {
     // Block  BlockFunctionBody  MethodDeclaration
     addTestSource('class A {@deprecated X get f => 0; Z a() {^} get _g => 1;}');
@@ -3347,6 +3304,21 @@
     assertNotSuggested('==');
   }
 
+  test_missing_params_constructor() async {
+    addTestSource('class C1{C1{} main(){C^}}');
+    await computeSuggestions();
+  }
+
+  test_missing_params_function() async {
+    addTestSource('int f1{} main(){f^}');
+    await computeSuggestions();
+  }
+
+  test_missing_params_method() async {
+    addTestSource('class C1{int f1{} main(){f^}}');
+    await computeSuggestions();
+  }
+
   test_new_instance() async {
     addTestSource('import "dart:math"; class A {x() {new Random().^}}');
     await computeSuggestions();
@@ -3359,6 +3331,15 @@
     assertNotSuggested('A');
   }
 
+  test_overrides() async {
+    addTestSource('''
+class A {m() {}}
+class B extends A {m() {^}}
+''');
+    await computeSuggestions();
+    assertSuggestMethod('m', 'B', null, relevance: DART_RELEVANCE_LOCAL_METHOD);
+  }
+
   test_parameterName_excludeTypes() async {
     addTestSource('m(int ^) {}');
     await computeSuggestions();
@@ -3798,14 +3779,6 @@
     assertNotSuggested('length');
   }
 
-  test_localVariableDeclarationName() async {
-    addTestSource('main() {String m^}');
-    await computeSuggestions();
-
-    assertNotSuggested('main');
-    assertNotSuggested('min');
-  }
-
   test_PrefixedIdentifier_trailingStmt_param2() async {
     // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
     addTestSource('f(String g) {g.^ int y = 0;}');
@@ -3822,6 +3795,27 @@
     assertNotSuggested('length');
   }
 
+  test_prioritization() async {
+    addTestSource('main() {var ab; var _ab; ^}');
+    await computeSuggestions();
+    assertSuggestLocalVariable('ab', null);
+    assertSuggestLocalVariable('_ab', null, relevance: DART_RELEVANCE_DEFAULT);
+  }
+
+  test_prioritization_private() async {
+    addTestSource('main() {var ab; var _ab; _^}');
+    await computeSuggestions();
+    assertSuggestLocalVariable('ab', null);
+    assertSuggestLocalVariable('_ab', null);
+  }
+
+  test_prioritization_public() async {
+    addTestSource('main() {var ab; var _ab; a^}');
+    await computeSuggestions();
+    assertSuggestLocalVariable('ab', null);
+    assertSuggestLocalVariable('_ab', null, relevance: DART_RELEVANCE_DEFAULT);
+  }
+
   test_PropertyAccess_expression() async {
     // SimpleIdentifier  MethodInvocation  PropertyAccess  ExpressionStatement
     addTestSource('class A {a() {"hello".to^String().length}}');
@@ -3868,6 +3862,12 @@
     assertNotSuggested('==');
   }
 
+  test_shadowed_name() async {
+    addTestSource('var a; class A { var a; m() { ^ } }');
+    await computeSuggestions();
+    assertSuggestField('a', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
+  }
+
   test_SwitchStatement_c() async {
     // SwitchStatement  Block  BlockFunctionBody  MethodDeclaration
     addTestSource('class A {String g(int x) {switch(x) {c^}}}');
diff --git a/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart
index 0ac517b..b633efd 100644
--- a/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart
@@ -7,12 +7,12 @@
 import 'package:analysis_server/plugin/protocol/protocol.dart';
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/named_constructor_contributor.dart';
+import 'package:analyzer/src/generated/source.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 import 'package:unittest/unittest.dart';
 
 import '../../../utils.dart';
 import 'completion_contributor_util.dart';
-import 'package:analyzer/src/generated/source.dart';
 
 main() {
   initializeTestEnvironment();
diff --git a/pkg/analysis_server/test/services/completion/dart/static_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/static_member_contributor_test.dart
index 6efd8ab..878fbdb7 100644
--- a/pkg/analysis_server/test/services/completion/dart/static_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/static_member_contributor_test.dart
@@ -36,53 +36,6 @@
     assertSuggestField('values', 'List<E>', isDeprecated: true);
   }
 
-  test_PrefixedIdentifier_class_const() async {
-    // 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.^}''');
-    await computeSuggestions();
-    expect(replacementOffset, completionOffset);
-    expect(replacementLength, 0);
-    assertSuggestField('scA', 'String');
-    assertNotSuggested('scB');
-    assertNotSuggested('scI');
-    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_enumConst() async {
     addTestSource('enum E { one, two } main() {E.^}');
     await computeSuggestions();
@@ -286,4 +239,51 @@
     await computeSuggestions();
     assertSuggestMethod('wait', 'Future', 'Future<dynamic>');
   }
+
+  test_PrefixedIdentifier_class_const() async {
+    // 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.^}''');
+    await computeSuggestions();
+    expect(replacementOffset, completionOffset);
+    expect(replacementLength, 0);
+    assertSuggestField('scA', 'String');
+    assertNotSuggested('scB');
+    assertNotSuggested('scI');
+    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('==');
+  }
 }
diff --git a/pkg/analysis_server/test/services/completion/dart/test_all.dart b/pkg/analysis_server/test/services/completion/dart/test_all.dart
index b936392..1d395ac 100644
--- a/pkg/analysis_server/test/services/completion/dart/test_all.dart
+++ b/pkg/analysis_server/test/services/completion/dart/test_all.dart
@@ -9,8 +9,8 @@
 import '../../../utils.dart';
 import 'arglist_contributor_test.dart' as arglist_test;
 import 'combinator_contributor_test.dart' as combinator_test;
-import 'completion_manager_test.dart' as completion_manager;
 import 'common_usage_sorter_test.dart' as common_usage_test;
+import 'completion_manager_test.dart' as completion_manager;
 import 'field_formal_contributor_test.dart' as field_formal_contributor_test;
 import 'imported_reference_contributor_test.dart' as imported_ref_test;
 import 'inherited_reference_contributor_test.dart' as inherited_ref_test;
@@ -35,8 +35,8 @@
   group('dart/completion', () {
     arglist_test.main();
     combinator_test.main();
-    completion_manager.main();
     common_usage_test.main();
+    completion_manager.main();
     field_formal_contributor_test.main();
     imported_ref_test.main();
     inherited_ref_test.main();
diff --git a/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
index 8d176b8..1a74e78 100644
--- a/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
@@ -53,573 +53,18 @@
     }
   }
 
-  fail_test_PrefixedIdentifier_trailingStmt_const_untyped() async {
-    // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
-    addTestSource('const g = "hello"; f() {g.^ int y = 0;}');
-    await computeSuggestions();
-    assertSuggestGetter('length', 'int');
-  }
-
   @override
   DartCompletionContributor createContributor() {
     return new TypeMemberContributor();
   }
 
-  test_enumConst() async {
-    addTestSource('enum E { one, two } main() {E.^}');
-    await computeSuggestions();
-    assertNotSuggested('E');
-    // Suggested by StaticMemberContributor
-    assertNotSuggested('one');
-    assertNotSuggested('two');
-    assertNotSuggested('index');
-    assertNotSuggested('values');
-  }
-
-  test_enumConst2() async {
-    addTestSource('enum E { one, two } main() {E.o^}');
-    await computeSuggestions();
-    assertNotSuggested('E');
-    // Suggested by StaticMemberContributor
-    assertNotSuggested('one');
-    assertNotSuggested('two');
-    assertNotSuggested('index');
-    assertNotSuggested('values');
-  }
-
-  test_enumConst3() async {
-    addTestSource('enum E { one, two } main() {E.^ int g;}');
-    await computeSuggestions();
-    assertNotSuggested('E');
-    // Suggested by StaticMemberContributor
-    assertNotSuggested('one');
-    assertNotSuggested('two');
-    assertNotSuggested('index');
-    assertNotSuggested('values');
-  }
-
-  test_enumConst_index() async {
-    addTestSource('enum E { one, two } main() {E.one.^}');
-    await computeSuggestions();
-    assertNotSuggested('E');
-    assertNotSuggested('one');
-    assertNotSuggested('two');
-    assertSuggestField('index', 'int');
-    assertNotSuggested('values');
-  }
-
-  test_enumConst_index2() async {
-    addTestSource('enum E { one, two } main() {E.one.i^}');
-    await computeSuggestions();
-    assertNotSuggested('E');
-    assertNotSuggested('one');
-    assertNotSuggested('two');
-    assertSuggestField('index', 'int');
-    assertNotSuggested('values');
-  }
-
-  test_enumConst_index3() async {
-    addTestSource('enum E { one, two } main() {E.one.^ int g;}');
-    await computeSuggestions();
-    assertNotSuggested('E');
-    assertNotSuggested('one');
-    assertNotSuggested('two');
-    assertSuggestField('index', 'int');
-    assertNotSuggested('values');
-  }
-
-  test_generic_field() async {
-    addTestSource('''
-class C<T> {
-  T t;
-}
-void f(C<int> c) {
-  c.^
-}
-''');
-    await computeSuggestions();
-    assertSuggestField('t', 'int');
-  }
-
-  test_generic_getter() async {
-    addTestSource('''
-class C<T> {
-  T get t => null;
-}
-void f(C<int> c) {
-  c.^
-}
-''');
-    await computeSuggestions();
-    assertSuggestGetter('t', 'int');
-  }
-
-  test_generic_method() async {
-    addTestSource('''
-class C<T> {
-  T m(T t) {}
-}
-void f(C<int> c) {
-  c.^
-}
-''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'int');
-    expect(suggestion.parameterTypes[0], 'int');
-    expect(suggestion.element.returnType, 'int');
-    expect(suggestion.element.parameters, '(int t)');
-  }
-
-  test_generic_setter() async {
-    addTestSource('''
-class C<T> {
-  set t(T value) {}
-}
-void f(C<int> c) {
-  c.^
-}
-''');
-    await computeSuggestions();
-    // TODO(paulberry): modify assertSuggestSetter so that we can pass 'int'
-    // as a parmeter to it, and it will check the appropriate field in
-    // the suggestion object.
-    CompletionSuggestion suggestion = assertSuggestSetter('t');
-    expect(suggestion.element.parameters, '(int value)');
-  }
-
-  test_keyword() async {
-    addTestSource('class C { static C get instance => null; } main() {C.in^}');
-    await computeSuggestions();
-    // Suggested by StaticMemberContributor
-    assertNotSuggested('instance');
-  }
-
-  test_libraryPrefix() async {
+  fail_test_PrefixedIdentifier_trailingStmt_const_untyped() async {
     // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
-    addTestSource('import "dart:async" as bar; foo() {bar.^}');
-    await computeSuggestions();
-    // Suggested by LibraryMemberContributor
-    assertNotSuggested('Future');
-    assertNotSuggested('loadLibrary');
-  }
-
-  test_libraryPrefix2() async {
-    // SimpleIdentifier  MethodInvocation  ExpressionStatement
-    addTestSource('import "dart:async" as bar; foo() {bar.^ print("f")}');
-    await computeSuggestions();
-    // Suggested by LibraryMemberContributor
-    assertNotSuggested('Future');
-  }
-
-  test_libraryPrefix3() async {
-    // SimpleIdentifier  MethodInvocation  ExpressionStatement
-    addTestSource('import "dart:async" as bar; foo() {new bar.F^ print("f")}');
-    await computeSuggestions();
-    // Suggested by LibraryMemberContributor
-    assertNotSuggested('Future');
-    assertNotSuggested('Future.delayed');
-  }
-
-  test_libraryPrefix_deferred() async {
-    // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
-    addTestSource('import "dart:async" deferred as bar; foo() {bar.^}');
-    await computeSuggestions();
-    // Suggested by LibraryMemberContributor
-    assertNotSuggested('Future');
-    assertNotSuggested('loadLibrary');
-  }
-
-  test_libraryPrefix_with_exports() async {
-    addSource('/libA.dart', 'library libA; class A { }');
-    addSource('/libB.dart', 'library libB; export "/libA.dart"; class B { }');
-    addTestSource('import "/libB.dart" as foo; main() {foo.^} class C { }');
-    await computeSuggestions();
-    // Suggested by LibraryMemberContributor
-    assertNotSuggested('B');
-    assertNotSuggested('A');
-  }
-
-  test_local() async {
-    addTestSource('foo() {String x = "bar"; x.^}');
+    addTestSource('const g = "hello"; f() {g.^ int y = 0;}');
     await computeSuggestions();
     assertSuggestGetter('length', 'int');
   }
 
-  test_local_is() async {
-    addTestSource('foo() {var x; if (x is String) x.^}');
-    await computeSuggestions();
-    assertSuggestGetter('length', 'int');
-  }
-
-  test_local_propogatedType() async {
-    addTestSource('foo() {var x = "bar"; x.^}');
-    await computeSuggestions();
-    assertSuggestGetter('length', 'int');
-  }
-
-  test_method_parameters_mixed_required_and_named() async {
-    addTestSource('''
-class C {
-  void m(x, {int y}) {}
-}
-void main() {new C().^}''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
-    expect(suggestion.parameterNames, hasLength(2));
-    expect(suggestion.parameterNames[0], 'x');
-    expect(suggestion.parameterTypes[0], 'dynamic');
-    expect(suggestion.parameterNames[1], 'y');
-    expect(suggestion.parameterTypes[1], 'int');
-    expect(suggestion.requiredParameterCount, 1);
-    expect(suggestion.hasNamedParameters, true);
-  }
-
-  test_method_parameters_mixed_required_and_positional() async {
-    addTestSource('''
-class C {
-  void m(x, [int y]) {}
-}
-void main() {new C().^}''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
-    expect(suggestion.parameterNames, hasLength(2));
-    expect(suggestion.parameterNames[0], 'x');
-    expect(suggestion.parameterTypes[0], 'dynamic');
-    expect(suggestion.parameterNames[1], 'y');
-    expect(suggestion.parameterTypes[1], 'int');
-    expect(suggestion.requiredParameterCount, 1);
-    expect(suggestion.hasNamedParameters, false);
-  }
-
-  test_method_parameters_named() async {
-    addTestSource('''
-class C {
-  void m({x, int y}) {}
-}
-void main() {new C().^}''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
-    expect(suggestion.parameterNames, hasLength(2));
-    expect(suggestion.parameterNames[0], 'x');
-    expect(suggestion.parameterTypes[0], 'dynamic');
-    expect(suggestion.parameterNames[1], 'y');
-    expect(suggestion.parameterTypes[1], 'int');
-    expect(suggestion.requiredParameterCount, 0);
-    expect(suggestion.hasNamedParameters, true);
-  }
-
-  test_method_parameters_none() async {
-    addTestSource('''
-class C {
-  void m() {}
-}
-void main() {new C().^}''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
-    expect(suggestion.parameterNames, isEmpty);
-    expect(suggestion.parameterTypes, isEmpty);
-    expect(suggestion.requiredParameterCount, 0);
-    expect(suggestion.hasNamedParameters, false);
-  }
-
-  test_method_parameters_positional() async {
-    addTestSource('''
-class C {
-  void m([x, int y]) {}
-}
-void main() {new C().^}''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
-    expect(suggestion.parameterNames, hasLength(2));
-    expect(suggestion.parameterNames[0], 'x');
-    expect(suggestion.parameterTypes[0], 'dynamic');
-    expect(suggestion.parameterNames[1], 'y');
-    expect(suggestion.parameterTypes[1], 'int');
-    expect(suggestion.requiredParameterCount, 0);
-    expect(suggestion.hasNamedParameters, false);
-  }
-
-  test_method_parameters_required() async {
-    addTestSource('''
-class C {
-  void m(x, int y) {}
-}
-void main() {new C().^}''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
-    expect(suggestion.parameterNames, hasLength(2));
-    expect(suggestion.parameterNames[0], 'x');
-    expect(suggestion.parameterTypes[0], 'dynamic');
-    expect(suggestion.parameterNames[1], 'y');
-    expect(suggestion.parameterTypes[1], 'int');
-    expect(suggestion.requiredParameterCount, 2);
-    expect(suggestion.hasNamedParameters, false);
-  }
-
-  test_no_parameters_field() async {
-    addTestSource('''
-class C {
-  int x;
-}
-void main() {new C().^}''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion = assertSuggestField('x', 'int');
-    assertHasNoParameterInfo(suggestion);
-  }
-
-  test_no_parameters_getter() async {
-    addTestSource('''
-class C {
-  int get x => null;
-}
-void main() {int y = new C().^}''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion = assertSuggestGetter('x', 'int');
-    assertHasNoParameterInfo(suggestion);
-  }
-
-  test_no_parameters_setter() async {
-    addTestSource('''
-class C {
-  set x(int value) {};
-}
-void main() {int y = new C().^}''');
-    await computeSuggestions();
-    CompletionSuggestion suggestion = assertSuggestSetter('x');
-    assertHasNoParameterInfo(suggestion);
-  }
-
-  test_only_instance() async {
-    // SimpleIdentifier  PropertyAccess  ExpressionStatement
-    addTestSource('''
-class C {
-  int f1;
-  static int f2;
-  m1() {}
-  static m2() {}
-}
-void main() {new C().^}''');
-    await computeSuggestions();
-    assertSuggestField('f1', 'int');
-    assertNotSuggested('f2');
-    assertSuggestMethod('m1', 'C', null);
-    assertNotSuggested('m2');
-  }
-
-  test_only_instance2() async {
-    // SimpleIdentifier  MethodInvocation  ExpressionStatement
-    addTestSource('''
-class C {
-  int f1;
-  static int f2;
-  m1() {}
-  static m2() {}
-}
-void main() {new C().^ print("something");}''');
-    await computeSuggestions();
-    assertSuggestField('f1', 'int');
-    assertNotSuggested('f2');
-    assertSuggestMethod('m1', 'C', null);
-    assertNotSuggested('m2');
-  }
-
-  test_only_static() async {
-    // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
-    addTestSource('''
-class C {
-  int f1;
-  static int f2;
-  m1() {}
-  static m2() {}
-}
-void main() {C.^}''');
-    await computeSuggestions();
-    assertNotSuggested('f1');
-    // Suggested by StaticMemberContributor
-    assertNotSuggested('f2');
-    assertNotSuggested('m1');
-    assertNotSuggested('m2');
-  }
-
-  test_only_static2() async {
-    // SimpleIdentifier  MethodInvocation  ExpressionStatement
-    addTestSource('''
-class C {
-  int f1;
-  static int f2;
-  m1() {}
-  static m2() {}
-}
-void main() {C.^ print("something");}''');
-    await computeSuggestions();
-    assertNotSuggested('f1');
-    // Suggested by StaticMemberContributor
-    assertNotSuggested('f2');
-    assertNotSuggested('m1');
-    assertNotSuggested('m2');
-  }
-
-  test_param() async {
-    addTestSource('foo(String x) {x.^}');
-    await computeSuggestions();
-    assertSuggestGetter('length', 'int');
-  }
-
-  test_param_is() async {
-    addTestSource('foo(x) {if (x is String) x.^}');
-    await computeSuggestions();
-    assertSuggestGetter('length', 'int');
-  }
-
-  test_shadowing_field_over_field() =>
-      check_shadowing('int x;', 'int x;', true);
-
-  test_shadowing_field_over_getter() =>
-      check_shadowing('int x;', 'int get x => null;', true);
-
-  test_shadowing_field_over_method() =>
-      check_shadowing('int x;', 'void x() {}', true);
-
-  test_shadowing_field_over_setter() =>
-      check_shadowing('int x;', 'set x(int value) {}', true);
-
-  test_shadowing_getter_over_field() =>
-      check_shadowing('int get x => null;', 'int x;', false);
-
-  test_shadowing_getter_over_getter() =>
-      check_shadowing('int get x => null;', 'int get x => null;', true);
-
-  test_shadowing_getter_over_method() =>
-      check_shadowing('int get x => null;', 'void x() {}', true);
-
-  test_shadowing_getter_over_setter() =>
-      check_shadowing('int get x => null;', 'set x(int value) {}', false);
-
-  test_shadowing_method_over_field() =>
-      check_shadowing('void x() {}', 'int x;', true);
-
-  test_shadowing_method_over_getter() =>
-      check_shadowing('void x() {}', 'int get x => null;', true);
-
-  test_shadowing_method_over_method() =>
-      check_shadowing('void x() {}', 'void x() {}', true);
-
-  test_shadowing_method_over_setter() =>
-      check_shadowing('void x() {}', 'set x(int value) {}', true);
-
-  test_shadowing_mixin_order() async {
-    addTestSource('''
-class Base {
-}
-class Mixin1 {
-  void f() {}
-}
-class Mixin2 {
-  void f() {}
-}
-class Derived extends Base with Mixin1, Mixin2 {
-}
-void test(Derived d) {
-  d.^
-}
-''');
-    await computeSuggestions();
-    // Note: due to dartbug.com/22069, analyzer currently analyzes mixins in
-    // reverse order.  The correct order is that Derived inherits from
-    // "Base with Mixin1, Mixin2", which inherits from "Base with Mixin1",
-    // which inherits from "Base".  So the definition of f in Mixin2 should
-    // shadow the definition in Mixin1.
-    assertSuggestMethod('f', 'Mixin2', 'void');
-  }
-
-  test_shadowing_mixin_over_superclass() async {
-    addTestSource('''
-class Base {
-  void f() {}
-}
-class Mixin {
-  void f() {}
-}
-class Derived extends Base with Mixin {
-}
-void test(Derived d) {
-  d.^
-}
-''');
-    await computeSuggestions();
-    assertSuggestMethod('f', 'Mixin', 'void');
-  }
-
-  test_shadowing_setter_over_field() =>
-      check_shadowing('set x(int value) {}', 'int x;', false);
-
-  test_shadowing_setter_over_getter() =>
-      check_shadowing('set x(int value) {}', 'int get x => null;', false);
-
-  test_shadowing_setter_over_method() =>
-      check_shadowing('set x(int value) {}', 'void x() {}', true);
-
-  test_shadowing_setter_over_setter() =>
-      check_shadowing('set x(int value) {}', 'set x(int value) {}', true);
-
-  test_shadowing_superclass_over_interface() async {
-    addTestSource('''
-class Base {
-  void f() {}
-}
-class Interface {
-  void f() {}
-}
-class Derived extends Base implements Interface {
-}
-void test(Derived d) {
-  d.^
-}
-''');
-    await computeSuggestions();
-    assertSuggestMethod('f', 'Base', 'void');
-  }
-
-  test_super() async {
-    // SimpleIdentifier  MethodInvocation  ExpressionStatement
-    addTestSource('''
-class C3 {
-  int fi3;
-  static int fs3;
-  m() {}
-  mi3() {}
-  static ms3() {}
-}
-class C2 {
-  int fi2;
-  static int fs2;
-  m() {}
-  mi2() {}
-  static ms2() {}
-}
-class C1 extends C2 implements C3 {
-  int fi1;
-  static int fs1;
-  m() {super.^}
-  mi1() {}
-  static ms1() {}
-}''');
-    await computeSuggestions();
-    assertNotSuggested('fi1');
-    assertNotSuggested('fs1');
-    assertNotSuggested('mi1');
-    assertNotSuggested('ms1');
-    assertSuggestField('fi2', 'int');
-    assertNotSuggested('fs2');
-    assertSuggestMethod('mi2', 'C2', null);
-    assertNotSuggested('ms2');
-    assertSuggestMethod('m', 'C2', null, relevance: DART_RELEVANCE_HIGH);
-    assertNotSuggested('fi3');
-    assertNotSuggested('fs3');
-    assertNotSuggested('mi3');
-    assertNotSuggested('ms3');
-  }
-
   test_ArgumentList() async {
     // ArgumentList  MethodInvocation  ExpressionStatement  Block
     addSource(
@@ -2272,6 +1717,69 @@
     assertNotSuggested('bar');
   }
 
+  test_enumConst() async {
+    addTestSource('enum E { one, two } main() {E.^}');
+    await computeSuggestions();
+    assertNotSuggested('E');
+    // Suggested by StaticMemberContributor
+    assertNotSuggested('one');
+    assertNotSuggested('two');
+    assertNotSuggested('index');
+    assertNotSuggested('values');
+  }
+
+  test_enumConst2() async {
+    addTestSource('enum E { one, two } main() {E.o^}');
+    await computeSuggestions();
+    assertNotSuggested('E');
+    // Suggested by StaticMemberContributor
+    assertNotSuggested('one');
+    assertNotSuggested('two');
+    assertNotSuggested('index');
+    assertNotSuggested('values');
+  }
+
+  test_enumConst3() async {
+    addTestSource('enum E { one, two } main() {E.^ int g;}');
+    await computeSuggestions();
+    assertNotSuggested('E');
+    // Suggested by StaticMemberContributor
+    assertNotSuggested('one');
+    assertNotSuggested('two');
+    assertNotSuggested('index');
+    assertNotSuggested('values');
+  }
+
+  test_enumConst_index() async {
+    addTestSource('enum E { one, two } main() {E.one.^}');
+    await computeSuggestions();
+    assertNotSuggested('E');
+    assertNotSuggested('one');
+    assertNotSuggested('two');
+    assertSuggestField('index', 'int');
+    assertNotSuggested('values');
+  }
+
+  test_enumConst_index2() async {
+    addTestSource('enum E { one, two } main() {E.one.i^}');
+    await computeSuggestions();
+    assertNotSuggested('E');
+    assertNotSuggested('one');
+    assertNotSuggested('two');
+    assertSuggestField('index', 'int');
+    assertNotSuggested('values');
+  }
+
+  test_enumConst_index3() async {
+    addTestSource('enum E { one, two } main() {E.one.^ int g;}');
+    await computeSuggestions();
+    assertNotSuggested('E');
+    assertNotSuggested('one');
+    assertNotSuggested('two');
+    assertSuggestField('index', 'int');
+    assertNotSuggested('values');
+  }
+
   test_ExpressionStatement_identifier() async {
     // SimpleIdentifier  ExpressionStatement  Block
     addSource(
@@ -2588,6 +2096,65 @@
     assertNotSuggested('Object');
   }
 
+  test_generic_field() async {
+    addTestSource('''
+class C<T> {
+  T t;
+}
+void f(C<int> c) {
+  c.^
+}
+''');
+    await computeSuggestions();
+    assertSuggestField('t', 'int');
+  }
+
+  test_generic_getter() async {
+    addTestSource('''
+class C<T> {
+  T get t => null;
+}
+void f(C<int> c) {
+  c.^
+}
+''');
+    await computeSuggestions();
+    assertSuggestGetter('t', 'int');
+  }
+
+  test_generic_method() async {
+    addTestSource('''
+class C<T> {
+  T m(T t) {}
+}
+void f(C<int> c) {
+  c.^
+}
+''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'int');
+    expect(suggestion.parameterTypes[0], 'int');
+    expect(suggestion.element.returnType, 'int');
+    expect(suggestion.element.parameters, '(int t)');
+  }
+
+  test_generic_setter() async {
+    addTestSource('''
+class C<T> {
+  set t(T value) {}
+}
+void f(C<int> c) {
+  c.^
+}
+''');
+    await computeSuggestions();
+    // TODO(paulberry): modify assertSuggestSetter so that we can pass 'int'
+    // as a parmeter to it, and it will check the appropriate field in
+    // the suggestion object.
+    CompletionSuggestion suggestion = assertSuggestSetter('t');
+    expect(suggestion.element.parameters, '(int value)');
+  }
+
   test_IfStatement() async {
     // SimpleIdentifier  IfStatement
     addTestSource('''
@@ -2910,6 +2477,13 @@
     assertNotSuggested('Object');
   }
 
+  test_keyword() async {
+    addTestSource('class C { static C get instance => null; } main() {C.in^}');
+    await computeSuggestions();
+    // Suggested by StaticMemberContributor
+    assertNotSuggested('instance');
+  }
+
   test_keyword2() async {
     addSource(
         '/testB.dart',
@@ -2937,6 +2511,51 @@
     assertNotSuggested('newer');
   }
 
+  test_libraryPrefix() async {
+    // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
+    addTestSource('import "dart:async" as bar; foo() {bar.^}');
+    await computeSuggestions();
+    // Suggested by LibraryMemberContributor
+    assertNotSuggested('Future');
+    assertNotSuggested('loadLibrary');
+  }
+
+  test_libraryPrefix2() async {
+    // SimpleIdentifier  MethodInvocation  ExpressionStatement
+    addTestSource('import "dart:async" as bar; foo() {bar.^ print("f")}');
+    await computeSuggestions();
+    // Suggested by LibraryMemberContributor
+    assertNotSuggested('Future');
+  }
+
+  test_libraryPrefix3() async {
+    // SimpleIdentifier  MethodInvocation  ExpressionStatement
+    addTestSource('import "dart:async" as bar; foo() {new bar.F^ print("f")}');
+    await computeSuggestions();
+    // Suggested by LibraryMemberContributor
+    assertNotSuggested('Future');
+    assertNotSuggested('Future.delayed');
+  }
+
+  test_libraryPrefix_deferred() async {
+    // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
+    addTestSource('import "dart:async" deferred as bar; foo() {bar.^}');
+    await computeSuggestions();
+    // Suggested by LibraryMemberContributor
+    assertNotSuggested('Future');
+    assertNotSuggested('loadLibrary');
+  }
+
+  test_libraryPrefix_with_exports() async {
+    addSource('/libA.dart', 'library libA; class A { }');
+    addSource('/libB.dart', 'library libB; export "/libA.dart"; class B { }');
+    addTestSource('import "/libB.dart" as foo; main() {foo.^} class C { }');
+    await computeSuggestions();
+    // Suggested by LibraryMemberContributor
+    assertNotSuggested('B');
+    assertNotSuggested('A');
+  }
+
   test_Literal_list() async {
     // ']'  ListLiteral  ArgumentList  MethodInvocation
     addTestSource('main() {var Some; print([^]);}');
@@ -2960,6 +2579,31 @@
     assertNoSuggestions();
   }
 
+  test_local() async {
+    addTestSource('foo() {String x = "bar"; x.^}');
+    await computeSuggestions();
+    assertSuggestGetter('length', 'int');
+  }
+
+  test_local_is() async {
+    addTestSource('foo() {var x; if (x is String) x.^}');
+    await computeSuggestions();
+    assertSuggestGetter('length', 'int');
+  }
+
+  test_local_propogatedType() async {
+    addTestSource('foo() {var x = "bar"; x.^}');
+    await computeSuggestions();
+    assertSuggestGetter('length', 'int');
+  }
+
+  test_localVariableDeclarationName() async {
+    addTestSource('main() {String m^}');
+    await computeSuggestions();
+    assertNotSuggested('main');
+    assertNotSuggested('min');
+  }
+
   test_MapLiteralEntry() async {
     // MapLiteralEntry  MapLiteral  VariableDeclaration
     addSource(
@@ -3033,6 +2677,105 @@
     assertNotSuggested('T2');
   }
 
+  test_method_parameters_mixed_required_and_named() async {
+    addTestSource('''
+class C {
+  void m(x, {int y}) {}
+}
+void main() {new C().^}''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
+    expect(suggestion.parameterNames, hasLength(2));
+    expect(suggestion.parameterNames[0], 'x');
+    expect(suggestion.parameterTypes[0], 'dynamic');
+    expect(suggestion.parameterNames[1], 'y');
+    expect(suggestion.parameterTypes[1], 'int');
+    expect(suggestion.requiredParameterCount, 1);
+    expect(suggestion.hasNamedParameters, true);
+  }
+
+  test_method_parameters_mixed_required_and_positional() async {
+    addTestSource('''
+class C {
+  void m(x, [int y]) {}
+}
+void main() {new C().^}''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
+    expect(suggestion.parameterNames, hasLength(2));
+    expect(suggestion.parameterNames[0], 'x');
+    expect(suggestion.parameterTypes[0], 'dynamic');
+    expect(suggestion.parameterNames[1], 'y');
+    expect(suggestion.parameterTypes[1], 'int');
+    expect(suggestion.requiredParameterCount, 1);
+    expect(suggestion.hasNamedParameters, false);
+  }
+
+  test_method_parameters_named() async {
+    addTestSource('''
+class C {
+  void m({x, int y}) {}
+}
+void main() {new C().^}''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
+    expect(suggestion.parameterNames, hasLength(2));
+    expect(suggestion.parameterNames[0], 'x');
+    expect(suggestion.parameterTypes[0], 'dynamic');
+    expect(suggestion.parameterNames[1], 'y');
+    expect(suggestion.parameterTypes[1], 'int');
+    expect(suggestion.requiredParameterCount, 0);
+    expect(suggestion.hasNamedParameters, true);
+  }
+
+  test_method_parameters_none() async {
+    addTestSource('''
+class C {
+  void m() {}
+}
+void main() {new C().^}''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
+    expect(suggestion.parameterNames, isEmpty);
+    expect(suggestion.parameterTypes, isEmpty);
+    expect(suggestion.requiredParameterCount, 0);
+    expect(suggestion.hasNamedParameters, false);
+  }
+
+  test_method_parameters_positional() async {
+    addTestSource('''
+class C {
+  void m([x, int y]) {}
+}
+void main() {new C().^}''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
+    expect(suggestion.parameterNames, hasLength(2));
+    expect(suggestion.parameterNames[0], 'x');
+    expect(suggestion.parameterTypes[0], 'dynamic');
+    expect(suggestion.parameterNames[1], 'y');
+    expect(suggestion.parameterTypes[1], 'int');
+    expect(suggestion.requiredParameterCount, 0);
+    expect(suggestion.hasNamedParameters, false);
+  }
+
+  test_method_parameters_required() async {
+    addTestSource('''
+class C {
+  void m(x, int y) {}
+}
+void main() {new C().^}''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion = assertSuggestMethod('m', 'C', 'void');
+    expect(suggestion.parameterNames, hasLength(2));
+    expect(suggestion.parameterNames[0], 'x');
+    expect(suggestion.parameterTypes[0], 'dynamic');
+    expect(suggestion.parameterNames[1], 'y');
+    expect(suggestion.parameterTypes[1], 'int');
+    expect(suggestion.requiredParameterCount, 2);
+    expect(suggestion.hasNamedParameters, false);
+  }
+
   test_MethodDeclaration_body_getters() async {
     // Block  BlockFunctionBody  MethodDeclaration
     addTestSource('class A {@deprecated X get f => 0; Z a() {^} get _g => 1;}');
@@ -3290,6 +3033,121 @@
     assertNotSuggested('A');
   }
 
+  test_no_parameters_field() async {
+    addTestSource('''
+class C {
+  int x;
+}
+void main() {new C().^}''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion = assertSuggestField('x', 'int');
+    assertHasNoParameterInfo(suggestion);
+  }
+
+  test_no_parameters_getter() async {
+    addTestSource('''
+class C {
+  int get x => null;
+}
+void main() {int y = new C().^}''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion = assertSuggestGetter('x', 'int');
+    assertHasNoParameterInfo(suggestion);
+  }
+
+  test_no_parameters_setter() async {
+    addTestSource('''
+class C {
+  set x(int value) {};
+}
+void main() {int y = new C().^}''');
+    await computeSuggestions();
+    CompletionSuggestion suggestion = assertSuggestSetter('x');
+    assertHasNoParameterInfo(suggestion);
+  }
+
+  test_only_instance() async {
+    // SimpleIdentifier  PropertyAccess  ExpressionStatement
+    addTestSource('''
+class C {
+  int f1;
+  static int f2;
+  m1() {}
+  static m2() {}
+}
+void main() {new C().^}''');
+    await computeSuggestions();
+    assertSuggestField('f1', 'int');
+    assertNotSuggested('f2');
+    assertSuggestMethod('m1', 'C', null);
+    assertNotSuggested('m2');
+  }
+
+  test_only_instance2() async {
+    // SimpleIdentifier  MethodInvocation  ExpressionStatement
+    addTestSource('''
+class C {
+  int f1;
+  static int f2;
+  m1() {}
+  static m2() {}
+}
+void main() {new C().^ print("something");}''');
+    await computeSuggestions();
+    assertSuggestField('f1', 'int');
+    assertNotSuggested('f2');
+    assertSuggestMethod('m1', 'C', null);
+    assertNotSuggested('m2');
+  }
+
+  test_only_static() async {
+    // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
+    addTestSource('''
+class C {
+  int f1;
+  static int f2;
+  m1() {}
+  static m2() {}
+}
+void main() {C.^}''');
+    await computeSuggestions();
+    assertNotSuggested('f1');
+    // Suggested by StaticMemberContributor
+    assertNotSuggested('f2');
+    assertNotSuggested('m1');
+    assertNotSuggested('m2');
+  }
+
+  test_only_static2() async {
+    // SimpleIdentifier  MethodInvocation  ExpressionStatement
+    addTestSource('''
+class C {
+  int f1;
+  static int f2;
+  m1() {}
+  static m2() {}
+}
+void main() {C.^ print("something");}''');
+    await computeSuggestions();
+    assertNotSuggested('f1');
+    // Suggested by StaticMemberContributor
+    assertNotSuggested('f2');
+    assertNotSuggested('m1');
+    assertNotSuggested('m2');
+  }
+
+  test_param() async {
+    addTestSource('foo(String x) {x.^}');
+    await computeSuggestions();
+    assertSuggestGetter('length', 'int');
+  }
+
+  test_param_is() async {
+    addTestSource('foo(x) {if (x is String) x.^}');
+    await computeSuggestions();
+    assertSuggestGetter('length', 'int');
+  }
+
   test_parameterName_excludeTypes() async {
     addTestSource('m(int ^) {}');
     await computeSuggestions();
@@ -3702,13 +3560,6 @@
     assertSuggestGetter('length', 'int');
   }
 
-  test_localVariableDeclarationName() async {
-    addTestSource('main() {String m^}');
-    await computeSuggestions();
-    assertNotSuggested('main');
-    assertNotSuggested('min');
-  }
-
   test_PrefixedIdentifier_trailingStmt_param2() async {
     // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
     addTestSource('f(String g) {g.^ int y = 0;}');
@@ -3765,6 +3616,155 @@
     assertNotSuggested('==');
   }
 
+  test_shadowing_field_over_field() =>
+      check_shadowing('int x;', 'int x;', true);
+
+  test_shadowing_field_over_getter() =>
+      check_shadowing('int x;', 'int get x => null;', true);
+
+  test_shadowing_field_over_method() =>
+      check_shadowing('int x;', 'void x() {}', true);
+
+  test_shadowing_field_over_setter() =>
+      check_shadowing('int x;', 'set x(int value) {}', true);
+
+  test_shadowing_getter_over_field() =>
+      check_shadowing('int get x => null;', 'int x;', false);
+
+  test_shadowing_getter_over_getter() =>
+      check_shadowing('int get x => null;', 'int get x => null;', true);
+
+  test_shadowing_getter_over_method() =>
+      check_shadowing('int get x => null;', 'void x() {}', true);
+
+  test_shadowing_getter_over_setter() =>
+      check_shadowing('int get x => null;', 'set x(int value) {}', false);
+
+  test_shadowing_method_over_field() =>
+      check_shadowing('void x() {}', 'int x;', true);
+
+  test_shadowing_method_over_getter() =>
+      check_shadowing('void x() {}', 'int get x => null;', true);
+
+  test_shadowing_method_over_method() =>
+      check_shadowing('void x() {}', 'void x() {}', true);
+
+  test_shadowing_method_over_setter() =>
+      check_shadowing('void x() {}', 'set x(int value) {}', true);
+
+  test_shadowing_mixin_order() async {
+    addTestSource('''
+class Base {
+}
+class Mixin1 {
+  void f() {}
+}
+class Mixin2 {
+  void f() {}
+}
+class Derived extends Base with Mixin1, Mixin2 {
+}
+void test(Derived d) {
+  d.^
+}
+''');
+    await computeSuggestions();
+    // Note: due to dartbug.com/22069, analyzer currently analyzes mixins in
+    // reverse order.  The correct order is that Derived inherits from
+    // "Base with Mixin1, Mixin2", which inherits from "Base with Mixin1",
+    // which inherits from "Base".  So the definition of f in Mixin2 should
+    // shadow the definition in Mixin1.
+    assertSuggestMethod('f', 'Mixin2', 'void');
+  }
+
+  test_shadowing_mixin_over_superclass() async {
+    addTestSource('''
+class Base {
+  void f() {}
+}
+class Mixin {
+  void f() {}
+}
+class Derived extends Base with Mixin {
+}
+void test(Derived d) {
+  d.^
+}
+''');
+    await computeSuggestions();
+    assertSuggestMethod('f', 'Mixin', 'void');
+  }
+
+  test_shadowing_setter_over_field() =>
+      check_shadowing('set x(int value) {}', 'int x;', false);
+
+  test_shadowing_setter_over_getter() =>
+      check_shadowing('set x(int value) {}', 'int get x => null;', false);
+
+  test_shadowing_setter_over_method() =>
+      check_shadowing('set x(int value) {}', 'void x() {}', true);
+
+  test_shadowing_setter_over_setter() =>
+      check_shadowing('set x(int value) {}', 'set x(int value) {}', true);
+
+  test_shadowing_superclass_over_interface() async {
+    addTestSource('''
+class Base {
+  void f() {}
+}
+class Interface {
+  void f() {}
+}
+class Derived extends Base implements Interface {
+}
+void test(Derived d) {
+  d.^
+}
+''');
+    await computeSuggestions();
+    assertSuggestMethod('f', 'Base', 'void');
+  }
+
+  test_super() async {
+    // SimpleIdentifier  MethodInvocation  ExpressionStatement
+    addTestSource('''
+class C3 {
+  int fi3;
+  static int fs3;
+  m() {}
+  mi3() {}
+  static ms3() {}
+}
+class C2 {
+  int fi2;
+  static int fs2;
+  m() {}
+  mi2() {}
+  static ms2() {}
+}
+class C1 extends C2 implements C3 {
+  int fi1;
+  static int fs1;
+  m() {super.^}
+  mi1() {}
+  static ms1() {}
+}''');
+    await computeSuggestions();
+    assertNotSuggested('fi1');
+    assertNotSuggested('fs1');
+    assertNotSuggested('mi1');
+    assertNotSuggested('ms1');
+    assertSuggestField('fi2', 'int');
+    assertNotSuggested('fs2');
+    assertSuggestMethod('mi2', 'C2', null);
+    assertNotSuggested('ms2');
+    assertSuggestMethod('m', 'C2', null, relevance: DART_RELEVANCE_HIGH);
+    assertNotSuggested('fi3');
+    assertNotSuggested('fs3');
+    assertNotSuggested('mi3');
+    assertNotSuggested('ms3');
+  }
+
   test_SwitchStatement_c() async {
     // SwitchStatement  Block  BlockFunctionBody  MethodDeclaration
     addTestSource('class A {String g(int x) {switch(x) {c^}}}');
diff --git a/pkg/analysis_server/test/services/index/index_test.dart b/pkg/analysis_server/test/services/index/index_test.dart
index 406479e..1787407 100644
--- a/pkg/analysis_server/test/services/index/index_test.dart
+++ b/pkg/analysis_server/test/services/index/index_test.dart
@@ -122,6 +122,23 @@
     _assertHasDefinedName(locations, topE);
   }
 
+  test_getDefinedNames_topLevel2() async {
+    _indexTestUnit(
+        '''
+class A {} // A
+class B = Object with A;
+class NoMatchABCDE {}
+''',
+        declOnly: true);
+    Element topA = findElement('A');
+    Element topB = findElement('B');
+    List<Location> locations = await index.getDefinedNames(
+        new RegExp(r'^[A-E]$'), IndexNameKind.topLevel);
+    expect(locations, hasLength(2));
+    _assertHasDefinedName(locations, topA);
+    _assertHasDefinedName(locations, topB);
+  }
+
   test_getRelations_isExtendedBy() async {
     _indexTestUnit(r'''
 class A {}
@@ -230,6 +247,16 @@
     findLocationTest(locations, 'test();', false);
   }
 
+  test_indexDeclarations_nullUnit() async {
+    index.indexDeclarations(null);
+  }
+
+  test_indexDeclarations_nullUnitElement() async {
+    resolveTestUnit('');
+    testUnit.element = null;
+    index.indexDeclarations(testUnit);
+  }
+
   test_indexUnit_nullUnit() async {
     index.indexUnit(null);
   }
@@ -298,9 +325,13 @@
         '${locations.join('\n')}');
   }
 
-  void _indexTestUnit(String code) {
+  void _indexTestUnit(String code, {bool declOnly: false}) {
     resolveTestUnit(code);
-    index.indexUnit(testUnit);
+    if (declOnly) {
+      index.indexDeclarations(testUnit);
+    } else {
+      index.indexUnit(testUnit);
+    }
   }
 
   Source _indexUnit(String path, String code) {
diff --git a/pkg/analysis_server/test/services/refactoring/inline_local_test.dart b/pkg/analysis_server/test/services/refactoring/inline_local_test.dart
index 9b58386..37f46cd 100644
--- a/pkg/analysis_server/test/services/refactoring/inline_local_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/inline_local_test.dart
@@ -317,7 +317,8 @@
 $a
 bbb''';
 }
-""".replaceAll('\n', '\r\n'));
+"""
+        .replaceAll('\n', '\r\n'));
     _createRefactoring('a =');
     // validate change
     return assertSuccessfulRefactoring(r"""
@@ -328,7 +329,8 @@
 a
 bbb''';
 }
-""".replaceAll('\n', '\r\n'));
+"""
+        .replaceAll('\n', '\r\n'));
   }
 
   test_OK_intoStringInterpolation_string_multiLineIntoSingle() {
diff --git a/pkg/analysis_server/test/services/search/search_engine_test.dart b/pkg/analysis_server/test/services/search/search_engine_test.dart
index 70caeff..ffdfd4c 100644
--- a/pkg/analysis_server/test/services/search/search_engine_test.dart
+++ b/pkg/analysis_server/test/services/search/search_engine_test.dart
@@ -525,6 +525,28 @@
     await _verifyReferences(element, expected);
   }
 
+  test_searchReferences_LocalVariableElement_inForEachLoop() async {
+    _indexTestUnit('''
+main() {
+  for (var v in []) {
+    v = 1;
+    v += 2;
+    print(v);
+    v();
+  }
+}
+''');
+    LocalVariableElement element = findElement('v');
+    Element mainElement = findElement('main');
+    var expected = [
+      _expectId(mainElement, MatchKind.WRITE, 'v = 1;'),
+      _expectId(mainElement, MatchKind.READ_WRITE, 'v += 2;'),
+      _expectId(mainElement, MatchKind.READ, 'v);'),
+      _expectId(mainElement, MatchKind.INVOCATION, 'v();')
+    ];
+    await _verifyReferences(element, expected);
+  }
+
   test_searchReferences_MethodElement() async {
     _indexTestUnit('''
 class A {
diff --git a/pkg/analysis_server/test/socket_server_test.dart b/pkg/analysis_server/test/socket_server_test.dart
index 1175320..395072a 100644
--- a/pkg/analysis_server/test/socket_server_test.dart
+++ b/pkg/analysis_server/test/socket_server_test.dart
@@ -112,12 +112,12 @@
     ServerPlugin serverPlugin = new ServerPlugin();
     ExtensionManager manager = new ExtensionManager();
     manager.processPlugins([serverPlugin]);
-    SdkCreator sdkCreator = () =>
+    SdkCreator sdkCreator = (_) =>
         new DirectoryBasedDartSdk(DirectoryBasedDartSdk.defaultSdkDirectory);
     return new SocketServer(
         new AnalysisServerOptions(),
         sdkCreator,
-        sdkCreator(),
+        sdkCreator(null),
         InstrumentationService.NULL_SERVICE,
         serverPlugin,
         null,
diff --git a/pkg/analysis_server/test/stress/utilities/git.dart b/pkg/analysis_server/test/stress/utilities/git.dart
index 30e45f7..32c7e9b 100644
--- a/pkg/analysis_server/test/stress/utilities/git.dart
+++ b/pkg/analysis_server/test/stress/utilities/git.dart
@@ -379,7 +379,7 @@
    */
   bool isFor(String fileName) =>
       (srcPath != null && fileName == path.basename(srcPath)) ||
-          (dstPath != null && fileName == path.basename(dstPath));
+      (dstPath != null && fileName == path.basename(dstPath));
 
   @override
   String toString() => srcPath ?? dstPath;
diff --git a/pkg/analysis_server/tool/spec/codegen_java_types.dart b/pkg/analysis_server/tool/spec/codegen_java_types.dart
index b752b2e..b28531a 100644
--- a/pkg/analysis_server/tool/spec/codegen_java_types.dart
+++ b/pkg/analysis_server/tool/spec/codegen_java_types.dart
@@ -480,8 +480,7 @@
 //        }
       if (className != 'Outline') {
         publicMethod('fromJson', () {
-          writeln(
-              'public static $className fromJson(JsonObject jsonObject) {');
+          writeln('public static $className fromJson(JsonObject jsonObject) {');
           indent(() {
             for (TypeObjectField field in fields) {
               write('${javaFieldType(field)} ${javaName(field.name)} = ');
diff --git a/pkg/analysis_server/tool/spec/from_html.dart b/pkg/analysis_server/tool/spec/from_html.dart
index 3840d86..671b124 100644
--- a/pkg/analysis_server/tool/spec/from_html.dart
+++ b/pkg/analysis_server/tool/spec/from_html.dart
@@ -423,7 +423,8 @@
   checkName(html, 'type');
   String name = html.attributes['name'];
   String context = name != null ? name : 'type';
-  checkAttributes(html, ['name'], context, optionalAttributes: ['experimental']);
+  checkAttributes(html, ['name'], context,
+      optionalAttributes: ['experimental']);
   TypeDecl type = processContentsAsType(html, context);
   bool experimental = html.attributes['experimental'] == 'true';
   return new TypeDefinition(name, type, html, experimental: experimental);
@@ -517,7 +518,7 @@
  * Create a [TypeObject] from an HTML description.
  */
 TypeObject typeObjectFromHtml(dom.Element html, String context) {
-  checkAttributes(html, [], context,  optionalAttributes: ['experimental']);
+  checkAttributes(html, [], context, optionalAttributes: ['experimental']);
   List<TypeObjectField> fields = <TypeObjectField>[];
   recurse(html, context, {
     'field': (dom.Element child) {
diff --git a/pkg/analysis_server/tool/spec/to_html.dart b/pkg/analysis_server/tool/spec/to_html.dart
index 2ccf00e..a8babb1 100644
--- a/pkg/analysis_server/tool/spec/to_html.dart
+++ b/pkg/analysis_server/tool/spec/to_html.dart
@@ -79,7 +79,8 @@
 
   list-style-type: none;
 }
-'''.trim();
+'''
+    .trim();
 
 final GeneratedFile target =
     new GeneratedFile('doc/api.html', (String pkgPath) {
@@ -448,7 +449,8 @@
     });
   }
 
-  @override visitRefactoring(Refactoring refactoring) {
+  @override
+  visitRefactoring(Refactoring refactoring) {
     dt('refactoring', () {
       write(refactoring.kind);
     });
diff --git a/pkg/analyzer/benchmark/errors_in_all_libraries.dart b/pkg/analyzer/benchmark/errors_in_all_libraries.dart
new file mode 100644
index 0000000..f428191
--- /dev/null
+++ b/pkg/analyzer/benchmark/errors_in_all_libraries.dart
@@ -0,0 +1,88 @@
+#!/usr/bin/env dart
+// Copyright (c) 2016, 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.
+
+/// Resolves this library and everything it transitively imports and generates
+/// errors in all of those libraries. Does this in an infinite loop, starting
+/// from scratch each time, to show how VM warm-up affects things and to make
+/// it easier to connect to this with observatory.
+import 'dart:io';
+
+import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/src/generated/engine.dart';
+import 'package:analyzer/src/generated/java_io.dart';
+import 'package:analyzer/src/generated/sdk_io.dart' show DirectoryBasedDartSdk;
+import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/generated/source_io.dart';
+import 'package:path/path.dart' as p;
+
+void main(List<String> args) {
+  JavaSystemIO.setProperty(
+      "com.google.dart.sdk",
+      p.normalize(
+          p.join(p.dirname(p.fromUri(Platform.script)), "../../../sdk")));
+
+  // Assumes you have run "pub get" in the analyzer directory itself and uses
+  // that "packages" directory as its package root.
+  var packageRoot =
+      p.normalize(p.join(p.dirname(p.fromUri(Platform.script)), "packages"));
+
+  var best = new Duration(days: 1);
+  while (true) {
+    var start = new DateTime.now();
+    AnalysisEngine.instance.clearCaches();
+
+    var context = AnalysisEngine.instance.createAnalysisContext();
+    context.sourceFactory = new SourceFactory([
+      new DartUriResolver(DirectoryBasedDartSdk.defaultSdk),
+      new FileUriResolver(),
+      new PackageUriResolver([new JavaFile(packageRoot)])
+    ]);
+
+    context.analysisOptions.strongMode = true;
+    context.analysisOptions.strongModeHints = true;
+
+    var mainSource =
+        new FileBasedSource(new JavaFile(p.fromUri(Platform.script)));
+    context.applyChanges(new ChangeSet()..addedSource(mainSource));
+
+    var initialLibrary =
+        context.resolveCompilationUnit2(mainSource, mainSource);
+
+    // Walk all of the transitively referenced libraries and compute errors.
+    var errorCount = 0;
+    var allLibraries = _reachableLibraries(initialLibrary.element.library);
+    for (var lib in allLibraries) {
+      for (var unit in lib.units) {
+        var source = unit.source;
+
+        // Skip core libraries.
+        if (source.uri.scheme == 'dart') continue;
+
+        var librarySource = context.getLibrariesContaining(source).single;
+        context.resolveCompilationUnit2(source, librarySource);
+        errorCount += context.computeErrors(source).length;
+      }
+    }
+
+    var elapsed = new DateTime.now().difference(start);
+    print("$elapsed : $errorCount errors ${elapsed < best ? "(best)" : ""}");
+    if (elapsed < best) best = elapsed;
+  }
+}
+
+/// Returns all libraries transitively imported or exported from [start].
+List<LibraryElement> _reachableLibraries(LibraryElement start) {
+  var results = <LibraryElement>[];
+  var seen = new Set();
+  void find(LibraryElement lib) {
+    if (seen.contains(lib)) return;
+    seen.add(lib);
+    results.add(lib);
+    lib.importedLibraries.forEach(find);
+    lib.exportedLibraries.forEach(find);
+  }
+  find(start);
+  return results;
+}
diff --git a/pkg/analyzer/lib/dart/ast/ast.dart b/pkg/analyzer/lib/dart/ast/ast.dart
index e53a204..9e5bca2 100644
--- a/pkg/analyzer/lib/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/dart/ast/ast.dart
@@ -6704,7 +6704,12 @@
   /**
    * Initialize a newly created identifier.
    */
-  factory SimpleIdentifier(Token token) = SimpleIdentifierImpl;
+  factory SimpleIdentifier(Token token, {bool isDeclaration: false}) {
+    if (isDeclaration) {
+      return new DeclaredSimpleIdentifier(token);
+    }
+    return new SimpleIdentifierImpl(token);
+  }
 
   /**
    * Return the auxiliary elements associated with this identifier, or `null` if
diff --git a/pkg/analyzer/lib/dart/ast/visitor.dart b/pkg/analyzer/lib/dart/ast/visitor.dart
index f387048..989e7c6 100644
--- a/pkg/analyzer/lib/dart/ast/visitor.dart
+++ b/pkg/analyzer/lib/dart/ast/visitor.dart
@@ -895,893 +895,6 @@
 }
 
 /**
- * An AST Visitor that captures visit call timings.
- */
-class TimedAstVisitor<T> implements AstVisitor<T> {
-  /**
-   * The base visitor whose visit methods will be timed.
-   */
-  final AstVisitor<T> _baseVisitor;
-
-  /**
-   * Collects elapsed time for visit calls.
-   */
-  final Stopwatch stopwatch;
-
-  /**
-   * Initialize a newly created visitor to time calls to the given base
-   * visitor's visits.
-   */
-  TimedAstVisitor(this._baseVisitor, [Stopwatch watch])
-      : stopwatch = watch ?? new Stopwatch();
-
-  @override
-  T visitAdjacentStrings(AdjacentStrings node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitAdjacentStrings(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitAnnotation(Annotation node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitAnnotation(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitArgumentList(ArgumentList node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitArgumentList(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitAsExpression(AsExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitAsExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitAssertStatement(AssertStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitAssertStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitAssignmentExpression(AssignmentExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitAssignmentExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitAwaitExpression(AwaitExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitAwaitExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitBinaryExpression(BinaryExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitBinaryExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitBlock(Block node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitBlock(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitBlockFunctionBody(BlockFunctionBody node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitBlockFunctionBody(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitBooleanLiteral(BooleanLiteral node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitBooleanLiteral(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitBreakStatement(BreakStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitBreakStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitCascadeExpression(CascadeExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitCascadeExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitCatchClause(CatchClause node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitCatchClause(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitClassDeclaration(ClassDeclaration node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitClassDeclaration(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitClassTypeAlias(ClassTypeAlias node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitClassTypeAlias(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitComment(Comment node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitComment(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitCommentReference(CommentReference node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitCommentReference(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitCompilationUnit(CompilationUnit node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitCompilationUnit(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitConditionalExpression(ConditionalExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitConditionalExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitConfiguration(Configuration node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitConfiguration(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitConstructorDeclaration(ConstructorDeclaration node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitConstructorDeclaration(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitConstructorFieldInitializer(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitConstructorName(ConstructorName node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitConstructorName(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitContinueStatement(ContinueStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitContinueStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitDeclaredIdentifier(DeclaredIdentifier node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitDeclaredIdentifier(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitDefaultFormalParameter(DefaultFormalParameter node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitDefaultFormalParameter(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitDoStatement(DoStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitDoStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitDottedName(DottedName node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitDottedName(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitDoubleLiteral(DoubleLiteral node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitDoubleLiteral(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitEmptyFunctionBody(EmptyFunctionBody node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitEmptyFunctionBody(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitEmptyStatement(EmptyStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitEmptyStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitEnumConstantDeclaration(EnumConstantDeclaration node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitEnumConstantDeclaration(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitEnumDeclaration(EnumDeclaration node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitEnumDeclaration(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitExportDirective(ExportDirective node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitExportDirective(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitExpressionFunctionBody(ExpressionFunctionBody node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitExpressionFunctionBody(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitExpressionStatement(ExpressionStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitExpressionStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitExtendsClause(ExtendsClause node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitExtendsClause(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitFieldDeclaration(FieldDeclaration node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitFieldDeclaration(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitFieldFormalParameter(FieldFormalParameter node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitFieldFormalParameter(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitForEachStatement(ForEachStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitForEachStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitFormalParameterList(FormalParameterList node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitFormalParameterList(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitForStatement(ForStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitForStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitFunctionDeclaration(FunctionDeclaration node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitFunctionDeclaration(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitFunctionDeclarationStatement(FunctionDeclarationStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitFunctionDeclarationStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitFunctionExpression(FunctionExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitFunctionExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitFunctionExpressionInvocation(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitFunctionTypeAlias(FunctionTypeAlias node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitFunctionTypeAlias(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitFunctionTypedFormalParameter(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitHideCombinator(HideCombinator node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitHideCombinator(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitIfStatement(IfStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitIfStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitImplementsClause(ImplementsClause node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitImplementsClause(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitImportDirective(ImportDirective node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitImportDirective(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitIndexExpression(IndexExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitIndexExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitInstanceCreationExpression(InstanceCreationExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitInstanceCreationExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitIntegerLiteral(IntegerLiteral node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitIntegerLiteral(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitInterpolationExpression(InterpolationExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitInterpolationExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitInterpolationString(InterpolationString node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitInterpolationString(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitIsExpression(IsExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitIsExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitLabel(Label node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitLabel(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitLabeledStatement(LabeledStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitLabeledStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitLibraryDirective(LibraryDirective node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitLibraryDirective(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitLibraryIdentifier(LibraryIdentifier node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitLibraryIdentifier(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitListLiteral(ListLiteral node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitListLiteral(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitMapLiteral(MapLiteral node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitMapLiteral(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitMapLiteralEntry(MapLiteralEntry node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitMapLiteralEntry(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitMethodDeclaration(MethodDeclaration node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitMethodDeclaration(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitMethodInvocation(MethodInvocation node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitMethodInvocation(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitNamedExpression(NamedExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitNamedExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitNativeClause(NativeClause node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitNativeClause(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitNativeFunctionBody(NativeFunctionBody node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitNativeFunctionBody(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitNullLiteral(NullLiteral node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitNullLiteral(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitParenthesizedExpression(ParenthesizedExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitParenthesizedExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitPartDirective(PartDirective node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitPartDirective(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitPartOfDirective(PartOfDirective node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitPartOfDirective(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitPostfixExpression(PostfixExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitPostfixExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitPrefixedIdentifier(PrefixedIdentifier node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitPrefixedIdentifier(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitPrefixExpression(PrefixExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitPrefixExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitPropertyAccess(PropertyAccess node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitPropertyAccess(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitRedirectingConstructorInvocation(
-      RedirectingConstructorInvocation node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitRedirectingConstructorInvocation(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitRethrowExpression(RethrowExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitRethrowExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitReturnStatement(ReturnStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitReturnStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitScriptTag(ScriptTag node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitScriptTag(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitShowCombinator(ShowCombinator node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitShowCombinator(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitSimpleFormalParameter(SimpleFormalParameter node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitSimpleFormalParameter(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitSimpleIdentifier(SimpleIdentifier node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitSimpleIdentifier(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitSimpleStringLiteral(SimpleStringLiteral node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitSimpleStringLiteral(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitStringInterpolation(StringInterpolation node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitStringInterpolation(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitSuperConstructorInvocation(SuperConstructorInvocation node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitSuperConstructorInvocation(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitSuperExpression(SuperExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitSuperExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitSwitchCase(SwitchCase node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitSwitchCase(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitSwitchDefault(SwitchDefault node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitSwitchDefault(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitSwitchStatement(SwitchStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitSwitchStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitSymbolLiteral(SymbolLiteral node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitSymbolLiteral(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitThisExpression(ThisExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitThisExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitThrowExpression(ThrowExpression node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitThrowExpression(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitTopLevelVariableDeclaration(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitTryStatement(TryStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitTryStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitTypeArgumentList(TypeArgumentList node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitTypeArgumentList(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitTypeName(TypeName node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitTypeName(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitTypeParameter(TypeParameter node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitTypeParameter(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitTypeParameterList(TypeParameterList node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitTypeParameterList(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitVariableDeclaration(VariableDeclaration node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitVariableDeclaration(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitVariableDeclarationList(VariableDeclarationList node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitVariableDeclarationList(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitVariableDeclarationStatement(VariableDeclarationStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitVariableDeclarationStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitWhileStatement(WhileStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitWhileStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitWithClause(WithClause node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitWithClause(node);
-    stopwatch.stop();
-    return result;
-  }
-
-  @override
-  T visitYieldStatement(YieldStatement node) {
-    stopwatch.start();
-    T result = _baseVisitor.visitYieldStatement(node);
-    stopwatch.stop();
-    return result;
-  }
-}
-
-/**
  * An AST visitor that will recursively visit all of the nodes in an AST
  * structure (like instances of the class [RecursiveAstVisitor]). In addition,
  * when a node of a specific type is visited not only will the visit method for
@@ -3214,6 +2327,893 @@
 }
 
 /**
+ * An AST Visitor that captures visit call timings.
+ */
+class TimedAstVisitor<T> implements AstVisitor<T> {
+  /**
+   * The base visitor whose visit methods will be timed.
+   */
+  final AstVisitor<T> _baseVisitor;
+
+  /**
+   * Collects elapsed time for visit calls.
+   */
+  final Stopwatch stopwatch;
+
+  /**
+   * Initialize a newly created visitor to time calls to the given base
+   * visitor's visits.
+   */
+  TimedAstVisitor(this._baseVisitor, [Stopwatch watch])
+      : stopwatch = watch ?? new Stopwatch();
+
+  @override
+  T visitAdjacentStrings(AdjacentStrings node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitAdjacentStrings(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitAnnotation(Annotation node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitAnnotation(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitArgumentList(ArgumentList node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitArgumentList(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitAsExpression(AsExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitAsExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitAssertStatement(AssertStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitAssertStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitAssignmentExpression(AssignmentExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitAssignmentExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitAwaitExpression(AwaitExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitAwaitExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitBinaryExpression(BinaryExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitBinaryExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitBlock(Block node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitBlock(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitBlockFunctionBody(BlockFunctionBody node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitBlockFunctionBody(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitBooleanLiteral(BooleanLiteral node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitBooleanLiteral(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitBreakStatement(BreakStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitBreakStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitCascadeExpression(CascadeExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitCascadeExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitCatchClause(CatchClause node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitCatchClause(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitClassDeclaration(ClassDeclaration node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitClassDeclaration(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitClassTypeAlias(ClassTypeAlias node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitClassTypeAlias(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitComment(Comment node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitComment(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitCommentReference(CommentReference node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitCommentReference(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitCompilationUnit(CompilationUnit node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitCompilationUnit(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitConditionalExpression(ConditionalExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitConditionalExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitConfiguration(Configuration node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitConfiguration(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitConstructorDeclaration(ConstructorDeclaration node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitConstructorDeclaration(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitConstructorFieldInitializer(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitConstructorName(ConstructorName node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitConstructorName(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitContinueStatement(ContinueStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitContinueStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitDeclaredIdentifier(DeclaredIdentifier node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitDeclaredIdentifier(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitDefaultFormalParameter(DefaultFormalParameter node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitDefaultFormalParameter(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitDoStatement(DoStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitDoStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitDottedName(DottedName node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitDottedName(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitDoubleLiteral(DoubleLiteral node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitDoubleLiteral(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitEmptyFunctionBody(EmptyFunctionBody node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitEmptyFunctionBody(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitEmptyStatement(EmptyStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitEmptyStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitEnumConstantDeclaration(EnumConstantDeclaration node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitEnumConstantDeclaration(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitEnumDeclaration(EnumDeclaration node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitEnumDeclaration(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitExportDirective(ExportDirective node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitExportDirective(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitExpressionFunctionBody(ExpressionFunctionBody node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitExpressionFunctionBody(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitExpressionStatement(ExpressionStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitExpressionStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitExtendsClause(ExtendsClause node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitExtendsClause(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitFieldDeclaration(FieldDeclaration node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitFieldDeclaration(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitFieldFormalParameter(FieldFormalParameter node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitFieldFormalParameter(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitForEachStatement(ForEachStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitForEachStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitFormalParameterList(FormalParameterList node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitFormalParameterList(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitForStatement(ForStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitForStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitFunctionDeclaration(FunctionDeclaration node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitFunctionDeclaration(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitFunctionDeclarationStatement(FunctionDeclarationStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitFunctionDeclarationStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitFunctionExpression(FunctionExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitFunctionExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitFunctionExpressionInvocation(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitFunctionTypeAlias(FunctionTypeAlias node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitFunctionTypeAlias(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitFunctionTypedFormalParameter(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitHideCombinator(HideCombinator node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitHideCombinator(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitIfStatement(IfStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitIfStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitImplementsClause(ImplementsClause node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitImplementsClause(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitImportDirective(ImportDirective node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitImportDirective(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitIndexExpression(IndexExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitIndexExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitInstanceCreationExpression(InstanceCreationExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitInstanceCreationExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitIntegerLiteral(IntegerLiteral node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitIntegerLiteral(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitInterpolationExpression(InterpolationExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitInterpolationExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitInterpolationString(InterpolationString node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitInterpolationString(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitIsExpression(IsExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitIsExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitLabel(Label node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitLabel(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitLabeledStatement(LabeledStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitLabeledStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitLibraryDirective(LibraryDirective node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitLibraryDirective(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitLibraryIdentifier(LibraryIdentifier node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitLibraryIdentifier(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitListLiteral(ListLiteral node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitListLiteral(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitMapLiteral(MapLiteral node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitMapLiteral(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitMapLiteralEntry(MapLiteralEntry node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitMapLiteralEntry(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitMethodDeclaration(MethodDeclaration node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitMethodDeclaration(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitMethodInvocation(MethodInvocation node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitMethodInvocation(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitNamedExpression(NamedExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitNamedExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitNativeClause(NativeClause node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitNativeClause(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitNativeFunctionBody(NativeFunctionBody node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitNativeFunctionBody(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitNullLiteral(NullLiteral node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitNullLiteral(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitParenthesizedExpression(ParenthesizedExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitParenthesizedExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitPartDirective(PartDirective node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitPartDirective(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitPartOfDirective(PartOfDirective node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitPartOfDirective(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitPostfixExpression(PostfixExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitPostfixExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitPrefixedIdentifier(PrefixedIdentifier node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitPrefixedIdentifier(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitPrefixExpression(PrefixExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitPrefixExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitPropertyAccess(PropertyAccess node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitPropertyAccess(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitRedirectingConstructorInvocation(
+      RedirectingConstructorInvocation node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitRedirectingConstructorInvocation(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitRethrowExpression(RethrowExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitRethrowExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitReturnStatement(ReturnStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitReturnStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitScriptTag(ScriptTag node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitScriptTag(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitShowCombinator(ShowCombinator node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitShowCombinator(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitSimpleFormalParameter(SimpleFormalParameter node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitSimpleFormalParameter(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitSimpleIdentifier(SimpleIdentifier node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitSimpleIdentifier(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitSimpleStringLiteral(SimpleStringLiteral node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitSimpleStringLiteral(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitStringInterpolation(StringInterpolation node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitStringInterpolation(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitSuperConstructorInvocation(SuperConstructorInvocation node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitSuperConstructorInvocation(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitSuperExpression(SuperExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitSuperExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitSwitchCase(SwitchCase node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitSwitchCase(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitSwitchDefault(SwitchDefault node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitSwitchDefault(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitSwitchStatement(SwitchStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitSwitchStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitSymbolLiteral(SymbolLiteral node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitSymbolLiteral(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitThisExpression(ThisExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitThisExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitThrowExpression(ThrowExpression node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitThrowExpression(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitTopLevelVariableDeclaration(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitTryStatement(TryStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitTryStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitTypeArgumentList(TypeArgumentList node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitTypeArgumentList(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitTypeName(TypeName node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitTypeName(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitTypeParameter(TypeParameter node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitTypeParameter(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitTypeParameterList(TypeParameterList node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitTypeParameterList(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitVariableDeclaration(VariableDeclaration node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitVariableDeclaration(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitVariableDeclarationList(VariableDeclarationList node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitVariableDeclarationList(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitVariableDeclarationStatement(VariableDeclarationStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitVariableDeclarationStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitWhileStatement(WhileStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitWhileStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitWithClause(WithClause node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitWithClause(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
+  T visitYieldStatement(YieldStatement node) {
+    stopwatch.start();
+    T result = _baseVisitor.visitYieldStatement(node);
+    stopwatch.stop();
+    return result;
+  }
+}
+
+/**
  * An AST visitor that will recursively visit all of the nodes in an AST
  * structure (like instances of the class [RecursiveAstVisitor]). In addition,
  * every node will also be visited by using a single unified [visitNode] method.
diff --git a/pkg/analyzer/lib/file_system/memory_file_system.dart b/pkg/analyzer/lib/file_system/memory_file_system.dart
index 22d1b81..93428bc 100644
--- a/pkg/analyzer/lib/file_system/memory_file_system.dart
+++ b/pkg/analyzer/lib/file_system/memory_file_system.dart
@@ -456,17 +456,6 @@
   bool exists() => file.exists;
 
   @override
-  Uri resolveRelativeUri(Uri relativeUri) {
-    Uri baseUri = uri;
-    String scheme = uri.scheme;
-    if (scheme == DartUriResolver.DART_SCHEME) {
-      String libraryName = uri.path;
-      baseUri = Uri.parse('$scheme:$libraryName/$libraryName.dart');
-    }
-    return baseUri.resolveUri(relativeUri);
-  }
-
-  @override
   String toString() => file.toString();
 }
 
diff --git a/pkg/analyzer/lib/file_system/physical_file_system.dart b/pkg/analyzer/lib/file_system/physical_file_system.dart
index 66125a6..1088fcc 100644
--- a/pkg/analyzer/lib/file_system/physical_file_system.dart
+++ b/pkg/analyzer/lib/file_system/physical_file_system.dart
@@ -132,21 +132,21 @@
   }
 
   @override
-  void writeAsBytesSync(List<int> bytes) {
+  Resource renameSync(String newPath) {
     try {
       io.File file = _entry as io.File;
-      file.writeAsBytesSync(bytes);
+      io.File newFile = file.renameSync(newPath);
+      return new _PhysicalFile(newFile);
     } on io.FileSystemException catch (exception) {
       throw new FileSystemException(exception.path, exception.message);
     }
   }
 
   @override
-  Resource renameSync(String newPath) {
+  void writeAsBytesSync(List<int> bytes) {
     try {
       io.File file = _entry as io.File;
-      io.File newFile = file.renameSync(newPath);
-      return new _PhysicalFile(newFile);
+      file.writeAsBytesSync(bytes);
     } on io.FileSystemException catch (exception) {
       throw new FileSystemException(exception.path, exception.message);
     }
diff --git a/pkg/analyzer/lib/source/analysis_options_provider.dart b/pkg/analyzer/lib/source/analysis_options_provider.dart
index b96ba5c..3e15c64 100644
--- a/pkg/analyzer/lib/source/analysis_options_provider.dart
+++ b/pkg/analyzer/lib/source/analysis_options_provider.dart
@@ -4,6 +4,8 @@
 
 library analyzer.source.analysis_options_provider;
 
+import 'dart:core' hide Resource;
+
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/util/yaml.dart';
@@ -14,10 +16,16 @@
 class AnalysisOptionsProvider {
   /// Provide the options found in [root]/[ANALYSIS_OPTIONS_FILE].
   /// Return an empty options map if the file does not exist.
-  Map<String, YamlNode> getOptions(Folder root) {
-    var optionsSource = _readAnalysisOptionsFile(
-        root.getChild(AnalysisEngine.ANALYSIS_OPTIONS_FILE));
-    return getOptionsFromString(optionsSource);
+  Map<String, YamlNode> getOptions(Folder root, {bool crawlUp: false}) {
+    Resource resource;
+    for (Folder folder = root; folder != null; folder = folder.parent) {
+      resource = folder.getChild(AnalysisEngine.ANALYSIS_OPTIONS_FILE);
+      if (resource.exists || !crawlUp) {
+        break;
+      }
+    }
+    String optionsText = _readAnalysisOptionsFile(resource);
+    return getOptionsFromString(optionsText);
   }
 
   /// Provide the options found in [file].
diff --git a/pkg/analyzer/lib/source/embedder.dart b/pkg/analyzer/lib/source/embedder.dart
index bbc6659..b55f5d9 100644
--- a/pkg/analyzer/lib/source/embedder.dart
+++ b/pkg/analyzer/lib/source/embedder.dart
@@ -40,7 +40,7 @@
   @override
   AnalysisContext get context {
     if (_analysisContext == null) {
-      _analysisContext = new SdkAnalysisContext();
+      _analysisContext = new SdkAnalysisContext(null);
       SourceFactory factory = new SourceFactory([_resolver]);
       _analysisContext.sourceFactory = factory;
       List<String> uris = this.uris;
diff --git a/pkg/analyzer/lib/src/codegen/tools.dart b/pkg/analyzer/lib/src/codegen/tools.dart
index dd6ee41..763359a 100644
--- a/pkg/analyzer/lib/src/codegen/tools.dart
+++ b/pkg/analyzer/lib/src/codegen/tools.dart
@@ -99,14 +99,16 @@
    */
   void docComment(List<dom.Node> docs, {bool removeTrailingNewLine: false}) {
     if (containsOnlyWhitespace(docs)) return;
-    if (codeGeneratorSettings.docCommentStartMarker != null) writeln(codeGeneratorSettings.docCommentStartMarker);
+    if (codeGeneratorSettings.docCommentStartMarker != null)
+      writeln(codeGeneratorSettings.docCommentStartMarker);
     int width = codeGeneratorSettings.commentLineLength;
     bool javadocStyle = codeGeneratorSettings.languageName == 'java';
     indentBy(codeGeneratorSettings.docCommentLineLeader, () {
       write(nodesToText(docs, width - _state.indent.length, javadocStyle,
           removeTrailingNewLine: removeTrailingNewLine));
     });
-    if (codeGeneratorSettings.docCommentEndMarker != null) writeln(codeGeneratorSettings.docCommentEndMarker);
+    if (codeGeneratorSettings.docCommentEndMarker != null)
+      writeln(codeGeneratorSettings.docCommentEndMarker);
   }
 
   /**
diff --git a/pkg/analyzer/lib/src/context/context.dart b/pkg/analyzer/lib/src/context/context.dart
index 90d5ffc..d2659ba 100644
--- a/pkg/analyzer/lib/src/context/context.dart
+++ b/pkg/analyzer/lib/src/context/context.dart
@@ -1066,7 +1066,8 @@
       // If not the same content (e.g. the file is being closed without save),
       // then force analysis.
       if (changed) {
-        if (!analysisOptions.incremental ||
+        if (newContents == null ||
+            !analysisOptions.incremental ||
             !_tryPoorMansIncrementalResolution(source, newContents)) {
           _sourceChanged(source);
         }
@@ -2173,6 +2174,22 @@
  * An [AnalysisContext] that only contains sources for a Dart SDK.
  */
 class SdkAnalysisContext extends AnalysisContextImpl {
+  /**
+   * Initialize a newly created SDK analysis context with the given [options].
+   * Analysis options cannot be changed afterwards.  If the given [options] are
+   * `null`, then default options are used.
+   */
+  SdkAnalysisContext(AnalysisOptions options) {
+    if (options != null) {
+      super.analysisOptions = options;
+    }
+  }
+
+  @override
+  void set analysisOptions(AnalysisOptions options) {
+    throw new StateError('AnalysisOptions of SDK context cannot be changed.');
+  }
+
   @override
   AnalysisCache createCacheFromSourceFactory(SourceFactory factory) {
     if (factory == null) {
diff --git a/pkg/analyzer/lib/src/context/source.dart b/pkg/analyzer/lib/src/context/source.dart
index 5d18886..3a22291 100644
--- a/pkg/analyzer/lib/src/context/source.dart
+++ b/pkg/analyzer/lib/src/context/source.dart
@@ -286,7 +286,8 @@
             "Cannot resolve a relative URI without a containing source: "
             "$containedUri");
       }
-      containedUri = containingSource.resolveRelativeUri(containedUri);
+      containedUri =
+          utils.resolveRelativeUri(containingSource.uri, containedUri);
     }
 
     Uri actualUri = containedUri;
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index 3f398ac..a8d1917 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -3258,6 +3258,24 @@
 }
 
 /**
+ * A simple identifier that declares a name.
+ */
+// TODO(rnystrom): Consider making this distinct from [SimpleIdentifier] and
+// get rid of all of the:
+//
+//     if (node.inDeclarationContext()) { ... }
+//
+// code and instead visit this separately. A declaration is semantically pretty
+// different from a use, so using the same node type doesn't seem to buy us
+// much.
+class DeclaredSimpleIdentifier extends SimpleIdentifierImpl {
+  DeclaredSimpleIdentifier(Token token) : super(token);
+
+  @override
+  bool inDeclarationContext() => true;
+}
+
+/**
  * A formal parameter with a default value. There are two kinds of parameters
  * that are both represented by this class: named formal parameters and
  * positional formal parameters.
@@ -8930,7 +8948,7 @@
 
   @override
   void set propagatedElement(Element element) {
-    _propagatedElement = _validateElement(element);
+    _propagatedElement = element;
   }
 
   @override
@@ -8938,7 +8956,7 @@
 
   @override
   void set staticElement(Element element) {
-    _staticElement = _validateElement(element);
+    _staticElement = element;
   }
 
   @override
@@ -8946,46 +8964,7 @@
       visitor.visitSimpleIdentifier(this);
 
   @override
-  bool inDeclarationContext() {
-    // TODO(brianwilkerson) Convert this to a getter.
-    AstNode parent = this.parent;
-    if (parent is CatchClause) {
-      CatchClause clause = parent;
-      return identical(this, clause.exceptionParameter) ||
-          identical(this, clause.stackTraceParameter);
-    } else if (parent is ClassDeclaration) {
-      return identical(this, parent.name);
-    } else if (parent is ClassTypeAlias) {
-      return identical(this, parent.name);
-    } else if (parent is ConstructorDeclaration) {
-      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) {
-      return identical(this, parent.name);
-    } else if (parent is ImportDirective) {
-      return identical(this, parent.prefix);
-    } else if (parent is Label) {
-      return identical(this, parent.label) &&
-          (parent.parent is LabeledStatement);
-    } else if (parent is MethodDeclaration) {
-      return identical(this, parent.name);
-    } else if (parent is FunctionTypedFormalParameter ||
-        parent is SimpleFormalParameter) {
-      return identical(this, (parent as NormalFormalParameter).identifier);
-    } else if (parent is TypeParameter) {
-      return identical(this, parent.name);
-    } else if (parent is VariableDeclaration) {
-      return identical(this, parent.name);
-    }
-    return false;
-  }
+  bool inDeclarationContext() => false;
 
   @override
   bool inGetterContext() {
@@ -9066,66 +9045,6 @@
   void visitChildren(AstVisitor visitor) {
     // There are no children to visit.
   }
-
-  /**
-   * Return the given element if it is valid, or report the problem and return
-   * `null` if it is not appropriate.
-   *
-   * The [parent] is the parent of the element, used for reporting when there is
-   * a problem.
-   * The [isValid] is `true` if the element is appropriate.
-   * The [element] is the element to be associated with this identifier.
-   */
-  Element _returnOrReportElement(
-      AstNode parent, bool isValid, Element element) {
-    if (!isValid) {
-      AnalysisEngine.instance.logger.logInformation(
-          "Internal error: attempting to set the name of a ${parent.runtimeType} to a ${element.runtimeType}",
-          new CaughtException(new AnalysisException(), null));
-      return null;
-    }
-    return element;
-  }
-
-  /**
-   * Return the given [element] if it is an appropriate element based on the
-   * parent of this identifier, or `null` if it is not appropriate.
-   */
-  Element _validateElement(Element element) {
-    if (element == null) {
-      return null;
-    }
-    AstNode parent = this.parent;
-    if (parent is ClassDeclaration && identical(parent.name, this)) {
-      return _returnOrReportElement(parent, element is ClassElement, element);
-    } else if (parent is ClassTypeAlias && identical(parent.name, this)) {
-      return _returnOrReportElement(parent, element is ClassElement, element);
-    } else if (parent is DeclaredIdentifier &&
-        identical(parent.identifier, this)) {
-      return _returnOrReportElement(
-          parent, element is LocalVariableElement, element);
-    } else if (parent is FormalParameter &&
-        identical(parent.identifier, this)) {
-      return _returnOrReportElement(
-          parent, element is ParameterElement, element);
-    } else if (parent is FunctionDeclaration && identical(parent.name, this)) {
-      return _returnOrReportElement(
-          parent, element is ExecutableElement, element);
-    } else if (parent is FunctionTypeAlias && identical(parent.name, this)) {
-      return _returnOrReportElement(
-          parent, element is FunctionTypeAliasElement, element);
-    } else if (parent is MethodDeclaration && identical(parent.name, this)) {
-      return _returnOrReportElement(
-          parent, element is ExecutableElement, element);
-    } else if (parent is TypeParameter && identical(parent.name, this)) {
-      return _returnOrReportElement(
-          parent, element is TypeParameterElement, element);
-    } else if (parent is VariableDeclaration && identical(parent.name, this)) {
-      return _returnOrReportElement(
-          parent, element is VariableElement, element);
-    }
-    return element;
-  }
 }
 
 /**
diff --git a/pkg/analyzer/lib/src/dart/ast/utilities.dart b/pkg/analyzer/lib/src/dart/ast/utilities.dart
index 3628346..edd0196 100644
--- a/pkg/analyzer/lib/src/dart/ast/utilities.dart
+++ b/pkg/analyzer/lib/src/dart/ast/utilities.dart
@@ -778,7 +778,8 @@
 
   @override
   SimpleIdentifier visitSimpleIdentifier(SimpleIdentifier node) =>
-      new SimpleIdentifier(cloneToken(node.token));
+      new SimpleIdentifier(cloneToken(node.token),
+          isDeclaration: node.inDeclarationContext());
 
   @override
   SimpleStringLiteral visitSimpleStringLiteral(SimpleStringLiteral node) =>
@@ -3433,7 +3434,8 @@
       // documentation comments for the parser.
       mappedToken = node.token;
     }
-    SimpleIdentifier copy = new SimpleIdentifier(mappedToken);
+    SimpleIdentifier copy = new SimpleIdentifier(mappedToken,
+        isDeclaration: node.inDeclarationContext());
     copy.auxiliaryElements = node.auxiliaryElements;
     copy.propagatedElement = node.propagatedElement;
     copy.propagatedType = node.propagatedType;
diff --git a/pkg/analyzer/lib/src/dart/constant/evaluation.dart b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
index 5484bba..2bf03d5 100644
--- a/pkg/analyzer/lib/src/dart/constant/evaluation.dart
+++ b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
@@ -295,16 +295,17 @@
           // any other constants.  So we don't need to report any dependencies.
           return;
         }
-        bool superInvocationFound = false;
+        bool defaultSuperInvocationNeeded = true;
         List<ConstructorInitializer> initializers =
             constant.constantInitializers;
         for (ConstructorInitializer initializer in initializers) {
-          if (initializer is SuperConstructorInvocation) {
-            superInvocationFound = true;
+          if (initializer is SuperConstructorInvocation ||
+              initializer is RedirectingConstructorInvocation) {
+            defaultSuperInvocationNeeded = false;
           }
           initializer.accept(referenceFinder);
         }
-        if (!superInvocationFound) {
+        if (defaultSuperInvocationNeeded) {
           // No explicit superconstructor invocation found, so we need to
           // manually insert a reference to the implicit superconstructor.
           InterfaceType superclass =
diff --git a/pkg/analyzer/lib/src/dart/element/builder.dart b/pkg/analyzer/lib/src/dart/element/builder.dart
index 2754786..2803273 100644
--- a/pkg/analyzer/lib/src/dart/element/builder.dart
+++ b/pkg/analyzer/lib/src/dart/element/builder.dart
@@ -370,6 +370,7 @@
       if (node.exceptionType == null) {
         exception.hasImplicitType = true;
       }
+      exception.setVisibleRange(node.offset, node.length);
       _currentHolder.addLocalVariable(exception);
       exceptionParameter.staticElement = exception;
       // stack trace
@@ -378,6 +379,7 @@
         LocalVariableElementImpl stackTrace =
             new LocalVariableElementImpl.forNode(stackTraceParameter);
         _setCodeRange(stackTrace, stackTraceParameter);
+        stackTrace.setVisibleRange(node.offset, node.length);
         _currentHolder.addLocalVariable(stackTrace);
         stackTraceParameter.staticElement = stackTrace;
       }
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index c91582c..01da784f 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -568,7 +568,8 @@
   @override
   MethodElement lookUpConcreteMethod(
           String methodName, LibraryElement library) =>
-      _internalLookUpConcreteMethod(methodName, library, true);
+      _internalLookUpConcreteMethod(
+          methodName, library, true, new HashSet<ClassElement>());
 
   @override
   PropertyAccessorElement lookUpGetter(
@@ -583,7 +584,8 @@
   @override
   MethodElement lookUpInheritedConcreteMethod(
           String methodName, LibraryElement library) =>
-      _internalLookUpConcreteMethod(methodName, library, false);
+      _internalLookUpConcreteMethod(
+          methodName, library, false, new HashSet<ClassElement>());
 
   @override
   PropertyAccessorElement lookUpInheritedConcreteSetter(
@@ -593,11 +595,13 @@
   @override
   MethodElement lookUpInheritedMethod(
           String methodName, LibraryElement library) =>
-      _internalLookUpMethod(methodName, library, false);
+      _internalLookUpMethod(
+          methodName, library, false, new HashSet<ClassElement>());
 
   @override
   MethodElement lookUpMethod(String methodName, LibraryElement library) =>
-      _internalLookUpMethod(methodName, library, true);
+      _internalLookUpMethod(
+          methodName, library, true, new HashSet<ClassElement>());
 
   @override
   PropertyAccessorElement lookUpSetter(
@@ -679,11 +683,7 @@
         visitedClasses.add(this);
       }
       try {
-        ClassElement superclass = supertype.element;
-        if (superclass is ClassElementHandle) {
-          superclass = (superclass as ClassElementHandle).actualElement;
-        }
-        constructorsToForward = (superclass as ClassElementImpl)
+        constructorsToForward = getImpl(supertype.element)
             ._computeMixinAppConstructors(visitedClasses);
       } finally {
         visitedClasses.removeLast();
@@ -745,25 +745,29 @@
         _internalLookUpGetter(getterName, library, includeThisClass);
     while (getter != null && getter.isAbstract) {
       Element definingClass = getter.enclosingElement;
-      if (definingClass is! ClassElementImpl) {
+      if (definingClass is! ClassElement) {
         return null;
       }
-      getter = (definingClass as ClassElementImpl)
+      getter = getImpl(definingClass)
           ._internalLookUpGetter(getterName, library, false);
     }
     return getter;
   }
 
   MethodElement _internalLookUpConcreteMethod(
-      String methodName, LibraryElement library, bool includeThisClass) {
-    MethodElement method =
-        _internalLookUpMethod(methodName, library, includeThisClass);
+      String methodName,
+      LibraryElement library,
+      bool includeThisClass,
+      HashSet<ClassElement> visitedClasses) {
+    MethodElement method = _internalLookUpMethod(
+        methodName, library, includeThisClass, visitedClasses);
     while (method != null && method.isAbstract) {
       ClassElement definingClass = method.enclosingElement;
       if (definingClass == null) {
         return null;
       }
-      method = definingClass.lookUpInheritedMethod(methodName, library);
+      method = getImpl(definingClass)
+          ._internalLookUpMethod(methodName, library, false, visitedClasses);
     }
     return method;
   }
@@ -816,9 +820,8 @@
     return null;
   }
 
-  MethodElement _internalLookUpMethod(
-      String methodName, LibraryElement library, bool includeThisClass) {
-    HashSet<ClassElement> visitedClasses = new HashSet<ClassElement>();
+  MethodElement _internalLookUpMethod(String methodName, LibraryElement library,
+      bool includeThisClass, HashSet<ClassElement> visitedClasses) {
     ClassElement currentElement = this;
     if (includeThisClass) {
       MethodElement element = currentElement.getMethod(methodName);
@@ -908,6 +911,18 @@
     }
     return false;
   }
+
+  /**
+   * Return the [ClassElementImpl] of the given [classElement].  May throw an
+   * exception if the [ClassElementImpl] cannot be provided (should not happen
+   * though).
+   */
+  static ClassElementImpl getImpl(ClassElement classElement) {
+    if (classElement is ClassElementHandle) {
+      return getImpl(classElement.actualElement);
+    }
+    return classElement as ClassElementImpl;
+  }
 }
 
 /**
@@ -1082,7 +1097,13 @@
    */
   void set types(List<ClassElement> types) {
     for (ClassElement type in types) {
-      (type as ClassElementImpl).enclosingElement = this;
+      // Another implementation of ClassElement is _DeferredClassElement,
+      // which is used to resynthesize classes lazily. We cannot cast it
+      // to ClassElementImpl, and it already can provide correct values of the
+      // 'enclosingElement' property.
+      if (type is ClassElementImpl) {
+        type.enclosingElement = this;
+      }
     }
     this._types = types;
   }
@@ -2742,6 +2763,20 @@
    */
   FunctionElementImpl.forOffset(int nameOffset) : super("", nameOffset);
 
+  /**
+   * Synthesize an unnamed function element that takes [parameters] and returns
+   * [returnType].
+   */
+  FunctionElementImpl.synthetic(
+      List<ParameterElement> parameters, DartType returnType)
+      : super("", -1) {
+    synthetic = true;
+    this.returnType = returnType;
+    this.parameters = parameters;
+
+    type = new FunctionTypeImpl(this);
+  }
+
   @override
   String get identifier {
     String identifier = super.identifier;
@@ -3758,8 +3793,8 @@
   }
 
   @override
-  VariableDeclaration computeNode() =>
-      getNodeMatching((node) => node is VariableDeclaration);
+  Declaration computeNode() => getNodeMatching(
+      (node) => node is DeclaredIdentifier || node is VariableDeclaration);
 
   /**
    * Set the visible range for this element to the range starting at the given
diff --git a/pkg/analyzer/lib/src/generated/element_resolver.dart b/pkg/analyzer/lib/src/generated/element_resolver.dart
index 9945d4e..e8591ae 100644
--- a/pkg/analyzer/lib/src/generated/element_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/element_resolver.dart
@@ -631,7 +631,7 @@
       // does not apply to conditional method invocation (i.e. 'C?.m(...)').
       //
       bool isConditional = node.operator.type == TokenType.QUESTION_PERIOD;
-      ClassElementImpl typeReference = getTypeReference(target);
+      ClassElement typeReference = getTypeReference(target);
       if (typeReference != null) {
         if (node.isCascaded) {
           typeReference = _typeType.element;
@@ -783,7 +783,7 @@
           return null;
         }
         if (!node.isCascaded) {
-          ClassElementImpl typeReference = getTypeReference(target);
+          ClassElement typeReference = getTypeReference(target);
           if (typeReference != null) {
             ConstructorElement constructor =
                 typeReference.getNamedConstructor(methodName.name);
@@ -1118,7 +1118,8 @@
 
   @override
   Object visitSuperConstructorInvocation(SuperConstructorInvocation node) {
-    ClassElementImpl enclosingClass = _resolver.enclosingClass;
+    ClassElementImpl enclosingClass =
+        ClassElementImpl.getImpl(_resolver.enclosingClass);
     if (enclosingClass == null) {
       // TODO(brianwilkerson) Report this error.
       return null;
@@ -2252,7 +2253,7 @@
     // hierarchy, instead we just look for the member in the type only.  This
     // does not apply to conditional property accesses (i.e. 'C?.m').
     //
-    ClassElementImpl typeReference = getTypeReference(target);
+    ClassElement typeReference = getTypeReference(target);
     if (typeReference != null) {
       if (isCascaded) {
         typeReference = _typeType.element;
@@ -2441,10 +2442,10 @@
    * then the element representing the class is returned, otherwise `null` is
    * returned.
    */
-  static ClassElementImpl getTypeReference(Expression expression) {
+  static ClassElement getTypeReference(Expression expression) {
     if (expression is Identifier) {
       Element staticElement = expression.staticElement;
-      if (staticElement is ClassElementImpl) {
+      if (staticElement is ClassElement) {
         return staticElement;
       }
     }
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index 28d02ec..c77d13a 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -198,7 +198,7 @@
    * The class containing the AST nodes being visited, or `null` if we are not
    * in the scope of a class.
    */
-  ClassElement _enclosingClass;
+  ClassElementImpl _enclosingClass;
 
   /**
    * The method or function that we are currently visiting, or `null` if we are
@@ -420,10 +420,10 @@
 
   @override
   Object visitClassDeclaration(ClassDeclaration node) {
-    ClassElement outerClass = _enclosingClass;
+    ClassElementImpl outerClass = _enclosingClass;
     try {
       _isInNativeClass = node.nativeClause != null;
-      _enclosingClass = node.element;
+      _enclosingClass = ClassElementImpl.getImpl(node.element);
       ExtendsClause extendsClause = node.extendsClause;
       ImplementsClause implementsClause = node.implementsClause;
       WithClause withClause = node.withClause;
@@ -472,7 +472,7 @@
    */
   void visitClassDeclarationIncrementally(ClassDeclaration node) {
     _isInNativeClass = node.nativeClause != null;
-    _enclosingClass = node.element;
+    _enclosingClass = ClassElementImpl.getImpl(node.element);
     // initialize initialFieldElementsMap
     if (_enclosingClass != null) {
       List<FieldElement> fieldElements = _enclosingClass.fields;
@@ -490,9 +490,9 @@
   Object visitClassTypeAlias(ClassTypeAlias node) {
     _checkForBuiltInIdentifierAsName(
         node.name, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME);
-    ClassElement outerClassElement = _enclosingClass;
+    ClassElementImpl outerClassElement = _enclosingClass;
     try {
-      _enclosingClass = node.element;
+      _enclosingClass = ClassElementImpl.getImpl(node.element);
       ImplementsClause implementsClause = node.implementsClause;
       // Only check for all of the inheritance logic around clauses if there
       // isn't an error code such as "Cannot extend double" already on the
@@ -608,10 +608,10 @@
 
   @override
   Object visitEnumDeclaration(EnumDeclaration node) {
-    ClassElement outerClass = _enclosingClass;
+    ClassElementImpl outerClass = _enclosingClass;
     try {
       _isInNativeClass = false;
-      _enclosingClass = node.element;
+      _enclosingClass = ClassElementImpl.getImpl(node.element);
       return super.visitEnumDeclaration(node);
     } finally {
       _enclosingClass = outerClass;
@@ -642,7 +642,13 @@
       DartType expectedReturnType = functionType == null
           ? DynamicTypeImpl.instance
           : functionType.returnType;
-      _checkForReturnOfInvalidType(node.expression, expectedReturnType);
+      bool isSetterWithImplicitReturn =
+          _enclosingFunction.hasImplicitReturnType &&
+              _enclosingFunction is PropertyAccessorElement &&
+              (_enclosingFunction as PropertyAccessorElement).isSetter;
+      if (!isSetterWithImplicitReturn) {
+        _checkForReturnOfInvalidType(node.expression, expectedReturnType);
+      }
       return super.visitExpressionFunctionBody(node);
     } finally {
       _inAsync = wasInAsync;
@@ -681,6 +687,12 @@
   }
 
   @override
+  Object visitForEachStatement(ForEachStatement node) {
+    _checkForInIterable(node);
+    return super.visitForEachStatement(node);
+  }
+
+  @override
   Object visitForStatement(ForStatement node) {
     if (node.condition != null) {
       _checkForNonBoolCondition(node.condition);
@@ -689,12 +701,6 @@
   }
 
   @override
-  Object visitForEachStatement(ForEachStatement node) {
-    _checkForInIterable(node);
-    return super.visitForEachStatement(node);
-  }
-
-  @override
   Object visitFunctionDeclaration(FunctionDeclaration node) {
     ExecutableElement outerFunction = _enclosingFunction;
     try {
@@ -939,7 +945,7 @@
 
   @override
   Object visitNativeFunctionBody(NativeFunctionBody node) {
-    _checkForNativeFunctionBodyInNonSDKCode(node);
+    _checkForNativeFunctionBodyInNonSdkCode(node);
     return super.visitNativeFunctionBody(node);
   }
 
@@ -1159,7 +1165,25 @@
     if (expression != null && !enableAssertMessage) {
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.EXTRA_ARGUMENT_TO_ASSERT, expression);
-      return;
+    }
+  }
+
+  /**
+   * Given a list of [directives] that have the same prefix, generate an error
+   * if there is more than one import and any of those imports is deferred.
+   *
+   * See [CompileTimeErrorCode.SHARED_DEFERRED_PREFIX].
+   */
+  void _checkDeferredPrefixCollision(List<ImportDirective> directives) {
+    int count = directives.length;
+    if (count > 1) {
+      for (int i = 0; i < count; i++) {
+        Token deferredToken = directives[i].deferredKeyword;
+        if (deferredToken != null) {
+          _errorReporter.reportErrorForToken(
+              CompileTimeErrorCode.SHARED_DEFERRED_PREFIX, deferredToken);
+        }
+      }
     }
   }
 
@@ -1169,18 +1193,14 @@
    *
    * See [StaticTypeWarningCode.EXPECTED_TWO_MAP_TYPE_ARGUMENTS].
    */
-  bool _checkExpectedTwoMapTypeArguments(TypeArgumentList typeArguments) {
-    // check number of type arguments
+  void _checkExpectedTwoMapTypeArguments(TypeArgumentList typeArguments) {
     int num = typeArguments.arguments.length;
-    if (num == 2) {
-      return false;
+    if (num != 2) {
+      _errorReporter.reportErrorForNode(
+          StaticTypeWarningCode.EXPECTED_TWO_MAP_TYPE_ARGUMENTS,
+          typeArguments,
+          [num]);
     }
-    // report problem
-    _errorReporter.reportErrorForNode(
-        StaticTypeWarningCode.EXPECTED_TWO_MAP_TYPE_ARGUMENTS,
-        typeArguments,
-        [num]);
-    return true;
   }
 
   /**
@@ -1192,18 +1212,18 @@
    * [StaticWarningCode.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR], and
    * [CompileTimeErrorCode.FINAL_INITIALIZED_MULTIPLE_TIMES].
    */
-  bool _checkForAllFinalInitializedErrorCodes(
+  void _checkForAllFinalInitializedErrorCodes(
       ConstructorDeclaration constructor) {
     if (constructor.factoryKeyword != null ||
         constructor.redirectedConstructor != null ||
         constructor.externalKeyword != null) {
-      return false;
+      return;
     }
     // Ignore if native class.
     if (_isInNativeClass) {
-      return false;
+      return;
     }
-    bool foundError = false;
+
     HashMap<FieldElement, INIT_STATE> fieldElementsMap =
         new HashMap<FieldElement, INIT_STATE>.from(_initialFieldElementsMap);
     // Visit all of the field formal parameters
@@ -1227,7 +1247,6 @@
                     .FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR,
                 formalParameter.identifier,
                 [fieldElement.displayName]);
-            foundError = true;
           }
         } else if (state == INIT_STATE.INIT_IN_FIELD_FORMAL) {
           if (fieldElement.isFinal || fieldElement.isConst) {
@@ -1235,7 +1254,6 @@
                 CompileTimeErrorCode.FINAL_INITIALIZED_MULTIPLE_TIMES,
                 formalParameter.identifier,
                 [fieldElement.displayName]);
-            foundError = true;
           }
         }
       }
@@ -1244,7 +1262,7 @@
     NodeList<ConstructorInitializer> initializers = constructor.initializers;
     for (ConstructorInitializer constructorInitializer in initializers) {
       if (constructorInitializer is RedirectingConstructorInvocation) {
-        return false;
+        return;
       }
       if (constructorInitializer is ConstructorFieldInitializer) {
         ConstructorFieldInitializer constructorFieldInitializer =
@@ -1262,20 +1280,17 @@
                   StaticWarningCode
                       .FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION,
                   fieldName);
-              foundError = true;
             }
           } else if (state == INIT_STATE.INIT_IN_FIELD_FORMAL) {
             _errorReporter.reportErrorForNode(
                 CompileTimeErrorCode
                     .FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER,
                 fieldName);
-            foundError = true;
           } else if (state == INIT_STATE.INIT_IN_INITIALIZERS) {
             _errorReporter.reportErrorForNode(
                 CompileTimeErrorCode.FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS,
                 fieldName,
                 [fieldElement.displayName]);
-            foundError = true;
           }
         }
       }
@@ -1298,13 +1313,11 @@
               CompileTimeErrorCode.CONST_NOT_INITIALIZED,
               constructor.returnType,
               [fieldElement.name]);
-          foundError = true;
         }
       }
     });
 
     if (notInitFinalFields.isNotEmpty) {
-      foundError = true;
       AnalysisErrorWithProperties analysisError;
       List<String> names = notInitFinalFields.map((item) => item.name).toList();
       names.sort();
@@ -1328,7 +1341,6 @@
           ErrorProperty.NOT_INITIALIZED_FIELDS, notInitFinalFields);
       _errorReporter.reportError(analysisError);
     }
-    return foundError;
   }
 
   /**
@@ -1693,7 +1705,7 @@
    * the parameters of the executable element. The [errorNameTarget] is the node
    * to report problems on.
    */
-  bool _checkForAllInvalidOverrideErrorCodesForExecutable(
+  void _checkForAllInvalidOverrideErrorCodesForExecutable(
       ExecutableElement executableElement,
       List<ParameterElement> parameters,
       List<AstNode> parameterLocations,
@@ -1705,15 +1717,14 @@
         .lookupOverrides(_enclosingClass, executableElement.name);
     if (_checkForInstanceMethodNameCollidesWithSuperclassStatic(
         executableElement, errorNameTarget)) {
-      return true;
+      return;
     }
     for (ExecutableElement overriddenElement in overriddenExecutables) {
       if (_checkForAllInvalidOverrideErrorCodes(executableElement,
           overriddenElement, parameters, parameterLocations, errorNameTarget)) {
-        return true;
+        return;
       }
     }
-    return false;
   }
 
   /**
@@ -1721,12 +1732,12 @@
    *
    * See [_checkForAllInvalidOverrideErrorCodes].
    */
-  bool _checkForAllInvalidOverrideErrorCodesForField(
+  void _checkForAllInvalidOverrideErrorCodesForField(
       FieldDeclaration declaration) {
     if (_enclosingClass == null || declaration.isStatic) {
-      return false;
+      return;
     }
-    bool hasProblems = false;
+
     VariableDeclarationList fields = declaration.fields;
     for (VariableDeclaration field in fields.variables) {
       FieldElement element = field.element as FieldElement;
@@ -1737,19 +1748,14 @@
       PropertyAccessorElement setter = element.setter;
       SimpleIdentifier fieldName = field.name;
       if (getter != null) {
-        if (_checkForAllInvalidOverrideErrorCodesForExecutable(getter,
-            ParameterElement.EMPTY_LIST, AstNode.EMPTY_LIST, fieldName)) {
-          hasProblems = true;
-        }
+        _checkForAllInvalidOverrideErrorCodesForExecutable(
+            getter, ParameterElement.EMPTY_LIST, AstNode.EMPTY_LIST, fieldName);
       }
       if (setter != null) {
-        if (_checkForAllInvalidOverrideErrorCodesForExecutable(
-            setter, setter.parameters, <AstNode>[fieldName], fieldName)) {
-          hasProblems = true;
-        }
+        _checkForAllInvalidOverrideErrorCodesForExecutable(
+            setter, setter.parameters, <AstNode>[fieldName], fieldName);
       }
     }
-    return hasProblems;
   }
 
   /**
@@ -1757,27 +1763,27 @@
    *
    * See [_checkForAllInvalidOverrideErrorCodes].
    */
-  bool _checkForAllInvalidOverrideErrorCodesForMethod(
+  void _checkForAllInvalidOverrideErrorCodesForMethod(
       MethodDeclaration method) {
     if (_enclosingClass == null ||
         method.isStatic ||
         method.body is NativeFunctionBody) {
-      return false;
+      return;
     }
     ExecutableElement executableElement = method.element;
     if (executableElement == null) {
-      return false;
+      return;
     }
     SimpleIdentifier methodName = method.name;
     if (methodName.isSynthetic) {
-      return false;
+      return;
     }
     FormalParameterList formalParameterList = method.parameters;
     NodeList<FormalParameter> parameterList =
         formalParameterList != null ? formalParameterList.parameters : null;
     List<AstNode> parameters =
         parameterList != null ? new List.from(parameterList) : null;
-    return _checkForAllInvalidOverrideErrorCodesForExecutable(executableElement,
+    _checkForAllInvalidOverrideErrorCodesForExecutable(executableElement,
         executableElement.parameters, parameters, methodName);
   }
 
@@ -1829,32 +1835,25 @@
    * [StaticWarningCode.REDIRECT_TO_INVALID_FUNCTION_TYPE], and
    * [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR].
    */
-  bool _checkForAllRedirectConstructorErrorCodes(
+  void _checkForAllRedirectConstructorErrorCodes(
       ConstructorDeclaration declaration) {
-    //
     // Prepare redirected constructor node
-    //
     ConstructorName redirectedConstructor = declaration.redirectedConstructor;
     if (redirectedConstructor == null) {
-      return false;
+      return;
     }
-    //
+
     // Prepare redirected constructor type
-    //
     ConstructorElement redirectedElement = redirectedConstructor.staticElement;
     if (redirectedElement == null) {
-      //
       // If the element is null, we check for the
       // REDIRECT_TO_MISSING_CONSTRUCTOR case
-      //
       TypeName constructorTypeName = redirectedConstructor.type;
       DartType redirectedType = constructorTypeName.type;
       if (redirectedType != null &&
           redirectedType.element != null &&
           !redirectedType.isDynamic) {
-        //
         // Prepare the constructor name
-        //
         String constructorStrName = constructorTypeName.name.name;
         if (redirectedConstructor.name != null) {
           constructorStrName += ".${redirectedConstructor.name.name}";
@@ -1864,15 +1863,13 @@
             : StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR);
         _errorReporter.reportErrorForNode(errorCode, redirectedConstructor,
             [constructorStrName, redirectedType.displayName]);
-        return true;
       }
-      return false;
+      return;
     }
     FunctionType redirectedType = redirectedElement.type;
     DartType redirectedReturnType = redirectedType.returnType;
-    //
+
     // Report specific problem when return type is incompatible
-    //
     FunctionType constructorType = declaration.element.type;
     DartType constructorReturnType = constructorType.returnType;
     if (!_typeSystem.isAssignableTo(
@@ -1881,19 +1878,14 @@
           StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE,
           redirectedConstructor,
           [redirectedReturnType, constructorReturnType]);
-      return true;
-    }
-    //
-    // Check parameters
-    //
-    if (!_typeSystem.isSubtypeOf(redirectedType, constructorType)) {
+      return;
+    } else if (!_typeSystem.isSubtypeOf(redirectedType, constructorType)) {
+      // Check parameters.
       _errorReporter.reportErrorForNode(
           StaticWarningCode.REDIRECT_TO_INVALID_FUNCTION_TYPE,
           redirectedConstructor,
           [redirectedType, constructorType]);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -1911,7 +1903,7 @@
    * [StaticWarningCode.RETURN_WITHOUT_VALUE], and
    * [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE].
    */
-  bool _checkForAllReturnStatementErrorCodes(ReturnStatement statement) {
+  void _checkForAllReturnStatementErrorCodes(ReturnStatement statement) {
     FunctionType functionType =
         _enclosingFunction == null ? null : _enclosingFunction.type;
     DartType expectedReturnType = functionType == null
@@ -1923,24 +1915,24 @@
         !(_enclosingFunction as ConstructorElement).isFactory;
     if (isGenerativeConstructor) {
       if (returnExpression == null) {
-        return false;
+        return;
       }
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.RETURN_IN_GENERATIVE_CONSTRUCTOR,
           returnExpression);
-      return true;
+      return;
     }
     // RETURN_WITHOUT_VALUE
     if (returnExpression == null) {
       if (_inGenerator ||
           _typeSystem.isAssignableTo(
               _computeReturnTypeForMethod(null), expectedReturnType)) {
-        return false;
+        return;
       }
       _hasReturnWithoutValue = true;
       _errorReporter.reportErrorForNode(
           StaticWarningCode.RETURN_WITHOUT_VALUE, statement);
-      return true;
+      return;
     } else if (_inGenerator) {
       // RETURN_IN_GENERATOR
       _errorReporter.reportErrorForNode(
@@ -1948,8 +1940,8 @@
           statement,
           [_inAsync ? "async*" : "sync*"]);
     }
-    // RETURN_OF_INVALID_TYPE
-    return _checkForReturnOfInvalidType(returnExpression, expectedReturnType);
+
+    _checkForReturnOfInvalidType(returnExpression, expectedReturnType);
   }
 
   /**
@@ -1961,10 +1953,10 @@
    *
    * See [CompileTimeErrorCode.AMBIGUOUS_EXPORT].
    */
-  bool _checkForAmbiguousExport(ExportDirective directive,
+  void _checkForAmbiguousExport(ExportDirective directive,
       ExportElement exportElement, LibraryElement exportedLibrary) {
     if (exportedLibrary == null) {
-      return false;
+      return;
     }
     // check exported names
     Namespace namespace =
@@ -1980,12 +1972,11 @@
           prevElement.library.definingCompilationUnit.displayName,
           element.library.definingCompilationUnit.displayName
         ]);
-        return true;
+        return;
       } else {
         _exportedElements[name] = element;
       }
     }
-    return false;
   }
 
   /**
@@ -2005,22 +1996,18 @@
    * [StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE], and
    * [StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE].
    */
-  bool _checkForArgumentTypeNotAssignable(
+  void _checkForArgumentTypeNotAssignable(
       Expression expression,
       DartType expectedStaticType,
       DartType actualStaticType,
       ErrorCode errorCode) {
-    //
     // Warning case: test static type information
-    //
-    if (actualStaticType != null && expectedStaticType != null) {
-      if (!_typeSystem.isAssignableTo(actualStaticType, expectedStaticType)) {
-        _errorReporter.reportTypeErrorForNode(
-            errorCode, expression, [actualStaticType, expectedStaticType]);
-        return true;
-      }
+    if (actualStaticType != null &&
+        expectedStaticType != null &&
+        !_typeSystem.isAssignableTo(actualStaticType, expectedStaticType)) {
+      _errorReporter.reportTypeErrorForNode(
+          errorCode, expression, [actualStaticType, expectedStaticType]);
     }
-    return false;
   }
 
   /**
@@ -2032,14 +2019,14 @@
    *
    * See [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE].
    */
-  bool _checkForArgumentTypeNotAssignableForArgument(Expression argument) {
+  void _checkForArgumentTypeNotAssignableForArgument(Expression argument) {
     if (argument == null) {
-      return false;
+      return;
     }
     ParameterElement staticParameterElement = argument.staticParameterElement;
     DartType staticParameterType =
         staticParameterElement == null ? null : staticParameterElement.type;
-    return _checkForArgumentTypeNotAssignableWithExpectedTypes(argument,
+    _checkForArgumentTypeNotAssignableWithExpectedTypes(argument,
         staticParameterType, StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE);
   }
 
@@ -2058,12 +2045,11 @@
    * [StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE], and
    * [StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE].
    */
-  bool _checkForArgumentTypeNotAssignableWithExpectedTypes(
-          Expression expression,
-          DartType expectedStaticType,
-          ErrorCode errorCode) =>
-      _checkForArgumentTypeNotAssignable(
-          expression, expectedStaticType, getStaticType(expression), errorCode);
+  void _checkForArgumentTypeNotAssignableWithExpectedTypes(
+      Expression expression, DartType expectedStaticType, ErrorCode errorCode) {
+    _checkForArgumentTypeNotAssignable(
+        expression, expectedStaticType, getStaticType(expression), errorCode);
+  }
 
   /**
    * Verify that the arguments in the given [argumentList] can be assigned to
@@ -2074,17 +2060,14 @@
    *
    * See [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE].
    */
-  bool _checkForArgumentTypesNotAssignableInList(ArgumentList argumentList) {
+  void _checkForArgumentTypesNotAssignableInList(ArgumentList argumentList) {
     if (argumentList == null) {
-      return false;
+      return;
     }
-    bool problemReported = false;
+
     for (Expression argument in argumentList.arguments) {
-      if (_checkForArgumentTypeNotAssignableForArgument(argument)) {
-        problemReported = true;
-      }
+      _checkForArgumentTypeNotAssignableForArgument(argument);
     }
-    return problemReported;
   }
 
   /**
@@ -2094,20 +2077,19 @@
    * [errorCode] is the error code to be reported. The [arguments] are the
    * arguments to pass in when creating the error.
    */
-  bool _checkForAssignability(Expression expression, InterfaceType type,
+  void _checkForAssignability(Expression expression, InterfaceType type,
       ErrorCode errorCode, List<Object> arguments) {
     if (expression == null) {
-      return false;
+      return;
     }
     DartType expressionType = expression.staticType;
     if (expressionType == null) {
-      return false;
+      return;
     }
     if (_typeSystem.isAssignableTo(expressionType, type)) {
-      return false;
+      return;
     }
     _errorReporter.reportErrorForNode(errorCode, expression, arguments);
-    return true;
   }
 
   /**
@@ -2117,7 +2099,7 @@
    * [StaticWarningCode.ASSIGNMENT_TO_FINAL], and
    * [StaticWarningCode.ASSIGNMENT_TO_METHOD].
    */
-  bool _checkForAssignmentToFinal(Expression expression) {
+  void _checkForAssignmentToFinal(Expression expression) {
     // prepare element
     Element element = null;
     AstNode highlightedNode = expression;
@@ -2140,9 +2122,7 @@
       if (element.isConst) {
         _errorReporter.reportErrorForNode(
             StaticWarningCode.ASSIGNMENT_TO_CONST, expression);
-        return true;
-      }
-      if (element.isFinal) {
+      } else if (element.isFinal) {
         if (element is FieldElementImpl &&
             element.setter == null &&
             element.isSynthetic) {
@@ -2150,32 +2130,23 @@
               StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER,
               highlightedNode,
               [element.name, element.enclosingElement.displayName]);
-          return true;
+          return;
         }
         _errorReporter.reportErrorForNode(StaticWarningCode.ASSIGNMENT_TO_FINAL,
             highlightedNode, [element.name]);
-        return true;
       }
-      return false;
-    }
-    if (element is FunctionElement) {
+    } else if (element is FunctionElement) {
       _errorReporter.reportErrorForNode(
           StaticWarningCode.ASSIGNMENT_TO_FUNCTION, expression);
-      return true;
-    }
-    if (element is MethodElement) {
+    } else if (element is MethodElement) {
       _errorReporter.reportErrorForNode(
           StaticWarningCode.ASSIGNMENT_TO_METHOD, expression);
-      return true;
-    }
-    if (element is ClassElement ||
+    } else if (element is ClassElement ||
         element is FunctionTypeAliasElement ||
         element is TypeParameterElement) {
       _errorReporter.reportErrorForNode(
           StaticWarningCode.ASSIGNMENT_TO_TYPE, expression);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -2186,15 +2157,13 @@
    * [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME], and
    * [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME].
    */
-  bool _checkForBuiltInIdentifierAsName(
+  void _checkForBuiltInIdentifierAsName(
       SimpleIdentifier identifier, ErrorCode errorCode) {
     Token token = identifier.token;
     if (token.type == TokenType.KEYWORD) {
       _errorReporter
           .reportErrorForNode(errorCode, identifier, [identifier.name]);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -2203,7 +2172,7 @@
    *
    * see [StaticWarningCode.CASE_BLOCK_NOT_TERMINATED].
    */
-  bool _checkForCaseBlockNotTerminated(SwitchCase switchCase) {
+  void _checkForCaseBlockNotTerminated(SwitchCase switchCase) {
     NodeList<Statement> statements = switchCase.statements;
     if (statements.isEmpty) {
       // fall-through without statements at all
@@ -2213,7 +2182,7 @@
         NodeList<SwitchMember> members = switchStatement.members;
         int index = members.indexOf(switchCase);
         if (index != -1 && index < members.length - 1) {
-          return false;
+          return;
         }
       }
       // no other switch member after this one
@@ -2223,20 +2192,19 @@
       if (statement is BreakStatement ||
           statement is ContinueStatement ||
           statement is ReturnStatement) {
-        return false;
+        return;
       }
       // terminated with 'throw' expression
       if (statement is ExpressionStatement) {
         Expression expression = statement.expression;
         if (expression is ThrowExpression) {
-          return false;
+          return;
         }
       }
     }
-    // report error
+
     _errorReporter.reportErrorForToken(
         StaticWarningCode.CASE_BLOCK_NOT_TERMINATED, switchCase.keyword);
-    return true;
   }
 
   /**
@@ -2245,17 +2213,15 @@
    *
    * See [StaticWarningCode.CASE_BLOCK_NOT_TERMINATED].
    */
-  bool _checkForCaseBlocksNotTerminated(SwitchStatement statement) {
-    bool foundError = false;
+  void _checkForCaseBlocksNotTerminated(SwitchStatement statement) {
     NodeList<SwitchMember> members = statement.members;
     int lastMember = members.length - 1;
     for (int i = 0; i < lastMember; i++) {
       SwitchMember member = members[i];
-      if (member is SwitchCase && _checkForCaseBlockNotTerminated(member)) {
-        foundError = true;
+      if (member is SwitchCase) {
+        _checkForCaseBlockNotTerminated(member);
       }
     }
-    return foundError;
   }
 
   /**
@@ -2264,7 +2230,7 @@
    *
    * See [StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER].
    */
-  bool _checkForConcreteClassWithAbstractMember(MethodDeclaration method) {
+  void _checkForConcreteClassWithAbstractMember(MethodDeclaration method) {
     if (method.isAbstract &&
         _enclosingClass != null &&
         !_enclosingClass.isAbstract) {
@@ -2286,10 +2252,8 @@
             StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER,
             nameNode,
             [memberName, _enclosingClass.displayName]);
-        return true;
       }
     }
-    return false;
   }
 
   /**
@@ -2302,7 +2266,7 @@
    * [CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_NAME_AND_FIELD], and
    * [CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_NAME_AND_METHOD].
    */
-  bool _checkForConflictingConstructorNameAndMember(
+  void _checkForConflictingConstructorNameAndMember(
       ConstructorDeclaration constructor,
       ConstructorElement constructorElement) {
     SimpleIdentifier constructorName = constructor.name;
@@ -2324,33 +2288,27 @@
               constructor,
               [name]);
         }
-        return true;
+        return;
       }
     }
     // conflict with class member
     if (constructorName != null &&
         constructorElement != null &&
         !constructorName.isSynthetic) {
-      // fields
-      FieldElement field = classElement.getField(name);
-      if (field != null) {
+      if (classElement.getField(name) != null) {
+        // fields
         _errorReporter.reportErrorForNode(
             CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_NAME_AND_FIELD,
             constructor,
             [name]);
-        return true;
-      }
-      // methods
-      MethodElement method = classElement.getMethod(name);
-      if (method != null) {
+      } else if (classElement.getMethod(name) != null) {
+        // methods
         _errorReporter.reportErrorForNode(
             CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_NAME_AND_METHOD,
             constructor,
             [name]);
-        return true;
       }
     }
-    return false;
   }
 
   /**
@@ -2360,11 +2318,11 @@
    * See [CompileTimeErrorCode.CONFLICTING_GETTER_AND_METHOD], and
    * [CompileTimeErrorCode.CONFLICTING_METHOD_AND_GETTER].
    */
-  bool _checkForConflictingGetterAndMethod() {
+  void _checkForConflictingGetterAndMethod() {
     if (_enclosingClass == null) {
-      return false;
+      return;
     }
-    bool hasProblem = false;
+
     // method declared in the enclosing class vs. inherited getter
     for (MethodElement method in _enclosingClass.methods) {
       String name = method.name;
@@ -2374,8 +2332,7 @@
       if (inherited is! PropertyAccessorElement) {
         continue;
       }
-      // report problem
-      hasProblem = true;
+
       _errorReporter.reportErrorForElement(
           CompileTimeErrorCode.CONFLICTING_GETTER_AND_METHOD, method, [
         _enclosingClass.displayName,
@@ -2395,8 +2352,7 @@
       if (inherited is! MethodElement) {
         continue;
       }
-      // report problem
-      hasProblem = true;
+
       _errorReporter.reportErrorForElement(
           CompileTimeErrorCode.CONFLICTING_METHOD_AND_GETTER, accessor, [
         _enclosingClass.displayName,
@@ -2404,8 +2360,6 @@
         name
       ]);
     }
-    // done
-    return hasProblem;
   }
 
   /**
@@ -2416,13 +2370,12 @@
    * See [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER], and
    * [StaticWarningCode.CONFLICTING_INSTANCE_SETTER_AND_SUPERCLASS_MEMBER].
    */
-  bool _checkForConflictingInstanceGetterAndSuperclassMember() {
+  void _checkForConflictingInstanceGetterAndSuperclassMember() {
     if (_enclosingClass == null) {
-      return false;
+      return;
     }
     InterfaceType enclosingType = _enclosingClass.type;
     // check every accessor
-    bool hasProblem = false;
     for (PropertyAccessorElement accessor in _enclosingClass.accessors) {
       // we analyze instance accessors here
       if (accessor.isStatic) {
@@ -2459,8 +2412,7 @@
       ClassElement superElementClass =
           superElement.enclosingElement as ClassElement;
       InterfaceType superElementType = superElementClass.type;
-      // report problem
-      hasProblem = true;
+
       if (getter) {
         _errorReporter.reportErrorForElement(
             StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER,
@@ -2473,8 +2425,6 @@
             [superElementType.displayName]);
       }
     }
-    // done
-    return hasProblem;
   }
 
   /**
@@ -2486,17 +2436,16 @@
    *
    * See [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER].
    */
-  bool _checkForConflictingInstanceMethodSetter(ClassDeclaration declaration) {
+  void _checkForConflictingInstanceMethodSetter(ClassDeclaration declaration) {
     // Reference all of the class members in this class.
     NodeList<ClassMember> classMembers = declaration.members;
     if (classMembers.isEmpty) {
-      return false;
+      return;
     }
     // Create a HashMap to track conflicting members, and then loop through
     // members in the class to construct the HashMap, at the same time,
     // look for violations.  Don't add members if they are part of a conflict,
     // this prevents multiple warnings for one issue.
-    bool foundError = false;
     HashMap<String, ClassMember> memberHashMap =
         new HashMap<String, ClassMember>();
     for (ClassMember classMember in classMembers) {
@@ -2534,14 +2483,12 @@
             }
           }
           if (enclosingElementOfSetter != null) {
-            // report problem
             _errorReporter.reportErrorForNode(
                 StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER, name, [
               _enclosingClass.displayName,
               name.name,
               enclosingElementOfSetter.displayName
             ]);
-            foundError = true;
             addThisMemberToTheMap = false;
           }
         } else if (isSetter) {
@@ -2550,12 +2497,10 @@
           if (conflictingMethod != null &&
               conflictingMethod is MethodDeclaration &&
               !conflictingMethod.isGetter) {
-            // report problem
             _errorReporter.reportErrorForNode(
                 StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER2,
                 name,
                 [_enclosingClass.displayName, name.name]);
-            foundError = true;
             addThisMemberToTheMap = false;
           }
         }
@@ -2569,7 +2514,6 @@
         }
       }
     }
-    return foundError;
   }
 
   /**
@@ -2578,41 +2522,40 @@
    *
    * See [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER].
    */
-  bool _checkForConflictingStaticGetterAndInstanceSetter(
+  void _checkForConflictingStaticGetterAndInstanceSetter(
       MethodDeclaration method) {
     if (!method.isStatic) {
-      return false;
+      return;
     }
     // prepare name
     SimpleIdentifier nameNode = method.name;
     if (nameNode == null) {
-      return false;
+      return;
     }
     String name = nameNode.name;
     // prepare enclosing type
     if (_enclosingClass == null) {
-      return false;
+      return;
     }
     InterfaceType enclosingType = _enclosingClass.type;
     // try to find setter
     ExecutableElement setter =
         enclosingType.lookUpSetter(name, _currentLibrary);
     if (setter == null) {
-      return false;
+      return;
     }
     // OK, also static
     if (setter.isStatic) {
-      return false;
+      return;
     }
     // prepare "setter" type to report its name
     ClassElement setterClass = setter.enclosingElement as ClassElement;
     InterfaceType setterType = setterClass.type;
-    // report problem
+
     _errorReporter.reportErrorForNode(
         StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER,
         nameNode,
         [setterType.displayName]);
-    return true;
   }
 
   /**
@@ -2621,20 +2564,20 @@
    *
    * See [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER].
    */
-  bool _checkForConflictingStaticSetterAndInstanceMember(
+  void _checkForConflictingStaticSetterAndInstanceMember(
       MethodDeclaration method) {
     if (!method.isStatic) {
-      return false;
+      return;
     }
     // prepare name
     SimpleIdentifier nameNode = method.name;
     if (nameNode == null) {
-      return false;
+      return;
     }
     String name = nameNode.name;
     // prepare enclosing type
     if (_enclosingClass == null) {
-      return false;
+      return;
     }
     InterfaceType enclosingType = _enclosingClass.type;
     // try to find member
@@ -2647,21 +2590,20 @@
       member = enclosingType.lookUpSetter(name, _currentLibrary);
     }
     if (member == null) {
-      return false;
+      return;
     }
     // OK, also static
     if (member.isStatic) {
-      return false;
+      return;
     }
     // prepare "member" type to report its name
     ClassElement memberClass = member.enclosingElement as ClassElement;
     InterfaceType memberType = memberClass.type;
-    // report problem
+
     _errorReporter.reportErrorForNode(
         StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER,
         nameNode,
         [memberType.displayName]);
-    return true;
   }
 
   /**
@@ -2671,9 +2613,8 @@
    * See [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_CLASS], and
    * [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER].
    */
-  bool _checkForConflictingTypeVariableErrorCodes(
+  void _checkForConflictingTypeVariableErrorCodes(
       ClassDeclaration declaration) {
-    bool problemReported = false;
     for (TypeParameterElement typeParameter in _enclosingClass.typeParameters) {
       String name = typeParameter.name;
       // name is same as the name of the enclosing class
@@ -2682,7 +2623,6 @@
             CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_CLASS,
             typeParameter,
             [name]);
-        problemReported = true;
       }
       // check members
       if (_enclosingClass.getMethod(name) != null ||
@@ -2692,10 +2632,8 @@
             CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER,
             typeParameter,
             [name]);
-        problemReported = true;
       }
     }
-    return problemReported;
   }
 
   /**
@@ -2704,21 +2642,21 @@
    *
    * See [CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER].
    */
-  bool _checkForConstConstructorWithNonConstSuper(
+  void _checkForConstConstructorWithNonConstSuper(
       ConstructorDeclaration constructor) {
     if (!_isEnclosingConstructorConst) {
-      return false;
+      return;
     }
     // OK, const factory, checked elsewhere
     if (constructor.factoryKeyword != null) {
-      return false;
+      return;
     }
     // check for mixins
     if (_enclosingClass.mixins.length != 0) {
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_MIXIN,
           constructor.returnType);
-      return true;
+      return;
     }
     // try to find and check super constructor invocation
     for (ConstructorInitializer initializer in constructor.initializers) {
@@ -2726,37 +2664,34 @@
         SuperConstructorInvocation superInvocation = initializer;
         ConstructorElement element = superInvocation.staticElement;
         if (element == null || element.isConst) {
-          return false;
+          return;
         }
         _errorReporter.reportErrorForNode(
             CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER,
             superInvocation,
             [element.enclosingElement.displayName]);
-        return true;
+        return;
       }
     }
     // no explicit super constructor invocation, check default constructor
     InterfaceType supertype = _enclosingClass.supertype;
     if (supertype == null) {
-      return false;
+      return;
     }
     if (supertype.isObject) {
-      return false;
+      return;
     }
     ConstructorElement unnamedConstructor =
         supertype.element.unnamedConstructor;
-    if (unnamedConstructor == null) {
-      return false;
+    if (unnamedConstructor == null || unnamedConstructor.isConst) {
+      return;
     }
-    if (unnamedConstructor.isConst) {
-      return false;
-    }
+
     // default constructor is not 'const', report problem
     _errorReporter.reportErrorForNode(
         CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER,
         constructor.returnType,
         [supertype.displayName]);
-    return true;
   }
 
   /**
@@ -2766,22 +2701,21 @@
    *
    * See [CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD].
    */
-  bool _checkForConstConstructorWithNonFinalField(
+  void _checkForConstConstructorWithNonFinalField(
       ConstructorDeclaration constructor,
       ConstructorElement constructorElement) {
     if (!_isEnclosingConstructorConst) {
-      return false;
+      return;
     }
     // check if there is non-final field
     ClassElement classElement = constructorElement.enclosingElement;
     if (!classElement.hasNonFinalField) {
-      return false;
+      return;
     }
-    // report problem
+
     _errorReporter.reportErrorForNode(
         CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD,
         constructor);
-    return true;
   }
 
   /**
@@ -2792,16 +2726,14 @@
    *
    * See [CompileTimeErrorCode.CONST_DEFERRED_CLASS].
    */
-  bool _checkForConstDeferredClass(InstanceCreationExpression expression,
+  void _checkForConstDeferredClass(InstanceCreationExpression expression,
       ConstructorName constructorName, TypeName typeName) {
     if (typeName.isDeferred) {
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.CONST_DEFERRED_CLASS,
           constructorName,
           [typeName.name.name]);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -2810,13 +2742,11 @@
    *
    * See [CompileTimeErrorCode.CONST_CONSTRUCTOR_THROWS_EXCEPTION].
    */
-  bool _checkForConstEvalThrowsException(ThrowExpression expression) {
+  void _checkForConstEvalThrowsException(ThrowExpression expression) {
     if (_isEnclosingConstructorConst) {
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.CONST_CONSTRUCTOR_THROWS_EXCEPTION, expression);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -2824,13 +2754,11 @@
    *
    * See [CompileTimeErrorCode.CONST_FORMAL_PARAMETER].
    */
-  bool _checkForConstFormalParameter(NormalFormalParameter parameter) {
+  void _checkForConstFormalParameter(NormalFormalParameter parameter) {
     if (parameter.isConst) {
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.CONST_FORMAL_PARAMETER, parameter);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -2843,7 +2771,7 @@
    * See [StaticWarningCode.CONST_WITH_ABSTRACT_CLASS], and
    * [StaticWarningCode.NEW_WITH_ABSTRACT_CLASS].
    */
-  bool _checkForConstOrNewWithAbstractClass(
+  void _checkForConstOrNewWithAbstractClass(
       InstanceCreationExpression expression,
       TypeName typeName,
       InterfaceType type) {
@@ -2857,10 +2785,8 @@
           _errorReporter.reportErrorForNode(
               StaticWarningCode.NEW_WITH_ABSTRACT_CLASS, typeName);
         }
-        return true;
       }
     }
-    return false;
   }
 
   /**
@@ -2872,14 +2798,12 @@
    *
    * See [CompileTimeErrorCode.INSTANTIATE_ENUM].
    */
-  bool _checkForConstOrNewWithEnum(InstanceCreationExpression expression,
+  void _checkForConstOrNewWithEnum(InstanceCreationExpression expression,
       TypeName typeName, InterfaceType type) {
     if (type.element.isEnum) {
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.INSTANTIATE_ENUM, typeName);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -2891,14 +2815,12 @@
    *
    * See [CompileTimeErrorCode.CONST_WITH_NON_CONST].
    */
-  bool _checkForConstWithNonConst(InstanceCreationExpression expression) {
+  void _checkForConstWithNonConst(InstanceCreationExpression expression) {
     ConstructorElement constructorElement = expression.staticElement;
     if (constructorElement != null && !constructorElement.isConst) {
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.CONST_WITH_NON_CONST, expression);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -2906,14 +2828,14 @@
    *
    * See [CompileTimeErrorCode.CONST_WITH_TYPE_PARAMETERS].
    */
-  bool _checkForConstWithTypeParameters(TypeName typeName) {
+  void _checkForConstWithTypeParameters(TypeName typeName) {
     // something wrong with AST
     if (typeName == null) {
-      return false;
+      return;
     }
     Identifier name = typeName.name;
     if (name == null) {
-      return false;
+      return;
     }
     // should not be a type parameter
     if (name.staticElement is TypeParameterElement) {
@@ -2923,16 +2845,10 @@
     // check type arguments
     TypeArgumentList typeArguments = typeName.typeArguments;
     if (typeArguments != null) {
-      bool hasError = false;
       for (TypeName argument in typeArguments.arguments) {
-        if (_checkForConstWithTypeParameters(argument)) {
-          hasError = true;
-        }
+        _checkForConstWithTypeParameters(argument);
       }
-      return hasError;
     }
-    // OK
-    return false;
   }
 
   /**
@@ -2947,20 +2863,20 @@
    * See [CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR], and
    * [CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT].
    */
-  bool _checkForConstWithUndefinedConstructor(
+  void _checkForConstWithUndefinedConstructor(
       InstanceCreationExpression expression,
       ConstructorName constructorName,
       TypeName typeName) {
     // OK if resolved
     if (expression.staticElement != null) {
-      return false;
+      return;
     }
     DartType type = typeName.type;
     if (type is InterfaceType) {
       ClassElement element = type.element;
       if (element != null && element.isEnum) {
         // We have already reported the error.
-        return false;
+        return;
       }
     }
     Identifier className = typeName.name;
@@ -2977,7 +2893,6 @@
           constructorName,
           [className]);
     }
-    return true;
   }
 
   /**
@@ -2986,8 +2901,7 @@
    *
    * See [CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE_ALIAS].
    */
-  bool _checkForDefaultValueInFunctionTypeAlias(FunctionTypeAlias alias) {
-    bool result = false;
+  void _checkForDefaultValueInFunctionTypeAlias(FunctionTypeAlias alias) {
     FormalParameterList formalParameterList = alias.parameters;
     NodeList<FormalParameter> parameters = formalParameterList.parameters;
     for (FormalParameter formalParameter in parameters) {
@@ -2996,11 +2910,9 @@
         if (defaultFormalParameter.defaultValue != null) {
           _errorReporter.reportErrorForNode(
               CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE_ALIAS, alias);
-          result = true;
         }
       }
     }
-    return result;
   }
 
   /**
@@ -3009,21 +2921,20 @@
    *
    * See [CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPED_PARAMETER].
    */
-  bool _checkForDefaultValueInFunctionTypedParameter(
+  void _checkForDefaultValueInFunctionTypedParameter(
       DefaultFormalParameter parameter) {
     // OK, not in a function typed parameter.
     if (!_isInFunctionTypedFormalParameter) {
-      return false;
+      return;
     }
     // OK, no default value.
     if (parameter.defaultValue == null) {
-      return false;
+      return;
     }
-    // Report problem.
+
     _errorReporter.reportErrorForNode(
         CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPED_PARAMETER,
         parameter);
-    return true;
   }
 
   /**
@@ -3032,8 +2943,7 @@
    *
    * See [CompileTimeErrorCode.SHARED_DEFERRED_PREFIX].
    */
-  bool _checkForDeferredPrefixCollisions(CompilationUnit unit) {
-    bool foundError = false;
+  void _checkForDeferredPrefixCollisions(CompilationUnit unit) {
     NodeList<Directive> directives = unit.directives;
     int count = directives.length;
     if (count > 0) {
@@ -3060,12 +2970,9 @@
         }
       }
       for (List<ImportDirective> imports in prefixToDirectivesMap.values) {
-        if (_hasDeferredPrefixCollision(imports)) {
-          foundError = true;
-        }
+        _checkDeferredPrefixCollision(imports);
       }
     }
-    return foundError;
   }
 
   /**
@@ -3074,22 +2981,21 @@
    *
    * See [CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE].
    */
-  bool _checkForDuplicateDefinitionInheritance() {
+  void _checkForDuplicateDefinitionInheritance() {
     if (_enclosingClass == null) {
-      return false;
+      return;
     }
-    bool hasProblem = false;
+
     for (ExecutableElement member in _enclosingClass.methods) {
-      if (member.isStatic && _checkForDuplicateDefinitionOfMember(member)) {
-        hasProblem = true;
+      if (member.isStatic) {
+        _checkForDuplicateDefinitionOfMember(member);
       }
     }
     for (ExecutableElement member in _enclosingClass.accessors) {
-      if (member.isStatic && _checkForDuplicateDefinitionOfMember(member)) {
-        hasProblem = true;
+      if (member.isStatic) {
+        _checkForDuplicateDefinitionOfMember(member);
       }
     }
-    return hasProblem;
   }
 
   /**
@@ -3098,21 +3004,21 @@
    *
    * See [CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE].
    */
-  bool _checkForDuplicateDefinitionOfMember(ExecutableElement staticMember) {
+  void _checkForDuplicateDefinitionOfMember(ExecutableElement staticMember) {
     // prepare name
     String name = staticMember.name;
     if (name == null) {
-      return false;
+      return;
     }
     // try to find member
     ExecutableElement inheritedMember =
         _inheritanceManager.lookupInheritance(_enclosingClass, name);
     if (inheritedMember == null) {
-      return false;
+      return;
     }
     // OK, also static
     if (inheritedMember.isStatic) {
-      return false;
+      return;
     }
     // determine the display name, use the extended display name if the
     // enclosing class of the inherited member is in a different source
@@ -3123,12 +3029,11 @@
     } else {
       displayName = enclosingElement.getExtendedDisplayName(null);
     }
-    // report problem
+
     _errorReporter.reportErrorForElement(
         CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE,
         staticMember,
         [name, displayName]);
-    return true;
   }
 
   /**
@@ -3137,19 +3042,16 @@
    *
    * See [StaticTypeWarningCode.EXPECTED_ONE_LIST_TYPE_ARGUMENTS].
    */
-  bool _checkForExpectedOneListTypeArgument(
+  void _checkForExpectedOneListTypeArgument(
       ListLiteral literal, TypeArgumentList typeArguments) {
     // check number of type arguments
     int num = typeArguments.arguments.length;
-    if (num == 1) {
-      return false;
+    if (num != 1) {
+      _errorReporter.reportErrorForNode(
+          StaticTypeWarningCode.EXPECTED_ONE_LIST_TYPE_ARGUMENTS,
+          typeArguments,
+          [num]);
     }
-    // report problem
-    _errorReporter.reportErrorForNode(
-        StaticTypeWarningCode.EXPECTED_ONE_LIST_TYPE_ARGUMENTS,
-        typeArguments,
-        [num]);
-    return true;
   }
 
   /**
@@ -3161,10 +3063,10 @@
    *
    * See [CompileTimeErrorCode.EXPORT_DUPLICATED_LIBRARY_NAME].
    */
-  bool _checkForExportDuplicateLibraryName(ExportDirective directive,
+  void _checkForExportDuplicateLibraryName(ExportDirective directive,
       ExportElement exportElement, LibraryElement exportedLibrary) {
     if (exportedLibrary == null) {
-      return false;
+      return;
     }
     String name = exportedLibrary.name;
     // check if there is other exported library with the same name
@@ -3179,13 +3081,11 @@
             name
           ]);
         }
-        return true;
+        return;
       }
     } else {
       _nameToExportElement[name] = exportedLibrary;
     }
-    // OK
-    return false;
   }
 
   /**
@@ -3196,27 +3096,26 @@
    *
    * See [CompileTimeErrorCode.EXPORT_INTERNAL_LIBRARY].
    */
-  bool _checkForExportInternalLibrary(
+  void _checkForExportInternalLibrary(
       ExportDirective directive, ExportElement exportElement) {
     if (_isInSystemLibrary) {
-      return false;
+      return;
     }
     // should be private
     DartSdk sdk = _currentLibrary.context.sourceFactory.dartSdk;
     String uri = exportElement.uri;
     SdkLibrary sdkLibrary = sdk.getSdkLibrary(uri);
     if (sdkLibrary == null) {
-      return false;
+      return;
     }
     if (!sdkLibrary.isInternal) {
-      return false;
+      return;
     }
-    // report problem
+
     _errorReporter.reportErrorForNode(
         CompileTimeErrorCode.EXPORT_INTERNAL_LIBRARY,
         directive,
         [directive.uri]);
-    return true;
   }
 
   /**
@@ -3224,11 +3123,11 @@
    *
    * See [CompileTimeErrorCode.EXTENDS_DEFERRED_CLASS].
    */
-  bool _checkForExtendsDeferredClass(ExtendsClause clause) {
+  void _checkForExtendsDeferredClass(ExtendsClause clause) {
     if (clause == null) {
-      return false;
+      return;
     }
-    return _checkForExtendsOrImplementsDeferredClass(
+    _checkForExtendsOrImplementsDeferredClass(
         clause.superclass, CompileTimeErrorCode.EXTENDS_DEFERRED_CLASS);
   }
 
@@ -3237,11 +3136,11 @@
    *
    * See [CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS].
    */
-  bool _checkForExtendsDeferredClassInTypeAlias(ClassTypeAlias alias) {
+  void _checkForExtendsDeferredClassInTypeAlias(ClassTypeAlias alias) {
     if (alias == null) {
-      return false;
+      return;
     }
-    return _checkForExtendsOrImplementsDeferredClass(
+    _checkForExtendsOrImplementsDeferredClass(
         alias.superclass, CompileTimeErrorCode.EXTENDS_DEFERRED_CLASS);
   }
 
@@ -3360,11 +3259,11 @@
    * See [CompileTimeErrorCode.CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE], and
    * [StaticWarningCode.FIELD_INITIALIZER_NOT_ASSIGNABLE].
    */
-  bool _checkForFieldInitializerNotAssignable(
+  void _checkForFieldInitializerNotAssignable(
       ConstructorFieldInitializer initializer, Element staticElement) {
     // prepare field element
     if (staticElement is! FieldElement) {
-      return false;
+      return;
     }
     FieldElement fieldElement = staticElement as FieldElement;
     // prepare field type
@@ -3372,15 +3271,15 @@
     // prepare expression type
     Expression expression = initializer.expression;
     if (expression == null) {
-      return false;
+      return;
     }
     // test the static type of the expression
     DartType staticType = getStaticType(expression);
     if (staticType == null) {
-      return false;
+      return;
     }
     if (_typeSystem.isAssignableTo(staticType, fieldType)) {
-      return false;
+      return;
     }
     // report problem
     if (_isEnclosingConstructorConst) {
@@ -3396,7 +3295,6 @@
         StaticWarningCode.FIELD_INITIALIZER_NOT_ASSIGNABLE,
         expression,
         [staticType, fieldType]);
-    return true;
     // TODO(brianwilkerson) Define a hint corresponding to these errors and
     // report it if appropriate.
 //        // test the propagated type of the expression
@@ -3427,7 +3325,7 @@
    *
    * See [CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR].
    */
-  bool _checkForFieldInitializingFormalRedirectingConstructor(
+  void _checkForFieldInitializingFormalRedirectingConstructor(
       FieldFormalParameter parameter) {
     ConstructorDeclaration constructor =
         parameter.getAncestor((node) => node is ConstructorDeclaration);
@@ -3435,14 +3333,14 @@
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR,
           parameter);
-      return true;
+      return;
     }
     // constructor cannot be a factory
     if (constructor.factoryKeyword != null) {
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.FIELD_INITIALIZER_FACTORY_CONSTRUCTOR,
           parameter);
-      return true;
+      return;
     }
     // constructor cannot have a redirection
     for (ConstructorInitializer initializer in constructor.initializers) {
@@ -3450,11 +3348,9 @@
         _errorReporter.reportErrorForNode(
             CompileTimeErrorCode.FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR,
             parameter);
-        return true;
+        return;
       }
     }
-    // OK
-    return false;
   }
 
   /**
@@ -3464,31 +3360,27 @@
    * See [CompileTimeErrorCode.CONST_NOT_INITIALIZED], and
    * [StaticWarningCode.FINAL_NOT_INITIALIZED].
    */
-  bool _checkForFinalNotInitialized(VariableDeclarationList list) {
-    if (_isInNativeClass) {
-      return false;
+  void _checkForFinalNotInitialized(VariableDeclarationList list) {
+    if (_isInNativeClass || list.isSynthetic) {
+      return;
     }
-    bool foundError = false;
-    if (!list.isSynthetic) {
-      NodeList<VariableDeclaration> variables = list.variables;
-      for (VariableDeclaration variable in variables) {
-        if (variable.initializer == null) {
-          if (list.isConst) {
-            _errorReporter.reportErrorForNode(
-                CompileTimeErrorCode.CONST_NOT_INITIALIZED,
-                variable.name,
-                [variable.name.name]);
-          } else if (list.isFinal) {
-            _errorReporter.reportErrorForNode(
-                StaticWarningCode.FINAL_NOT_INITIALIZED,
-                variable.name,
-                [variable.name.name]);
-          }
-          foundError = true;
+
+    NodeList<VariableDeclaration> variables = list.variables;
+    for (VariableDeclaration variable in variables) {
+      if (variable.initializer == null) {
+        if (list.isConst) {
+          _errorReporter.reportErrorForNode(
+              CompileTimeErrorCode.CONST_NOT_INITIALIZED,
+              variable.name,
+              [variable.name.name]);
+        } else if (list.isFinal) {
+          _errorReporter.reportErrorForNode(
+              StaticWarningCode.FINAL_NOT_INITIALIZED,
+              variable.name,
+              [variable.name.name]);
         }
       }
     }
-    return foundError;
   }
 
   /**
@@ -3500,21 +3392,18 @@
    * See [CompileTimeErrorCode.CONST_NOT_INITIALIZED], and
    * [StaticWarningCode.FINAL_NOT_INITIALIZED].
    */
-  bool _checkForFinalNotInitializedInClass(ClassDeclaration declaration) {
+  void _checkForFinalNotInitializedInClass(ClassDeclaration declaration) {
     NodeList<ClassMember> classMembers = declaration.members;
     for (ClassMember classMember in classMembers) {
       if (classMember is ConstructorDeclaration) {
-        return false;
+        return;
       }
     }
-    bool foundError = false;
     for (ClassMember classMember in classMembers) {
-      if (classMember is FieldDeclaration &&
-          _checkForFinalNotInitialized(classMember.fields)) {
-        foundError = true;
+      if (classMember is FieldDeclaration) {
+        _checkForFinalNotInitialized(classMember.fields);
       }
     }
-    return foundError;
   }
 
   /**
@@ -3559,18 +3448,14 @@
    *
    * See [CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS].
    */
-  bool _checkForImplementsDeferredClass(ImplementsClause clause) {
+  void _checkForImplementsDeferredClass(ImplementsClause clause) {
     if (clause == null) {
-      return false;
+      return;
     }
-    bool foundError = false;
     for (TypeName type in clause.interfaces) {
-      if (_checkForExtendsOrImplementsDeferredClass(
-          type, CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS)) {
-        foundError = true;
-      }
+      _checkForExtendsOrImplementsDeferredClass(
+          type, CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS);
     }
-    return foundError;
   }
 
   /**
@@ -3601,41 +3486,41 @@
    * [CompileTimeErrorCode.INSTANCE_MEMBER_ACCESS_FROM_STATIC].
    * TODO(scheglov) rename thid method
    */
-  bool _checkForImplicitThisReferenceInInitializer(
+  void _checkForImplicitThisReferenceInInitializer(
       SimpleIdentifier identifier) {
     if (!_isInConstructorInitializer &&
         !_isInStaticMethod &&
         !_isInFactory &&
         !_isInInstanceVariableInitializer &&
         !_isInStaticVariableDeclaration) {
-      return false;
+      return;
     }
     // prepare element
     Element element = identifier.staticElement;
     if (!(element is MethodElement || element is PropertyAccessorElement)) {
-      return false;
+      return;
     }
     // static element
     ExecutableElement executableElement = element as ExecutableElement;
     if (executableElement.isStatic) {
-      return false;
+      return;
     }
     // not a class member
     Element enclosingElement = element.enclosingElement;
     if (enclosingElement is! ClassElement) {
-      return false;
+      return;
     }
     // comment
     AstNode parent = identifier.parent;
     if (parent is CommentReference) {
-      return false;
+      return;
     }
     // qualified method invocation
     if (parent is MethodInvocation) {
       MethodInvocation invocation = parent;
       if (identical(invocation.methodName, identifier) &&
           invocation.realTarget != null) {
-        return false;
+        return;
       }
     }
     // qualified property access
@@ -3643,16 +3528,16 @@
       PropertyAccess access = parent;
       if (identical(access.propertyName, identifier) &&
           access.realTarget != null) {
-        return false;
+        return;
       }
     }
     if (parent is PrefixedIdentifier) {
       PrefixedIdentifier prefixed = parent;
       if (identical(prefixed.identifier, identifier)) {
-        return false;
+        return;
       }
     }
-    // report problem
+
     if (_isInStaticMethod) {
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.INSTANCE_MEMBER_ACCESS_FROM_STATIC, identifier);
@@ -3664,7 +3549,6 @@
           CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER,
           identifier);
     }
-    return true;
   }
 
   /**
@@ -3675,33 +3559,28 @@
    *
    * See [CompileTimeErrorCode.IMPORT_DUPLICATED_LIBRARY_NAME].
    */
-  bool _checkForImportDuplicateLibraryName(
+  void _checkForImportDuplicateLibraryName(
       ImportDirective directive, ImportElement importElement) {
     // prepare imported library
     LibraryElement nodeLibrary = importElement.importedLibrary;
     if (nodeLibrary == null) {
-      return false;
+      return;
     }
     String name = nodeLibrary.name;
     // check if there is another imported library with the same name
     LibraryElement prevLibrary = _nameToImportElement[name];
     if (prevLibrary != null) {
-      if (prevLibrary != nodeLibrary) {
-        if (!name.isEmpty) {
-          _errorReporter.reportErrorForNode(
-              StaticWarningCode.IMPORT_DUPLICATED_LIBRARY_NAMED, directive, [
-            prevLibrary.definingCompilationUnit.displayName,
-            nodeLibrary.definingCompilationUnit.displayName,
-            name
-          ]);
-        }
-        return true;
+      if (prevLibrary != nodeLibrary && !name.isEmpty) {
+        _errorReporter.reportErrorForNode(
+            StaticWarningCode.IMPORT_DUPLICATED_LIBRARY_NAMED, directive, [
+          prevLibrary.definingCompilationUnit.displayName,
+          nodeLibrary.definingCompilationUnit.displayName,
+          name
+        ]);
       }
     } else {
       _nameToImportElement[name] = nodeLibrary;
     }
-    // OK
-    return false;
   }
 
   /**
@@ -3712,27 +3591,23 @@
    *
    * See [CompileTimeErrorCode.IMPORT_INTERNAL_LIBRARY].
    */
-  bool _checkForImportInternalLibrary(
+  void _checkForImportInternalLibrary(
       ImportDirective directive, ImportElement importElement) {
     if (_isInSystemLibrary) {
-      return false;
+      return;
     }
     // should be private
     DartSdk sdk = _currentLibrary.context.sourceFactory.dartSdk;
     String uri = importElement.uri;
     SdkLibrary sdkLibrary = sdk.getSdkLibrary(uri);
-    if (sdkLibrary == null) {
-      return false;
+    if (sdkLibrary == null || !sdkLibrary.isInternal) {
+      return;
     }
-    if (!sdkLibrary.isInternal) {
-      return false;
-    }
-    // report problem
+
     _errorReporter.reportErrorForNode(
         CompileTimeErrorCode.IMPORT_INTERNAL_LIBRARY,
         directive,
         [directive.uri]);
-    return true;
   }
 
   /**
@@ -3741,7 +3616,7 @@
    *
    * See [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE].
    */
-  bool _checkForInconsistentMethodInheritance() {
+  void _checkForInconsistentMethodInheritance() {
     // Ensure that the inheritance manager has a chance to generate all errors
     // we may care about, note that we ensure that the interfaces data since
     // there are no errors.
@@ -3749,12 +3624,68 @@
     HashSet<AnalysisError> errors =
         _inheritanceManager.getErrors(_enclosingClass);
     if (errors == null || errors.isEmpty) {
-      return false;
+      return;
     }
     for (AnalysisError error in errors) {
       _errorReporter.reportError(error);
     }
-    return true;
+    return;
+  }
+
+  /**
+   * Check for a type mis-match between the iterable expression and the
+   * assigned variable in a for-in statement.
+   */
+  void _checkForInIterable(ForEachStatement node) {
+    // Ignore malformed for statements.
+    if (node.identifier == null && node.loopVariable == null) {
+      return;
+    }
+
+    DartType iterableType = getStaticType(node.iterable);
+    if (iterableType.isDynamic) {
+      return;
+    }
+
+    // The type of the loop variable.
+    SimpleIdentifier variable = node.identifier != null
+        ? node.identifier
+        : node.loopVariable.identifier;
+    DartType variableType = getStaticType(variable);
+
+    DartType loopType = node.awaitKeyword != null
+        ? _typeProvider.streamType
+        : _typeProvider.iterableType;
+
+    // Use an explicit string instead of [loopType] to remove the "<E>".
+    String loopTypeName = node.awaitKeyword != null ? "Stream" : "Iterable";
+
+    // The object being iterated has to implement Iterable<T> for some T that
+    // is assignable to the variable's type.
+    // TODO(rnystrom): Move this into mostSpecificTypeArgument()?
+    iterableType = iterableType.resolveToBound(_typeProvider.objectType);
+    DartType bestIterableType =
+        _typeSystem.mostSpecificTypeArgument(iterableType, loopType);
+
+    // Allow it to be a supertype of Iterable<T> (basically just Object) and do
+    // an implicit downcast to Iterable<dynamic>.
+    if (bestIterableType == null) {
+      if (_typeSystem.isSubtypeOf(loopType, iterableType)) {
+        bestIterableType = DynamicTypeImpl.instance;
+      }
+    }
+
+    if (bestIterableType == null) {
+      _errorReporter.reportTypeErrorForNode(
+          StaticTypeWarningCode.FOR_IN_OF_INVALID_TYPE,
+          node.iterable,
+          [iterableType, loopTypeName]);
+    } else if (!_typeSystem.isAssignableTo(bestIterableType, variableType)) {
+      _errorReporter.reportTypeErrorForNode(
+          StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE,
+          node.iterable,
+          [iterableType, loopTypeName, variableType]);
+    }
   }
 
   /**
@@ -3763,36 +3694,35 @@
    *
    * See [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER].
    */
-  bool _checkForInstanceAccessToStaticMember(
+  void _checkForInstanceAccessToStaticMember(
       ClassElement typeReference, SimpleIdentifier name) {
     // OK, in comment
     if (_isInComment) {
-      return false;
+      return;
     }
     // OK, target is a type
     if (typeReference != null) {
-      return false;
+      return;
     }
     // prepare member Element
     Element element = name.staticElement;
     if (element is! ExecutableElement) {
-      return false;
+      return;
     }
     ExecutableElement executableElement = element as ExecutableElement;
     // OK, top-level element
     if (executableElement.enclosingElement is! ClassElement) {
-      return false;
+      return;
     }
     // OK, instance member
     if (!executableElement.isStatic) {
-      return false;
+      return;
     }
-    // report problem
+
     _errorReporter.reportErrorForNode(
         StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER,
         name,
         [name.name]);
-    return true;
   }
 
   /**
@@ -3877,15 +3807,15 @@
    *
    * See [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE].
    */
-  bool _checkForIntNotAssignable(Expression argument) {
+  void _checkForIntNotAssignable(Expression argument) {
     if (argument == null) {
-      return false;
+      return;
     }
     ParameterElement staticParameterElement = argument.staticParameterElement;
     DartType staticParameterType =
         staticParameterElement == null ? null : staticParameterElement.type;
-    return _checkForArgumentTypeNotAssignable(argument, staticParameterType,
-        _intType, StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE);
+    _checkForArgumentTypeNotAssignable(argument, staticParameterType, _intType,
+        StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE);
   }
 
   /**
@@ -3893,17 +3823,13 @@
    *
    * See [CompileTimeErrorCode.INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY].
    */
-  bool _checkForInvalidAnnotationFromDeferredLibrary(Annotation annotation) {
+  void _checkForInvalidAnnotationFromDeferredLibrary(Annotation annotation) {
     Identifier nameIdentifier = annotation.name;
-    if (nameIdentifier is PrefixedIdentifier) {
-      if (nameIdentifier.isDeferred) {
-        _errorReporter.reportErrorForNode(
-            CompileTimeErrorCode.INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY,
-            annotation.name);
-        return true;
-      }
+    if (nameIdentifier is PrefixedIdentifier && nameIdentifier.isDeferred) {
+      _errorReporter.reportErrorForNode(
+          CompileTimeErrorCode.INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY,
+          annotation.name);
     }
-    return false;
   }
 
   /**
@@ -3912,9 +3838,9 @@
    *
    * See [StaticTypeWarningCode.INVALID_ASSIGNMENT].
    */
-  bool _checkForInvalidAssignment(Expression lhs, Expression rhs) {
+  void _checkForInvalidAssignment(Expression lhs, Expression rhs) {
     if (lhs == null || rhs == null) {
-      return false;
+      return;
     }
     VariableElement leftVariableElement = getVariableElement(lhs);
     DartType leftType = (leftVariableElement == null)
@@ -3926,9 +3852,7 @@
           StaticTypeWarningCode.INVALID_ASSIGNMENT,
           rhs,
           [staticRightType, leftType]);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -3938,10 +3862,10 @@
    *
    * See [StaticTypeWarningCode.INVALID_ASSIGNMENT].
    */
-  bool _checkForInvalidCompoundAssignment(
+  void _checkForInvalidCompoundAssignment(
       AssignmentExpression assignment, Expression lhs, Expression rhs) {
     if (lhs == null) {
-      return false;
+      return;
     }
     VariableElement leftVariableElement = getVariableElement(lhs);
     DartType leftType = (leftVariableElement == null)
@@ -3949,18 +3873,16 @@
         : leftVariableElement.type;
     MethodElement invokedMethod = assignment.staticElement;
     if (invokedMethod == null) {
-      return false;
+      return;
     }
     DartType rightType = invokedMethod.type.returnType;
     if (leftType == null || rightType == null) {
-      return false;
+      return;
     }
     if (!_typeSystem.isAssignableTo(rightType, leftType)) {
       _errorReporter.reportTypeErrorForNode(
           StaticTypeWarningCode.INVALID_ASSIGNMENT, rhs, [rightType, leftType]);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -3997,14 +3919,12 @@
    * Check to see whether the given function [body] has a modifier associated
    * with it, and report it as an error if it does.
    */
-  bool _checkForInvalidModifierOnBody(
+  void _checkForInvalidModifierOnBody(
       FunctionBody body, CompileTimeErrorCode errorCode) {
     Token keyword = body.keyword;
     if (keyword != null) {
       _errorReporter.reportErrorForToken(errorCode, keyword, [keyword.lexeme]);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -4012,13 +3932,11 @@
    *
    * See [CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS].
    */
-  bool _checkForInvalidReferenceToThis(ThisExpression expression) {
+  void _checkForInvalidReferenceToThis(ThisExpression expression) {
     if (!_isThisInValidContext(expression)) {
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS, expression);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -4027,16 +3945,13 @@
    * [CompileTimeErrorCode.INVALID_TYPE_ARGUMENT_IN_CONST_LIST] or
    * [CompileTimeErrorCode.INVALID_TYPE_ARGUMENT_IN_CONST_MAP].
    */
-  bool _checkForInvalidTypeArgumentInConstTypedLiteral(
+  void _checkForInvalidTypeArgumentInConstTypedLiteral(
       NodeList<TypeName> arguments, ErrorCode errorCode) {
-    bool foundError = false;
     for (TypeName typeName in arguments) {
       if (typeName.type is TypeParameterType) {
         _errorReporter.reportErrorForNode(errorCode, typeName, [typeName.name]);
-        foundError = true;
       }
     }
-    return foundError;
   }
 
   /**
@@ -4090,8 +4005,7 @@
     DartType mapType = literal.staticType;
     assert(mapType is InterfaceTypeImpl);
 
-    List<DartType> typeArguments =
-        (mapType as InterfaceTypeImpl).typeArguments;
+    List<DartType> typeArguments = (mapType as InterfaceTypeImpl).typeArguments;
     assert(typeArguments.length == 2);
     DartType keyType = typeArguments[0];
     DartType valueType = typeArguments[1];
@@ -4105,9 +4019,7 @@
         // list element, not the static type.  See dartbug.com/21119.
         _checkForArgumentTypeNotAssignableWithExpectedTypes(key, keyType,
             CheckedModeCompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE);
-        _checkForArgumentTypeNotAssignableWithExpectedTypes(
-            value,
-            valueType,
+        _checkForArgumentTypeNotAssignableWithExpectedTypes(value, valueType,
             CheckedModeCompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE);
       }
       _checkForArgumentTypeNotAssignableWithExpectedTypes(
@@ -4123,26 +4035,23 @@
    *
    * See [CompileTimeErrorCode.MEMBER_WITH_CLASS_NAME].
    */
-  bool _checkForMemberWithClassName() {
+  void _checkForMemberWithClassName() {
     if (_enclosingClass == null) {
-      return false;
+      return;
     }
     String className = _enclosingClass.name;
     if (className == null) {
-      return false;
+      return;
     }
-    bool problemReported = false;
+
     // check accessors
     for (PropertyAccessorElement accessor in _enclosingClass.accessors) {
       if (className == accessor.name) {
         _errorReporter.reportErrorForElement(
             CompileTimeErrorCode.MEMBER_WITH_CLASS_NAME, accessor);
-        problemReported = true;
       }
     }
     // don't check methods, they would be constructors
-    // done
-    return problemReported;
   }
 
   /**
@@ -4152,12 +4061,12 @@
    * See [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES], and
    * [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE].
    */
-  bool _checkForMismatchedAccessorTypes(
+  void _checkForMismatchedAccessorTypes(
       Declaration accessorDeclaration, String accessorTextName) {
     ExecutableElement accessorElement =
         accessorDeclaration.element as ExecutableElement;
     if (accessorElement is! PropertyAccessorElement) {
-      return false;
+      return;
     }
     PropertyAccessorElement propertyAccessorElement =
         accessorElement as PropertyAccessorElement;
@@ -4172,7 +4081,7 @@
       if (counterpartAccessor != null &&
           identical(counterpartAccessor.enclosingElement,
               propertyAccessorElement.enclosingElement)) {
-        return false;
+        return;
       }
     }
     if (counterpartAccessor == null) {
@@ -4199,7 +4108,7 @@
         }
       }
       if (counterpartAccessor == null) {
-        return false;
+        return;
       }
     }
     // Default of null == no accessor or no type (dynamic)
@@ -4223,7 +4132,6 @@
             StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES,
             accessorDeclaration,
             [accessorTextName, setterType, getterType]);
-        return true;
       } else {
         _errorReporter.reportTypeErrorForNode(
             StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE,
@@ -4235,7 +4143,6 @@
         ]);
       }
     }
-    return false;
   }
 
   /**
@@ -4243,23 +4150,23 @@
    * an enum type either have a default case or include all of the enum
    * constants.
    */
-  bool _checkForMissingEnumConstantInSwitch(SwitchStatement statement) {
+  void _checkForMissingEnumConstantInSwitch(SwitchStatement statement) {
     // TODO(brianwilkerson) This needs to be checked after constant values have
     // been computed.
     Expression expression = statement.expression;
     DartType expressionType = getStaticType(expression);
     if (expressionType == null) {
-      return false;
+      return;
     }
     Element expressionElement = expressionType.element;
     if (expressionElement is! ClassElement) {
-      return false;
+      return;
     }
     ClassElement classElement = expressionElement as ClassElement;
     if (!classElement.isEnum) {
-      return false;
+      return;
     }
-    List<String> constantNames = new List<String>();
+    List<String> constantNames = <String>[];
     List<FieldElement> fields = classElement.fields;
     int fieldCount = fields.length;
     for (int i = 0; i < fieldCount; i++) {
@@ -4273,18 +4180,17 @@
     for (int i = 0; i < memberCount; i++) {
       SwitchMember member = members[i];
       if (member is SwitchDefault) {
-        return false;
+        return;
       }
       String constantName = _getConstantName((member as SwitchCase).expression);
       if (constantName != null) {
         constantNames.remove(constantName);
       }
     }
-    int nameCount = constantNames.length;
-    if (nameCount == 0) {
-      return false;
+    if (constantNames.isEmpty) {
+      return;
     }
-    for (int i = 0; i < nameCount; i++) {
+    for (int i = 0; i < constantNames.length; i++) {
       int offset = statement.offset;
       int end = statement.rightParenthesis.end;
       _errorReporter.reportErrorForOffset(
@@ -4293,7 +4199,6 @@
           end - offset,
           [constantNames[i]]);
     }
-    return true;
   }
 
   /**
@@ -4302,24 +4207,20 @@
    *
    * See [StaticWarningCode.MIXED_RETURN_TYPES].
    */
-  bool _checkForMixedReturns(BlockFunctionBody body) {
+  void _checkForMixedReturns(BlockFunctionBody body) {
     if (_hasReturnWithoutValue) {
-      return false;
+      return;
     }
-    int withCount = _returnsWith.length;
-    int withoutCount = _returnsWithout.length;
-    if (withCount > 0 && withoutCount > 0) {
-      for (int i = 0; i < withCount; i++) {
-        _errorReporter.reportErrorForToken(StaticWarningCode.MIXED_RETURN_TYPES,
-            _returnsWith[i].returnKeyword);
+    if (_returnsWith.isNotEmpty && _returnsWithout.isNotEmpty) {
+      for (ReturnStatement returnWith in _returnsWith) {
+        _errorReporter.reportErrorForToken(
+            StaticWarningCode.MIXED_RETURN_TYPES, returnWith.returnKeyword);
       }
-      for (int i = 0; i < withoutCount; i++) {
-        _errorReporter.reportErrorForToken(StaticWarningCode.MIXED_RETURN_TYPES,
-            _returnsWithout[i].returnKeyword);
+      for (ReturnStatement returnWithout in _returnsWithout) {
+        _errorReporter.reportErrorForToken(
+            StaticWarningCode.MIXED_RETURN_TYPES, returnWithout.returnKeyword);
       }
-      return true;
     }
-    return false;
   }
 
   /**
@@ -4348,7 +4249,7 @@
    * appropriate.
    */
   void _checkForMixinHasNoConstructors(AstNode node) {
-    if ((_enclosingClass as ClassElementImpl).doesMixinLackConstructors) {
+    if (_enclosingClass.doesMixinLackConstructors) {
       ErrorCode errorCode = CompileTimeErrorCode.MIXIN_HAS_NO_CONSTRUCTORS;
       _errorReporter
           .reportErrorForNode(errorCode, node, [_enclosingClass.supertype]);
@@ -4401,18 +4302,17 @@
    *
    * See [CompileTimeErrorCode.MULTIPLE_SUPER_INITIALIZERS].
    */
-  bool _checkForMultipleSuperInitializers(ConstructorDeclaration constructor) {
-    int numSuperInitializers = 0;
+  void _checkForMultipleSuperInitializers(ConstructorDeclaration constructor) {
+    bool hasSuperInitializer = false;
     for (ConstructorInitializer initializer in constructor.initializers) {
       if (initializer is SuperConstructorInvocation) {
-        numSuperInitializers++;
-        if (numSuperInitializers > 1) {
+        if (hasSuperInitializer) {
           _errorReporter.reportErrorForNode(
               CompileTimeErrorCode.MULTIPLE_SUPER_INITIALIZERS, initializer);
         }
+        hasSuperInitializer = true;
       }
     }
-    return numSuperInitializers > 0;
   }
 
   void _checkForMustCallSuper(MethodDeclaration node) {
@@ -4432,13 +4332,11 @@
    *
    * See [ParserErrorCode.NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE].
    */
-  bool _checkForNativeFunctionBodyInNonSDKCode(NativeFunctionBody body) {
+  void _checkForNativeFunctionBodyInNonSdkCode(NativeFunctionBody body) {
     if (!_isInSystemLibrary && !_hasExtUri) {
       _errorReporter.reportErrorForNode(
           ParserErrorCode.NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE, body);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -4451,20 +4349,20 @@
    *
    * See [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR].
    */
-  bool _checkForNewWithUndefinedConstructor(
+  void _checkForNewWithUndefinedConstructor(
       InstanceCreationExpression expression,
       ConstructorName constructorName,
       TypeName typeName) {
     // OK if resolved
     if (expression.staticElement != null) {
-      return false;
+      return;
     }
     DartType type = typeName.type;
     if (type is InterfaceType) {
       ClassElement element = type.element;
       if (element != null && element.isEnum) {
         // We have already reported the error.
-        return false;
+        return;
       }
     }
     // prepare class name
@@ -4482,7 +4380,6 @@
           constructorName,
           [className]);
     }
-    return true;
   }
 
   /**
@@ -4492,22 +4389,21 @@
    *
    * See [CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT].
    */
-  bool _checkForNoDefaultSuperConstructorImplicit(
+  void _checkForNoDefaultSuperConstructorImplicit(
       ClassDeclaration declaration) {
     // do nothing if mixin errors have already been reported for this class.
-    ClassElementImpl enclosingClass = _enclosingClass;
-    if (enclosingClass.doesMixinLackConstructors) {
-      return false;
+    if (_enclosingClass.doesMixinLackConstructors) {
+      return;
     }
     // do nothing if there is explicit constructor
     List<ConstructorElement> constructors = _enclosingClass.constructors;
     if (!constructors[0].isSynthetic) {
-      return false;
+      return;
     }
     // prepare super
     InterfaceType superType = _enclosingClass.supertype;
     if (superType == null) {
-      return false;
+      return;
     }
     ClassElement superElement = superType.element;
     // try to find default generative super constructor
@@ -4519,20 +4415,19 @@
             CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR,
             declaration.name,
             [superUnnamedConstructor]);
-        return true;
+        return;
       }
       if (superUnnamedConstructor.isDefaultConstructor &&
           _enclosingClass
               .isSuperConstructorAccessible(superUnnamedConstructor)) {
-        return true;
+        return;
       }
     }
-    // report problem
+
     _errorReporter.reportErrorForNode(
         CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT,
         declaration.name,
         [superType.displayName]);
-    return true;
   }
 
   /**
@@ -4547,12 +4442,12 @@
    * [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR], and
    * [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS].
    */
-  bool _checkForNonAbstractClassInheritsAbstractMember(
+  void _checkForNonAbstractClassInheritsAbstractMember(
       SimpleIdentifier classNameNode) {
     if (_enclosingClass.isAbstract) {
-      return false;
+      return;
     } else if (_hasNoSuchMethod(_enclosingClass)) {
-      return false;
+      return;
     }
     //
     // Store in local sets the set of all method and accessor names
@@ -4633,7 +4528,7 @@
     // class.
     int missingOverridesSize = missingOverrides.length;
     if (missingOverridesSize == 0) {
-      return false;
+      return;
     }
     List<ExecutableElement> missingOverridesArray =
         new List.from(missingOverrides);
@@ -4707,7 +4602,6 @@
     analysisError.setProperty(
         ErrorProperty.UNIMPLEMENTED_METHODS, missingOverridesArray);
     _errorReporter.reportError(analysisError);
-    return true;
   }
 
   /**
@@ -4716,15 +4610,13 @@
    *
    * See [StaticTypeWarningCode.NON_BOOL_CONDITION].
    */
-  bool _checkForNonBoolCondition(Expression condition) {
+  void _checkForNonBoolCondition(Expression condition) {
     DartType conditionType = getStaticType(condition);
     if (conditionType != null &&
         !_typeSystem.isAssignableTo(conditionType, _boolType)) {
       _errorReporter.reportErrorForNode(
           StaticTypeWarningCode.NON_BOOL_CONDITION, condition);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -4733,14 +4625,13 @@
    *
    * See [StaticTypeWarningCode.NON_BOOL_EXPRESSION].
    */
-  bool _checkForNonBoolExpression(AssertStatement statement) {
+  void _checkForNonBoolExpression(AssertStatement statement) {
     Expression expression = statement.condition;
     DartType type = getStaticType(expression);
     if (type is InterfaceType) {
       if (!_typeSystem.isAssignableTo(type, _boolType)) {
         _errorReporter.reportErrorForNode(
             StaticTypeWarningCode.NON_BOOL_EXPRESSION, expression);
-        return true;
       }
     } else if (type is FunctionType) {
       FunctionType functionType = type;
@@ -4748,10 +4639,8 @@
           !_typeSystem.isAssignableTo(functionType.returnType, _boolType)) {
         _errorReporter.reportErrorForNode(
             StaticTypeWarningCode.NON_BOOL_EXPRESSION, expression);
-        return true;
       }
     }
-    return false;
   }
 
   /**
@@ -4759,15 +4648,13 @@
    *
    * See [StaticTypeWarningCode.NON_BOOL_NEGATION_EXPRESSION].
    */
-  bool _checkForNonBoolNegationExpression(Expression expression) {
+  void _checkForNonBoolNegationExpression(Expression expression) {
     DartType conditionType = getStaticType(expression);
     if (conditionType != null &&
         !_typeSystem.isAssignableTo(conditionType, _boolType)) {
       _errorReporter.reportErrorForNode(
           StaticTypeWarningCode.NON_BOOL_NEGATION_EXPRESSION, expression);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -4778,29 +4665,28 @@
    *
    * See [CompileTimeErrorCode.NON_CONST_MAP_AS_EXPRESSION_STATEMENT].
    */
-  bool _checkForNonConstMapAsExpressionStatement(MapLiteral literal) {
+  void _checkForNonConstMapAsExpressionStatement(MapLiteral literal) {
     // "const"
     if (literal.constKeyword != null) {
-      return false;
+      return;
     }
     // has type arguments
     if (literal.typeArguments != null) {
-      return false;
+      return;
     }
     // prepare statement
     Statement statement =
         literal.getAncestor((node) => node is ExpressionStatement);
     if (statement == null) {
-      return false;
+      return;
     }
     // OK, statement does not start with map
     if (!identical(statement.beginToken, literal.beginToken)) {
-      return false;
+      return;
     }
-    // report problem
+
     _errorReporter.reportErrorForNode(
         CompileTimeErrorCode.NON_CONST_MAP_AS_EXPRESSION_STATEMENT, literal);
-    return true;
   }
 
   /**
@@ -4809,11 +4695,11 @@
    *
    * See [StaticWarningCode.NON_VOID_RETURN_FOR_OPERATOR].
    */
-  bool _checkForNonVoidReturnTypeForOperator(MethodDeclaration declaration) {
+  void _checkForNonVoidReturnTypeForOperator(MethodDeclaration declaration) {
     // check that []= operator
     SimpleIdentifier name = declaration.name;
     if (name.name != "[]=") {
-      return false;
+      return;
     }
     // check return type
     TypeName typeName = declaration.returnType;
@@ -4824,8 +4710,6 @@
             StaticWarningCode.NON_VOID_RETURN_FOR_OPERATOR, typeName);
       }
     }
-    // no warning
-    return false;
   }
 
   /**
@@ -4834,7 +4718,7 @@
    *
    * See [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER].
    */
-  bool _checkForNonVoidReturnTypeForSetter(TypeName typeName) {
+  void _checkForNonVoidReturnTypeForSetter(TypeName typeName) {
     if (typeName != null) {
       DartType type = typeName.type;
       if (type != null && !type.isVoid) {
@@ -4842,7 +4726,6 @@
             StaticWarningCode.NON_VOID_RETURN_FOR_SETTER, typeName);
       }
     }
-    return false;
   }
 
   /**
@@ -4852,22 +4735,20 @@
    *
    * See [CompileTimeErrorCode.OPTIONAL_PARAMETER_IN_OPERATOR].
    */
-  bool _checkForOptionalParameterInOperator(MethodDeclaration declaration) {
+  void _checkForOptionalParameterInOperator(MethodDeclaration declaration) {
     FormalParameterList parameterList = declaration.parameters;
     if (parameterList == null) {
-      return false;
+      return;
     }
-    bool foundError = false;
+
     NodeList<FormalParameter> formalParameters = parameterList.parameters;
     for (FormalParameter formalParameter in formalParameters) {
       if (formalParameter.kind.isOptional) {
         _errorReporter.reportErrorForNode(
             CompileTimeErrorCode.OPTIONAL_PARAMETER_IN_OPERATOR,
             formalParameter);
-        foundError = true;
       }
     }
-    return foundError;
   }
 
   /**
@@ -4875,20 +4756,19 @@
    *
    * See [CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER].
    */
-  bool _checkForPrivateOptionalParameter(FormalParameter parameter) {
+  void _checkForPrivateOptionalParameter(FormalParameter parameter) {
     // should be named parameter
     if (parameter.kind != ParameterKind.NAMED) {
-      return false;
+      return;
     }
     // name should start with '_'
     SimpleIdentifier name = parameter.identifier;
     if (name.isSynthetic || !StringUtilities.startsWithChar(name.name, 0x5F)) {
-      return false;
+      return;
     }
-    // report problem
+
     _errorReporter.reportErrorForNode(
         CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER, parameter);
-    return true;
   }
 
   /**
@@ -4898,28 +4778,23 @@
    *
    * See [CompileTimeErrorCode.RECURSIVE_CONSTRUCTOR_REDIRECT].
    */
-  bool _checkForRecursiveConstructorRedirect(ConstructorDeclaration declaration,
+  void _checkForRecursiveConstructorRedirect(ConstructorDeclaration declaration,
       ConstructorElement constructorElement) {
     // we check generative constructor here
     if (declaration.factoryKeyword != null) {
-      return false;
+      return;
     }
-    // try to find redirecting constructor invocation and analyzer it for
+    // try to find redirecting constructor invocation and analyze it for
     // recursion
     for (ConstructorInitializer initializer in declaration.initializers) {
       if (initializer is RedirectingConstructorInvocation) {
-        // OK if no cycle
-        if (!_hasRedirectingFactoryConstructorCycle(constructorElement)) {
-          return false;
+        if (_hasRedirectingFactoryConstructorCycle(constructorElement)) {
+          _errorReporter.reportErrorForNode(
+              CompileTimeErrorCode.RECURSIVE_CONSTRUCTOR_REDIRECT, initializer);
         }
-        // report error
-        _errorReporter.reportErrorForNode(
-            CompileTimeErrorCode.RECURSIVE_CONSTRUCTOR_REDIRECT, initializer);
-        return true;
+        return;
       }
     }
-    // OK, no redirecting constructor invocation
-    return false;
   }
 
   /**
@@ -4955,12 +4830,12 @@
    * [CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_EXTENDS], and
    * [CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_IMPLEMENTS].
    */
-  bool _checkForRecursiveInterfaceInheritance(ClassElement element) {
+  void _checkForRecursiveInterfaceInheritance(ClassElement element) {
     if (element == null) {
-      return false;
+      return;
     }
-    return _safeCheckForRecursiveInterfaceInheritance(
-        element, new List<ClassElement>());
+
+    _safeCheckForRecursiveInterfaceInheritance(element, <ClassElement>[]);
   }
 
   /**
@@ -4974,12 +4849,9 @@
    * [CompileTimeErrorCode.SUPER_IN_REDIRECTING_CONSTRUCTOR], and
    * [CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_NON_GENERATIVE_CONSTRUCTOR].
    */
-  bool _checkForRedirectingConstructorErrorCodes(
+  void _checkForRedirectingConstructorErrorCodes(
       ConstructorDeclaration declaration) {
-    bool errorReported = false;
-    //
     // Check for default values in the parameters
-    //
     ConstructorName redirectedConstructor = declaration.redirectedConstructor;
     if (redirectedConstructor != null) {
       for (FormalParameter parameter in declaration.parameters.parameters) {
@@ -4989,7 +4861,6 @@
               CompileTimeErrorCode
                   .DEFAULT_VALUE_IN_REDIRECTING_FACTORY_CONSTRUCTOR,
               parameter.identifier);
-          errorReported = true;
         }
       }
     }
@@ -5001,7 +4872,6 @@
           _errorReporter.reportErrorForNode(
               CompileTimeErrorCode.MULTIPLE_REDIRECTING_CONSTRUCTOR_INVOCATIONS,
               initializer);
-          errorReported = true;
         }
         if (declaration.factoryKeyword == null) {
           RedirectingConstructorInvocation invocation = initializer;
@@ -5035,18 +4905,14 @@
           _errorReporter.reportErrorForNode(
               CompileTimeErrorCode.SUPER_IN_REDIRECTING_CONSTRUCTOR,
               initializer);
-          errorReported = true;
         }
         if (initializer is ConstructorFieldInitializer) {
           _errorReporter.reportErrorForNode(
               CompileTimeErrorCode.FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR,
               initializer);
-          errorReported = true;
         }
       }
     }
-    // done
-    return errorReported;
   }
 
   /**
@@ -5056,36 +4922,35 @@
    *
    * See [CompileTimeErrorCode.REDIRECT_TO_NON_CONST_CONSTRUCTOR].
    */
-  bool _checkForRedirectToNonConstConstructor(
+  void _checkForRedirectToNonConstConstructor(
       ConstructorDeclaration declaration, ConstructorElement element) {
     // prepare redirected constructor
     ConstructorName redirectedConstructorNode =
         declaration.redirectedConstructor;
     if (redirectedConstructorNode == null) {
-      return false;
+      return;
     }
     // prepare element
     if (element == null) {
-      return false;
+      return;
     }
     // OK, it is not 'const'
     if (!element.isConst) {
-      return false;
+      return;
     }
     // prepare redirected constructor
     ConstructorElement redirectedConstructor = element.redirectedConstructor;
     if (redirectedConstructor == null) {
-      return false;
+      return;
     }
     // OK, it is also 'const'
     if (redirectedConstructor.isConst) {
-      return false;
+      return;
     }
-    // report error
+
     _errorReporter.reportErrorForNode(
         CompileTimeErrorCode.REDIRECT_TO_NON_CONST_CONSTRUCTOR,
         redirectedConstructorNode);
-    return true;
   }
 
   /**
@@ -5093,13 +4958,11 @@
    *
    * See [CompileTimeErrorCode.RETHROW_OUTSIDE_CATCH].
    */
-  bool _checkForRethrowOutsideCatch(RethrowExpression expression) {
+  void _checkForRethrowOutsideCatch(RethrowExpression expression) {
     if (!_isInCatchClause) {
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.RETHROW_OUTSIDE_CATCH, expression);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -5108,21 +4971,20 @@
    *
    * See [CompileTimeErrorCode.RETURN_IN_GENERATIVE_CONSTRUCTOR].
    */
-  bool _checkForReturnInGenerativeConstructor(
+  void _checkForReturnInGenerativeConstructor(
       ConstructorDeclaration declaration) {
     // ignore factory
     if (declaration.factoryKeyword != null) {
-      return false;
+      return;
     }
     // block body (with possible return statement) is checked elsewhere
     FunctionBody body = declaration.body;
     if (body is! ExpressionFunctionBody) {
-      return false;
+      return;
     }
-    // report error
+
     _errorReporter.reportErrorForNode(
         CompileTimeErrorCode.RETURN_IN_GENERATIVE_CONSTRUCTOR, body);
-    return true;
   }
 
   /**
@@ -5134,23 +4996,23 @@
    *
    * See [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE].
    */
-  bool _checkForReturnOfInvalidType(
+  void _checkForReturnOfInvalidType(
       Expression returnExpression, DartType expectedReturnType) {
     if (_enclosingFunction == null) {
-      return false;
+      return;
     }
     if (_inGenerator) {
       // "return expression;" is disallowed in generators, but this is checked
       // elsewhere.  Bare "return" is always allowed in generators regardless
       // of the return type.  So no need to do any further checking.
-      return false;
+      return;
     }
     DartType staticReturnType = _computeReturnTypeForMethod(returnExpression);
     if (expectedReturnType.isVoid) {
       if (staticReturnType.isVoid ||
           staticReturnType.isDynamic ||
           staticReturnType.isBottom) {
-        return false;
+        return;
       }
       _errorReporter.reportTypeErrorForNode(
           StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, returnExpression, [
@@ -5158,16 +5020,16 @@
         expectedReturnType,
         _enclosingFunction.displayName
       ]);
-      return true;
+      return;
     }
     if (_typeSystem.isAssignableTo(staticReturnType, expectedReturnType)) {
-      return false;
+      return;
     }
     _errorReporter.reportTypeErrorForNode(
         StaticTypeWarningCode.RETURN_OF_INVALID_TYPE,
         returnExpression,
         [staticReturnType, expectedReturnType, _enclosingFunction.displayName]);
-    return true;
+
     // TODO(brianwilkerson) Define a hint corresponding to the warning and
     // report it if appropriate.
 //        Type propagatedReturnType = returnExpression.getPropagatedType();
@@ -5190,30 +5052,29 @@
    *
    * See [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER].
    */
-  bool _checkForStaticAccessToInstanceMember(
+  void _checkForStaticAccessToInstanceMember(
       ClassElement typeReference, SimpleIdentifier name) {
     // OK, in comment
     if (_isInComment) {
-      return false;
+      return;
     }
     // OK, target is not a type
     if (typeReference == null) {
-      return false;
+      return;
     }
     // prepare member Element
     Element element = name.staticElement;
     if (element is! ExecutableElement) {
-      return false;
+      return;
     }
     ExecutableElement memberElement = element as ExecutableElement;
     // OK, static
     if (memberElement.isStatic) {
-      return false;
+      return;
     }
-    // report problem
+
     _errorReporter.reportErrorForNode(
         StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER, name, [name.name]);
-    return true;
   }
 
   /**
@@ -5222,35 +5083,30 @@
    *
    * See [StaticWarningCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE].
    */
-  bool _checkForSwitchExpressionNotAssignable(SwitchStatement statement) {
+  void _checkForSwitchExpressionNotAssignable(SwitchStatement statement) {
     // prepare 'switch' expression type
     Expression expression = statement.expression;
     DartType expressionType = getStaticType(expression);
     if (expressionType == null) {
-      return false;
+      return;
     }
-    // compare with type of the first 'case'
-    NodeList<SwitchMember> members = statement.members;
-    for (SwitchMember switchMember in members) {
-      if (switchMember is! SwitchCase) {
-        continue;
-      }
-      SwitchCase switchCase = switchMember as SwitchCase;
-      // prepare 'case' type
-      Expression caseExpression = switchCase.expression;
-      DartType caseType = getStaticType(caseExpression);
-      // check types
-      if (_typeSystem.isAssignableTo(expressionType, caseType)) {
-        return false;
-      }
-      // report problem
+
+    // compare with type of the first non-default 'case'
+    SwitchCase switchCase = statement.members
+        .firstWhere((member) => member is SwitchCase, orElse: () => null);
+    if (switchCase == null) {
+      return;
+    }
+
+    Expression caseExpression = switchCase.expression;
+    DartType caseType = getStaticType(caseExpression);
+    // check types
+    if (!_typeSystem.isAssignableTo(expressionType, caseType)) {
       _errorReporter.reportErrorForNode(
           StaticWarningCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE,
           expression,
           [expressionType, caseType]);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -5259,15 +5115,12 @@
    *
    * See [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF].
    */
-  bool _checkForTypeAliasCannotReferenceItself_function(
+  void _checkForTypeAliasCannotReferenceItself_function(
       FunctionTypeAlias alias) {
-    FunctionTypeAliasElement element = alias.element;
-    if (!_hasTypedefSelfReference(element)) {
-      return false;
+    if (_hasTypedefSelfReference(alias.element)) {
+      _errorReporter.reportErrorForNode(
+          CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF, alias);
     }
-    _errorReporter.reportErrorForNode(
-        CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF, alias);
-    return true;
   }
 
   /**
@@ -5275,12 +5128,11 @@
    *
    * See [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS].
    */
-  bool _checkForTypeAnnotationDeferredClass(TypeName name) {
+  void _checkForTypeAnnotationDeferredClass(TypeName name) {
     if (name != null && name.isDeferred) {
       _errorReporter.reportErrorForNode(
           StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, name, [name.name]);
     }
-    return false;
   }
 
   /**
@@ -5289,19 +5141,19 @@
    *
    * See [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS].
    */
-  bool _checkForTypeArgumentNotMatchingBounds(TypeName typeName) {
+  void _checkForTypeArgumentNotMatchingBounds(TypeName typeName) {
     if (typeName.typeArguments == null) {
-      return false;
+      return;
     }
     // prepare Type
     DartType type = typeName.type;
     if (type == null) {
-      return false;
+      return;
     }
     // prepare ClassElement
     Element element = type.element;
     if (element is! ClassElement) {
-      return false;
+      return;
     }
     ClassElement classElement = element as ClassElement;
     // prepare type parameters
@@ -5312,7 +5164,7 @@
     List<DartType> typeArguments = (type as InterfaceType).typeArguments;
     int loopThroughIndex =
         math.min(typeNameArgList.length, boundingElts.length);
-    bool foundError = false;
+
     for (int i = 0; i < loopThroughIndex; i++) {
       TypeName argTypeName = typeNameArgList[i];
       DartType argType = argTypeName.type;
@@ -5331,11 +5183,9 @@
           }
           _errorReporter.reportTypeErrorForNode(
               errorCode, argTypeName, [argType, boundType]);
-          foundError = true;
         }
       }
     }
-    return foundError;
   }
 
   /**
@@ -5344,21 +5194,18 @@
    *
    * See [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC].
    */
-  bool _checkForTypeParameterReferencedByStatic(TypeName name) {
+  void _checkForTypeParameterReferencedByStatic(TypeName name) {
     if (_isInStaticMethod || _isInStaticVariableDeclaration) {
       DartType type = name.type;
-      if (type is TypeParameterType) {
-        // The class's type parameters are not in scope for static methods.
-        // However all other type parameters are legal (e.g. the static method's
-        // type parameters, or a local function's type parameters).
-        if (type.element.enclosingElement is ClassElement) {
-          _errorReporter.reportErrorForNode(
-              StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, name);
-          return true;
-        }
+      // The class's type parameters are not in scope for static methods.
+      // However all other type parameters are legal (e.g. the static method's
+      // type parameters, or a local function's type parameters).
+      if (type is TypeParameterType &&
+          type.element.enclosingElement is ClassElement) {
+        _errorReporter.reportErrorForNode(
+            StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, name);
       }
     }
-    return false;
   }
 
   /**
@@ -5366,23 +5213,22 @@
    *
    * See [StaticTypeWarningCode.TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND].
    */
-  bool _checkForTypeParameterSupertypeOfItsBound(TypeParameter parameter) {
+  void _checkForTypeParameterSupertypeOfItsBound(TypeParameter parameter) {
     TypeParameterElement element = parameter.element;
     // prepare bound
     DartType bound = element.bound;
     if (bound == null) {
-      return false;
+      return;
     }
     // OK, type parameter is not supertype of its bound
     if (!bound.isMoreSpecificThan(element.type)) {
-      return false;
+      return;
     }
-    // report problem
+
     _errorReporter.reportErrorForNode(
         StaticTypeWarningCode.TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND,
         parameter,
         [element.displayName]);
-    return true;
   }
 
   /**
@@ -5394,40 +5240,36 @@
    * [CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR], and
    * [StaticWarningCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT].
    */
-  bool _checkForUndefinedConstructorInInitializerImplicit(
+  void _checkForUndefinedConstructorInInitializerImplicit(
       ConstructorDeclaration constructor) {
     if (_enclosingClass == null) {
-      return false;
+      return;
     }
     // do nothing if mixin errors have already been reported for this class.
-    ClassElementImpl enclosingClass = _enclosingClass;
-    if (enclosingClass.doesMixinLackConstructors) {
-      return false;
+    if (_enclosingClass.doesMixinLackConstructors) {
+      return;
     }
-    //
+
     // Ignore if the constructor is not generative.
-    //
     if (constructor.factoryKeyword != null) {
-      return false;
+      return;
     }
-    //
+
     // Ignore if the constructor has either an implicit super constructor
     // invocation or a redirecting constructor invocation.
-    //
     for (ConstructorInitializer constructorInitializer
         in constructor.initializers) {
       if (constructorInitializer is SuperConstructorInvocation ||
           constructorInitializer is RedirectingConstructorInvocation) {
-        return false;
+        return;
       }
     }
-    //
+
     // Check to see whether the superclass has a non-factory unnamed
     // constructor.
-    //
     InterfaceType superType = _enclosingClass.supertype;
     if (superType == null) {
-      return false;
+      return;
     }
     ClassElement superElement = superType.element;
     ConstructorElement superUnnamedConstructor =
@@ -5438,32 +5280,25 @@
             CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR,
             constructor.returnType,
             [superUnnamedConstructor]);
-        return true;
-      }
-      if (!superUnnamedConstructor.isDefaultConstructor ||
+      } else if (!superUnnamedConstructor.isDefaultConstructor ||
           !_enclosingClass
               .isSuperConstructorAccessible(superUnnamedConstructor)) {
-        int offset;
-        int length;
-        {
-          Identifier returnType = constructor.returnType;
-          SimpleIdentifier name = constructor.name;
-          offset = returnType.offset;
-          length = (name != null ? name.end : returnType.end) - offset;
-        }
+        Identifier returnType = constructor.returnType;
+        SimpleIdentifier name = constructor.name;
+        int offset = returnType.offset;
+        int length = (name != null ? name.end : returnType.end) - offset;
         _errorReporter.reportErrorForOffset(
             CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT,
             offset,
             length,
             [superType.displayName]);
       }
-      return false;
+    } else {
+      _errorReporter.reportErrorForNode(
+          CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT,
+          constructor.returnType,
+          [superElement.name]);
     }
-    _errorReporter.reportErrorForNode(
-        CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT,
-        constructor.returnType,
-        [superElement.name]);
-    return true;
   }
 
   /**
@@ -5472,28 +5307,27 @@
    *
    * See [StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER].
    */
-  bool _checkForUnqualifiedReferenceToNonLocalStaticMember(
+  void _checkForUnqualifiedReferenceToNonLocalStaticMember(
       SimpleIdentifier name) {
     Element element = name.staticElement;
     if (element == null || element is TypeParameterElement) {
-      return false;
+      return;
     }
     Element enclosingElement = element.enclosingElement;
+    if (identical(enclosingElement, _enclosingClass)) {
+      return;
+    }
     if (enclosingElement is! ClassElement) {
-      return false;
+      return;
     }
     if ((element is MethodElement && !element.isStatic) ||
         (element is PropertyAccessorElement && !element.isStatic)) {
-      return false;
-    }
-    if (identical(enclosingElement, _enclosingClass)) {
-      return false;
+      return;
     }
     _errorReporter.reportErrorForNode(
         StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER,
         name,
         [name.name]);
-    return true;
   }
 
   void _checkForValidField(FieldFormalParameter parameter) {
@@ -5555,14 +5389,13 @@
    *
    * See [StaticWarningCode.VOID_RETURN_FOR_GETTER].
    */
-  bool _checkForVoidReturnType(MethodDeclaration getter) {
+  void _checkForVoidReturnType(MethodDeclaration getter) {
     TypeName returnType = getter.returnType;
     if (returnType == null || returnType.name.name != "void") {
-      return false;
+      return;
     }
     _errorReporter.reportErrorForNode(
         StaticWarningCode.VOID_RETURN_FOR_GETTER, returnType);
-    return true;
   }
 
   /**
@@ -5574,18 +5407,18 @@
    *
    * See [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR].
    */
-  bool _checkForWrongNumberOfParametersForOperator(
+  void _checkForWrongNumberOfParametersForOperator(
       MethodDeclaration declaration) {
     // prepare number of parameters
     FormalParameterList parameterList = declaration.parameters;
     if (parameterList == null) {
-      return false;
+      return;
     }
     int numParameters = parameterList.parameters.length;
     // prepare operator name
     SimpleIdentifier nameNode = declaration.name;
     if (nameNode == null) {
-      return false;
+      return;
     }
     String name = nameNode.name;
     // check for exact number of parameters
@@ -5617,18 +5450,12 @@
           CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR,
           nameNode,
           [name, expected, numParameters]);
-      return true;
-    }
-    // check for operator "-"
-    if ("-" == name && numParameters > 1) {
+    } else if ("-" == name && numParameters > 1) {
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS,
           nameNode,
           [numParameters]);
-      return true;
     }
-    // OK
-    return false;
   }
 
   /**
@@ -5641,78 +5468,18 @@
    *
    * See [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER].
    */
-  bool _checkForWrongNumberOfParametersForSetter(
+  void _checkForWrongNumberOfParametersForSetter(
       SimpleIdentifier setterName, FormalParameterList parameterList) {
-    if (setterName == null) {
-      return false;
+    if (setterName == null || parameterList == null) {
+      return;
     }
-    if (parameterList == null) {
-      return false;
-    }
+
     NodeList<FormalParameter> parameters = parameterList.parameters;
     if (parameters.length != 1 ||
         parameters[0].kind != ParameterKind.REQUIRED) {
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER,
           setterName);
-      return true;
-    }
-    return false;
-  }
-
-  /**
-   * Check for a type mis-match between the iterable expression and the
-   * assigned variable in a for-in statement.
-   */
-  void _checkForInIterable(ForEachStatement node) {
-    // Ignore malformed for statements.
-    if (node.identifier == null && node.loopVariable == null) {
-      return;
-    }
-
-    DartType iterableType = getStaticType(node.iterable);
-    if (iterableType.isDynamic) {
-      return;
-    }
-
-    // The type of the loop variable.
-    SimpleIdentifier variable = node.identifier != null
-        ? node.identifier
-        : node.loopVariable.identifier;
-    DartType variableType = getStaticType(variable);
-
-    DartType loopType = node.awaitKeyword != null
-        ? _typeProvider.streamType
-        : _typeProvider.iterableType;
-
-    // Use an explicit string instead of [loopType] to remove the "<E>".
-    String loopTypeName = node.awaitKeyword != null ? "Stream" : "Iterable";
-
-    // The object being iterated has to implement Iterable<T> for some T that
-    // is assignable to the variable's type.
-    // TODO(rnystrom): Move this into mostSpecificTypeArgument()?
-    iterableType = iterableType.resolveToBound(_typeProvider.objectType);
-    DartType bestIterableType =
-        _typeSystem.mostSpecificTypeArgument(iterableType, loopType);
-
-    // Allow it to be a supertype of Iterable<T> (basically just Object) and do
-    // an implicit downcast to Iterable<dynamic>.
-    if (bestIterableType == null) {
-      if (_typeSystem.isSubtypeOf(loopType, iterableType)) {
-        bestIterableType = DynamicTypeImpl.instance;
-      }
-    }
-
-    if (bestIterableType == null) {
-      _errorReporter.reportTypeErrorForNode(
-          StaticTypeWarningCode.FOR_IN_OF_INVALID_TYPE,
-          node.iterable,
-          [iterableType, loopTypeName]);
-    } else if (!_typeSystem.isAssignableTo(bestIterableType, variableType)) {
-      _errorReporter.reportTypeErrorForNode(
-          StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE,
-          node.iterable,
-          [iterableType, loopTypeName, variableType]);
     }
   }
 
@@ -5773,22 +5540,22 @@
    *
    * See [StaticWarningCode.FUNCTION_WITHOUT_CALL].
    */
-  bool _checkImplementsFunctionWithoutCall(ClassDeclaration declaration) {
+  void _checkImplementsFunctionWithoutCall(ClassDeclaration declaration) {
     if (declaration.isAbstract) {
-      return false;
+      return;
     }
     ClassElement classElement = declaration.element;
     if (classElement == null) {
-      return false;
+      return;
     }
     if (!_typeSystem.isSubtypeOf(
         classElement.type, _typeProvider.functionType)) {
-      return false;
+      return;
     }
     // If there is a noSuchMethod method, then don't report the warning,
     // see dartbug.com/16078
     if (_hasNoSuchMethod(classElement)) {
-      return false;
+      return;
     }
     ExecutableElement callMethod = _inheritanceManager.lookupMember(
         classElement, FunctionElement.CALL_METHOD_NAME);
@@ -5797,9 +5564,7 @@
         (callMethod as MethodElement).isAbstract) {
       _errorReporter.reportErrorForNode(
           StaticWarningCode.FUNCTION_WITHOUT_CALL, declaration.name);
-      return true;
     }
-    return false;
   }
 
   /**
@@ -5808,30 +5573,26 @@
    *
    * See [CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS].
    */
-  bool _checkImplementsSuperClass(ClassDeclaration declaration) {
+  void _checkImplementsSuperClass(ClassDeclaration declaration) {
     // prepare super type
     InterfaceType superType = _enclosingClass.supertype;
     if (superType == null) {
-      return false;
+      return;
     }
     // prepare interfaces
     ImplementsClause implementsClause = declaration.implementsClause;
     if (implementsClause == null) {
-      return false;
+      return;
     }
     // check interfaces
-    bool hasProblem = false;
     for (TypeName interfaceNode in implementsClause.interfaces) {
       if (interfaceNode.type == superType) {
-        hasProblem = true;
         _errorReporter.reportErrorForNode(
             CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS,
             interfaceNode,
             [superType.displayName]);
       }
     }
-    // done
-    return hasProblem;
   }
 
   DartType _computeReturnTypeForMethod(Expression returnExpression) {
@@ -5947,28 +5708,6 @@
   }
 
   /**
-   * Given a list of [directives] that have the same prefix, generate an error
-   * if there is more than one import and any of those imports is deferred.
-   *
-   * See [CompileTimeErrorCode.SHARED_DEFERRED_PREFIX].
-   */
-  bool _hasDeferredPrefixCollision(List<ImportDirective> directives) {
-    bool foundError = false;
-    int count = directives.length;
-    if (count > 1) {
-      for (int i = 0; i < count; i++) {
-        Token deferredToken = directives[i].deferredKeyword;
-        if (deferredToken != null) {
-          _errorReporter.reportErrorForToken(
-              CompileTimeErrorCode.SHARED_DEFERRED_PREFIX, deferredToken);
-          foundError = true;
-        }
-      }
-    }
-    return foundError;
-  }
-
-  /**
    * Return `true` if the given [classElement] has a noSuchMethod() method
    * distinct from the one declared in class Object, as per the Dart Language
    * Specification (section 10.4).
diff --git a/pkg/analyzer/lib/src/generated/parser.dart b/pkg/analyzer/lib/src/generated/parser.dart
index d537f0c..7e5bee8 100644
--- a/pkg/analyzer/lib/src/generated/parser.dart
+++ b/pkg/analyzer/lib/src/generated/parser.dart
@@ -678,9 +678,9 @@
     if (identical(_oldNode, node.exceptionType)) {
       return _parser.parseTypeName();
     } else if (identical(_oldNode, node.exceptionParameter)) {
-      return _parser.parseSimpleIdentifier();
+      return _parser.parseSimpleIdentifier(isDeclaration: true);
     } else if (identical(_oldNode, node.stackTraceParameter)) {
-      return _parser.parseSimpleIdentifier();
+      return _parser.parseSimpleIdentifier(isDeclaration: true);
     } else if (identical(_oldNode, node.body)) {
       return _parser.parseBlock();
     }
@@ -722,7 +722,7 @@
     } else if (node.metadata.contains(_oldNode)) {
       return _parser.parseAnnotation();
     } else if (identical(_oldNode, node.name)) {
-      return _parser.parseSimpleIdentifier();
+      return _parser.parseSimpleIdentifier(isDeclaration: true);
     } else if (identical(_oldNode, node.typeParameters)) {
       return _parser.parseTypeParameterList();
     } else if (identical(_oldNode, node.superclass)) {
@@ -885,7 +885,7 @@
     } else if (node.metadata.contains(_oldNode)) {
       return _parser.parseAnnotation();
     } else if (identical(_oldNode, node.name)) {
-      return _parser.parseSimpleIdentifier();
+      return _parser.parseSimpleIdentifier(isDeclaration: true);
     }
     return _notAChild(node);
   }
@@ -897,7 +897,7 @@
     } else if (node.metadata.contains(_oldNode)) {
       return _parser.parseAnnotation();
     } else if (identical(_oldNode, node.name)) {
-      return _parser.parseSimpleIdentifier();
+      return _parser.parseSimpleIdentifier(isDeclaration: true);
     } else if (node.constants.contains(_oldNode)) {
       throw new InsufficientContextException();
     }
@@ -977,7 +977,7 @@
       throw new InsufficientContextException();
       //return parser.parseDeclaredIdentifier();
     } else if (identical(_oldNode, node.identifier)) {
-      return _parser.parseSimpleIdentifier();
+      return _parser.parseSimpleIdentifier(isDeclaration: true);
     } else if (identical(_oldNode, node.body)) {
       return _parser.parseStatement2();
     }
@@ -1015,7 +1015,7 @@
     } else if (identical(_oldNode, node.returnType)) {
       return _parser.parseReturnType();
     } else if (identical(_oldNode, node.name)) {
-      return _parser.parseSimpleIdentifier();
+      return _parser.parseSimpleIdentifier(isDeclaration: true);
     } else if (identical(_oldNode, node.functionExpression)) {
       throw new InsufficientContextException();
     }
@@ -1059,7 +1059,7 @@
     } else if (identical(_oldNode, node.returnType)) {
       return _parser.parseReturnType();
     } else if (identical(_oldNode, node.name)) {
-      return _parser.parseSimpleIdentifier();
+      return _parser.parseSimpleIdentifier(isDeclaration: true);
     } else if (identical(_oldNode, node.typeParameters)) {
       return _parser.parseTypeParameterList();
     } else if (identical(_oldNode, node.parameters)) {
@@ -1077,7 +1077,7 @@
     } else if (identical(_oldNode, node.returnType)) {
       return _parser.parseReturnType();
     } else if (identical(_oldNode, node.identifier)) {
-      return _parser.parseSimpleIdentifier();
+      return _parser.parseSimpleIdentifier(isDeclaration: true);
     } else if (identical(_oldNode, node.parameters)) {
       return _parser.parseFormalParameterList();
     }
@@ -1121,7 +1121,7 @@
     } else if (identical(_oldNode, node.uri)) {
       return _parser.parseStringLiteral();
     } else if (identical(_oldNode, node.prefix)) {
-      return _parser.parseSimpleIdentifier();
+      return _parser.parseSimpleIdentifier(isDeclaration: true);
     } else if (node.combinators.contains(_oldNode)) {
       return _parser.parseCombinator();
     }
@@ -1181,7 +1181,8 @@
   @override
   AstNode visitLabel(Label node) {
     if (identical(_oldNode, node.label)) {
-      return _parser.parseSimpleIdentifier();
+      return _parser.parseSimpleIdentifier(
+          isDeclaration: node.parent is LabeledStatement);
     }
     return _notAChild(node);
   }
@@ -1189,7 +1190,7 @@
   @override
   AstNode visitLabeledStatement(LabeledStatement node) {
     if (node.labels.contains(_oldNode)) {
-      return _parser.parseLabel();
+      return _parser.parseLabel(isDeclaration: true);
     } else if (identical(_oldNode, node.statement)) {
       return _parser.parseStatement2();
     }
@@ -1260,7 +1261,7 @@
       if (node.operatorKeyword != null) {
         throw new InsufficientContextException();
       }
-      return _parser.parseSimpleIdentifier();
+      return _parser.parseSimpleIdentifier(isDeclaration: true);
     } else if (identical(_oldNode, node.body)) {
       //return parser.parseFunctionBody();
       throw new InsufficientContextException();
@@ -1555,7 +1556,7 @@
     } else if (node.metadata.contains(_oldNode)) {
       return _parser.parseAnnotation();
     } else if (identical(_oldNode, node.name)) {
-      return _parser.parseSimpleIdentifier();
+      return _parser.parseSimpleIdentifier(isDeclaration: true);
     } else if (identical(_oldNode, node.bound)) {
       return _parser.parseTypeName();
     }
@@ -2539,10 +2540,10 @@
             null,
             null,
             null,
-            _createSyntheticIdentifier(),
+            _createSyntheticIdentifier(isDeclaration: true),
             null,
             new FormalParameterList(
-                null, new List<FormalParameter>(), null, null, null),
+                null, <FormalParameter>[], null, null, null),
             new EmptyFunctionBody(_createSyntheticToken(TokenType.SEMICOLON)));
       }
       return null;
@@ -2556,11 +2557,11 @@
           modifiers.factoryKeyword,
           parseSimpleIdentifier(),
           getAndAdvance(),
-          parseSimpleIdentifier(),
+          parseSimpleIdentifier(isDeclaration: true),
           parseFormalParameterList());
     } else if (_tokenMatches(_peek(), TokenType.OPEN_PAREN)) {
       TypeName returnType = _parseOptionalTypeNameComment();
-      SimpleIdentifier methodName = parseSimpleIdentifier();
+      SimpleIdentifier methodName = parseSimpleIdentifier(isDeclaration: true);
       TypeParameterList typeParameters = _parseGenericCommentTypeParameters();
       FormalParameterList parameters = parseFormalParameterList();
       if (_matches(TokenType.COLON) ||
@@ -2571,7 +2572,7 @@
             modifiers.externalKeyword,
             _validateModifiersForConstructor(modifiers),
             modifiers.factoryKeyword,
-            methodName,
+            new SimpleIdentifier(methodName.token, isDeclaration: false),
             null,
             null,
             parameters);
@@ -2663,7 +2664,7 @@
         _unlockErrorListener();
       }
     } else if (_tokenMatches(_peek(), TokenType.OPEN_PAREN)) {
-      SimpleIdentifier methodName = parseSimpleIdentifier();
+      SimpleIdentifier methodName = parseSimpleIdentifier(isDeclaration: true);
       TypeParameterList typeParameters = _parseGenericCommentTypeParameters();
       FormalParameterList parameters = parseFormalParameterList();
       if (methodName.name == className) {
@@ -2673,7 +2674,7 @@
             modifiers.externalKeyword,
             _validateModifiersForConstructor(modifiers),
             modifiers.factoryKeyword,
-            methodName,
+            new SimpleIdentifier(methodName.token, isDeclaration: true),
             null,
             null,
             parameters);
@@ -3229,8 +3230,9 @@
    *     label ::=
    *         identifier ':'
    */
-  Label parseLabel() {
-    SimpleIdentifier label = parseSimpleIdentifier();
+  Label parseLabel({bool isDeclaration: false}) {
+    SimpleIdentifier label =
+        parseSimpleIdentifier(isDeclaration: isDeclaration);
     Token colon = _expect(TokenType.COLON);
     return new Label(label, colon);
   }
@@ -3322,7 +3324,7 @@
             commentAndMetadata.comment,
             commentAndMetadata.metadata,
             holder.type,
-            identifier,
+            new SimpleIdentifier(identifier.token, isDeclaration: true),
             typeParameters,
             parameters);
       } else {
@@ -3367,8 +3369,12 @@
           null,
           null);
     }
-    return new SimpleFormalParameter(commentAndMetadata.comment,
-        commentAndMetadata.metadata, holder.keyword, holder.type, identifier);
+    return new SimpleFormalParameter(
+        commentAndMetadata.comment,
+        commentAndMetadata.metadata,
+        holder.keyword,
+        holder.type,
+        new SimpleIdentifier(identifier.token, isDeclaration: true));
   }
 
   /**
@@ -3409,7 +3415,7 @@
    *     identifier ::=
    *         IDENTIFIER
    */
-  SimpleIdentifier parseSimpleIdentifier() {
+  SimpleIdentifier parseSimpleIdentifier({bool isDeclaration: false}) {
     if (_matchesIdentifier()) {
       String lexeme = _currentToken.lexeme;
       if ((_inAsync || _inGenerator) &&
@@ -3417,10 +3423,11 @@
         _reportErrorForCurrentToken(
             ParserErrorCode.ASYNC_KEYWORD_USED_AS_IDENTIFIER);
       }
-      return new SimpleIdentifier(getAndAdvance());
+      return new SimpleIdentifier(getAndAdvance(),
+          isDeclaration: isDeclaration);
     }
     _reportErrorForCurrentToken(ParserErrorCode.MISSING_IDENTIFIER);
-    return _createSyntheticIdentifier();
+    return _createSyntheticIdentifier(isDeclaration: isDeclaration);
   }
 
   /**
@@ -3442,7 +3449,7 @@
   Statement parseStatement2() {
     List<Label> labels = new List<Label>();
     while (_matchesIdentifier() && _tokenMatches(_peek(), TokenType.COLON)) {
-      labels.add(parseLabel());
+      labels.add(parseLabel(isDeclaration: true));
     }
     Statement statement = _parseNonLabeledStatement();
     if (labels.isEmpty) {
@@ -3535,7 +3542,7 @@
    */
   TypeParameter parseTypeParameter() {
     CommentAndMetadata commentAndMetadata = _parseCommentAndMetadata();
-    SimpleIdentifier name = parseSimpleIdentifier();
+    SimpleIdentifier name = parseSimpleIdentifier(isDeclaration: true);
     if (_matchesKeyword(Keyword.EXTENDS)) {
       Token keyword = getAndAdvance();
       TypeName bound = parseTypeName();
@@ -3705,7 +3712,7 @@
   /**
    * Return a synthetic identifier.
    */
-  SimpleIdentifier _createSyntheticIdentifier() {
+  SimpleIdentifier _createSyntheticIdentifier({bool isDeclaration: false}) {
     Token syntheticToken;
     if (_currentToken.type == TokenType.KEYWORD) {
       // Consider current keyword token as an identifier.
@@ -3718,7 +3725,7 @@
     } else {
       syntheticToken = _createSyntheticToken(TokenType.IDENTIFIER);
     }
-    return new SimpleIdentifier(syntheticToken);
+    return new SimpleIdentifier(syntheticToken, isDeclaration: isDeclaration);
   }
 
   /**
@@ -4746,7 +4753,7 @@
             commentAndMetadata, abstractKeyword, keyword);
       }
     }
-    SimpleIdentifier name = parseSimpleIdentifier();
+    SimpleIdentifier name = parseSimpleIdentifier(isDeclaration: true);
     String className = name.name;
     TypeParameterList typeParameters = null;
     if (_matches(TokenType.LT)) {
@@ -4899,7 +4906,7 @@
    */
   ClassTypeAlias _parseClassTypeAlias(CommentAndMetadata commentAndMetadata,
       Token abstractKeyword, Token classKeyword) {
-    SimpleIdentifier className = parseSimpleIdentifier();
+    SimpleIdentifier className = parseSimpleIdentifier(isDeclaration: true);
     TypeParameterList typeParameters = null;
     if (_matches(TokenType.LT)) {
       typeParameters = parseTypeParameterList();
@@ -5708,7 +5715,7 @@
     CommentAndMetadata commentAndMetadata = _parseCommentAndMetadata();
     SimpleIdentifier name;
     if (_matchesIdentifier()) {
-      name = parseSimpleIdentifier();
+      name = parseSimpleIdentifier(isDeclaration: true);
     } else {
       name = _createSyntheticIdentifier();
     }
@@ -5729,7 +5736,7 @@
    */
   EnumDeclaration _parseEnumDeclaration(CommentAndMetadata commentAndMetadata) {
     Token keyword = _expectKeyword(Keyword.ENUM);
-    SimpleIdentifier name = parseSimpleIdentifier();
+    SimpleIdentifier name = parseSimpleIdentifier(isDeclaration: true);
     Token leftBracket = null;
     List<EnumConstantDeclaration> constants =
         new List<EnumConstantDeclaration>();
@@ -5992,8 +5999,13 @@
             Token keyword = variableList.keyword;
             TypeName type = variableList.type;
             if (keyword != null || type != null) {
-              loopVariable = new DeclaredIdentifier(commentAndMetadata.comment,
-                  commentAndMetadata.metadata, keyword, type, variable.name);
+              loopVariable = new DeclaredIdentifier(
+                  commentAndMetadata.comment,
+                  commentAndMetadata.metadata,
+                  keyword,
+                  type,
+                  new SimpleIdentifier(variable.name.token,
+                      isDeclaration: true));
             } else {
               if (!commentAndMetadata.metadata.isEmpty) {
                 // TODO(jwren) metadata isn't allowed before the identifier in
@@ -6204,7 +6216,7 @@
         !_tokenMatches(_peek(), TokenType.OPEN_PAREN)) {
       keyword = getAndAdvance();
     }
-    SimpleIdentifier name = parseSimpleIdentifier();
+    SimpleIdentifier name = parseSimpleIdentifier(isDeclaration: true);
     TypeParameterList typeParameters = _parseGenericMethodTypeParameters();
     FormalParameterList parameters = null;
     if (!isGetter) {
@@ -6304,7 +6316,7 @@
     if (hasReturnTypeInTypeAlias) {
       returnType = parseReturnType();
     }
-    SimpleIdentifier name = parseSimpleIdentifier();
+    SimpleIdentifier name = parseSimpleIdentifier(isDeclaration: true);
     TypeParameterList typeParameters = null;
     if (_matches(TokenType.LT)) {
       typeParameters = parseTypeParameterList();
@@ -6406,7 +6418,7 @@
   MethodDeclaration _parseGetter(CommentAndMetadata commentAndMetadata,
       Token externalKeyword, Token staticKeyword, TypeName returnType) {
     Token propertyKeyword = _expectKeyword(Keyword.GET);
-    SimpleIdentifier name = parseSimpleIdentifier();
+    SimpleIdentifier name = parseSimpleIdentifier(isDeclaration: true);
     if (_matches(TokenType.OPEN_PAREN) &&
         _tokenMatches(_peek(), TokenType.CLOSE_PAREN)) {
       _reportErrorForCurrentToken(ParserErrorCode.GETTER_WITH_PARAMETERS);
@@ -6492,7 +6504,7 @@
     }
     if (_matchesKeyword(Keyword.AS)) {
       asToken = getAndAdvance();
-      prefix = parseSimpleIdentifier();
+      prefix = parseSimpleIdentifier(isDeclaration: true);
     } else if (deferredToken != null) {
       _reportErrorForCurrentToken(
           ParserErrorCode.MISSING_PREFIX_IN_DEFERRED_IMPORT);
@@ -6508,7 +6520,7 @@
         _advance();
         if (_matchesKeyword(Keyword.AS)) {
           asToken = getAndAdvance();
-          prefix = parseSimpleIdentifier();
+          prefix = parseSimpleIdentifier(isDeclaration: true);
         }
       }
     }
@@ -6816,7 +6828,7 @@
       Token externalKeyword,
       Token staticKeyword,
       TypeName returnType) {
-    SimpleIdentifier methodName = parseSimpleIdentifier();
+    SimpleIdentifier methodName = parseSimpleIdentifier(isDeclaration: true);
     TypeParameterList typeParameters = _parseGenericMethodTypeParameters();
     FormalParameterList parameters;
     if (!_matches(TokenType.OPEN_PAREN) &&
@@ -7179,7 +7191,8 @@
       _reportErrorForCurrentToken(
           ParserErrorCode.NON_USER_DEFINABLE_OPERATOR, [_currentToken.lexeme]);
     }
-    SimpleIdentifier name = new SimpleIdentifier(getAndAdvance());
+    SimpleIdentifier name =
+        new SimpleIdentifier(getAndAdvance(), isDeclaration: true);
     if (_matches(TokenType.EQ)) {
       Token previous = _currentToken.previous;
       if ((_tokenMatches(previous, TokenType.EQ_EQ) ||
@@ -7564,7 +7577,7 @@
   MethodDeclaration _parseSetter(CommentAndMetadata commentAndMetadata,
       Token externalKeyword, Token staticKeyword, TypeName returnType) {
     Token propertyKeyword = _expectKeyword(Keyword.SET);
-    SimpleIdentifier name = parseSimpleIdentifier();
+    SimpleIdentifier name = parseSimpleIdentifier(isDeclaration: true);
     FormalParameterList parameters = parseFormalParameterList();
     _validateFormalParameterList(parameters);
     FunctionBody body = _parseFunctionBody(
@@ -7730,7 +7743,8 @@
         List<Label> labels = new List<Label>();
         while (
             _matchesIdentifier() && _tokenMatches(_peek(), TokenType.COLON)) {
-          SimpleIdentifier identifier = parseSimpleIdentifier();
+          SimpleIdentifier identifier =
+              parseSimpleIdentifier(isDeclaration: true);
           String label = identifier.token.lexeme;
           if (definedLabels.contains(label)) {
             _reportErrorForToken(
@@ -7886,10 +7900,10 @@
       if (_matchesKeyword(Keyword.CATCH)) {
         catchKeyword = getAndAdvance();
         leftParenthesis = _expect(TokenType.OPEN_PAREN);
-        exceptionParameter = parseSimpleIdentifier();
+        exceptionParameter = parseSimpleIdentifier(isDeclaration: true);
         if (_matches(TokenType.COMMA)) {
           comma = getAndAdvance();
-          stackTraceParameter = parseSimpleIdentifier();
+          stackTraceParameter = parseSimpleIdentifier(isDeclaration: true);
         }
         rightParenthesis = _expect(TokenType.CLOSE_PAREN);
       }
@@ -8122,7 +8136,7 @@
     // of a construct like "class C { int @deprecated foo() {} }" (i.e. the
     // user is in the middle of inserting "int bar;" prior to
     // "@deprecated foo() {}").
-    SimpleIdentifier name = parseSimpleIdentifier();
+    SimpleIdentifier name = parseSimpleIdentifier(isDeclaration: true);
     Token equals = null;
     Expression initializer = null;
     if (_matches(TokenType.EQ)) {
diff --git a/pkg/analyzer/lib/src/generated/scanner.dart b/pkg/analyzer/lib/src/generated/scanner.dart
index 5a2e2c0..3b21b2f 100644
--- a/pkg/analyzer/lib/src/generated/scanner.dart
+++ b/pkg/analyzer/lib/src/generated/scanner.dart
@@ -7,5 +7,5 @@
 
 export 'package:analyzer/dart/ast/token.dart';
 export 'package:analyzer/src/dart/ast/token.dart' hide SimpleToken;
-export 'package:analyzer/src/dart/scanner/scanner.dart';
 export 'package:analyzer/src/dart/scanner/reader.dart';
+export 'package:analyzer/src/dart/scanner/scanner.dart';
diff --git a/pkg/analyzer/lib/src/generated/sdk.dart b/pkg/analyzer/lib/src/generated/sdk.dart
index 0670b7c..27577b8 100644
--- a/pkg/analyzer/lib/src/generated/sdk.dart
+++ b/pkg/analyzer/lib/src/generated/sdk.dart
@@ -14,9 +14,10 @@
     show ContentCache, Source, UriKind;
 
 /**
- * A function used to create a new DartSdk
+ * A function used to create a new DartSdk with the given [options]. If the
+ * passed [options] are `null`, then default options are used.
  */
-typedef DartSdk SdkCreator();
+typedef DartSdk SdkCreator(AnalysisOptions options);
 
 /**
  * A Dart SDK installed in a specified location.
@@ -126,9 +127,8 @@
     int encoding = options.encodeCrossContextOptions();
     DartSdk sdk = sdkMap[encoding];
     if (sdk == null) {
-      sdk = sdkCreator();
+      sdk = sdkCreator(options);
       sdkMap[encoding] = sdk;
-      sdk.context.analysisOptions.setCrossContextOptionsFrom(options);
     }
     return sdk;
   }
diff --git a/pkg/analyzer/lib/src/generated/sdk_io.dart b/pkg/analyzer/lib/src/generated/sdk_io.dart
index 6f03a84..9bf52bf 100644
--- a/pkg/analyzer/lib/src/generated/sdk_io.dart
+++ b/pkg/analyzer/lib/src/generated/sdk_io.dart
@@ -249,6 +249,11 @@
   Map<String, Source> _uriToSourceMap = new HashMap<String, Source>();
 
   /**
+   * The [AnalysisOptions] to use to create the [context].
+   */
+  AnalysisOptions _analysisOptions;
+
+  /**
    * Initialize a newly created SDK to represent the Dart SDK installed in the
    * [sdkDirectory]. The flag [useDart2jsPaths] is `true` if the dart2js path
    * should be used when it is available
@@ -258,12 +263,31 @@
     _libraryMap = initialLibraryMap(useDart2jsPaths);
   }
 
+  /**
+   * Set the [options] for this SDK analysis context.  Throw [StateError] if the
+   * context has been already created.
+   */
+  void set analysisOptions(AnalysisOptions options) {
+    if (_analysisContext != null) {
+      throw new StateError(
+          'Analysis options cannot be changed after context creation.');
+    }
+    _analysisOptions = options;
+  }
+
   @override
   AnalysisContext get context {
     if (_analysisContext == null) {
-      _analysisContext = new SdkAnalysisContext();
+      _analysisContext = new SdkAnalysisContext(_analysisOptions);
       SourceFactory factory = new SourceFactory([new DartUriResolver(this)]);
       _analysisContext.sourceFactory = factory;
+      if (_useSummary) {
+        PackageBundle sdkBundle = getSummarySdkBundle();
+        if (sdkBundle != null) {
+          _analysisContext.resultProvider =
+              new SdkSummaryResultProvider(_analysisContext, sdkBundle);
+        }
+      }
     }
     return _analysisContext;
   }
@@ -393,14 +417,11 @@
    * Specify whether SDK summary should be used.
    */
   void set useSummary(bool use) {
-    _useSummary = use;
-    if (_useSummary) {
-      PackageBundle sdkBundle = _getSummarySdkBundle();
-      if (sdkBundle != null) {
-        _analysisContext.resultProvider =
-            new SdkSummaryResultProvider(_analysisContext, sdkBundle);
-      }
+    if (_analysisContext != null) {
+      throw new StateError(
+          'The "useSummary" flag cannot be changed after context creation.');
     }
+    _useSummary = use;
   }
 
   /**
@@ -512,6 +533,30 @@
   SdkLibrary getSdkLibrary(String dartUri) => _libraryMap.getLibrary(dartUri);
 
   /**
+   * Return the [PackageBundle] for this SDK, if it exists, or `null` otherwise.
+   * This method should not be used outside of `analyzer` and `analyzer_cli`
+   * packages.
+   */
+  PackageBundle getSummarySdkBundle() {
+    String rootPath = directory.getAbsolutePath();
+    bool strongMode = _analysisOptions?.strongMode ?? false;
+    String name = strongMode ? 'strong.sum' : 'spec.sum';
+    String path = pathos.join(rootPath, 'lib', '_internal', name);
+    try {
+      File file = new File(path);
+      if (file.existsSync()) {
+        List<int> bytes = file.readAsBytesSync();
+        return new PackageBundle.fromBuffer(bytes);
+      }
+    } catch (exception, stackTrace) {
+      AnalysisEngine.instance.logger.logError(
+          'Failed to load SDK analysis summary from $path',
+          new CaughtException(exception, stackTrace));
+    }
+    return null;
+  }
+
+  /**
    * Read all of the configuration files to initialize the library maps. The
    * flag [useDart2jsPaths] is `true` if the dart2js path should be used when it
    * is available. Return the initialized library map.
@@ -547,28 +592,6 @@
     return source;
   }
 
-  /**
-   * Return the [PackageBundle] for this SDK, if it exists, or `null` otherwise.
-   */
-  PackageBundle _getSummarySdkBundle() {
-    String rootPath = directory.getAbsolutePath();
-    String name =
-        context.analysisOptions.strongMode ? 'strong.sum' : 'spec.sum';
-    String path = pathos.join(rootPath, 'lib', '_internal', name);
-    try {
-      File file = new File(path);
-      if (file.existsSync()) {
-        List<int> bytes = file.readAsBytesSync();
-        return new PackageBundle.fromBuffer(bytes);
-      }
-    } catch (exception, stackTrace) {
-      AnalysisEngine.instance.logger.logError(
-          'Failed to load SDK analysis summary from $path',
-          new CaughtException(exception, stackTrace));
-    }
-    return null;
-  }
-
   FileBasedSource _mapDartUri(String dartUri) {
     String libraryName;
     String relativePath;
diff --git a/pkg/analyzer/lib/src/generated/source.dart b/pkg/analyzer/lib/src/generated/source.dart
index 092671e..0387905 100644
--- a/pkg/analyzer/lib/src/generated/source.dart
+++ b/pkg/analyzer/lib/src/generated/source.dart
@@ -404,11 +404,6 @@
 
   @override
   bool exists() => false;
-
-  @override
-  Uri resolveRelativeUri(Uri relativeUri) {
-    throw new UnsupportedOperationException('$fullName does not exist.');
-  }
 }
 
 /**
@@ -547,21 +542,6 @@
    * @return `true` if this source exists
    */
   bool exists();
-
-  /**
-   * Resolve the relative URI against the URI associated with this source object.
-   *
-   * Note: This method is not intended for public use, it is only visible out of necessity. It is
-   * only intended to be invoked by a [SourceFactory]. Source factories will
-   * only invoke this method if the URI is relative, so implementations of this method are not
-   * required to, and generally do not, verify the argument. The result of invoking this method with
-   * an absolute URI is intentionally left unspecified.
-   *
-   * @param relativeUri the relative URI to be resolved against this source
-   * @return the URI to which given URI was resolved
-   * @throws AnalysisException if the relative URI could not be resolved
-   */
-  Uri resolveRelativeUri(Uri relativeUri);
 }
 
 /**
diff --git a/pkg/analyzer/lib/src/generated/source_io.dart b/pkg/analyzer/lib/src/generated/source_io.dart
index 49641c8..811a048 100644
--- a/pkg/analyzer/lib/src/generated/source_io.dart
+++ b/pkg/analyzer/lib/src/generated/source_io.dart
@@ -11,6 +11,7 @@
 import 'package:analyzer/src/generated/java_engine.dart';
 import 'package:analyzer/src/generated/java_io.dart';
 import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/generated/utilities_dart.dart';
 
 export 'package:analyzer/src/generated/source.dart';
 
@@ -82,6 +83,44 @@
 }
 
 /**
+ * Instances of the class [ExplicitSourceResolver] map URIs to files on disk
+ * using a fixed mapping provided at construction time.
+ */
+class ExplicitSourceResolver extends UriResolver {
+  final Map<Uri, JavaFile> uriToFileMap;
+  final Map<String, Uri> pathToUriMap;
+
+  /**
+   * Construct an [ExplicitSourceResolver] based on the given [uriToFileMap].
+   */
+  ExplicitSourceResolver(Map<Uri, JavaFile> uriToFileMap)
+      : uriToFileMap = uriToFileMap,
+        pathToUriMap = _computePathToUriMap(uriToFileMap);
+
+  @override
+  Source resolveAbsolute(Uri uri, [Uri actualUri]) {
+    return new FileBasedSource(uriToFileMap[uri], actualUri ?? uri);
+  }
+
+  @override
+  Uri restoreAbsolute(Source source) {
+    return pathToUriMap[source.fullName];
+  }
+
+  /**
+   * Build the inverse mapping of [uriToSourceMap].
+   */
+  static Map<String, Uri> _computePathToUriMap(
+      Map<Uri, JavaFile> uriToSourceMap) {
+    Map<String, Uri> pathToUriMap = <String, Uri>{};
+    uriToSourceMap.forEach((Uri uri, JavaFile file) {
+      pathToUriMap[file.getAbsolutePath()] = uri;
+    });
+    return pathToUriMap;
+  }
+}
+
+/**
  * Instances of the class `FileBasedSource` implement a source that represents a file.
  */
 class FileBasedSource extends Source {
@@ -209,32 +248,6 @@
   bool exists() => file.isFile();
 
   @override
-  Uri resolveRelativeUri(Uri containedUri) {
-    try {
-      Uri baseUri = uri;
-      bool isOpaque = uri.isAbsolute && !uri.path.startsWith('/');
-      if (isOpaque) {
-        String scheme = uri.scheme;
-        String part = uri.path;
-        if (scheme == DartUriResolver.DART_SCHEME && part.indexOf('/') < 0) {
-          part = "$part/$part.dart";
-        }
-        baseUri = parseUriWithException("$scheme:/$part");
-      }
-      Uri result = baseUri.resolveUri(containedUri);
-      if (isOpaque) {
-        result = parseUriWithException(
-            "${result.scheme}:${result.path.substring(1)}");
-      }
-      return result;
-    } catch (exception, stackTrace) {
-      throw new AnalysisException(
-          "Could not resolve URI ($containedUri) relative to source ($uri)",
-          new CaughtException(exception, stackTrace));
-    }
-  }
-
-  @override
   String toString() {
     if (file == null) {
       return "<unknown source>";
@@ -433,11 +446,13 @@
       if (resolvedFile.exists()) {
         JavaFile canonicalFile =
             getCanonicalFile(packagesDirectory, pkgName, relPath);
+        if (actualUri != null) {
+          return new FileBasedSource(canonicalFile, actualUri);
+        }
         if (_isSelfReference(packagesDirectory, canonicalFile)) {
           uri = canonicalFile.toURI();
         }
-        return new FileBasedSource(
-            canonicalFile, actualUri != null ? actualUri : uri);
+        return new FileBasedSource(canonicalFile, uri);
       }
     }
     return new FileBasedSource(
diff --git a/pkg/analyzer/lib/src/generated/type_system.dart b/pkg/analyzer/lib/src/generated/type_system.dart
index 84f2eb7..9dc5506 100644
--- a/pkg/analyzer/lib/src/generated/type_system.dart
+++ b/pkg/analyzer/lib/src/generated/type_system.dart
@@ -22,8 +22,6 @@
  * https://github.com/dart-lang/dev_compiler/blob/master/STRONG_MODE.md
  */
 class StrongTypeSystemImpl extends TypeSystem {
-  final _specTypeSystem = new TypeSystemImpl();
-
   bool anyParameterType(FunctionType ft, bool predicate(DartType t)) {
     return ft.parameters.any((p) => predicate(p.type));
   }
@@ -43,11 +41,162 @@
     return null;
   }
 
+  /// Computes the greatest lower bound of [type1] and [type2].
   @override
-  DartType getLeastUpperBound(
-      TypeProvider typeProvider, DartType type1, DartType type2) {
-    // TODO(leafp): Implement a strong mode version of this.
-    return _specTypeSystem.getLeastUpperBound(typeProvider, type1, type2);
+  DartType getGreatestLowerBound(
+      TypeProvider provider, DartType type1, DartType type2) {
+    // The greatest lower bound relation is reflexive.
+    if (identical(type1, type2)) {
+      return type1;
+    }
+
+    // Treat dynamic as top. The GLB of dynamic and any type is just that type
+    // since dynamic permits all values.
+    if (type1.isDynamic) {
+      return type2;
+    }
+    if (type2.isDynamic) {
+      return type1;
+    }
+
+    // You can't get any lower than bottom.
+    if (type1.isBottom || type2.isBottom) {
+      return provider.bottomType;
+    }
+
+    // Treat void as top-like for GLB. This only comes into play with the
+    // return types of two functions whose GLB is being taken. We allow a
+    // non-void-returning function to subtype a void-returning one, so match
+    // that logic here by treating the non-void arm as the subtype for GLB.
+    if (type1.isVoid) {
+      return type2;
+    }
+    if (type2.isVoid) {
+      return type1;
+    }
+
+    // Function types have structural GLB.
+    if (type1 is FunctionType && type2 is FunctionType) {
+      return _functionGreatestLowerBound(provider, type1, type2);
+    }
+
+    // Otherwise, the GLB of two types is one of them it if it is a subtype of
+    // the other.
+    if (isSubtypeOf(type1, type2)) {
+      return type1;
+    }
+
+    if (isSubtypeOf(type2, type1)) {
+      return type2;
+    }
+
+    // No subtype relation, so no known GLB.
+    return provider.bottomType;
+  }
+
+  /**
+   * This currently does not implement a very complete least upper bound
+   * algorithm, but handles a couple of the very common cases that are
+   * causing pain in real code.  The current algorithm is:
+   * 1. If either of the types is a supertype of the other, return it.
+   *    This is in fact the best result in this case.
+   * 2. If the two types have the same class element, then take the
+   *    pointwise least upper bound of the type arguments.  This is again
+   *    the best result, except that the recursive calls may not return
+   *    the true least uppper bounds.  The result is guaranteed to be a
+   *    well-formed type under the assumption that the input types were
+   *    well-formed (and assuming that the recursive calls return
+   *    well-formed types).
+   * 3. Otherwise return the spec-defined least upper bound.  This will
+   *    be an upper bound, might (or might not) be least, and might
+   *    (or might not) be a well-formed type.
+   *
+   * TODO(leafp): Use matchTypes or something similar here to handle the
+   *  case where one of the types is a superclass (but not supertype) of
+   *  the other, e.g. LUB(Iterable<double>, List<int>) = Iterable<num>
+   * TODO(leafp): Figure out the right final algorithm and implement it.
+   */
+  @override
+  DartType _interfaceLeastUpperBound(
+      TypeProvider provider, InterfaceType type1, InterfaceType type2) {
+    if (isSubtypeOf(type1, type2)) {
+      return type2;
+    }
+    if (isSubtypeOf(type2, type1)) {
+      return type1;
+    }
+    if (type1.element == type2.element) {
+      List<DartType> tArgs1 = type1.typeArguments;
+      List<DartType> tArgs2 = type2.typeArguments;
+
+      assert(tArgs1.length == tArgs2.length);
+      List<DartType> tArgs = new List(tArgs1.length);
+      for (int i = 0; i < tArgs1.length; i++) {
+        tArgs[i] = getLeastUpperBound(provider, tArgs1[i], tArgs2[i]);
+      }
+      InterfaceTypeImpl lub = new InterfaceTypeImpl(type1.element);
+      lub.typeArguments = tArgs;
+      return lub;
+    }
+    return InterfaceTypeImpl.computeLeastUpperBound(type1, type2) ??
+        provider.dynamicType;
+  }
+
+  /**
+   * This currently just implements a simple least upper bound to
+   * handle some common cases.  It also avoids some termination issues
+   * with the naive spec algorithm.  The least upper bound of two types
+   * (at least one of which is a type parameter) is computed here as:
+   * 1. If either type is a supertype of the other, return it.
+   * 2. If the first type is a type parameter, replace it with its bound,
+   *    with recursive occurrences of itself replaced with Object.
+   *    The second part of this should ensure termination.  Informally,
+   *    each type variable instantiation in one of the arguments to the
+   *    least upper bound algorithm now strictly reduces the number
+   *    of bound variables in scope in that argument position.
+   * 3. If the second type is a type parameter, do the symmetric operation
+   *    to #2.
+   *
+   * It's not immediately obvious why this is symmetric in the case that both
+   * of the them are type parameters.  For #1, symmetry holds since subtype
+   * is antisymmetric.  For #2, it's clearly not symmetric if upper bounds of
+   * bottom are allowed.  Ignoring this (for various reasons, not least
+   * of which that there's no way to write it), there's an informal
+   * argument (that might even be right) that you will always either
+   * end up expanding both of them or else returning the same result no matter
+   * which order you expand them in.  A key observation is that
+   * identical(expand(type1), type2) => subtype(type1, type2)
+   * and hence the contra-positive.
+   *
+   * TODO(leafp): Think this through and figure out what's the right
+   * definition.  Be careful about termination.
+   *
+   * I suspect in general a reasonable algorithm is to expand the innermost
+   * type variable first.  Alternatively, you could probably choose to treat
+   * it as just an instance of the interface type upper bound problem, with
+   * the "inheritance" chain extended by the bounds placed on the variables.
+   */
+  @override
+  DartType _typeParameterLeastUpperBound(
+      TypeProvider provider, DartType type1, DartType type2) {
+    if (isSubtypeOf(type1, type2)) {
+      return type2;
+    }
+    if (isSubtypeOf(type2, type1)) {
+      return type1;
+    }
+    if (type1 is TypeParameterType) {
+      type1 = type1
+          .resolveToBound(provider.objectType)
+          .substitute2([provider.objectType], [type1]);
+      return getLeastUpperBound(provider, type1, type2);
+    }
+    // We should only be called when at least one of the types is a
+    // TypeParameterType
+    type2 = type2
+        .resolveToBound(provider.objectType)
+        .substitute2([provider.objectType], [type2]);
+    return getLeastUpperBound(provider, type1, type2);
   }
 
   /**
@@ -222,8 +371,7 @@
     // TODO(leafp): Emit warnings and hints for these in some way.
     // TODO(leafp): Consider adding a flag to disable these?  Or just rely on
     //   --warnings-as-errors?
-    if (isSubtypeOf(toType, fromType) ||
-        _specTypeSystem.isAssignableTo(toType, fromType)) {
+    if (isSubtypeOf(toType, fromType) || toType.isAssignableTo(fromType)) {
       // TODO(leafp): error if type is known to be exact (literal,
       //  instance creation).
       // TODO(leafp): Warn on composite downcast.
@@ -270,6 +418,121 @@
   }
 
   /**
+   * Compute the greatest lower bound of function types [f] and [g].
+   *
+   * The spec rules for GLB on function types, informally, are pretty simple:
+   *
+   * - If a parameter is required in both, it stays required.
+   *
+   * - If a positional parameter is optional or missing in one, it becomes
+   *   optional.
+   *
+   * - Named parameters are unioned together.
+   *
+   * - For any parameter that exists in both functions, use the LUB of them as
+   *   the resulting parameter type.
+   *
+   * - Use the GLB of their return types.
+   */
+  DartType _functionGreatestLowerBound(
+      TypeProvider provider, FunctionType f, FunctionType g) {
+    // Calculate the LUB of each corresponding pair of parameters.
+    List<ParameterElement> parameters = [];
+
+    bool hasPositional = false;
+    bool hasNamed = false;
+    addParameter(
+        String name, DartType fType, DartType gType, ParameterKind kind) {
+      DartType paramType;
+      if (fType != null && gType != null) {
+        // If both functions have this parameter, include both of their types.
+        paramType = getLeastUpperBound(provider, fType, gType);
+      } else {
+        paramType = fType ?? gType;
+      }
+
+      parameters.add(new ParameterElementImpl.synthetic(name, paramType, kind));
+    }
+
+    // TODO(rnystrom): Right now, this assumes f and g do not have any type
+    // parameters. Revisit that in the presence of generic methods.
+    List<DartType> fRequired = f.normalParameterTypes;
+    List<DartType> gRequired = g.normalParameterTypes;
+
+    // We need some parameter names for in the synthesized function type.
+    List<String> fRequiredNames = f.normalParameterNames;
+    List<String> gRequiredNames = g.normalParameterNames;
+
+    // Parameters that are required in both functions are required in the
+    // result.
+    int requiredCount = math.min(fRequired.length, gRequired.length);
+    for (int i = 0; i < requiredCount; i++) {
+      addParameter(fRequiredNames[i], fRequired[i], gRequired[i],
+          ParameterKind.REQUIRED);
+    }
+
+    // Parameters that are optional or missing in either end up optional.
+    List<DartType> fPositional = f.optionalParameterTypes;
+    List<DartType> gPositional = g.optionalParameterTypes;
+    List<String> fPositionalNames = f.optionalParameterNames;
+    List<String> gPositionalNames = g.optionalParameterNames;
+
+    int totalPositional = math.max(fRequired.length + fPositional.length,
+        gRequired.length + gPositional.length);
+    for (int i = requiredCount; i < totalPositional; i++) {
+      // Find the corresponding positional parameters (required or optional) at
+      // this index, if there is one.
+      DartType fType;
+      String fName;
+      if (i < fRequired.length) {
+        fType = fRequired[i];
+        fName = fRequiredNames[i];
+      } else if (i < fRequired.length + fPositional.length) {
+        fType = fPositional[i - fRequired.length];
+        fName = fPositionalNames[i - fRequired.length];
+      }
+
+      DartType gType;
+      String gName;
+      if (i < gRequired.length) {
+        gType = gRequired[i];
+        gName = gRequiredNames[i];
+      } else if (i < gRequired.length + gPositional.length) {
+        gType = gPositional[i - gRequired.length];
+        gName = gPositionalNames[i - gRequired.length];
+      }
+
+      // The loop should not let us go past both f and g's positional params.
+      assert(fType != null || gType != null);
+
+      addParameter(fName ?? gName, fType, gType, ParameterKind.POSITIONAL);
+      hasPositional = true;
+    }
+
+    // Union the named parameters together.
+    Map<String, DartType> fNamed = f.namedParameterTypes;
+    Map<String, DartType> gNamed = g.namedParameterTypes;
+    for (String name in fNamed.keys.toSet()..addAll(gNamed.keys)) {
+      addParameter(name, fNamed[name], gNamed[name], ParameterKind.NAMED);
+      hasNamed = true;
+    }
+
+    // Edge case. Dart does not support functions with both optional positional
+    // and named parameters. If we would synthesize that, give up.
+    if (hasPositional && hasNamed) return provider.bottomType;
+
+    // Calculate the GLB of the return type.
+    DartType returnType =
+        getGreatestLowerBound(provider, f.returnType, g.returnType);
+    return new FunctionElementImpl.synthetic(parameters, returnType).type;
+  }
+
+  @override
+  DartType _functionParameterBound(
+          TypeProvider provider, DartType f, DartType g) =>
+      getGreatestLowerBound(provider, f, g);
+
+  /**
    * Guard against loops in the class hierarchy
    */
   _GuardedSubtypeChecker<DartType> _guard(
@@ -377,7 +640,6 @@
     _GuardedSubtypeChecker<DartType> guardedSubtype = _guard(_isSubtypeOf);
     _GuardedSubtypeChecker<DartType> guardedInferTypeParameter =
         _guard(_inferTypeParameterSubtypeOf);
-
     if (t1 == t2) {
       return true;
     }
@@ -415,6 +677,12 @@
       return guardedInferTypeParameter(t1, t2, visited);
     }
 
+    // Void only appears as the return type of a function, and we handle it
+    // directly in the function subtype rules. We should not get to a point
+    // where we're doing a subtype test on a "bare" void, but just in case we
+    // do, handle it safely.
+    // TODO(rnystrom): Determine how this can ever be reached. If it can't,
+    // remove it.
     if (t1.isVoid || t2.isVoid) {
       return false;
     }
@@ -444,8 +712,8 @@
     return _isFunctionSubtypeOf(t1 as FunctionType, t2 as FunctionType);
   }
 
-  // TODO(leafp): Document the rules in play here
   bool _isTop(DartType t, {bool dynamicIsBottom: false}) {
+    // TODO(leafp): Document the rules in play here
     return (t.isDynamic && !dynamicIsBottom) || t.isObject;
   }
 }
@@ -473,7 +741,75 @@
    * Compute the least upper bound of two types.
    */
   DartType getLeastUpperBound(
-      TypeProvider typeProvider, DartType type1, DartType type2);
+      TypeProvider typeProvider, DartType type1, DartType type2) {
+    // The least upper bound relation is reflexive.
+    if (identical(type1, type2)) {
+      return type1;
+    }
+    // The least upper bound of dynamic and any type T is dynamic.
+    if (type1.isDynamic) {
+      return type1;
+    }
+    if (type2.isDynamic) {
+      return type2;
+    }
+    // The least upper bound of void and any type T != dynamic is void.
+    if (type1.isVoid) {
+      return type1;
+    }
+    if (type2.isVoid) {
+      return type2;
+    }
+    // The least upper bound of bottom and any type T is T.
+    if (type1.isBottom) {
+      return type2;
+    }
+    if (type2.isBottom) {
+      return type1;
+    }
+
+    if (type1 is TypeParameterType || type2 is TypeParameterType) {
+      return _typeParameterLeastUpperBound(typeProvider, type1, type2);
+    }
+
+    // The least upper bound of a function type and an interface type T is the
+    // least upper bound of Function and T.
+    if (type1 is FunctionType && type2 is InterfaceType) {
+      type1 = typeProvider.functionType;
+    }
+    if (type2 is FunctionType && type1 is InterfaceType) {
+      type2 = typeProvider.functionType;
+    }
+
+    // At this point type1 and type2 should both either be interface types or
+    // function types.
+    if (type1 is InterfaceType && type2 is InterfaceType) {
+      return _interfaceLeastUpperBound(typeProvider, type1, type2);
+    }
+
+    if (type1 is FunctionType && type2 is FunctionType) {
+      return _functionLeastUpperBound(typeProvider, type1, type2);
+    }
+
+    // Should never happen. As a defensive measure, return the dynamic type.
+    assert(false);
+    return typeProvider.dynamicType;
+  }
+
+  /**
+   * Given two [InterfaceType]s [type1] and [type2] return their least upper
+   * bound in a type system specific manner.
+   */
+  DartType _interfaceLeastUpperBound(
+      TypeProvider provider, InterfaceType type1, InterfaceType type2);
+
+  /**
+   * Given two [DartType]s [type1] and [type2] at least one of which is a
+   * [TypeParameterType], return their least upper bound in a type system
+   * specific manner.
+   */
+  DartType _typeParameterLeastUpperBound(
+      TypeProvider provider, DartType type1, DartType type2);
 
   /**
    * Given a [DartType] [type], instantiate it with its bounds.
@@ -587,120 +923,6 @@
       TypeParameterTypeImpl.getTypes(typeFormalsAsElements(type));
 
   /**
-   * Create either a strong mode or regular type system based on context.
-   */
-  static TypeSystem create(AnalysisContext context) {
-    return (context.analysisOptions.strongMode)
-        ? new StrongTypeSystemImpl()
-        : new TypeSystemImpl();
-  }
-}
-
-/**
- * Implementation of [TypeSystem] using the rules in the Dart specification.
- */
-class TypeSystemImpl extends TypeSystem {
-  TypeSystemImpl();
-
-  @override
-  bool canPromoteToType(DartType to, DartType from) {
-    // Declared type should not be "dynamic".
-    // Promoted type should not be "dynamic".
-    // Promoted type should be more specific than declared.
-    return !from.isDynamic && !to.isDynamic && to.isMoreSpecificThan(from);
-  }
-
-  @override
-  DartType getLeastUpperBound(
-      TypeProvider typeProvider, DartType type1, DartType type2) {
-    // The least upper bound relation is reflexive.
-    if (identical(type1, type2)) {
-      return type1;
-    }
-    // The least upper bound of dynamic and any type T is dynamic.
-    if (type1.isDynamic) {
-      return type1;
-    }
-    if (type2.isDynamic) {
-      return type2;
-    }
-    // The least upper bound of void and any type T != dynamic is void.
-    if (type1.isVoid) {
-      return type1;
-    }
-    if (type2.isVoid) {
-      return type2;
-    }
-    // The least upper bound of bottom and any type T is T.
-    if (type1.isBottom) {
-      return type2;
-    }
-    if (type2.isBottom) {
-      return type1;
-    }
-
-    // Let U be a type variable with upper bound B.  The least upper bound of U
-    // and a type T is the least upper bound of B and T.
-    type1 = type1.resolveToBound(typeProvider.objectType);
-    type2 = type2.resolveToBound(typeProvider.objectType);
-
-    // The least upper bound of a function type and an interface type T is the
-    // least upper bound of Function and T.
-    if (type1 is FunctionType && type2 is InterfaceType) {
-      type1 = typeProvider.functionType;
-    }
-    if (type2 is FunctionType && type1 is InterfaceType) {
-      type2 = typeProvider.functionType;
-    }
-
-    // At this point type1 and type2 should both either be interface types or
-    // function types.
-    if (type1 is InterfaceType && type2 is InterfaceType) {
-      InterfaceType result =
-          InterfaceTypeImpl.computeLeastUpperBound(type1, type2);
-      if (result == null) {
-        return typeProvider.dynamicType;
-      }
-      return result;
-    } else if (type1 is FunctionType && type2 is FunctionType) {
-      return _functionLeastUpperBound(typeProvider, type1, type2);
-    } else {
-      // Should never happen.  As a defensive measure, return the dynamic type.
-      assert(false);
-      return typeProvider.dynamicType;
-    }
-  }
-
-  /**
-   * Instantiate a parameterized type using `dynamic` for all generic
-   * parameters.  Returns the type unchanged if there are no parameters.
-   */
-  DartType instantiateToBounds(DartType type) {
-    List<DartType> typeFormals = typeFormalsAsTypes(type);
-    int count = typeFormals.length;
-    if (count > 0) {
-      List<DartType> typeArguments =
-          new List<DartType>.filled(count, DynamicTypeImpl.instance);
-      return instantiateType(type, typeArguments);
-    }
-    return type;
-  }
-
-  @override
-  bool isAssignableTo(DartType leftType, DartType rightType) {
-    return leftType.isAssignableTo(rightType);
-  }
-
-  @override
-  bool isMoreSpecificThan(DartType t1, DartType t2) =>
-      t1.isMoreSpecificThan(t2);
-
-  @override
-  bool isSubtypeOf(DartType leftType, DartType rightType) {
-    return leftType.isSubtypeOf(rightType);
-  }
-
-  /**
    * Compute the least upper bound of function types [f] and [g].
    *
    * The spec rules for LUB on function types, informally, are pretty simple
@@ -739,7 +961,7 @@
     for (int i = 0; i < fRequired.length; i++) {
       parameters.add(new ParameterElementImpl.synthetic(
           fRequiredNames[i],
-          getLeastUpperBound(provider, fRequired[i], gRequired[i]),
+          _functionParameterBound(provider, fRequired[i], gRequired[i]),
           ParameterKind.REQUIRED));
     }
 
@@ -752,7 +974,7 @@
     for (int i = 0; i < length; i++) {
       parameters.add(new ParameterElementImpl.synthetic(
           fPositionalNames[i],
-          getLeastUpperBound(provider, fPositional[i], gPositional[i]),
+          _functionParameterBound(provider, fPositional[i], gPositional[i]),
           ParameterKind.POSITIONAL));
     }
 
@@ -761,21 +983,94 @@
     for (String name in fNamed.keys.toSet()..retainAll(gNamed.keys)) {
       parameters.add(new ParameterElementImpl.synthetic(
           name,
-          getLeastUpperBound(provider, fNamed[name], gNamed[name]),
+          _functionParameterBound(provider, fNamed[name], gNamed[name]),
           ParameterKind.NAMED));
     }
 
     // Calculate the LUB of the return type.
     DartType returnType =
         getLeastUpperBound(provider, f.returnType, g.returnType);
+    return new FunctionElementImpl.synthetic(parameters, returnType).type;
+  }
 
-    FunctionElementImpl function = new FunctionElementImpl("", -1);
-    function.synthetic = true;
-    function.returnType = returnType;
-    function.parameters = parameters;
+  /**
+   * Calculates the appropriate upper or lower bound of a pair of parameters
+   * for two function types whose least upper bound is being calculated.
+   *
+   * In spec mode, this uses least upper bound, which... doesn't really make
+   * much sense. Strong mode overrides this to use greatest lower bound.
+   */
+  DartType _functionParameterBound(
+          TypeProvider provider, DartType f, DartType g) =>
+      getLeastUpperBound(provider, f, g);
 
-    function.type = new FunctionTypeImpl(function);
-    return function.type;
+  /**
+   * Create either a strong mode or regular type system based on context.
+   */
+  static TypeSystem create(AnalysisContext context) {
+    return (context.analysisOptions.strongMode)
+        ? new StrongTypeSystemImpl()
+        : new TypeSystemImpl();
+  }
+}
+
+/**
+ * Implementation of [TypeSystem] using the rules in the Dart specification.
+ */
+class TypeSystemImpl extends TypeSystem {
+  TypeSystemImpl();
+
+  @override
+  bool canPromoteToType(DartType to, DartType from) {
+    // Declared type should not be "dynamic".
+    // Promoted type should not be "dynamic".
+    // Promoted type should be more specific than declared.
+    return !from.isDynamic && !to.isDynamic && to.isMoreSpecificThan(from);
+  }
+
+  /**
+   * Instantiate a parameterized type using `dynamic` for all generic
+   * parameters.  Returns the type unchanged if there are no parameters.
+   */
+  DartType instantiateToBounds(DartType type) {
+    List<DartType> typeFormals = typeFormalsAsTypes(type);
+    int count = typeFormals.length;
+    if (count > 0) {
+      List<DartType> typeArguments =
+          new List<DartType>.filled(count, DynamicTypeImpl.instance);
+      return instantiateType(type, typeArguments);
+    }
+    return type;
+  }
+
+  @override
+  bool isAssignableTo(DartType leftType, DartType rightType) {
+    return leftType.isAssignableTo(rightType);
+  }
+
+  @override
+  bool isMoreSpecificThan(DartType t1, DartType t2) =>
+      t1.isMoreSpecificThan(t2);
+
+  @override
+  bool isSubtypeOf(DartType leftType, DartType rightType) {
+    return leftType.isSubtypeOf(rightType);
+  }
+
+  @override
+  DartType _interfaceLeastUpperBound(
+      TypeProvider provider, InterfaceType type1, InterfaceType type2) {
+    InterfaceType result =
+        InterfaceTypeImpl.computeLeastUpperBound(type1, type2);
+    return result ?? provider.dynamicType;
+  }
+
+  @override
+  DartType _typeParameterLeastUpperBound(
+      TypeProvider provider, DartType type1, DartType type2) {
+    type1 = type1.resolveToBound(provider.objectType);
+    type2 = type2.resolveToBound(provider.objectType);
+    return getLeastUpperBound(provider, type1, type2);
   }
 }
 
diff --git a/pkg/analyzer/lib/src/generated/utilities_dart.dart b/pkg/analyzer/lib/src/generated/utilities_dart.dart
index 41b7d7c..2e4abf1 100644
--- a/pkg/analyzer/lib/src/generated/utilities_dart.dart
+++ b/pkg/analyzer/lib/src/generated/utilities_dart.dart
@@ -8,6 +8,45 @@
 import 'package:analyzer/dart/ast/token.dart' show Token;
 import 'package:analyzer/src/dart/element/element.dart' show ElementImpl;
 import 'package:analyzer/src/generated/java_core.dart';
+import 'package:analyzer/src/generated/java_engine.dart';
+import 'package:analyzer/src/generated/source.dart';
+
+/**
+ * Resolve the [containedUri] against [baseUri] using Dart rules.
+ *
+ * This function behaves similarly to [Uri.resolveUri], except that it properly
+ * handles situations like the following:
+ *
+ *     resolveRelativeUri(dart:core, bool.dart) -> dart:core/bool.dart
+ *     resolveRelativeUri(package:a/b.dart, ../c.dart) -> package:a/c.dart
+ */
+Uri resolveRelativeUri(Uri baseUri, Uri containedUri) {
+  if (containedUri.isAbsolute) {
+    return containedUri;
+  }
+  Uri origBaseUri = baseUri;
+  try {
+    bool isOpaque = baseUri.isAbsolute && !baseUri.path.startsWith('/');
+    if (isOpaque) {
+      String scheme = baseUri.scheme;
+      String part = baseUri.path;
+      if (scheme == DartUriResolver.DART_SCHEME && part.indexOf('/') < 0) {
+        part = "$part/$part.dart";
+      }
+      baseUri = parseUriWithException("$scheme:/$part");
+    }
+    Uri result = baseUri.resolveUri(containedUri);
+    if (isOpaque) {
+      result =
+          parseUriWithException("${result.scheme}:${result.path.substring(1)}");
+    }
+    return result;
+  } catch (exception, stackTrace) {
+    throw new AnalysisException(
+        "Could not resolve URI ($containedUri) relative to source ($origBaseUri)",
+        new CaughtException(exception, stackTrace));
+  }
+}
 
 /**
  * If the given [node] has a documentation comment, remember its content
diff --git a/pkg/analyzer/lib/src/plugin/plugin_configuration.dart b/pkg/analyzer/lib/src/plugin/plugin_configuration.dart
index 222e376..2137f11 100644
--- a/pkg/analyzer/lib/src/plugin/plugin_configuration.dart
+++ b/pkg/analyzer/lib/src/plugin/plugin_configuration.dart
@@ -143,8 +143,7 @@
   }
 
   @override
-  void optionsProcessed(
-      AnalysisContext context, Map<String, Object> options) {
+  void optionsProcessed(AnalysisContext context, Map<String, Object> options) {
     _config = new PluginConfig.fromOptions(options);
   }
 }
diff --git a/pkg/analyzer/lib/src/string_source.dart b/pkg/analyzer/lib/src/string_source.dart
index 04eb0a3..ce0c087 100644
--- a/pkg/analyzer/lib/src/string_source.dart
+++ b/pkg/analyzer/lib/src/string_source.dart
@@ -64,8 +64,5 @@
   bool exists() => true;
 
   @override
-  Uri resolveRelativeUri(Uri relativeUri) => uri.resolveUri(relativeUri);
-
-  @override
   String toString() => 'StringSource ($fullName)';
 }
diff --git a/pkg/analyzer/lib/src/summary/base.dart b/pkg/analyzer/lib/src/summary/base.dart
index acdb839..7c3d8ae 100644
--- a/pkg/analyzer/lib/src/summary/base.dart
+++ b/pkg/analyzer/lib/src/summary/base.dart
@@ -23,6 +23,30 @@
 }
 
 /**
+ * Instances of this class represent data that has been read from a summary.
+ */
+abstract class SummaryClass {
+  /**
+   * Translate the data in this class into a JSON map, whose keys are the names
+   * of fields and whose values are the data stored in those fields,
+   * recursively converted into JSON.
+   *
+   * Fields containing their default value are elided.
+   *
+   * Intended for testing and debugging only.
+   */
+  Map<String, Object> toJson();
+
+  /**
+   * Translate the data in this class into a map whose keys are the names of
+   * fields and whose values are the data stored in those fields.
+   *
+   * Intended for testing and debugging only.
+   */
+  Map<String, Object> toMap();
+}
+
+/**
  * Annotation used in the summary IDL to indicate that a summary class can be
  * the top level object in an encoded summary.
  */
@@ -35,27 +59,3 @@
 
   const TopLevel([this.fileIdentifier]);
 }
-
-/**
- * Instances of this class represent data that has been read from a summary.
- */
-abstract class SummaryClass {
-  /**
-   * Translate the data in this class into a map whose keys are the names of
-   * fields and whose values are the data stored in those fields.
-   *
-   * Intended for testing and debugging only.
-   */
-  Map<String, Object> toMap();
-
-  /**
-   * Translate the data in this class into a JSON map, whose keys are the names
-   * of fields and whose values are the data stored in those fields,
-   * recursively converted into JSON.
-   *
-   * Fields containing their default value are elided.
-   *
-   * Intended for testing and debugging only.
-   */
-  Map<String, Object> toJson();
-}
diff --git a/pkg/analyzer/lib/src/summary/format.dart b/pkg/analyzer/lib/src/summary/format.dart
index e8f16bf..43b5547 100644
--- a/pkg/analyzer/lib/src/summary/format.dart
+++ b/pkg/analyzer/lib/src/summary/format.dart
@@ -189,6 +189,12 @@
       _kind = kind,
       _partUris = partUris;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+  }
+
   List<int> toBuffer() {
     fb.Builder fbBuilder = new fb.Builder();
     return fbBuilder.finish(finish(fbBuilder), "CaSS");
@@ -330,6 +336,12 @@
     : _length = length,
       _offset = offset;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -540,6 +552,15 @@
       _syntheticReturnType = syntheticReturnType,
       _typeArguments = typeArguments;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _syntheticParams?.forEach((b) => b.flushInformative());
+    _syntheticReturnType?.flushInformative();
+    _typeArguments?.forEach((b) => b.flushInformative());
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -714,6 +735,12 @@
     : _parts = parts,
       _uri = uri;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -848,6 +875,12 @@
       _name = name,
       _unit = unit;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -942,6 +975,7 @@
 
   List<LinkedDependencyBuilder> _dependencies;
   List<LinkedExportNameBuilder> _exportNames;
+  bool _fallbackMode;
   List<int> _importDependencies;
   int _numPrelinkedDependencies;
   List<LinkedUnitBuilder> _units;
@@ -986,6 +1020,18 @@
   }
 
   @override
+  bool get fallbackMode => _fallbackMode ??= false;
+
+  /**
+   * Indicates whether this library was summarized in "fallback mode".  If
+   * true, all other fields in the data structure have their default values.
+   */
+  void set fallbackMode(bool _value) {
+    assert(!_finished);
+    _fallbackMode = _value;
+  }
+
+  @override
   List<int> get importDependencies => _importDependencies ??= <int>[];
 
   /**
@@ -1026,13 +1072,23 @@
     _units = _value;
   }
 
-  LinkedLibraryBuilder({List<LinkedDependencyBuilder> dependencies, List<LinkedExportNameBuilder> exportNames, List<int> importDependencies, int numPrelinkedDependencies, List<LinkedUnitBuilder> units})
+  LinkedLibraryBuilder({List<LinkedDependencyBuilder> dependencies, List<LinkedExportNameBuilder> exportNames, bool fallbackMode, List<int> importDependencies, int numPrelinkedDependencies, List<LinkedUnitBuilder> units})
     : _dependencies = dependencies,
       _exportNames = exportNames,
+      _fallbackMode = fallbackMode,
       _importDependencies = importDependencies,
       _numPrelinkedDependencies = numPrelinkedDependencies,
       _units = units;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _dependencies?.forEach((b) => b.flushInformative());
+    _exportNames?.forEach((b) => b.flushInformative());
+    _units?.forEach((b) => b.flushInformative());
+  }
+
   List<int> toBuffer() {
     fb.Builder fbBuilder = new fb.Builder();
     return fbBuilder.finish(finish(fbBuilder), "LLib");
@@ -1064,6 +1120,9 @@
     if (offset_exportNames != null) {
       fbBuilder.addOffset(4, offset_exportNames);
     }
+    if (_fallbackMode == true) {
+      fbBuilder.addBool(5, true);
+    }
     if (offset_importDependencies != null) {
       fbBuilder.addOffset(1, offset_importDependencies);
     }
@@ -1096,6 +1155,7 @@
 
   List<idl.LinkedDependency> _dependencies;
   List<idl.LinkedExportName> _exportNames;
+  bool _fallbackMode;
   List<int> _importDependencies;
   int _numPrelinkedDependencies;
   List<idl.LinkedUnit> _units;
@@ -1113,6 +1173,12 @@
   }
 
   @override
+  bool get fallbackMode {
+    _fallbackMode ??= const fb.BoolReader().vTableGet(_bp, 5, false);
+    return _fallbackMode;
+  }
+
+  @override
   List<int> get importDependencies {
     _importDependencies ??= const fb.Uint32ListReader().vTableGet(_bp, 1, const <int>[]);
     return _importDependencies;
@@ -1137,6 +1203,7 @@
     Map<String, Object> _result = <String, Object>{};
     if (dependencies.isNotEmpty) _result["dependencies"] = dependencies.map((_value) => _value.toJson()).toList();
     if (exportNames.isNotEmpty) _result["exportNames"] = exportNames.map((_value) => _value.toJson()).toList();
+    if (fallbackMode != false) _result["fallbackMode"] = fallbackMode;
     if (importDependencies.isNotEmpty) _result["importDependencies"] = importDependencies;
     if (numPrelinkedDependencies != 0) _result["numPrelinkedDependencies"] = numPrelinkedDependencies;
     if (units.isNotEmpty) _result["units"] = units.map((_value) => _value.toJson()).toList();
@@ -1147,6 +1214,7 @@
   Map<String, Object> toMap() => {
     "dependencies": dependencies,
     "exportNames": exportNames,
+    "fallbackMode": fallbackMode,
     "importDependencies": importDependencies,
     "numPrelinkedDependencies": numPrelinkedDependencies,
     "units": units,
@@ -1285,6 +1353,12 @@
       _numTypeParameters = numTypeParameters,
       _unit = unit;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -1463,6 +1537,14 @@
       _references = references,
       _types = types;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _references?.forEach((b) => b.flushInformative());
+    _types?.forEach((b) => b.flushInformative());
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -1651,6 +1733,14 @@
       _unlinkedUnits = unlinkedUnits,
       _unlinkedUnitUris = unlinkedUnitUris;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _linkedLibraries?.forEach((b) => b.flushInformative());
+    _unlinkedUnits?.forEach((b) => b.flushInformative());
+  }
+
   List<int> toBuffer() {
     fb.Builder fbBuilder = new fb.Builder();
     return fbBuilder.finish(finish(fbBuilder), "PBdl");
@@ -1915,6 +2005,13 @@
       _units = units,
       _unitUnitUris = unitUnitUris;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _units?.forEach((b) => b.flushInformative());
+  }
+
   List<int> toBuffer() {
     fb.Builder fbBuilder = new fb.Builder();
     return fbBuilder.finish(finish(fbBuilder), "Indx");
@@ -2270,6 +2367,12 @@
       _usedNameOffsets = usedNameOffsets,
       _usedNames = usedNames;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -2704,6 +2807,22 @@
       _supertype = supertype,
       _typeParameters = typeParameters;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _annotations?.forEach((b) => b.flushInformative());
+    _codeRange = null;
+    _documentationComment = null;
+    _executables?.forEach((b) => b.flushInformative());
+    _fields?.forEach((b) => b.flushInformative());
+    _interfaces?.forEach((b) => b.flushInformative());
+    _mixins?.forEach((b) => b.flushInformative());
+    _nameOffset = null;
+    _supertype?.flushInformative();
+    _typeParameters?.forEach((b) => b.flushInformative());
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -3011,6 +3130,14 @@
       _offset = offset,
       _shows = shows;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _end = null;
+    _offset = null;
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -3197,6 +3324,13 @@
       _references = references,
       _strings = strings;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _references?.forEach((b) => b.flushInformative());
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -3389,6 +3523,14 @@
       _kind = kind,
       _name = name;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _arguments?.forEach((b) => b.flushInformative());
+    _expression?.flushInformative();
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -3537,6 +3679,12 @@
       _offset = offset,
       _text = text;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -3700,6 +3848,17 @@
       _nameOffset = nameOffset,
       _values = values;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _annotations?.forEach((b) => b.flushInformative());
+    _codeRange = null;
+    _documentationComment = null;
+    _nameOffset = null;
+    _values?.forEach((b) => b.flushInformative());
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -3876,6 +4035,14 @@
       _name = name,
       _nameOffset = nameOffset;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _documentationComment = null;
+    _nameOffset = null;
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -4354,6 +4521,26 @@
       _visibleLength = visibleLength,
       _visibleOffset = visibleOffset;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _annotations?.forEach((b) => b.flushInformative());
+    _codeRange = null;
+    _constantInitializers?.forEach((b) => b.flushInformative());
+    _documentationComment = null;
+    _localFunctions?.forEach((b) => b.flushInformative());
+    _localLabels?.forEach((b) => b.flushInformative());
+    _localVariables?.forEach((b) => b.flushInformative());
+    _nameEnd = null;
+    _nameOffset = null;
+    _parameters?.forEach((b) => b.flushInformative());
+    _periodOffset = null;
+    _redirectedConstructor?.flushInformative();
+    _returnType?.flushInformative();
+    _typeParameters?.forEach((b) => b.flushInformative());
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -4830,6 +5017,16 @@
       _uriEnd = uriEnd,
       _uriOffset = uriOffset;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _annotations?.forEach((b) => b.flushInformative());
+    _offset = null;
+    _uriEnd = null;
+    _uriOffset = null;
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -4951,6 +5148,13 @@
     : _combinators = combinators,
       _uri = uri;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _combinators?.forEach((b) => b.flushInformative());
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -5168,6 +5372,18 @@
       _uriEnd = uriEnd,
       _uriOffset = uriOffset;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _annotations?.forEach((b) => b.flushInformative());
+    _combinators?.forEach((b) => b.flushInformative());
+    _offset = null;
+    _prefixOffset = null;
+    _uriEnd = null;
+    _uriOffset = null;
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -5397,6 +5613,13 @@
       _name = name,
       _nameOffset = nameOffset;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _nameOffset = null;
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -5706,6 +5929,20 @@
       _visibleLength = visibleLength,
       _visibleOffset = visibleOffset;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _annotations?.forEach((b) => b.flushInformative());
+    _codeRange = null;
+    _defaultValue?.flushInformative();
+    _defaultValueCode = null;
+    _initializer?.flushInformative();
+    _nameOffset = null;
+    _parameters?.forEach((b) => b.flushInformative());
+    _type?.flushInformative();
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -6004,6 +6241,15 @@
       _uriEnd = uriEnd,
       _uriOffset = uriOffset;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _annotations?.forEach((b) => b.flushInformative());
+    _uriEnd = null;
+    _uriOffset = null;
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -6146,6 +6392,13 @@
       _name = name,
       _numTypeParameters = numTypeParameters;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _members?.forEach((b) => b.flushInformative());
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -6287,6 +6540,14 @@
       _names = names,
       _parts = parts;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _exports?.forEach((b) => b.flushInformative());
+    _names?.forEach((b) => b.flushInformative());
+  }
+
   List<int> toBuffer() {
     fb.Builder fbBuilder = new fb.Builder();
     return fbBuilder.finish(finish(fbBuilder), "UPNS");
@@ -6422,6 +6683,12 @@
     : _name = name,
       _prefixReference = prefixReference;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -6599,6 +6866,19 @@
       _returnType = returnType,
       _typeParameters = typeParameters;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _annotations?.forEach((b) => b.flushInformative());
+    _codeRange = null;
+    _documentationComment = null;
+    _nameOffset = null;
+    _parameters?.forEach((b) => b.flushInformative());
+    _returnType?.flushInformative();
+    _typeParameters?.forEach((b) => b.flushInformative());
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -6833,6 +7113,16 @@
       _name = name,
       _nameOffset = nameOffset;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _annotations?.forEach((b) => b.flushInformative());
+    _bound?.flushInformative();
+    _codeRange = null;
+    _nameOffset = null;
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
@@ -6954,6 +7244,7 @@
   List<UnlinkedEnumBuilder> _enums;
   List<UnlinkedExecutableBuilder> _executables;
   List<UnlinkedExportNonPublicBuilder> _exports;
+  String _fallbackModePath;
   List<UnlinkedImportBuilder> _imports;
   List<UnlinkedConstBuilder> _libraryAnnotations;
   UnlinkedDocumentationCommentBuilder _libraryDocumentationComment;
@@ -7023,6 +7314,21 @@
   }
 
   @override
+  String get fallbackModePath => _fallbackModePath ??= '';
+
+  /**
+   * If this compilation unit was summarized in fallback mode, the path where
+   * the compilation unit may be found on disk.  Otherwise empty.
+   *
+   * When this field is non-empty, all other fields in the data structure have
+   * their default values.
+   */
+  void set fallbackModePath(String _value) {
+    assert(!_finished);
+    _fallbackModePath = _value;
+  }
+
+  @override
   List<UnlinkedImportBuilder> get imports => _imports ??= <UnlinkedImportBuilder>[];
 
   /**
@@ -7153,12 +7459,13 @@
     _variables = _value;
   }
 
-  UnlinkedUnitBuilder({List<UnlinkedClassBuilder> classes, CodeRangeBuilder codeRange, List<UnlinkedEnumBuilder> enums, List<UnlinkedExecutableBuilder> executables, List<UnlinkedExportNonPublicBuilder> exports, List<UnlinkedImportBuilder> imports, List<UnlinkedConstBuilder> libraryAnnotations, UnlinkedDocumentationCommentBuilder libraryDocumentationComment, String libraryName, int libraryNameLength, int libraryNameOffset, List<UnlinkedPartBuilder> parts, UnlinkedPublicNamespaceBuilder publicNamespace, List<UnlinkedReferenceBuilder> references, List<UnlinkedTypedefBuilder> typedefs, List<UnlinkedVariableBuilder> variables})
+  UnlinkedUnitBuilder({List<UnlinkedClassBuilder> classes, CodeRangeBuilder codeRange, List<UnlinkedEnumBuilder> enums, List<UnlinkedExecutableBuilder> executables, List<UnlinkedExportNonPublicBuilder> exports, String fallbackModePath, List<UnlinkedImportBuilder> imports, List<UnlinkedConstBuilder> libraryAnnotations, UnlinkedDocumentationCommentBuilder libraryDocumentationComment, String libraryName, int libraryNameLength, int libraryNameOffset, List<UnlinkedPartBuilder> parts, UnlinkedPublicNamespaceBuilder publicNamespace, List<UnlinkedReferenceBuilder> references, List<UnlinkedTypedefBuilder> typedefs, List<UnlinkedVariableBuilder> variables})
     : _classes = classes,
       _codeRange = codeRange,
       _enums = enums,
       _executables = executables,
       _exports = exports,
+      _fallbackModePath = fallbackModePath,
       _imports = imports,
       _libraryAnnotations = libraryAnnotations,
       _libraryDocumentationComment = libraryDocumentationComment,
@@ -7171,6 +7478,27 @@
       _typedefs = typedefs,
       _variables = variables;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _classes?.forEach((b) => b.flushInformative());
+    _codeRange = null;
+    _enums?.forEach((b) => b.flushInformative());
+    _executables?.forEach((b) => b.flushInformative());
+    _exports?.forEach((b) => b.flushInformative());
+    _imports?.forEach((b) => b.flushInformative());
+    _libraryAnnotations?.forEach((b) => b.flushInformative());
+    _libraryDocumentationComment = null;
+    _libraryNameLength = null;
+    _libraryNameOffset = null;
+    _parts?.forEach((b) => b.flushInformative());
+    _publicNamespace?.flushInformative();
+    _references?.forEach((b) => b.flushInformative());
+    _typedefs?.forEach((b) => b.flushInformative());
+    _variables?.forEach((b) => b.flushInformative());
+  }
+
   List<int> toBuffer() {
     fb.Builder fbBuilder = new fb.Builder();
     return fbBuilder.finish(finish(fbBuilder), "UUnt");
@@ -7184,6 +7512,7 @@
     fb.Offset offset_enums;
     fb.Offset offset_executables;
     fb.Offset offset_exports;
+    fb.Offset offset_fallbackModePath;
     fb.Offset offset_imports;
     fb.Offset offset_libraryAnnotations;
     fb.Offset offset_libraryDocumentationComment;
@@ -7208,6 +7537,9 @@
     if (!(_exports == null || _exports.isEmpty)) {
       offset_exports = fbBuilder.writeList(_exports.map((b) => b.finish(fbBuilder)).toList());
     }
+    if (_fallbackModePath != null) {
+      offset_fallbackModePath = fbBuilder.writeString(_fallbackModePath);
+    }
     if (!(_imports == null || _imports.isEmpty)) {
       offset_imports = fbBuilder.writeList(_imports.map((b) => b.finish(fbBuilder)).toList());
     }
@@ -7251,6 +7583,9 @@
     if (offset_exports != null) {
       fbBuilder.addOffset(13, offset_exports);
     }
+    if (offset_fallbackModePath != null) {
+      fbBuilder.addOffset(16, offset_fallbackModePath);
+    }
     if (offset_imports != null) {
       fbBuilder.addOffset(5, offset_imports);
     }
@@ -7310,6 +7645,7 @@
   List<idl.UnlinkedEnum> _enums;
   List<idl.UnlinkedExecutable> _executables;
   List<idl.UnlinkedExportNonPublic> _exports;
+  String _fallbackModePath;
   List<idl.UnlinkedImport> _imports;
   List<idl.UnlinkedConst> _libraryAnnotations;
   idl.UnlinkedDocumentationComment _libraryDocumentationComment;
@@ -7353,6 +7689,12 @@
   }
 
   @override
+  String get fallbackModePath {
+    _fallbackModePath ??= const fb.StringReader().vTableGet(_bp, 16, '');
+    return _fallbackModePath;
+  }
+
+  @override
   List<idl.UnlinkedImport> get imports {
     _imports ??= const fb.ListReader<idl.UnlinkedImport>(const _UnlinkedImportReader()).vTableGet(_bp, 5, const <idl.UnlinkedImport>[]);
     return _imports;
@@ -7428,6 +7770,7 @@
     if (enums.isNotEmpty) _result["enums"] = enums.map((_value) => _value.toJson()).toList();
     if (executables.isNotEmpty) _result["executables"] = executables.map((_value) => _value.toJson()).toList();
     if (exports.isNotEmpty) _result["exports"] = exports.map((_value) => _value.toJson()).toList();
+    if (fallbackModePath != '') _result["fallbackModePath"] = fallbackModePath;
     if (imports.isNotEmpty) _result["imports"] = imports.map((_value) => _value.toJson()).toList();
     if (libraryAnnotations.isNotEmpty) _result["libraryAnnotations"] = libraryAnnotations.map((_value) => _value.toJson()).toList();
     if (libraryDocumentationComment != null) _result["libraryDocumentationComment"] = libraryDocumentationComment.toJson();
@@ -7449,6 +7792,7 @@
     "enums": enums,
     "executables": executables,
     "exports": exports,
+    "fallbackModePath": fallbackModePath,
     "imports": imports,
     "libraryAnnotations": libraryAnnotations,
     "libraryDocumentationComment": libraryDocumentationComment,
@@ -7688,6 +8032,19 @@
       _visibleLength = visibleLength,
       _visibleOffset = visibleOffset;
 
+  /**
+   * Flush [informative] data recursively.
+   */
+  void flushInformative() {
+    _annotations?.forEach((b) => b.flushInformative());
+    _codeRange = null;
+    _constExpr?.flushInformative();
+    _documentationComment = null;
+    _initializer?.flushInformative();
+    _nameOffset = null;
+    _type?.flushInformative();
+  }
+
   fb.Offset finish(fb.Builder fbBuilder) {
     assert(!_finished);
     _finished = true;
diff --git a/pkg/analyzer/lib/src/summary/format.fbs b/pkg/analyzer/lib/src/summary/format.fbs
index 9c6cf83..3457613 100644
--- a/pkg/analyzer/lib/src/summary/format.fbs
+++ b/pkg/analyzer/lib/src/summary/format.fbs
@@ -789,6 +789,12 @@
   exportNames:[LinkedExportName] (id: 4);
 
   /**
+   * Indicates whether this library was summarized in "fallback mode".  If
+   * true, all other fields in the data structure have their default values.
+   */
+  fallbackMode:bool (id: 5);
+
+  /**
    * For each import in [UnlinkedUnit.imports], an index into [dependencies]
    * of the library being imported.
    */
@@ -1967,6 +1973,15 @@
   exports:[UnlinkedExportNonPublic] (id: 13);
 
   /**
+   * If this compilation unit was summarized in fallback mode, the path where
+   * the compilation unit may be found on disk.  Otherwise empty.
+   *
+   * When this field is non-empty, all other fields in the data structure have
+   * their default values.
+   */
+  fallbackModePath:string (id: 16);
+
+  /**
    * Import declarations in the compilation unit.
    */
   imports:[UnlinkedImport] (id: 5);
diff --git a/pkg/analyzer/lib/src/summary/idl.dart b/pkg/analyzer/lib/src/summary/idl.dart
index 4453056..31acca9 100644
--- a/pkg/analyzer/lib/src/summary/idl.dart
+++ b/pkg/analyzer/lib/src/summary/idl.dart
@@ -437,6 +437,13 @@
   List<LinkedExportName> get exportNames;
 
   /**
+   * Indicates whether this library was summarized in "fallback mode".  If
+   * true, all other fields in the data structure have their default values.
+   */
+  @Id(5)
+  bool get fallbackMode;
+
+  /**
    * For each import in [UnlinkedUnit.imports], an index into [dependencies]
    * of the library being imported.
    */
@@ -860,6 +867,7 @@
   /**
    * Code range of the class.
    */
+  @informative
   @Id(13)
   CodeRange get codeRange;
 
@@ -1416,6 +1424,7 @@
   /**
    * Code range of the enum.
    */
+  @informative
   @Id(5)
   CodeRange get codeRange;
 
@@ -1488,6 +1497,7 @@
   /**
    * Code range of the executable.
    */
+  @informative
   @Id(26)
   CodeRange get codeRange;
 
@@ -1877,6 +1887,7 @@
   /**
    * Code range of the parameter.
    */
+  @informative
   @Id(14)
   CodeRange get codeRange;
 
@@ -2133,6 +2144,7 @@
   /**
    * Code range of the typedef.
    */
+  @informative
   @Id(7)
   CodeRange get codeRange;
 
@@ -2196,6 +2208,7 @@
   /**
    * Code range of the type parameter.
    */
+  @informative
   @Id(4)
   CodeRange get codeRange;
 
@@ -2230,6 +2243,7 @@
   /**
    * Code range of the unit.
    */
+  @informative
   @Id(15)
   CodeRange get codeRange;
 
@@ -2253,6 +2267,16 @@
   List<UnlinkedExportNonPublic> get exports;
 
   /**
+   * If this compilation unit was summarized in fallback mode, the path where
+   * the compilation unit may be found on disk.  Otherwise empty.
+   *
+   * When this field is non-empty, all other fields in the data structure have
+   * their default values.
+   */
+  @Id(16)
+  String get fallbackModePath;
+
+  /**
    * Import declarations in the compilation unit.
    */
   @Id(5)
@@ -2344,6 +2368,7 @@
   /**
    * Code range of the variable.
    */
+  @informative
   @Id(14)
   CodeRange get codeRange;
 
diff --git a/pkg/analyzer/lib/src/summary/index_unit.dart b/pkg/analyzer/lib/src/summary/index_unit.dart
index b239d5c..610fba4 100644
--- a/pkg/analyzer/lib/src/summary/index_unit.dart
+++ b/pkg/analyzer/lib/src/summary/index_unit.dart
@@ -13,11 +13,6 @@
 import 'package:analyzer/src/summary/idl.dart';
 
 /**
- * TODO(scheglov) add to the `meta` package.
- */
-const visibleForTesting = const Object();
-
-/**
  * Information about an element referenced in index.
  */
 class ElementInfo {
@@ -90,7 +85,7 @@
 
   /**
    * Assemble a new [PackageIndexBuilder] using the information gathered by
-   * [index].
+   * [indexDeclarations] or [indexUnit].
    */
   PackageIndexBuilder assemble() {
     // sort strings end set IDs
@@ -120,9 +115,19 @@
   }
 
   /**
+   * Index declarations in the given partially resolved [unit].
+   */
+  void indexDeclarations(CompilationUnit unit) {
+    int unitId = _getUnitId(unit.element);
+    _UnitIndexAssembler assembler = new _UnitIndexAssembler(this, unitId);
+    _units.add(assembler);
+    unit.accept(new _IndexDeclarationContributor(assembler));
+  }
+
+  /**
    * Index the given fully resolved [unit].
    */
-  void index(CompilationUnit unit) {
+  void indexUnit(CompilationUnit unit) {
     int unitId = _getUnitId(unit.element);
     _UnitIndexAssembler assembler = new _UnitIndexAssembler(this, unitId);
     _units.add(assembler);
@@ -291,26 +296,8 @@
 /**
  * Visits a resolved AST and adds relationships into [_UnitIndexAssembler].
  */
-class _IndexContributor extends GeneralizingAstVisitor {
-  final _UnitIndexAssembler assembler;
-
-  _IndexContributor(this.assembler);
-
-  /**
-   * Record definition of the given [element].
-   */
-  void recordDefinedElement(Element element) {
-    if (element != null) {
-      String name = element.displayName;
-      int offset = element.nameOffset;
-      Element enclosing = element.enclosingElement;
-      if (enclosing is CompilationUnitElement) {
-        assembler.defineName(name, IndexNameKind.topLevel, offset);
-      } else if (enclosing is ClassElement) {
-        assembler.defineName(name, IndexNameKind.classMember, offset);
-      }
-    }
-  }
+class _IndexContributor extends _IndexDeclarationContributor {
+  _IndexContributor(_UnitIndexAssembler assembler) : super(assembler);
 
   void recordIsAncestorOf(Element descendant) {
     _recordIsAncestorOf(descendant, descendant, false, <ClassElement>[]);
@@ -566,12 +553,13 @@
 
   @override
   visitSimpleIdentifier(SimpleIdentifier node) {
-    Element element = node.bestElement;
     // name in declaration
     if (node.inDeclarationContext()) {
+      Element element = node.staticElement;
       recordDefinedElement(element);
       return;
     }
+    Element element = node.bestElement;
     // record unresolved name reference
     bool isQualified = _isQualified(node);
     if (element == null) {
@@ -704,6 +692,40 @@
 }
 
 /**
+ * Visits a resolved AST and adds relationships into [_UnitIndexAssembler].
+ */
+class _IndexDeclarationContributor extends GeneralizingAstVisitor {
+  final _UnitIndexAssembler assembler;
+
+  _IndexDeclarationContributor(this.assembler);
+
+  /**
+   * Record definition of the given [element].
+   */
+  void recordDefinedElement(Element element) {
+    if (element != null) {
+      String name = element.displayName;
+      int offset = element.nameOffset;
+      Element enclosing = element.enclosingElement;
+      if (enclosing is CompilationUnitElement) {
+        assembler.defineName(name, IndexNameKind.topLevel, offset);
+      } else if (enclosing is ClassElement) {
+        assembler.defineName(name, IndexNameKind.classMember, offset);
+      }
+    }
+  }
+
+  @override
+  visitSimpleIdentifier(SimpleIdentifier node) {
+    if (node.inDeclarationContext()) {
+      Element element = node.staticElement;
+      recordDefinedElement(element);
+      return;
+    }
+  }
+}
+
+/**
  * Information about a single name relation.  Any [_NameRelationInfo] is always
  * part of a [_UnitIndexAssembler], so [offset] should be understood within the
  * context of the compilation unit pointed to by the [_UnitIndexAssembler].
diff --git a/pkg/analyzer/lib/src/summary/link.dart b/pkg/analyzer/lib/src/summary/link.dart
new file mode 100644
index 0000000..279bd78
--- /dev/null
+++ b/pkg/analyzer/lib/src/summary/link.dart
@@ -0,0 +1,1612 @@
+// Copyright (c) 2016, 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 library is capable of producing linked summaries from unlinked
+ * ones (or prelinked ones).  It functions by building a miniature
+ * element model to represent the contents of the summaries, and then
+ * scanning the element model to gather linked information and adding
+ * it to the summary data structures.
+ *
+ * The reason we use a miniature element model to do the linking
+ * (rather than resynthesizing the full element model from the
+ * summaries) is that it is expected that we will only need to
+ * traverse a small subset of the element properties in order to link.
+ * Resynthesizing only those properties that we need should save
+ * substantial CPU time.
+ *
+ * The element model implements the same interfaces as the full
+ * element model, so we can re-use code elsewhere in the analysis
+ * engine to do the linking.  However, only a small subset of the
+ * methods and getters defined in the full element model are
+ * implemented here.  To avoid static warnings, each element model
+ * class contains an implementation of `noSuchMethod`.
+ *
+ * The miniature element model follows the following design
+ * principles:
+ *
+ * - With few exceptions, resynthesis is done incrementally on demand,
+ *   so that we don't pay the cost of resynthesizing elements (or
+ *   properties of elements) that aren't referenced from a part of the
+ *   element model that is relevant to linking.
+ *
+ * - Computation of values in the miniature element model is similar
+ *   to the task model, but much lighter weight.  Instead of declaring
+ *   tasks and their relationships using classes, each task is simply
+ *   a method (frequently a getter) that computes a value.  Instead of
+ *   using a general purpose cache, values are cached by the methods
+ *   themselves in private fields (with `null` typically representing
+ *   "not yet cached").
+ *
+ * - No attempt is made to detect cyclic dependencies due to bugs in
+ *   the analyzer.  This saves time because dependency evaluation
+ *   doesn't have to be a separate step from evaluating a value; we
+ *   can simply call the getter.
+ *
+ * - However, for cases where cyclic dependencies may occur in the
+ *   absence of analyzer bugs (e.g. because of errors in the code
+ *   being analyzed, or cycles between top level and static variables
+ *   undergoing type inference), we do precompute dependencies, and we
+ *   use Tarjan's strongly connected components algorithm to detect
+ *   cycles.
+ *
+ * - As much as possible, bookkeeping data is pointed to directly by
+ *   the element objects, rather than being stored in maps.
+ *
+ * - Where possible, we favor method dispatch instead of "is" and "as"
+ *   checks.  E.g. see [ReferenceableElementForLink.asConstructor].
+ */
+
+import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/type.dart';
+import 'package:analyzer/src/dart/element/type.dart';
+import 'package:analyzer/src/generated/utilities_dart.dart';
+import 'package:analyzer/src/summary/format.dart';
+import 'package:analyzer/src/summary/idl.dart';
+import 'package:analyzer/src/summary/prelink.dart';
+
+/**
+ * Link together the build unit consisting of [libraryUris], using
+ * [getDependency] to fetch the [LinkedLibrary] objects from other
+ * build units, and [getUnit] to fetch the [UnlinkedUnit] objects from
+ * both this build unit and other build units.
+ *
+ * A map is returned whose keys are the URIs of the libraries in this
+ * build unit, and whose values are the corresponding
+ * [LinkedLibraryBuilder]s.
+ */
+Map<String, LinkedLibraryBuilder> link(Set<String> libraryUris,
+    GetDependencyCallback getDependency, GetUnitCallback getUnit) {
+  Map<String, LinkedLibraryBuilder> linkedLibraries =
+      <String, LinkedLibraryBuilder>{};
+  for (String absoluteUri in libraryUris) {
+    Uri uri = Uri.parse(absoluteUri);
+    UnlinkedUnit getRelativeUnit(String relativeUri) =>
+        getUnit(resolveRelativeUri(uri, Uri.parse(relativeUri)).toString());
+    linkedLibraries[absoluteUri] = prelink(
+        getUnit(absoluteUri),
+        getRelativeUnit,
+        (String relativeUri) => getRelativeUnit(relativeUri)?.publicNamespace);
+  }
+  relink(linkedLibraries, getDependency, getUnit);
+  return linkedLibraries;
+}
+
+/**
+ * Given [libraries] (a map from URI to [LinkedLibraryBuilder]
+ * containing correct prelinked information), rebuild linked
+ * information, using [getDependency] to fetch the [LinkedLibrary]
+ * objects from other build units, and [getUnit] to fetch the
+ * [UnlinkedUnit] objects from both this build unit and other build
+ * units.
+ */
+void relink(Map<String, LinkedLibraryBuilder> libraries,
+    GetDependencyCallback getDependency, GetUnitCallback getUnit) {
+  new _Linker(libraries, getDependency, getUnit).link();
+}
+
+/**
+ * Type of the callback used by [link] and [relink] to request
+ * [LinkedLibrary] objects from other build units.
+ */
+typedef LinkedLibrary GetDependencyCallback(String absoluteUri);
+
+/**
+ * Type of the callback used by [link] and [relink] to request
+ * [UnlinkedUnit] objects.
+ */
+typedef UnlinkedUnit GetUnitCallback(String absoluteUri);
+
+/**
+ * Element representing a class or enum resynthesized from a summary
+ * during linking.
+ */
+abstract class ClassElementForLink
+    implements ClassElement, ReferenceableElementForLink {
+  Map<String, ReferenceableElementForLink> _containedNames;
+
+  @override
+  ConstructorElementForLink get asConstructor => unnamedConstructor;
+
+  @override
+  ConstVariableNode get asConstVariable {
+    // When a class name is used as a constant variable, it doesn't depend on
+    // anything, so it is not necessary to include it in the constant
+    // dependency graph.
+    return null;
+  }
+
+  @override
+  List<ConstructorElementForLink> get constructors;
+
+  @override
+  List<FieldElementForLink> get fields;
+
+  /**
+   * Indicates whether this is the core class `Object`.
+   */
+  bool get isObject;
+
+  @override
+  String get name;
+
+  @override
+  ConstructorElementForLink get unnamedConstructor;
+
+  @override
+  ReferenceableElementForLink getContainedName(String name) {
+    if (_containedNames == null) {
+      _containedNames = <String, ReferenceableElementForLink>{};
+      // TODO(paulberry): what's the correct way to handle name conflicts?
+      for (ConstructorElementForLink constructor in constructors) {
+        _containedNames[constructor.name] = constructor;
+      }
+      for (FieldElementForLink field in fields) {
+        // TODO(paulberry): do we need to handle nonstatic fields for
+        // consistent behavior with erroneous code?
+        if (field.isStatic) {
+          _containedNames[field.name] = field;
+        }
+      }
+      // TODO(paulberry): add methods.
+    }
+    return _containedNames.putIfAbsent(
+        name, () => UndefinedElementForLink.instance);
+  }
+
+  /**
+   * Perform type inference and cycle detection on this class and
+   * store the resulting information in the enclosing elements.
+   */
+  void link(LinkedUnitBuilder linkedUnit);
+
+  @override
+  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
+
+/**
+ * Element representing a class resynthesized from a summary during
+ * linking.
+ */
+class ClassElementForLink_Class extends ClassElementForLink
+    implements TypeParameterContext {
+  /**
+   * The unlinked representation of the class in the summary.
+   */
+  final UnlinkedClass _unlinkedClass;
+
+  @override
+  final CompilationUnitElementForLink enclosingElement;
+
+  List<ConstructorElementForLink> _constructors;
+  ConstructorElementForLink _unnamedConstructor;
+  bool _unnamedConstructorComputed = false;
+  List<FieldElementForLink_ClassField> _fields;
+  InterfaceType _supertype;
+  InterfaceType _type;
+  List<TypeParameterType> _typeParameterTypes;
+
+  ClassElementForLink_Class(this.enclosingElement, this._unlinkedClass);
+
+  @override
+  List<ConstructorElementForLink> get constructors {
+    if (_constructors == null) {
+      _constructors = <ConstructorElementForLink>[];
+      for (UnlinkedExecutable unlinkedExecutable
+          in _unlinkedClass.executables) {
+        if (unlinkedExecutable.kind == UnlinkedExecutableKind.constructor) {
+          _constructors
+              .add(new ConstructorElementForLink(this, unlinkedExecutable));
+        }
+      }
+    }
+    return _constructors;
+  }
+
+  @override
+  String get displayName => _unlinkedClass.name;
+
+  @override
+  List<FieldElementForLink_ClassField> get fields {
+    if (_fields == null) {
+      _fields = <FieldElementForLink_ClassField>[];
+      for (UnlinkedVariable field in _unlinkedClass.fields) {
+        _fields.add(new FieldElementForLink_ClassField(this, field));
+      }
+    }
+    return _fields;
+  }
+
+  @override
+  bool get isObject => _unlinkedClass.hasNoSupertype;
+
+  @override
+  String get name => _unlinkedClass.name;
+
+  @override
+  InterfaceType get supertype {
+    if (isObject) {
+      return null;
+    }
+    return _supertype ??= _computeSupertype();
+  }
+
+  /**
+   * Get a list of [TypeParameterType] objects corresponding to the
+   * class's type parameters.
+   */
+  List<TypeParameterType> get typeParameterTypes {
+    if (_typeParameterTypes == null) {
+      _typeParameterTypes = _unlinkedClass.typeParameters
+          .map((UnlinkedTypeParam p) =>
+              new TypeParameterTypeImpl(new TypeParameterElementForLink(p)))
+          .toList();
+    }
+    return _typeParameterTypes;
+  }
+
+  @override
+  ConstructorElementForLink get unnamedConstructor {
+    if (!_unnamedConstructorComputed) {
+      for (ConstructorElementForLink constructor in constructors) {
+        if (constructor.name.isEmpty) {
+          _unnamedConstructor = constructor;
+          break;
+        }
+      }
+      _unnamedConstructorComputed = true;
+    }
+    return _unnamedConstructor;
+  }
+
+  @override
+  DartType buildType(
+      DartType getTypeArgument(int i), List<int> implicitFunctionTypeIndices) {
+    int numTypeParameters = _unlinkedClass.typeParameters.length;
+    if (numTypeParameters != 0) {
+      return new InterfaceTypeImpl(this);
+    } else {
+      if (_type == null) {
+        List<DartType> typeArguments = new List<DartType>(numTypeParameters);
+        for (int i = 0; i < numTypeParameters; i++) {
+          typeArguments[i] = getTypeArgument(i);
+        }
+        _type = new InterfaceTypeImpl.elementWithNameAndArgs(
+            this, name, typeArguments);
+      }
+      return _type;
+    }
+  }
+
+  @override
+  TypeParameterType getTypeParameterType(int index) {
+    List<TypeParameterType> types = typeParameterTypes;
+    return types[types.length - index];
+  }
+
+  @override
+  void link(LinkedUnitBuilder linkedUnit) {
+    for (ConstructorElementForLink constructorElement in constructors) {
+      constructorElement.link(linkedUnit);
+    }
+  }
+
+  InterfaceType _computeSupertype() {
+    if (_unlinkedClass.supertype != null) {
+      DartType supertype =
+          enclosingElement._resolveTypeRef(_unlinkedClass.supertype, this);
+      if (supertype is InterfaceType) {
+        return supertype;
+      }
+      // In the event that the supertype isn't an interface type (which may
+      // happen in the event of erroneous code) just fall through and pretend
+      // the supertype is `Object`.
+    }
+    return enclosingElement.enclosingElement._linker.objectType;
+  }
+}
+
+/**
+ * Element representing an enum resynthesized from a summary during
+ * linking.
+ */
+class ClassElementForLink_Enum extends ClassElementForLink {
+  /**
+   * The unlinked representation of the enum in the summary.
+   */
+  final UnlinkedEnum _unlinkedEnum;
+
+  InterfaceType _type;
+  List<FieldElementForLink_EnumField> _fields;
+
+  ClassElementForLink_Enum(this._unlinkedEnum);
+
+  @override
+  List<ConstructorElementForLink> get constructors => const [];
+
+  @override
+  String get displayName => _unlinkedEnum.name;
+
+  @override
+  List<FieldElementForLink_EnumField> get fields {
+    if (_fields == null) {
+      _fields = <FieldElementForLink_EnumField>[];
+      _fields.add(new FieldElementForLink_EnumField(null));
+      for (UnlinkedEnumValue value in _unlinkedEnum.values) {
+        _fields.add(new FieldElementForLink_EnumField(value));
+      }
+    }
+    return _fields;
+  }
+
+  @override
+  bool get isObject => false;
+
+  @override
+  String get name => _unlinkedEnum.name;
+
+  @override
+  ConstructorElementForLink get unnamedConstructor => null;
+
+  @override
+  DartType buildType(DartType getTypeArgument(int i),
+          List<int> implicitFunctionTypeIndices) =>
+      _type ??= new InterfaceTypeImpl(this);
+
+  @override
+  void link(LinkedUnitBuilder linkedUnit) {}
+}
+
+/**
+ * Element representing a compilation unit resynthesized from a
+ * summary during linking.
+ */
+abstract class CompilationUnitElementForLink implements CompilationUnitElement {
+  /**
+   * The unlinked representation of the compilation unit in the
+   * summary.
+   */
+  final UnlinkedUnit _unlinkedUnit;
+
+  /**
+   * For each entry in [UnlinkedUnit.references], the element referred
+   * to by the reference, or `null` if it hasn't been located yet.
+   */
+  final List<ReferenceableElementForLink> _references;
+
+  List<ClassElementForLink_Class> _types;
+  Map<String, ReferenceableElementForLink> _containedNames;
+  List<TopLevelVariableElementForLink> _topLevelVariables;
+  List<ClassElementForLink_Enum> _enums;
+
+  @override
+  final LibraryElementForLink enclosingElement;
+
+  CompilationUnitElementForLink(
+      this.enclosingElement, UnlinkedUnit unlinkedUnit)
+      : _references = new List<ReferenceableElementForLink>(
+            unlinkedUnit.references.length),
+        _unlinkedUnit = unlinkedUnit;
+
+  @override
+  List<ClassElementForLink_Enum> get enums {
+    if (_enums == null) {
+      _enums = <ClassElementForLink_Enum>[];
+      for (UnlinkedEnum unlinkedEnum in _unlinkedUnit.enums) {
+        _enums.add(new ClassElementForLink_Enum(unlinkedEnum));
+      }
+    }
+    return _enums;
+  }
+
+  /**
+   * Indicates whether this compilation element is part of the build unit
+   * currently being linked.
+   */
+  bool get isInBuildUnit;
+
+  @override
+  List<TopLevelVariableElementForLink> get topLevelVariables {
+    if (_topLevelVariables == null) {
+      _topLevelVariables = <TopLevelVariableElementForLink>[];
+      for (UnlinkedVariable unlinkedVariable in _unlinkedUnit.variables) {
+        _topLevelVariables
+            .add(new TopLevelVariableElementForLink(this, unlinkedVariable));
+      }
+    }
+    return _topLevelVariables;
+  }
+
+  @override
+  List<ClassElementForLink_Class> get types {
+    if (_types == null) {
+      _types = <ClassElementForLink_Class>[];
+      for (UnlinkedClass unlinkedClass in _unlinkedUnit.classes) {
+        _types.add(new ClassElementForLink_Class(this, unlinkedClass));
+      }
+    }
+    return _types;
+  }
+
+  /**
+   * The linked representation of the compilation unit in the summary.
+   */
+  LinkedUnit get _linkedUnit;
+
+  /**
+   * Search the unit for a top level element with the given [name].
+   * If no name is found, return the singleton instance of
+   * [UndefinedElementForLink].
+   */
+  ReferenceableElementForLink getContainedName(name) {
+    if (_containedNames == null) {
+      _containedNames = <String, ReferenceableElementForLink>{};
+      // TODO(paulberry): what's the correct way to handle name conflicts?
+      for (ClassElementForLink_Class type in types) {
+        _containedNames[type.name] = type;
+      }
+      for (ClassElementForLink_Enum enm in enums) {
+        _containedNames[enm.name] = enm;
+      }
+      for (TopLevelVariableElementForLink variable in topLevelVariables) {
+        _containedNames[variable.name] = variable;
+      }
+      // TODO(paulberry): fill in other top level entities (typedefs
+      // and executables).
+    }
+    return _containedNames.putIfAbsent(
+        name, () => UndefinedElementForLink.instance);
+  }
+
+  @override
+  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+
+  /**
+   * Return the element referred to by the given [index] in
+   * [UnlinkedUnit.references].  If the reference is unresolved,
+   * return [UndefinedElementForLink.instance].
+   */
+  ReferenceableElementForLink _resolveRef(int index) {
+    if (_references[index] == null) {
+      UnlinkedReference unlinkedReference = _unlinkedUnit.references[index];
+      LinkedReference linkedReference = _linkedUnit.references[index];
+      String name = unlinkedReference.name;
+      int containingReference = unlinkedReference.prefixReference;
+      if (containingReference != 0 &&
+          _linkedUnit.references[containingReference].kind !=
+              ReferenceKind.prefix) {
+        _references[index] =
+            _resolveRef(containingReference).getContainedName(name);
+      } else if (linkedReference.dependency == 0) {
+        _references[index] = enclosingElement.getContainedName(name);
+      } else {
+        LibraryElementForLink dependency =
+            enclosingElement._getDependency(linkedReference.dependency);
+        _references[index] = dependency.getContainedName(name);
+      }
+    }
+    return _references[index];
+  }
+
+  /**
+   * Resolve an [EntityRef] into a type.  If the reference is
+   * unresolved, return [DynamicTypeImpl.instance].
+   *
+   * TODO(paulberry): or should we have a class representing an
+   * unresolved type, for consistency with the full element model?
+   */
+  DartType _resolveTypeRef(
+      EntityRef type, TypeParameterContext typeParameterContext,
+      {bool defaultVoid: false}) {
+    if (type == null) {
+      if (defaultVoid) {
+        return VoidTypeImpl.instance;
+      } else {
+        return DynamicTypeImpl.instance;
+      }
+    }
+    if (type.paramReference != 0) {
+      return typeParameterContext.getTypeParameterType(type.paramReference);
+    } else if (type.syntheticReturnType != null) {
+      // TODO(paulberry): implement.
+      throw new UnimplementedError();
+    } else {
+      DartType getTypeArgument(int i) {
+        if (i < type.typeArguments.length) {
+          return _resolveTypeRef(type.typeArguments[i], typeParameterContext);
+        } else {
+          return DynamicTypeImpl.instance;
+        }
+      }
+      ReferenceableElementForLink element = _resolveRef(type.reference);
+      return element.buildType(
+          getTypeArgument, type.implicitFunctionTypeIndices);
+    }
+  }
+}
+
+/**
+ * Element representing a compilation unit which is part of the build
+ * unit being linked.
+ */
+class CompilationUnitElementInBuildUnit extends CompilationUnitElementForLink {
+  @override
+  final LinkedUnitBuilder _linkedUnit;
+
+  CompilationUnitElementInBuildUnit(LibraryElementInBuildUnit libraryElement,
+      UnlinkedUnit unlinkedUnit, this._linkedUnit)
+      : super(libraryElement, unlinkedUnit);
+
+  @override
+  bool get isInBuildUnit => true;
+
+  /**
+   * Perform type inference and const cycle detection on this
+   * compilation unit.
+   */
+  void link() {
+    for (ClassElementForLink classElement in types) {
+      classElement.link(_linkedUnit);
+    }
+  }
+
+  /**
+   * Throw away any information produced by a previous call to [link].
+   */
+  void unlink() {
+    _linkedUnit.constCycles.clear();
+    _linkedUnit.references.length = _unlinkedUnit.references.length;
+    _linkedUnit.types.clear();
+  }
+}
+
+/**
+ * Element representing a compilation unit which is depended upon
+ * (either directly or indirectly) by the build unit being linked.
+ */
+class CompilationUnitElementInDependency extends CompilationUnitElementForLink {
+  @override
+  final LinkedUnit _linkedUnit;
+
+  CompilationUnitElementInDependency(LibraryElementInDependency libraryElement,
+      UnlinkedUnit unlinkedUnit, this._linkedUnit)
+      : super(libraryElement, unlinkedUnit);
+
+  @override
+  bool get isInBuildUnit => false;
+}
+
+/**
+ * Instance of [ConstNode] representing a constant constructor.
+ */
+class ConstConstructorNode extends ConstNode {
+  /**
+   * The [ConstructorElement] to which this node refers.
+   */
+  final ConstructorElementForLink constructorElement;
+
+  /**
+   * Once this node has been evaluated, indicates whether the
+   * constructor is free of constant evaluation cycles.
+   */
+  bool isCycleFree = false;
+
+  ConstConstructorNode(this.constructorElement);
+
+  @override
+  List<ConstNode> computeDependencies() {
+    List<ConstNode> dependencies = <ConstNode>[];
+    void safeAddDependency(ConstNode target) {
+      if (target != null) {
+        dependencies.add(target);
+      }
+    }
+    UnlinkedExecutable unlinkedExecutable =
+        constructorElement._unlinkedExecutable;
+    ClassElementForLink_Class enclosingClass =
+        constructorElement.enclosingElement;
+    ConstructorElementForLink redirectedConstructor =
+        _getFactoryRedirectedConstructor();
+    if (redirectedConstructor != null) {
+      if (redirectedConstructor._constNode != null) {
+        safeAddDependency(redirectedConstructor._constNode);
+      }
+    } else if (unlinkedExecutable.isFactory) {
+      // Factory constructor, but getConstRedirectedConstructor returned
+      // null.  This can happen if we're visiting one of the special external
+      // const factory constructors in the SDK, or if the code contains
+      // errors (such as delegating to a non-const constructor, or delegating
+      // to a constructor that can't be resolved).  In any of these cases,
+      // we'll evaluate calls to this constructor without having to refer to
+      // any other constants.  So we don't need to report any dependencies.
+    } else {
+      ClassElementForLink superClass = enclosingClass.supertype?.element;
+      bool defaultSuperInvocationNeeded = true;
+      for (UnlinkedConstructorInitializer constructorInitializer
+          in constructorElement._unlinkedExecutable.constantInitializers) {
+        if (constructorInitializer.kind ==
+            UnlinkedConstructorInitializerKind.superInvocation) {
+          defaultSuperInvocationNeeded = false;
+          if (superClass != null && !superClass.isObject) {
+            ConstructorElementForLink constructor = superClass
+                .getContainedName(constructorInitializer.name)
+                .asConstructor;
+            safeAddDependency(constructor?._constNode);
+          }
+        } else if (constructorInitializer.kind ==
+            UnlinkedConstructorInitializerKind.thisInvocation) {
+          defaultSuperInvocationNeeded = false;
+          ConstructorElementForLink constructor = constructorElement
+              .enclosingElement
+              .getContainedName(constructorInitializer.name)
+              .asConstructor;
+          safeAddDependency(constructor?._constNode);
+        }
+        CompilationUnitElementForLink compilationUnit =
+            constructorElement.enclosingElement.enclosingElement;
+        collectDependencies(
+            dependencies, constructorInitializer.expression, compilationUnit);
+        for (UnlinkedConst unlinkedConst in constructorInitializer.arguments) {
+          collectDependencies(dependencies, unlinkedConst, compilationUnit);
+        }
+      }
+
+      if (defaultSuperInvocationNeeded) {
+        // No explicit superconstructor invocation found, so we need to
+        // manually insert a reference to the implicit superconstructor.
+        if (superClass != null && !superClass.isObject) {
+          ConstructorElementForLink unnamedConstructor =
+              superClass.unnamedConstructor;
+          safeAddDependency(unnamedConstructor?._constNode);
+        }
+      }
+      for (FieldElementForLink field in enclosingClass.fields) {
+        // Note: non-static const isn't allowed but we handle it anyway so
+        // that we won't be confused by incorrect code.
+        if ((field.isFinal || field.isConst) && !field.isStatic) {
+          safeAddDependency(field.asConstVariable);
+        }
+      }
+      for (ParameterElementForLink parameterElement
+          in constructorElement.parameters) {
+        safeAddDependency(parameterElement._constNode);
+      }
+    }
+    return dependencies;
+  }
+
+  /**
+   * If [constructorElement] redirects to another constructor via a factory
+   * redirect, return the constructor it redirects to.
+   */
+  ConstructorElementForLink _getFactoryRedirectedConstructor() {
+    EntityRef redirectedConstructor =
+        constructorElement._unlinkedExecutable.redirectedConstructor;
+    if (redirectedConstructor != null) {
+      return constructorElement.enclosingElement.enclosingElement
+          ._resolveRef(redirectedConstructor.reference)
+          .asConstructor;
+    } else {
+      return null;
+    }
+  }
+}
+
+/**
+ * Specialization of [DependencyWalker] for detecting constant
+ * evaluation cycles.
+ */
+class ConstDependencyWalker extends DependencyWalker<ConstNode> {
+  @override
+  void evaluate(ConstNode v) {
+    if (v is ConstConstructorNode) {
+      v.isCycleFree = true;
+    }
+    v.isEvaluated = true;
+  }
+
+  @override
+  void evaluateScc(List<ConstNode> scc) {
+    for (ConstNode v in scc) {
+      if (v is ConstConstructorNode) {
+        v.isCycleFree = false;
+      }
+      v.isEvaluated = true;
+    }
+  }
+}
+
+/**
+ * Specialization of [Node] used to construct the constant evaluation
+ * dependency graph.
+ */
+abstract class ConstNode extends Node<ConstNode> {
+  @override
+  bool isEvaluated = false;
+
+  /**
+   * Collect the dependencies in [unlinkedConst] (which should be
+   * interpreted relative to [compilationUnit]) and store them in
+   * [dependencies].
+   */
+  void collectDependencies(
+      List<ConstNode> dependencies,
+      UnlinkedConst unlinkedConst,
+      CompilationUnitElementForLink compilationUnit) {
+    if (unlinkedConst == null) {
+      return;
+    }
+    int refPtr = 0;
+    for (UnlinkedConstOperation operation in unlinkedConst.operations) {
+      switch (operation) {
+        case UnlinkedConstOperation.pushReference:
+          EntityRef ref = unlinkedConst.references[refPtr++];
+          ConstVariableNode variable =
+              compilationUnit._resolveRef(ref.reference).asConstVariable;
+          if (variable != null) {
+            dependencies.add(variable);
+          }
+          break;
+        case UnlinkedConstOperation.makeTypedList:
+          refPtr++;
+          break;
+        case UnlinkedConstOperation.makeTypedMap:
+          refPtr += 2;
+          break;
+        case UnlinkedConstOperation.invokeConstructor:
+          EntityRef ref = unlinkedConst.references[refPtr++];
+          ConstructorElementForLink element =
+              compilationUnit._resolveRef(ref.reference).asConstructor;
+          if (element?._constNode != null) {
+            dependencies.add(element._constNode);
+          }
+          break;
+        default:
+          break;
+      }
+    }
+    assert(refPtr == unlinkedConst.references.length);
+  }
+}
+
+/**
+ * Instance of [ConstNode] representing a parameter with a default
+ * value.
+ */
+class ConstParameterNode extends ConstNode {
+  /**
+   * The [ParameterElement] to which this node refers.
+   */
+  final ParameterElementForLink parameterElement;
+
+  ConstParameterNode(this.parameterElement);
+
+  @override
+  List<ConstNode> computeDependencies() {
+    List<ConstNode> dependencies = <ConstNode>[];
+    collectDependencies(
+        dependencies,
+        parameterElement._unlinkedParam.defaultValue,
+        parameterElement.compilationUnit);
+    return dependencies;
+  }
+}
+
+/**
+ * Element representing a constructor resynthesized from a summary
+ * during linking.
+ */
+class ConstructorElementForLink
+    implements ConstructorElement, ReferenceableElementForLink {
+  /**
+   * The unlinked representation of the constructor in the summary.
+   */
+  final UnlinkedExecutable _unlinkedExecutable;
+
+  /**
+   * If this is a `const` constructor and the enclosing library is
+   * part of the build unit being linked, the constructor's node in
+   * the constant evaluation dependency graph.  Otherwise `null`.
+   */
+  ConstConstructorNode _constNode;
+
+  @override
+  final ClassElementForLink_Class enclosingElement;
+
+  List<ParameterElementForLink> _parameters;
+
+  ConstructorElementForLink(this.enclosingElement, this._unlinkedExecutable) {
+    if (enclosingElement.enclosingElement.isInBuildUnit &&
+        _unlinkedExecutable.constCycleSlot != 0) {
+      _constNode = new ConstConstructorNode(this);
+    }
+  }
+
+  @override
+  ConstructorElementForLink get asConstructor => this;
+
+  @override
+  ConstVariableNode get asConstVariable => null;
+
+  @override
+  bool get isCycleFree {
+    if (!_constNode.isEvaluated) {
+      new ConstDependencyWalker().walk(_constNode);
+    }
+    return _constNode.isCycleFree;
+  }
+
+  @override
+  String get name => _unlinkedExecutable.name;
+
+  @override
+  List<ParameterElementForLink> get parameters {
+    if (_parameters == null) {
+      _parameters = <ParameterElementForLink>[];
+      for (UnlinkedParam unlinkedParam in _unlinkedExecutable.parameters) {
+        _parameters.add(new ParameterElementForLink(
+            unlinkedParam, enclosingElement.enclosingElement));
+      }
+    }
+    return _parameters;
+  }
+
+  @override
+  DartType buildType(DartType getTypeArgument(int i),
+          List<int> implicitFunctionTypeIndices) =>
+      DynamicTypeImpl.instance;
+
+  @override
+  ReferenceableElementForLink getContainedName(String name) =>
+      UndefinedElementForLink.instance;
+
+  /**
+   * Perform const cycle detection on this constructor.
+   */
+  void link(LinkedUnitBuilder linkedUnit) {
+    if (_constNode != null && !isCycleFree) {
+      linkedUnit.constCycles.add(_unlinkedExecutable.constCycleSlot);
+    }
+  }
+
+  @override
+  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
+
+/**
+ * Instance of [ConstNode] representing a constant field or constant
+ * top level variable.
+ */
+class ConstVariableNode extends ConstNode {
+  /**
+   * The [FieldElement] or [TopLevelVariableElement] to which this
+   * node refers.
+   */
+  final VariableElementForLink variableElement;
+
+  ConstVariableNode(this.variableElement);
+
+  @override
+  List<ConstNode> computeDependencies() {
+    List<ConstNode> dependencies = <ConstNode>[];
+    collectDependencies(
+        dependencies,
+        variableElement.unlinkedVariable.constExpr,
+        variableElement.compilationUnit);
+    return dependencies;
+  }
+}
+
+/**
+ * An instance of [DependencyWalker] contains the core algorithms for
+ * walking a dependency graph and evaluating nodes in a safe order.
+ */
+abstract class DependencyWalker<NodeType extends Node<NodeType>> {
+  /**
+   * Called by [walk] to evaluate a single non-cyclical node, after
+   * all that node's dependencies have been evaluated.
+   */
+  void evaluate(NodeType v);
+
+  /**
+   * Called by [walk] to evaluate a strongly connected component
+   * containing one or more nodes.  All dependencies of the strongly
+   * connected component have been evaluated.
+   */
+  void evaluateScc(List<NodeType> scc);
+
+  /**
+   * Walk the dependency graph starting at [startingPoint], finding
+   * strongly connected components and evaluating them in a safe order
+   * by calling [evaluate] and [evaluateScc].
+   *
+   * This is an implementation of Tarjan's strongly connected
+   * components algorithm
+   * (https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm).
+   */
+  void walk(NodeType startingPoint) {
+    // TODO(paulberry): consider rewriting in a non-recursive way so
+    // that long dependency chains don't cause stack overflow.
+
+    // TODO(paulberry): in the event that an exception occurs during
+    // the walk, restore the state of the [Node] data structures so
+    // that further evaluation will be safe.
+
+    // The index which will be assigned to the next node that is
+    // freshly visited.
+    int index = 1;
+
+    // Stack of nodes which have been seen so far and whose strongly
+    // connected component is still being determined.  Nodes are only
+    // popped off the stack when they are evaluated, so sometimes the
+    // stack contains nodes that were visited after the current node.
+    List<NodeType> stack = <NodeType>[];
+
+    void strongConnect(NodeType node) {
+      bool hasTrivialCycle = false;
+
+      // Assign the current node an index and add it to the stack.  We
+      // haven't seen any of its dependencies yet, so set its lowLink
+      // to its index, indicating that so far it is the only node in
+      // its strongly connected component.
+      node.index = node.lowLink = index++;
+      stack.add(node);
+
+      // Consider the node's dependencies one at a time.
+      for (NodeType dependency in node.dependencies) {
+        // If the dependency has already been evaluated, it can't be
+        // part of this node's strongly connected component, so we can
+        // skip it.
+        if (dependency.isEvaluated) {
+          continue;
+        }
+        if (identical(node, dependency)) {
+          // If a node includes itself as a dependency, there is no need to
+          // explore the dependency further.
+          hasTrivialCycle = true;
+        } else if (dependency.index == 0) {
+          // The dependency hasn't been seen yet, so recurse on it.
+          strongConnect(dependency);
+          // If the dependency's lowLink refers to a node that was
+          // visited before the current node, that means that the
+          // current node, the dependency, and the node referred to by
+          // the dependency's lowLink are all part of the same
+          // strongly connected component, so we need to update the
+          // current node's lowLink accordingly.
+          if (dependency.lowLink < node.lowLink) {
+            node.lowLink = dependency.lowLink;
+          }
+        } else {
+          // The dependency has already been seen, so it is part of
+          // the current node's strongly connected component.  If it
+          // was visited earlier than the current node's lowLink, then
+          // it is a new addition to the current node's strongly
+          // connected component, so we need to update the current
+          // node's lowLink accordingly.
+          if (dependency.index < node.lowLink) {
+            node.lowLink = dependency.index;
+          }
+        }
+      }
+
+      // If the current node's lowLink is the same as its index, then
+      // we have finished visiting a strongly connected component, so
+      // pop the stack and evaluate it before moving on.
+      if (node.lowLink == node.index) {
+        // The strongly connected component has only one node.  If there is a
+        // cycle, it's a trivial one.
+        if (identical(stack.last, node)) {
+          stack.removeLast();
+          if (hasTrivialCycle) {
+            evaluateScc(<NodeType>[node]);
+          } else {
+            evaluate(node);
+          }
+        } else {
+          // There are multiple nodes in the strongly connected
+          // component.
+          List<NodeType> scc = <NodeType>[];
+          while (true) {
+            NodeType otherNode = stack.removeLast();
+            scc.add(otherNode);
+            if (identical(otherNode, node)) {
+              break;
+            }
+          }
+          evaluateScc(scc);
+        }
+      }
+    }
+
+    // Kick off the algorithm starting with the starting point.
+    strongConnect(startingPoint);
+  }
+}
+
+/**
+ * Element representing a field resynthesized from a summary during
+ * linking.
+ */
+abstract class FieldElementForLink
+    implements FieldElement, ReferenceableElementForLink {}
+
+/**
+ * Specialization of [FieldElementForLink] for class fields.
+ */
+class FieldElementForLink_ClassField extends VariableElementForLink
+    implements FieldElementForLink {
+  @override
+  final ClassElementForLink_Class enclosingElement;
+
+  FieldElementForLink_ClassField(ClassElementForLink_Class enclosingElement,
+      UnlinkedVariable unlinkedVariable)
+      : enclosingElement = enclosingElement,
+        super(unlinkedVariable, enclosingElement.enclosingElement);
+
+  @override
+  bool get isStatic => unlinkedVariable.isStatic;
+}
+
+/**
+ * Specialization of [FieldElementForLink] for enum fields.
+ */
+class FieldElementForLink_EnumField extends FieldElementForLink
+    implements FieldElement {
+  /**
+   * The unlinked representation of the field in the summary, or `null` if this
+   * is an enum's `values` field.
+   */
+  final UnlinkedEnumValue unlinkedEnumValue;
+
+  FieldElementForLink_EnumField(this.unlinkedEnumValue);
+
+  @override
+  ConstructorElementForLink get asConstructor => null;
+
+  @override
+  ConstVariableNode get asConstVariable {
+    // Even though enum fields are constants, there is no need to include them
+    // in the const dependency graph because they can't participate in a
+    // circularity.
+    return null;
+  }
+
+  @override
+  bool get isStatic => true;
+
+  @override
+  String get name =>
+      unlinkedEnumValue == null ? 'values' : unlinkedEnumValue.name;
+
+  @override
+  DartType buildType(DartType getTypeArgument(int i),
+          List<int> implicitFunctionTypeIndices) =>
+      DynamicTypeImpl.instance;
+
+  @override
+  ReferenceableElementForLink getContainedName(String name) =>
+      UndefinedElementForLink.instance;
+
+  @override
+  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
+
+/**
+ * Element representing a library resynthesied from a summary during
+ * linking.  The type parameter, [UnitElement], represents the type
+ * that will be used for the compilation unit elements.
+ */
+abstract class LibraryElementForLink<
+        UnitElement extends CompilationUnitElementForLink>
+    implements LibraryElement {
+  /**
+   * Pointer back to the linker.
+   */
+  final _Linker _linker;
+
+  /**
+   * The absolute URI of this library.
+   */
+  final Uri _absoluteUri;
+
+  List<UnitElement> _units;
+  final Map<String, ReferenceableElementForLink> _containedNames =
+      <String, ReferenceableElementForLink>{};
+  final List<LibraryElementForLink> _dependencies = <LibraryElementForLink>[];
+
+  LibraryElementForLink(this._linker, this._absoluteUri) {
+    _dependencies.length = _linkedLibrary.dependencies.length;
+  }
+
+  @override
+  List<UnitElement> get units {
+    if (_units == null) {
+      UnlinkedUnit definingUnit = _linker.getUnit(_absoluteUri.toString());
+      _units = <UnitElement>[_makeUnitElement(definingUnit, 0)];
+      int numParts = definingUnit.parts.length;
+      for (int i = 0; i < numParts; i++) {
+        // TODO(paulberry): make sure we handle the case where Uri.parse fails.
+        // TODO(paulberry): make sure we handle the case where
+        // resolveRelativeUri fails.
+        UnlinkedUnit partUnit = _linker.getUnit(resolveRelativeUri(
+                _absoluteUri, Uri.parse(definingUnit.publicNamespace.parts[i]))
+            .toString());
+        _units.add(
+            _makeUnitElement(partUnit ?? new UnlinkedUnitBuilder(), i + 1));
+      }
+    }
+    return _units;
+  }
+
+  /**
+   * The linked representation of the library in the summary.
+   */
+  LinkedLibrary get _linkedLibrary;
+
+  /**
+   * Search all the units for a top level element with the given
+   * [name].  If no name is found, return the singleton instance of
+   * [UndefinedElementForLink].
+   */
+  ReferenceableElementForLink getContainedName(name) =>
+      _containedNames.putIfAbsent(name, () {
+        for (UnitElement unit in units) {
+          ReferenceableElementForLink element = unit.getContainedName(name);
+          if (!identical(element, UndefinedElementForLink.instance)) {
+            return element;
+          }
+        }
+        return UndefinedElementForLink.instance;
+      });
+
+  @override
+  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+
+  /**
+   * Return the [LibraryElement] corresponding to the given dependency [index].
+   */
+  LibraryElementForLink _getDependency(int index) {
+    return _dependencies[index] ??= _linker.getLibrary(resolveRelativeUri(
+        _absoluteUri, Uri.parse(_linkedLibrary.dependencies[index].uri)));
+  }
+
+  /**
+   * Create a [UnitElement] for one of the library's compilation
+   * units.
+   */
+  UnitElement _makeUnitElement(UnlinkedUnit unlinkedUnit, int i);
+}
+
+/**
+ * Element representing a library which is part of the build unit
+ * being linked.
+ */
+class LibraryElementInBuildUnit
+    extends LibraryElementForLink<CompilationUnitElementInBuildUnit> {
+  @override
+  final LinkedLibraryBuilder _linkedLibrary;
+
+  LibraryElementInBuildUnit(
+      _Linker linker, Uri absoluteUri, this._linkedLibrary)
+      : super(linker, absoluteUri);
+
+  /**
+   * Perform type inference and const cycle detection on this library.
+   */
+  void link() {
+    for (CompilationUnitElementInBuildUnit unit in units) {
+      unit.link();
+    }
+  }
+
+  /**
+   * Throw away any information produced by a previous call to [link].
+   */
+  void unlink() {
+    _linkedLibrary.dependencies.length =
+        _linkedLibrary.numPrelinkedDependencies;
+    for (CompilationUnitElementInBuildUnit unit in units) {
+      unit.link();
+    }
+  }
+
+  @override
+  CompilationUnitElementInBuildUnit _makeUnitElement(
+          UnlinkedUnit unlinkedUnit, int i) =>
+      new CompilationUnitElementInBuildUnit(
+          this, unlinkedUnit, _linkedLibrary.units[i]);
+}
+
+/**
+ * Element representing a library which is depended upon (either
+ * directly or indirectly) by the build unit being linked.
+ */
+class LibraryElementInDependency
+    extends LibraryElementForLink<CompilationUnitElementInDependency> {
+  @override
+  final LinkedLibrary _linkedLibrary;
+
+  LibraryElementInDependency(
+      _Linker linker, Uri absoluteUri, this._linkedLibrary)
+      : super(linker, absoluteUri);
+
+  @override
+  CompilationUnitElementInDependency _makeUnitElement(
+          UnlinkedUnit unlinkedUnit, int i) =>
+      new CompilationUnitElementInDependency(
+          this, unlinkedUnit, _linkedLibrary.units[i]);
+}
+
+/**
+ * Instances of [Node] represent nodes in a dependency graph.  The
+ * type parameter, [NodeType], is the derived type (this affords some
+ * extra type safety by making it difficult to accidentally construct
+ * bridges between unrelated dependency graphs).
+ */
+abstract class Node<NodeType> {
+  /**
+   * Index used by Tarjan's strongly connected components algorithm.
+   * Zero means the node has not been visited yet; a nonzero value
+   * counts the order in which the node was visited.
+   */
+  int index = 0;
+
+  /**
+   * Low link used by Tarjan's strongly connected components
+   * algorithm.  This represents the smallest [index] of all the nodes
+   * in the strongly connected component to which this node belongs.
+   */
+  int lowLink = 0;
+
+  List<NodeType> _dependencies;
+
+  /**
+   * Retrieve the dependencies of this node.
+   */
+  List<NodeType> get dependencies => _dependencies ??= computeDependencies();
+
+  /**
+   * Indicates whether this node has been evaluated yet.
+   */
+  bool get isEvaluated;
+
+  /**
+   * Compute the dependencies of this node.
+   */
+  List<NodeType> computeDependencies();
+}
+
+/**
+ * Element used for references that result from trying to access a nonstatic
+ * member of an element that is not a container (e.g. accessing the "length"
+ * property of a constant).
+ */
+class NonstaticMemberElementForLink implements ReferenceableElementForLink {
+  /**
+   * If the thing from which a member was accessed is a constant, the
+   * associated [ConstNode].  Otherwise `null`.
+   */
+  final ConstVariableNode _constNode;
+
+  NonstaticMemberElementForLink(this._constNode);
+
+  @override
+  ConstructorElementForLink get asConstructor => null;
+
+  @override
+  ConstVariableNode get asConstVariable => _constNode;
+
+  @override
+  DartType buildType(DartType getTypeArgument(int i),
+          List<int> implicitFunctionTypeIndices) =>
+      DynamicTypeImpl.instance;
+
+  @override
+  ReferenceableElementForLink getContainedName(String name) => this;
+}
+
+/**
+ * Element representing a function or method parameter resynthesized
+ * from a summary during linking.
+ */
+class ParameterElementForLink implements ParameterElement {
+  /**
+   * The unlinked representation of the parameter in the summary.
+   */
+  final UnlinkedParam _unlinkedParam;
+
+  /**
+   * If this parameter has a default value and the enclosing library
+   * is part of the build unit being linked, the parameter's node in
+   * the constant evaluation dependency graph.  Otherwise `null`.
+   */
+  ConstNode _constNode;
+
+  /**
+   * The compilation unit in which this parameter appears.
+   */
+  final CompilationUnitElementForLink compilationUnit;
+
+  ParameterElementForLink(this._unlinkedParam, this.compilationUnit) {
+    if (_unlinkedParam.defaultValue != null) {
+      _constNode = new ConstParameterNode(this);
+    }
+  }
+
+  @override
+  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
+
+/**
+ * Abstract base class representing an element which can be the target
+ * of a reference.
+ */
+abstract class ReferenceableElementForLink {
+  /**
+   * If this element can be used in a constructor invocation context,
+   * return the associated constructor (which may be `this` or some
+   * other element).  Otherwise return `null`.
+   */
+  ConstructorElementForLink get asConstructor;
+
+  /**
+   * If this element can be used in a getter context to refer to a
+   * constant variable, return the [ConstVariableNode] for the
+   * constant value.  Otherwise return `null`.
+   */
+  ConstVariableNode get asConstVariable;
+
+  /**
+   * Return the type indicated by this element when it is used in a
+   * type instantiation context.  If this element can't legally be
+   * instantiated as a type, return the dynamic type.
+   */
+  DartType buildType(
+      DartType getTypeArgument(int i), List<int> implicitFunctionTypeIndices);
+
+  /**
+   * If this element contains other named elements, return the
+   * contained element having the given [name].  If this element can't
+   * contain other named elements, or it doesn't contain an element
+   * with the given name, return the singleton of
+   * [UndefinedElementForLink].
+   */
+  ReferenceableElementForLink getContainedName(String name);
+}
+
+/**
+ * Element representing a top level variable resynthesized from a
+ * summary during linking.
+ */
+class TopLevelVariableElementForLink extends VariableElementForLink
+    implements TopLevelVariableElement {
+  TopLevelVariableElementForLink(CompilationUnitElement enclosingElement,
+      UnlinkedVariable unlinkedVariable)
+      : super(unlinkedVariable, enclosingElement);
+
+  @override
+  bool get isStatic => true;
+}
+
+/**
+ * Interface representing elements which can serve as the context within which
+ * type parameter indices are interpreted.
+ */
+abstract class TypeParameterContext {
+  /**
+   * Convert the given [index] into a type parameter type.
+   */
+  TypeParameterType getTypeParameterType(int index);
+}
+
+/**
+ * Element representing a type parameter resynthesized from a summary during
+ * linking.
+ */
+class TypeParameterElementForLink implements TypeParameterElement {
+  /**
+   * The unlinked representation of the type parameter in the summary.
+   */
+  final UnlinkedTypeParam _unlinkedTypeParam;
+
+  TypeParameterElementForLink(this._unlinkedTypeParam);
+
+  @override
+  String get name => _unlinkedTypeParam.name;
+
+  @override
+  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
+
+/**
+ * Singleton element used for unresolved references.
+ */
+class UndefinedElementForLink implements ReferenceableElementForLink {
+  static const UndefinedElementForLink instance =
+      const UndefinedElementForLink._();
+
+  const UndefinedElementForLink._();
+
+  @override
+  ConstructorElementForLink get asConstructor => null;
+
+  @override
+  ConstVariableNode get asConstVariable => null;
+
+  @override
+  DartType buildType(DartType getTypeArgument(int i),
+          List<int> implicitFunctionTypeIndices) =>
+      DynamicTypeImpl.instance;
+
+  @override
+  ReferenceableElementForLink getContainedName(String name) => this;
+}
+
+/**
+ * Element representing a top level variable resynthesized from a
+ * summary during linking.
+ */
+class VariableElementForLink
+    implements VariableElement, ReferenceableElementForLink {
+  /**
+   * The unlinked representation of the variable in the summary.
+   */
+  final UnlinkedVariable unlinkedVariable;
+
+  /**
+   * If this variable is declared `const` and the enclosing library is
+   * part of the build unit being linked, the variable's node in the
+   * constant evaluation dependency graph.  Otherwise `null`.
+   */
+  ConstNode _constNode;
+
+  /**
+   * The compilation unit in which this variable appears.
+   */
+  final CompilationUnitElementForLink compilationUnit;
+
+  VariableElementForLink(this.unlinkedVariable, this.compilationUnit) {
+    if (compilationUnit.isInBuildUnit && unlinkedVariable.constExpr != null) {
+      _constNode = new ConstVariableNode(this);
+    }
+  }
+
+  @override
+  ConstructorElementForLink get asConstructor => null;
+
+  @override
+  ConstVariableNode get asConstVariable => _constNode;
+
+  @override
+  bool get isConst => unlinkedVariable.isConst;
+
+  @override
+  bool get isFinal => unlinkedVariable.isFinal;
+
+  @override
+  bool get isStatic;
+
+  @override
+  String get name => unlinkedVariable.name;
+
+  @override
+  DartType buildType(DartType getTypeArgument(int i),
+          List<int> implicitFunctionTypeIndices) =>
+      DynamicTypeImpl.instance;
+
+  ReferenceableElementForLink getContainedName(String name) {
+    return new NonstaticMemberElementForLink(_constNode);
+  }
+
+  @override
+  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
+
+/**
+ * Instances of [_Linker] contain the necessary information to link
+ * together a single build unit.
+ */
+class _Linker {
+  /**
+   * Callback to ask the client for a [LinkedLibrary] for a
+   * dependency.
+   */
+  final GetDependencyCallback getDependency;
+
+  /**
+   * Callback to ask the client for an [UnlinkedUnit].
+   */
+  final GetUnitCallback getUnit;
+
+  /**
+   * Map containing all library elements accessed during linking,
+   * whether they are part of the build unit being linked or whether
+   * they are dependencies.
+   */
+  final Map<Uri, LibraryElementForLink> _libraries =
+      <Uri, LibraryElementForLink>{};
+
+  /**
+   * List of library elements for the libraries in the build unit
+   * being linked.
+   */
+  final List<LibraryElementInBuildUnit> _librariesInBuildUnit =
+      <LibraryElementInBuildUnit>[];
+
+  InterfaceType _objectType;
+  LibraryElementForLink _coreLibrary;
+
+  _Linker(Map<String, LinkedLibraryBuilder> linkedLibraries, this.getDependency,
+      this.getUnit) {
+    // Create elements for the libraries to be linked.  The rest of
+    // the element model will be created on demand.
+    linkedLibraries
+        .forEach((String absoluteUri, LinkedLibraryBuilder linkedLibrary) {
+      Uri uri = Uri.parse(absoluteUri);
+      _librariesInBuildUnit.add(_libraries[uri] =
+          new LibraryElementInBuildUnit(this, uri, linkedLibrary));
+    });
+  }
+
+  /**
+   * Get the library element for `dart:core`.
+   */
+  LibraryElementForLink get coreLibrary =>
+      _coreLibrary ??= getLibrary(Uri.parse('dart:core'));
+
+  /**
+   * Get the `InterfaceType` for the type `Object`.
+   */
+  InterfaceType get objectType => _objectType ??= coreLibrary
+      .getContainedName('Object')
+      .buildType((int i) => DynamicTypeImpl.instance, const []);
+
+  /**
+   * Get the library element for the library having the given [uri].
+   */
+  LibraryElementForLink getLibrary(Uri uri) => _libraries.putIfAbsent(
+      uri,
+      () => new LibraryElementInDependency(
+          this, uri, getDependency(uri.toString())));
+
+  /**
+   * Perform type inference and const cycle detection on all libraries
+   * in the build unit being linked.
+   */
+  void link() {
+    for (LibraryElementInBuildUnit library in _librariesInBuildUnit) {
+      library.link();
+    }
+    // TODO(paulberry): set dependencies.
+  }
+
+  /**
+   * Throw away any information produced by a previous call to [link].
+   */
+  void unlink() {
+    for (LibraryElementInBuildUnit library in _librariesInBuildUnit) {
+      library.unlink();
+    }
+  }
+}
diff --git a/pkg/analyzer/lib/src/summary/package_bundle_reader.dart b/pkg/analyzer/lib/src/summary/package_bundle_reader.dart
index a58bfd3..59c1951 100644
--- a/pkg/analyzer/lib/src/summary/package_bundle_reader.dart
+++ b/pkg/analyzer/lib/src/summary/package_bundle_reader.dart
@@ -4,8 +4,10 @@
 import 'package:analyzer/src/context/cache.dart';
 import 'package:analyzer/src/context/context.dart';
 import 'package:analyzer/src/generated/engine.dart';
+import 'package:analyzer/src/generated/java_io.dart';
 import 'package:analyzer/src/generated/resolver.dart';
 import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/generated/source_io.dart';
 import 'package:analyzer/src/summary/idl.dart';
 import 'package:analyzer/src/summary/resynthesize.dart';
 import 'package:analyzer/src/summary/summary_sdk.dart';
@@ -15,32 +17,15 @@
 import 'package:path/path.dart' as pathos;
 
 /**
- * If [uri] has the `package` scheme in form of `package:pkg/file.dart`,
- * return the `pkg` name.  Otherwise return `null`.
- */
-String _getPackageName(Uri uri) {
-  if (uri.scheme != 'package') {
-    return null;
-  }
-  String path = uri.path;
-  int index = path.indexOf('/');
-  if (index == -1) {
-    return null;
-  }
-  return path.substring(0, index);
-}
-
-/**
  * The [ResultProvider] that provides results from input package summaries.
  */
 class InputPackagesResultProvider extends ResultProvider {
   final InternalAnalysisContext _context;
-  final Map<String, String> _packageSummaryInputs;
 
   _FileBasedSummaryResynthesizer _resynthesizer;
   SummaryResultProvider _sdkProvider;
 
-  InputPackagesResultProvider(this._context, this._packageSummaryInputs) {
+  InputPackagesResultProvider(this._context, SummaryDataStore dataStore) {
     InternalAnalysisContext sdkContext = _context.sourceFactory.dartSdk.context;
     _sdkProvider = sdkContext.resultProvider;
     // Set the type provider to prevent the context from computing it.
@@ -52,7 +37,7 @@
         _context.typeProvider,
         _context.sourceFactory,
         _context.analysisOptions.strongMode,
-        _packageSummaryInputs.values.toList());
+        dataStore);
   }
 
   @override
@@ -65,12 +50,11 @@
     if (target is Source) {
       Uri uri = target.uri;
       // We know how to server results to input packages.
-      String sourcePackageName = _getPackageName(uri);
-      if (!_packageSummaryInputs.containsKey(sourcePackageName)) {
+      String uriString = uri.toString();
+      if (!_resynthesizer.hasLibrarySummary(uriString)) {
         return false;
       }
       // Provide known results.
-      String uriString = uri.toString();
       if (result == LIBRARY_ELEMENT1 ||
           result == LIBRARY_ELEMENT2 ||
           result == LIBRARY_ELEMENT3 ||
@@ -91,11 +75,11 @@
         entry.setValue(result, true, TargetedResult.EMPTY_LIST);
         return true;
       } else if (result == SOURCE_KIND) {
-        if (_resynthesizer.linkedMap.containsKey(uriString)) {
+        if (_resynthesizer._dataStore.linkedMap.containsKey(uriString)) {
           entry.setValue(result, SourceKind.LIBRARY, TargetedResult.EMPTY_LIST);
           return true;
         }
-        if (_resynthesizer.unlinkedMap.containsKey(uriString)) {
+        if (_resynthesizer._dataStore.unlinkedMap.containsKey(uriString)) {
           entry.setValue(result, SourceKind.PART, TargetedResult.EMPTY_LIST);
           return true;
         }
@@ -107,80 +91,45 @@
 }
 
 /**
- * The [UriResolver] that knows about sources that are parts of packages which
- * are served from their summaries.
+ * The [UriResolver] that knows about sources that are served from their
+ * summaries.
  */
 class InSummaryPackageUriResolver extends UriResolver {
-  final Map<String, String> _packageSummaryInputs;
+  final SummaryDataStore _dataStore;
 
-  InSummaryPackageUriResolver(this._packageSummaryInputs);
+  InSummaryPackageUriResolver(this._dataStore);
 
   @override
   Source resolveAbsolute(Uri uri, [Uri actualUri]) {
     actualUri ??= uri;
-    String packageName = _getPackageName(actualUri);
-    if (_packageSummaryInputs.containsKey(packageName)) {
-      return new _InSummarySource(actualUri);
+    UnlinkedUnit unit = _dataStore.unlinkedMap[uri.toString()];
+    if (unit != null) {
+      String summaryPath = _dataStore.uriToSummaryPath[uri.toString()];
+      if (unit.fallbackModePath.isNotEmpty) {
+        return new _InSummaryFallbackSource(
+            new JavaFile(unit.fallbackModePath), actualUri, summaryPath);
+      } else {
+        return new InSummarySource(actualUri, summaryPath);
+      }
     }
     return null;
   }
 }
 
 /**
- * A concrete resynthesizer that serves summaries from given file paths.
- */
-class _FileBasedSummaryResynthesizer extends SummaryResynthesizer {
-  final Map<String, UnlinkedUnit> unlinkedMap = <String, UnlinkedUnit>{};
-  final Map<String, LinkedLibrary> linkedMap = <String, LinkedLibrary>{};
-
-  _FileBasedSummaryResynthesizer(
-      SummaryResynthesizer parent,
-      AnalysisContext context,
-      TypeProvider typeProvider,
-      SourceFactory sourceFactory,
-      bool strongMode,
-      List<String> summaryPaths)
-      : super(parent, context, typeProvider, sourceFactory, strongMode) {
-    summaryPaths.forEach(_fillMaps);
-  }
-
-  @override
-  LinkedLibrary getLinkedSummary(String uri) {
-    return linkedMap[uri];
-  }
-
-  @override
-  UnlinkedUnit getUnlinkedSummary(String uri) {
-    return unlinkedMap[uri];
-  }
-
-  @override
-  bool hasLibrarySummary(String uri) {
-    return linkedMap.containsKey(uri);
-  }
-
-  void _fillMaps(String path) {
-    io.File file = new io.File(path);
-    List<int> buffer = file.readAsBytesSync();
-    PackageBundle bundle = new PackageBundle.fromBuffer(buffer);
-    for (int i = 0; i < bundle.unlinkedUnitUris.length; i++) {
-      unlinkedMap[bundle.unlinkedUnitUris[i]] = bundle.unlinkedUnits[i];
-    }
-    for (int i = 0; i < bundle.linkedLibraryUris.length; i++) {
-      linkedMap[bundle.linkedLibraryUris[i]] = bundle.linkedLibraries[i];
-    }
-  }
-}
-
-/**
  * A placeholder of a source that is part of a package whose analysis results
  * are served from its summary.  This source uses its URI as [fullName] and has
  * empty contents.
  */
-class _InSummarySource extends Source {
+class InSummarySource extends Source {
   final Uri uri;
 
-  _InSummarySource(this.uri);
+  /**
+   * The summary file where this source was defined.
+   */
+  final String summaryPath;
+
+  InSummarySource(this.uri, this.summaryPath);
 
   @override
   TimestampedData<String> get contents => new TimestampedData<String>(0, '');
@@ -208,17 +157,106 @@
 
   @override
   bool operator ==(Object object) =>
-      object is _InSummarySource && object.uri == uri;
+      object is InSummarySource && object.uri == uri;
 
   @override
   bool exists() => true;
 
   @override
-  Uri resolveRelativeUri(Uri relativeUri) {
-    Uri baseUri = uri;
-    return baseUri.resolveUri(relativeUri);
+  String toString() => uri.toString();
+}
+
+/**
+ * A [SummaryDataStore] is a container for the data extracted from a set of
+ * summary package bundles.  It contains maps which can be used to find linked
+ * and unlinked summaries by URI.
+ */
+class SummaryDataStore {
+  /**
+   * Map from the URI of a compilation unit to the unlinked summary of that
+   * compilation unit.
+   */
+  final Map<String, UnlinkedUnit> unlinkedMap = <String, UnlinkedUnit>{};
+
+  /**
+   * Map from the URI of a library to the linked summary of that library.
+   */
+  final Map<String, LinkedLibrary> linkedMap = <String, LinkedLibrary>{};
+
+  /**
+   * Map from the URI of a library to the summary path that contained it.
+   */
+  final Map<String, String> uriToSummaryPath = <String, String>{};
+
+  SummaryDataStore(Iterable<String> summaryPaths) {
+    summaryPaths.forEach(_fillMaps);
+  }
+
+  /**
+   * Add the given [bundle] loaded from the file with the given [path].
+   */
+  void addBundle(String path, PackageBundle bundle) {
+    for (int i = 0; i < bundle.unlinkedUnitUris.length; i++) {
+      String uri = bundle.unlinkedUnitUris[i];
+      uriToSummaryPath[uri] = path;
+      unlinkedMap[uri] = bundle.unlinkedUnits[i];
+    }
+    for (int i = 0; i < bundle.linkedLibraryUris.length; i++) {
+      String uri = bundle.linkedLibraryUris[i];
+      linkedMap[uri] = bundle.linkedLibraries[i];
+    }
+  }
+
+  void _fillMaps(String path) {
+    io.File file = new io.File(path);
+    List<int> buffer = file.readAsBytesSync();
+    PackageBundle bundle = new PackageBundle.fromBuffer(buffer);
+    addBundle(path, bundle);
+  }
+}
+
+/**
+ * A concrete resynthesizer that serves summaries from given file paths.
+ */
+class _FileBasedSummaryResynthesizer extends SummaryResynthesizer {
+  final SummaryDataStore _dataStore;
+
+  _FileBasedSummaryResynthesizer(
+      SummaryResynthesizer parent,
+      AnalysisContext context,
+      TypeProvider typeProvider,
+      SourceFactory sourceFactory,
+      bool strongMode,
+      this._dataStore)
+      : super(parent, context, typeProvider, sourceFactory, strongMode);
+
+  @override
+  LinkedLibrary getLinkedSummary(String uri) {
+    return _dataStore.linkedMap[uri];
   }
 
   @override
-  String toString() => uri.toString();
+  UnlinkedUnit getUnlinkedSummary(String uri) {
+    return _dataStore.unlinkedMap[uri];
+  }
+
+  @override
+  bool hasLibrarySummary(String uri) {
+    LinkedLibrary linkedLibrary = _dataStore.linkedMap[uri];
+    return linkedLibrary != null && !linkedLibrary.fallbackMode;
+  }
+}
+
+/**
+ * A source that is part of a package whose summary was generated in fallback
+ * mode.  This source behaves identically to a [FileBasedSource] except that it
+ * also provides [summaryPath].
+ */
+class _InSummaryFallbackSource extends FileBasedSource
+    implements InSummarySource {
+  @override
+  final String summaryPath;
+
+  _InSummaryFallbackSource(JavaFile file, Uri uri, this.summaryPath)
+      : super(file, uri);
 }
diff --git a/pkg/analyzer/lib/src/summary/prelink.dart b/pkg/analyzer/lib/src/summary/prelink.dart
index 688abe5..6b92f99 100644
--- a/pkg/analyzer/lib/src/summary/prelink.dart
+++ b/pkg/analyzer/lib/src/summary/prelink.dart
@@ -2,6 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+import 'package:analyzer/src/generated/utilities_dart.dart';
 import 'package:analyzer/src/summary/format.dart';
 import 'package:analyzer/src/summary/idl.dart';
 import 'package:analyzer/src/summary/name_filter.dart';
@@ -284,8 +285,16 @@
       });
     }
     for (UnlinkedEnum enm in unit.enums) {
-      privateNamespace.putIfAbsent(enm.name,
-          () => new _Meaning(unitNum, ReferenceKind.classOrEnum, 0, 0));
+      privateNamespace.putIfAbsent(enm.name, () {
+        Map<String, _Meaning> namespace = <String, _Meaning>{};
+        enm.values.forEach((UnlinkedEnumValue value) {
+          namespace[value.name] =
+              new _Meaning(unitNum, ReferenceKind.propertyAccessor, 0, 0);
+        });
+        namespace['values'] =
+            new _Meaning(unitNum, ReferenceKind.propertyAccessor, 0, 0);
+        return new _ClassMeaning(unitNum, 0, 0, namespace);
+      });
     }
     for (UnlinkedExecutable executable in unit.executables) {
       privateNamespace.putIfAbsent(
@@ -507,7 +516,8 @@
     if (sourceUri == null) {
       return relativeUri;
     } else {
-      return Uri.parse(sourceUri).resolve(relativeUri).toString();
+      return resolveRelativeUri(Uri.parse(sourceUri), Uri.parse(relativeUri))
+          .toString();
     }
   }
 }
diff --git a/pkg/analyzer/lib/src/summary/public_namespace_computer.dart b/pkg/analyzer/lib/src/summary/public_namespace_computer.dart
index 3273c9f..5cb6e8e5 100644
--- a/pkg/analyzer/lib/src/summary/public_namespace_computer.dart
+++ b/pkg/analyzer/lib/src/summary/public_namespace_computer.dart
@@ -116,7 +116,23 @@
 
   @override
   visitEnumDeclaration(EnumDeclaration node) {
-    addNameIfPublic(node.name.name, ReferenceKind.classOrEnum, 0);
+    UnlinkedPublicNameBuilder enm =
+        addNameIfPublic(node.name.name, ReferenceKind.classOrEnum, 0);
+    if (enm != null) {
+      enm.members.add(new UnlinkedPublicNameBuilder(
+          name: 'values',
+          kind: ReferenceKind.propertyAccessor,
+          numTypeParameters: 0));
+      for (EnumConstantDeclaration enumConstant in node.constants) {
+        String name = enumConstant.name.name;
+        if (isPublic(name)) {
+          enm.members.add(new UnlinkedPublicNameBuilder(
+              name: name,
+              kind: ReferenceKind.propertyAccessor,
+              numTypeParameters: 0));
+        }
+      }
+    }
   }
 
   @override
diff --git a/pkg/analyzer/lib/src/summary/resynthesize.dart b/pkg/analyzer/lib/src/summary/resynthesize.dart
index 59117e1..de36f0a 100644
--- a/pkg/analyzer/lib/src/summary/resynthesize.dart
+++ b/pkg/analyzer/lib/src/summary/resynthesize.dart
@@ -272,7 +272,7 @@
  * Builder of [Expression]s from [UnlinkedConst]s.
  */
 class _ConstExprBuilder {
-  final _LibraryResynthesizer resynthesizer;
+  final _UnitResynthesizer resynthesizer;
   final UnlinkedConst uc;
 
   int intPtr = 0;
@@ -480,22 +480,17 @@
   }
 
   TypeName _buildTypeAst(DartType type) {
-    if (type is DynamicTypeImpl) {
-      TypeName node = AstFactory.typeName4('dynamic');
-      node.type = type;
-      (node.name as SimpleIdentifier).staticElement = type.element;
-      return node;
-    } else if (type is InterfaceType) {
+    List<TypeName> argumentNodes;
+    if (type is ParameterizedType) {
       List<DartType> typeArguments = type.typeArguments;
-      List<TypeName> argumentNodes = typeArguments.every((a) => a.isDynamic)
+      argumentNodes = typeArguments.every((a) => a.isDynamic)
           ? null
           : typeArguments.map(_buildTypeAst).toList();
-      TypeName node = AstFactory.typeName4(type.name, argumentNodes);
-      node.type = type;
-      (node.name as SimpleIdentifier).staticElement = type.element;
-      return node;
     }
-    throw new StateError('Unsupported type $type');
+    TypeName node = AstFactory.typeName4(type.name, argumentNodes);
+    node.type = type;
+    (node.name as SimpleIdentifier).staticElement = type.element;
+    return node;
   }
 
   InterpolationElement _newInterpolationElement(Expression expr) {
@@ -645,6 +640,59 @@
 }
 
 /**
+ * A class element that has been resynthesized from a summary.  The actual
+ * element won't be constructed until it is requested.  But properties
+ * [context],  [displayName], [enclosingElement] and [name] can be used without
+ * creating the actual element.  This allows to put these elements into
+ * namespaces without creating actual elements until they are really needed.
+ */
+class _DeferredClassElement extends ClassElementHandle {
+  final _UnitResynthesizer unitResynthesizer;
+  final CompilationUnitElement unitElement;
+  final UnlinkedClass serializedClass;
+
+  ClassElementImpl _actualElement;
+
+  @override
+  final String name;
+
+  factory _DeferredClassElement(_UnitResynthesizer unitResynthesizer,
+      CompilationUnitElement unitElement, UnlinkedClass serializedClass) {
+    String name = serializedClass.name;
+    List<String> components =
+        unitResynthesizer.unit.location.components.toList();
+    components.add(name);
+    ElementLocationImpl location = new ElementLocationImpl.con3(components);
+    return new _DeferredClassElement._(
+        unitResynthesizer, unitElement, serializedClass, name, location);
+  }
+
+  _DeferredClassElement._(this.unitResynthesizer, this.unitElement,
+      this.serializedClass, this.name, ElementLocation location)
+      : super(null, location);
+
+  @override
+  ClassElementImpl get actualElement {
+    if (_actualElement == null) {
+      _actualElement = unitResynthesizer.buildClassImpl(serializedClass);
+      _actualElement.enclosingElement = unitElement;
+    }
+    return _actualElement;
+  }
+
+  @override
+  AnalysisContext get context => unitElement.context;
+
+  @override
+  String get displayName => name;
+
+  @override
+  CompilationUnitElement get enclosingElement {
+    return unitElement;
+  }
+}
+
+/**
  * The constructor element that has been resynthesized from a summary.  The
  * actual element won't be constructed until it is requested.  But properties
  * [displayName], [enclosingElement] and [name] can be used without creating
@@ -690,7 +738,7 @@
 }
 
 /**
- * Local function element representing the intializer for a variable that has
+ * Local function element representing the initializer for a variable that has
  * been resynthesized from a summary.  The actual element won't be constructed
  * until it is requested.  But properties [context] and [enclosingElement] can
  * be used without creating the actual element.
@@ -822,47 +870,6 @@
   List<ClassElementImpl> delayedObjectSubclasses = <ClassElementImpl>[];
 
   /**
-   * [ElementHolder] into which resynthesized elements should be placed.  This
-   * object is recreated afresh for each unit in the library, and is used to
-   * populate the [CompilationUnitElement].
-   */
-  ElementHolder unitHolder;
-
-  /**
-   * The [LinkedUnit] from which elements are currently being resynthesized.
-   */
-  LinkedUnit linkedUnit;
-
-  /**
-   * The [UnlinkedUnit] from which elements are currently being resynthesized.
-   */
-  UnlinkedUnit unlinkedUnit;
-
-  /**
-   * Map from slot id to the corresponding [EntityRef] object for linked types
-   * (i.e. propagated and inferred types).
-   */
-  Map<int, EntityRef> linkedTypeMap;
-
-  /**
-   * Set of slot ids corresponding to const constructors that are part of
-   * cycles.
-   */
-  Set<int> constCycles;
-
-  /**
-   * The [CompilationUnitElementImpl] for the compilation unit currently being
-   * resynthesized.
-   */
-  CompilationUnitElementImpl currentCompilationUnit;
-
-  /**
-   * The [ConstructorElementImpl] for the constructor currently being
-   * resynthesized.
-   */
-  ConstructorElementImpl currentConstructor;
-
-  /**
    * Map of compilation unit elements that have been resynthesized so far.  The
    * key is the URI of the compilation unit.
    */
@@ -877,6 +884,532 @@
   final Map<String, Map<String, Element>> resynthesizedElements =
       <String, Map<String, Element>>{};
 
+  _LibraryResynthesizer(this.summaryResynthesizer, this.linkedLibrary,
+      this.unlinkedUnits, this.librarySource) {
+    isCoreLibrary = librarySource.uri.toString() == 'dart:core';
+  }
+
+  /**
+   * Resynthesize a [NamespaceCombinator].
+   */
+  NamespaceCombinator buildCombinator(UnlinkedCombinator serializedCombinator) {
+    if (serializedCombinator.shows.isNotEmpty) {
+      ShowElementCombinatorImpl combinator = new ShowElementCombinatorImpl();
+      // Note: we call toList() so that we don't retain a reference to the
+      // deserialized data structure.
+      combinator.shownNames = serializedCombinator.shows.toList();
+      combinator.offset = serializedCombinator.offset;
+      combinator.end = serializedCombinator.end;
+      return combinator;
+    } else {
+      HideElementCombinatorImpl combinator = new HideElementCombinatorImpl();
+      // Note: we call toList() so that we don't retain a reference to the
+      // deserialized data structure.
+      combinator.hiddenNames = serializedCombinator.hides.toList();
+      return combinator;
+    }
+  }
+
+  /**
+   * Resynthesize an [ExportElement],
+   */
+  ExportElement buildExport(
+      _UnitResynthesizer definingUnitResynthesizer,
+      UnlinkedExportPublic serializedExportPublic,
+      UnlinkedExportNonPublic serializedExportNonPublic) {
+    ExportElementImpl exportElement =
+        new ExportElementImpl(serializedExportNonPublic.offset);
+    String exportedLibraryUri = summaryResynthesizer.sourceFactory
+        .resolveUri(librarySource, serializedExportPublic.uri)
+        .uri
+        .toString();
+    exportElement.exportedLibrary = new LibraryElementHandle(
+        summaryResynthesizer,
+        new ElementLocationImpl.con3(<String>[exportedLibraryUri]));
+    exportElement.uri = serializedExportPublic.uri;
+    exportElement.combinators =
+        serializedExportPublic.combinators.map(buildCombinator).toList();
+    exportElement.uriOffset = serializedExportNonPublic.uriOffset;
+    exportElement.uriEnd = serializedExportNonPublic.uriEnd;
+    definingUnitResynthesizer.buildAnnotations(
+        exportElement, serializedExportNonPublic.annotations);
+    return exportElement;
+  }
+
+  /**
+   * Build an [ElementHandle] referring to the entity referred to by the given
+   * [exportName].
+   */
+  ElementHandle buildExportName(LinkedExportName exportName) {
+    String name = exportName.name;
+    if (exportName.kind == ReferenceKind.topLevelPropertyAccessor &&
+        !name.endsWith('=')) {
+      name += '?';
+    }
+    ElementLocationImpl location = new ElementLocationImpl.con3(
+        getReferencedLocationComponents(
+            exportName.dependency, exportName.unit, name));
+    switch (exportName.kind) {
+      case ReferenceKind.classOrEnum:
+        return new ClassElementHandle(summaryResynthesizer, location);
+      case ReferenceKind.typedef:
+        return new FunctionTypeAliasElementHandle(
+            summaryResynthesizer, location);
+      case ReferenceKind.topLevelFunction:
+        return new FunctionElementHandle(summaryResynthesizer, location);
+      case ReferenceKind.topLevelPropertyAccessor:
+        return new PropertyAccessorElementHandle(
+            summaryResynthesizer, location);
+      case ReferenceKind.constructor:
+      case ReferenceKind.function:
+      case ReferenceKind.propertyAccessor:
+      case ReferenceKind.method:
+      case ReferenceKind.length:
+      case ReferenceKind.prefix:
+      case ReferenceKind.unresolved:
+      case ReferenceKind.variable:
+        // Should never happen.  Exported names never refer to import prefixes,
+        // and they always refer to defined top-level entities.
+        throw new StateError('Unexpected export name kind: ${exportName.kind}');
+    }
+  }
+
+  /**
+   * Build the export namespace for the library by aggregating together its
+   * [publicNamespace] and [exportNames].
+   */
+  Namespace buildExportNamespace(
+      Namespace publicNamespace, List<LinkedExportName> exportNames) {
+    HashMap<String, Element> definedNames = new HashMap<String, Element>();
+    // Start by populating all the public names from [publicNamespace].
+    publicNamespace.definedNames.forEach((String name, Element element) {
+      definedNames[name] = element;
+    });
+    // Add all the names from [exportNames].
+    for (LinkedExportName exportName in exportNames) {
+      definedNames.putIfAbsent(
+          exportName.name, () => buildExportName(exportName));
+    }
+    return new Namespace(definedNames);
+  }
+
+  /**
+   * Resynthesize an [ImportElement].
+   */
+  ImportElement buildImport(_UnitResynthesizer definingUnitResynthesizer,
+      UnlinkedImport serializedImport, int dependency) {
+    bool isSynthetic = serializedImport.isImplicit;
+    ImportElementImpl importElement =
+        new ImportElementImpl(isSynthetic ? -1 : serializedImport.offset);
+    String absoluteUri = summaryResynthesizer.sourceFactory
+        .resolveUri(librarySource, linkedLibrary.dependencies[dependency].uri)
+        .uri
+        .toString();
+    importElement.importedLibrary = new LibraryElementHandle(
+        summaryResynthesizer,
+        new ElementLocationImpl.con3(<String>[absoluteUri]));
+    if (isSynthetic) {
+      importElement.synthetic = true;
+    } else {
+      importElement.uri = serializedImport.uri;
+      importElement.uriOffset = serializedImport.uriOffset;
+      importElement.uriEnd = serializedImport.uriEnd;
+      importElement.deferred = serializedImport.isDeferred;
+      definingUnitResynthesizer.buildAnnotations(
+          importElement, serializedImport.annotations);
+    }
+    importElement.prefixOffset = serializedImport.prefixOffset;
+    if (serializedImport.prefixReference != 0) {
+      UnlinkedReference serializedPrefix =
+          unlinkedUnits[0].references[serializedImport.prefixReference];
+      importElement.prefix = new PrefixElementImpl(
+          serializedPrefix.name, serializedImport.prefixOffset);
+    }
+    importElement.combinators =
+        serializedImport.combinators.map(buildCombinator).toList();
+    return importElement;
+  }
+
+  /**
+   * Main entry point.  Resynthesize the [LibraryElement] and return it.
+   */
+  LibraryElement buildLibrary() {
+    CompilationUnitElementImpl definingUnit =
+        new CompilationUnitElementImpl(librarySource.shortName);
+    _UnitResynthesizer definingUnitResynthesizer =
+        createUnitResynthesizer(definingUnit, 0);
+    // Create LibraryElementImpl.
+    bool hasName = unlinkedUnits[0].libraryName.isNotEmpty;
+    LibraryElementImpl library = new LibraryElementImpl(
+        summaryResynthesizer.context,
+        unlinkedUnits[0].libraryName,
+        hasName ? unlinkedUnits[0].libraryNameOffset : -1,
+        unlinkedUnits[0].libraryNameLength);
+    definingUnitResynthesizer.buildDocumentation(
+        library, unlinkedUnits[0].libraryDocumentationComment);
+    definingUnitResynthesizer.buildAnnotations(
+        library, unlinkedUnits[0].libraryAnnotations);
+    library.definingCompilationUnit = definingUnit;
+    definingUnit.source = librarySource;
+    definingUnit.librarySource = librarySource;
+    // Create parts.
+    List<CompilationUnitElement> partUnits = <CompilationUnitElement>[];
+    UnlinkedUnit unlinkedDefiningUnit = unlinkedUnits[0];
+    assert(unlinkedDefiningUnit.publicNamespace.parts.length + 1 ==
+        linkedLibrary.units.length);
+    for (int i = 1; i < linkedLibrary.units.length; i++) {
+      CompilationUnitElementImpl part = buildPart(
+          definingUnitResynthesizer,
+          unlinkedDefiningUnit.publicNamespace.parts[i - 1],
+          unlinkedDefiningUnit.parts[i - 1],
+          i);
+      partUnits.add(part);
+    }
+    library.parts = partUnits;
+    // Create imports.
+    List<ImportElement> imports = <ImportElement>[];
+    for (int i = 0; i < unlinkedDefiningUnit.imports.length; i++) {
+      imports.add(buildImport(
+          definingUnitResynthesizer,
+          unlinkedDefiningUnit.imports[i],
+          linkedLibrary.importDependencies[i]));
+    }
+    library.imports = imports;
+    // Create exports.
+    List<ExportElement> exports = <ExportElement>[];
+    assert(unlinkedDefiningUnit.exports.length ==
+        unlinkedDefiningUnit.publicNamespace.exports.length);
+    for (int i = 0; i < unlinkedDefiningUnit.exports.length; i++) {
+      exports.add(buildExport(
+          definingUnitResynthesizer,
+          unlinkedDefiningUnit.publicNamespace.exports[i],
+          unlinkedDefiningUnit.exports[i]));
+    }
+    library.exports = exports;
+    // Populate units.
+    populateUnit(definingUnitResynthesizer);
+    for (int i = 0; i < partUnits.length; i++) {
+      _UnitResynthesizer partResynthesizer =
+          createUnitResynthesizer(partUnits[i], i + 1);
+      populateUnit(partResynthesizer);
+    }
+    BuildLibraryElementUtils.patchTopLevelAccessors(library);
+    // Update delayed Object class references.
+    if (isCoreLibrary) {
+      ClassElement objectElement = library.getType('Object');
+      assert(objectElement != null);
+      for (ClassElementImpl classElement in delayedObjectSubclasses) {
+        classElement.supertype = objectElement.type;
+      }
+    }
+    // Compute namespaces.
+    library.publicNamespace =
+        new NamespaceBuilder().createPublicNamespaceForLibrary(library);
+    library.exportNamespace = buildExportNamespace(
+        library.publicNamespace, linkedLibrary.exportNames);
+    // Find the entry point.  Note: we can't use element.isEntryPoint because
+    // that will trigger resynthesis of exported libraries.
+    Element entryPoint =
+        library.exportNamespace.get(FunctionElement.MAIN_FUNCTION_NAME);
+    if (entryPoint is FunctionElement) {
+      library.entryPoint = entryPoint;
+    }
+    // Create the synthetic element for `loadLibrary`.
+    // Until the client received dart:core and dart:async, we cannot do this,
+    // because the TypeProvider is not fully initialized. So, it is up to the
+    // Dart SDK client to initialize TypeProvider and finish the dart:core and
+    // dart:async libraries creation.
+    if (library.name != 'dart.core' && library.name != 'dart.async') {
+      library.createLoadLibraryFunction(summaryResynthesizer.typeProvider);
+    }
+    // Done.
+    return library;
+  }
+
+  /**
+   * Create, but do not populate, the [CompilationUnitElement] for a part other
+   * than the defining compilation unit.
+   */
+  CompilationUnitElementImpl buildPart(
+      _UnitResynthesizer definingUnitResynthesizer,
+      String uri,
+      UnlinkedPart partDecl,
+      int unitNum) {
+    Source unitSource =
+        summaryResynthesizer.sourceFactory.resolveUri(librarySource, uri);
+    CompilationUnitElementImpl partUnit =
+        new CompilationUnitElementImpl(unitSource.shortName);
+    partUnit.uriOffset = partDecl.uriOffset;
+    partUnit.uriEnd = partDecl.uriEnd;
+    partUnit.source = unitSource;
+    partUnit.librarySource = librarySource;
+    partUnit.uri = uri;
+    definingUnitResynthesizer.buildAnnotations(partUnit, partDecl.annotations);
+    return partUnit;
+  }
+
+  /**
+   * Set up data structures for deserializing a compilation unit.
+   */
+  _UnitResynthesizer createUnitResynthesizer(
+      CompilationUnitElementImpl unit, int unitNum) {
+    LinkedUnit linkedUnit = linkedLibrary.units[unitNum];
+    UnlinkedUnit unlinkedUnit = unlinkedUnits[unitNum];
+    return new _UnitResynthesizer(this, unlinkedUnit, linkedUnit, unit);
+  }
+
+  /**
+   * Build the components of an [ElementLocationImpl] for the entity in the
+   * given [unit] of the dependency located at [dependencyIndex], and having
+   * the given [name].
+   */
+  List<String> getReferencedLocationComponents(
+      int dependencyIndex, int unit, String name) {
+    if (dependencyIndex == 0) {
+      String referencedLibraryUri = librarySource.uri.toString();
+      String partUri;
+      if (unit != 0) {
+        String uri = unlinkedUnits[0].publicNamespace.parts[unit - 1];
+        Source partSource =
+            summaryResynthesizer.sourceFactory.resolveUri(librarySource, uri);
+        partUri = partSource.uri.toString();
+      } else {
+        partUri = referencedLibraryUri;
+      }
+      return <String>[referencedLibraryUri, partUri, name];
+    }
+    LinkedDependency dependency = linkedLibrary.dependencies[dependencyIndex];
+    Source referencedLibrarySource = summaryResynthesizer.sourceFactory
+        .resolveUri(librarySource, dependency.uri);
+    String referencedLibraryUri = referencedLibrarySource.uri.toString();
+    String partUri;
+    if (unit != 0) {
+      String uri = dependency.parts[unit - 1];
+      Source partSource = summaryResynthesizer.sourceFactory
+          .resolveUri(referencedLibrarySource, uri);
+      partUri = partSource.uri.toString();
+    } else {
+      partUri = referencedLibraryUri;
+    }
+    return <String>[referencedLibraryUri, partUri, name];
+  }
+
+  /**
+   * Populate a [CompilationUnitElement] by deserializing all the elements
+   * contained in it.
+   */
+  void populateUnit(_UnitResynthesizer unitResynthesized) {
+    // TODO(scheglov)
+    unitResynthesized.populateUnit();
+    String absoluteUri = unitResynthesized.unit.source.uri.toString();
+    resynthesizedUnits[absoluteUri] = unitResynthesized.unit;
+    resynthesizedElements[absoluteUri] = unitResynthesized.elementMap;
+  }
+}
+
+/**
+ * Data structure used during resynthesis to record all the information that is
+ * known about how to resynthesize a single entry in [LinkedUnit.references]
+ * (and its associated entry in [UnlinkedUnit.references], if it exists).
+ */
+class _ReferenceInfo {
+  /**
+   * The enclosing [_ReferenceInfo], or `null` for top-level elements.
+   */
+  final _ReferenceInfo enclosing;
+
+  /**
+   * The name of the entity referred to by this reference.
+   */
+  final String name;
+
+  /**
+   * The element referred to by this reference, or `null` if there is no
+   * associated element (e.g. because it is a reference to an undefined
+   * entity).
+   */
+  final Element element;
+
+  /**
+   * If this reference refers to a non-generic type, the type it refers to.
+   * Otherwise `null`.
+   */
+  DartType type;
+
+  /**
+   * The number of type parameters accepted by the entity referred to by this
+   * reference, or zero if it doesn't accept any type parameters.
+   */
+  final int numTypeParameters;
+
+  /**
+   * Create a new [_ReferenceInfo] object referring to an element called [name]
+   * via the element handle [element], and having [numTypeParameters] type
+   * parameters.
+   *
+   * For the special types `dynamic` and `void`, [specialType] should point to
+   * the type itself.  Otherwise, pass `null` and the type will be computed
+   * when appropriate.
+   */
+  _ReferenceInfo(this.enclosing, this.name, this.element, DartType specialType,
+      this.numTypeParameters) {
+    if (specialType != null) {
+      type = specialType;
+    } else {
+      type = _buildType((_) => DynamicTypeImpl.instance, const []);
+    }
+  }
+
+  /**
+   * Build a [DartType] corresponding to the result of applying some type
+   * arguments to the entity referred to by this [_ReferenceInfo].  The type
+   * arguments are retrieved by calling [getTypeArgument].
+   *
+   * If [implicitFunctionTypeIndices] is not empty, a [DartType] should be
+   * created which refers to a function type implicitly defined by one of the
+   * element's parameters.  [implicitFunctionTypeIndices] is interpreted as in
+   * [EntityRef.implicitFunctionTypeIndices].
+   *
+   * If the entity referred to by this [_ReferenceInfo] is not a type, `null`
+   * is returned.
+   */
+  DartType buildType(
+      DartType getTypeArgument(int i), List<int> implicitFunctionTypeIndices) {
+    DartType result =
+        (numTypeParameters == 0 && implicitFunctionTypeIndices.isEmpty)
+            ? type
+            : _buildType(getTypeArgument, implicitFunctionTypeIndices);
+    if (result == null) {
+      // TODO(paulberry): figure out how to handle this case (which should
+      // only occur in the event of erroneous code).
+      throw new UnimplementedError();
+    }
+    return result;
+  }
+
+  /**
+   * If this reference refers to a type, build a [DartType] which instantiates
+   * it with type arguments returned by [getTypeArgument].  Otherwise return
+   * `null`.
+   *
+   * If [implicitFunctionTypeIndices] is not null, a [DartType] should be
+   * created which refers to a function type implicitly defined by one of the
+   * element's parameters.  [implicitFunctionTypeIndices] is interpreted as in
+   * [EntityRef.implicitFunctionTypeIndices].
+   */
+  DartType _buildType(
+      DartType getTypeArgument(int i), List<int> implicitFunctionTypeIndices) {
+    ElementHandle element = this.element; // To allow type promotion
+    if (element is ClassElementHandle) {
+      return new InterfaceTypeImpl.elementWithNameAndArgs(element, name,
+          _buildTypeArguments(numTypeParameters, getTypeArgument));
+    } else if (element is FunctionTypeAliasElementHandle) {
+      return new FunctionTypeImpl.elementWithNameAndArgs(
+          element,
+          name,
+          _buildTypeArguments(numTypeParameters, getTypeArgument),
+          numTypeParameters != 0);
+    } else if (element is FunctionTypedElement) {
+      int numTypeArguments;
+      FunctionTypedElementComputer computer;
+      if (implicitFunctionTypeIndices.isNotEmpty) {
+        numTypeArguments = numTypeParameters;
+        computer = () {
+          FunctionTypedElement element = this.element;
+          for (int index in implicitFunctionTypeIndices) {
+            element = element.parameters[index].type.element;
+          }
+          return element;
+        };
+      } else {
+        // For a type that refers to a generic executable, the type arguments are
+        // not supposed to include the arguments to the executable itself.
+        numTypeArguments = enclosing == null ? 0 : enclosing.numTypeParameters;
+        computer = () => this.element;
+      }
+      // TODO(paulberry): Is it a bug that we have to pass `false` for
+      // isInstantiated?
+      return new DeferredFunctionTypeImpl(computer, null,
+          _buildTypeArguments(numTypeArguments, getTypeArgument), false);
+    } else {
+      return null;
+    }
+  }
+
+  /**
+   * Build a list of type arguments having length [numTypeArguments] where each
+   * type argument is obtained by calling [getTypeArgument].
+   */
+  List<DartType> _buildTypeArguments(
+      int numTypeArguments, DartType getTypeArgument(int i)) {
+    List<DartType> typeArguments = const <DartType>[];
+    if (numTypeArguments != 0) {
+      typeArguments = <DartType>[];
+      for (int i = 0; i < numTypeArguments; i++) {
+        typeArguments.add(getTypeArgument(i));
+      }
+    }
+    return typeArguments;
+  }
+}
+
+/**
+ * An instance of [_UnitResynthesizer] is responsible for resynthesizing the
+ * elements in a single unit from that unit's summary.
+ */
+class _UnitResynthesizer {
+  /**
+   * The [_LibraryResynthesizer] which is being used to obtain summaries.
+   */
+  final _LibraryResynthesizer libraryResynthesizer;
+
+  /**
+   * The [UnlinkedUnit] from which elements are currently being resynthesized.
+   */
+  final UnlinkedUnit unlinkedUnit;
+
+  /**
+   * The [LinkedUnit] from which elements are currently being resynthesized.
+   */
+  final LinkedUnit linkedUnit;
+
+  /**
+   * The [CompilationUnitElementImpl] for the compilation unit currently being
+   * resynthesized.
+   */
+  final CompilationUnitElementImpl unit;
+
+  /**
+   * [ElementHolder] into which resynthesized elements should be placed.  This
+   * object is recreated afresh for each unit in the library, and is used to
+   * populate the [CompilationUnitElement].
+   */
+  final ElementHolder unitHolder = new ElementHolder();
+
+  /**
+   * Map of top-level elements that have been resynthesized so far.  The key is
+   * the name of the top level element.
+   */
+  Map<String, Element> elementMap = <String, Element>{};
+
+  /**
+   * Map from slot id to the corresponding [EntityRef] object for linked types
+   * (i.e. propagated and inferred types).
+   */
+  final Map<int, EntityRef> linkedTypeMap = <int, EntityRef>{};
+
+  /**
+   * Set of slot ids corresponding to const constructors that are part of
+   * cycles.
+   */
+  Set<int> constCycles;
+
+  /**
+   * The [ConstructorElementImpl] for the constructor currently being
+   * resynthesized.
+   */
+  ConstructorElementImpl currentConstructor;
+
   /**
    * Type parameters for the generic class, typedef, or executable currently
    * being resynthesized, if any.  This is a list of lists; if multiple
@@ -910,11 +1443,20 @@
    */
   List<_ReferenceInfo> referenceInfos;
 
-  _LibraryResynthesizer(this.summaryResynthesizer, this.linkedLibrary,
-      this.unlinkedUnits, this.librarySource) {
-    isCoreLibrary = librarySource.uri.toString() == 'dart:core';
+  _UnitResynthesizer(this.libraryResynthesizer, this.unlinkedUnit,
+      this.linkedUnit, this.unit) {
+    for (EntityRef t in linkedUnit.types) {
+      linkedTypeMap[t.slot] = t;
+    }
+    constCycles = linkedUnit.constCycles.toSet();
+    populateReferenceInfos();
   }
 
+  SummaryResynthesizer get summaryResynthesizer =>
+      libraryResynthesizer.summaryResynthesizer;
+
+  TypeProvider get typeProvider => summaryResynthesizer.typeProvider;
+
   /**
    * Build the annotations for the given [element].
    */
@@ -923,7 +1465,7 @@
     if (serializedAnnotations.isNotEmpty) {
       element.metadata = serializedAnnotations.map((UnlinkedConst a) {
         ElementAnnotationImpl elementAnnotation =
-            new ElementAnnotationImpl(this.currentCompilationUnit);
+            new ElementAnnotationImpl(this.unit);
         Expression constExpr = _buildConstExpression(a);
         if (constExpr is Identifier) {
           elementAnnotation.element = constExpr.staticElement;
@@ -953,6 +1495,23 @@
    * Resynthesize a [ClassElement] and place it in [unitHolder].
    */
   void buildClass(UnlinkedClass serializedClass) {
+    ClassElement classElement;
+    if (libraryResynthesizer.isCoreLibrary &&
+        serializedClass.supertype == null) {
+      classElement = buildClassImpl(serializedClass);
+      if (!serializedClass.hasNoSupertype) {
+        libraryResynthesizer.delayedObjectSubclasses.add(classElement);
+      }
+    } else {
+      classElement = new _DeferredClassElement(this, unit, serializedClass);
+    }
+    unitHolder.addType(classElement);
+  }
+
+  /**
+   * Resynthesize a [ClassElementImpl].
+   */
+  ClassElementImpl buildClassImpl(UnlinkedClass serializedClass) {
     ClassElementImpl classElement =
         new ClassElementImpl(serializedClass.name, serializedClass.nameOffset);
     classElement.hasBeenInferred = summaryResynthesizer.strongMode;
@@ -963,12 +1522,8 @@
     InterfaceTypeImpl correspondingType = new InterfaceTypeImpl(classElement);
     if (serializedClass.supertype != null) {
       classElement.supertype = buildType(serializedClass.supertype);
-    } else if (!serializedClass.hasNoSupertype) {
-      if (isCoreLibrary) {
-        delayedObjectSubclasses.add(classElement);
-      } else {
-        classElement.supertype = summaryResynthesizer.typeProvider.objectType;
-      }
+    } else if (!libraryResynthesizer.isCoreLibrary) {
+      classElement.supertype = typeProvider.objectType;
     }
     classElement.interfaces =
         serializedClass.interfaces.map(buildType).toList();
@@ -1022,11 +1577,11 @@
     buildAnnotations(classElement, serializedClass.annotations);
     buildCodeRange(classElement, serializedClass.codeRange);
     resolveConstructorInitializers(classElement);
-    unitHolder.addType(classElement);
     currentTypeParameters.removeLast();
     assert(currentTypeParameters.isEmpty);
     fields = null;
     constructors = null;
+    return classElement;
   }
 
   void buildCodeRange(ElementImpl element, CodeRange codeRange) {
@@ -1116,8 +1671,7 @@
         currentConstructor.redirectedConstructor = _createConstructorElement(
             _createConstructorDefiningType(info, typeArguments), info);
       } else {
-        List<String> locationComponents =
-            currentCompilationUnit.location.components.toList();
+        List<String> locationComponents = unit.location.components.toList();
         locationComponents.add(classType.name);
         locationComponents.add(serializedExecutable.redirectedConstructorName);
         currentConstructor.redirectedConstructor =
@@ -1149,13 +1703,13 @@
    * associated fields and implicit accessors.
    */
   void buildEnum(UnlinkedEnum serializedEnum) {
-    assert(!isCoreLibrary);
+    assert(!libraryResynthesizer.isCoreLibrary);
     ClassElementImpl classElement =
         new ClassElementImpl(serializedEnum.name, serializedEnum.nameOffset);
     classElement.enum2 = true;
     InterfaceType enumType = new InterfaceTypeImpl(classElement);
     classElement.type = enumType;
-    classElement.supertype = summaryResynthesizer.typeProvider.objectType;
+    classElement.supertype = typeProvider.objectType;
     buildDocumentation(classElement, serializedEnum.documentationComment);
     buildAnnotations(classElement, serializedEnum.annotations);
     buildCodeRange(classElement, serializedEnum.codeRange);
@@ -1164,7 +1718,7 @@
     FieldElementImpl indexField = new FieldElementImpl('index', -1);
     indexField.final2 = true;
     indexField.synthetic = true;
-    indexField.type = summaryResynthesizer.typeProvider.intType;
+    indexField.type = typeProvider.intType;
     memberHolder.addField(indexField);
     buildImplicitAccessors(indexField, memberHolder);
     // Build the 'values' field.
@@ -1172,8 +1726,7 @@
     valuesField.synthetic = true;
     valuesField.const3 = true;
     valuesField.static = true;
-    valuesField.type = summaryResynthesizer.typeProvider.listType
-        .instantiate(<DartType>[enumType]);
+    valuesField.type = typeProvider.listType.instantiate(<DartType>[enumType]);
     memberHolder.addField(valuesField);
     buildImplicitAccessors(valuesField, memberHolder);
     // Build fields for all enum constants.
@@ -1189,8 +1742,7 @@
       field.type = enumType;
       // Create a value for the constant.
       Map<String, DartObjectImpl> fieldMap = <String, DartObjectImpl>{
-        fieldName: new DartObjectImpl(
-            summaryResynthesizer.typeProvider.intType, new IntState(i))
+        fieldName: new DartObjectImpl(typeProvider.intType, new IntState(i))
       };
       DartObjectImpl value =
           new DartObjectImpl(enumType, new GenericState(fieldMap));
@@ -1325,86 +1877,6 @@
   }
 
   /**
-   * Resynthesize an [ExportElement],
-   */
-  ExportElement buildExport(UnlinkedExportPublic serializedExportPublic,
-      UnlinkedExportNonPublic serializedExportNonPublic) {
-    ExportElementImpl exportElement =
-        new ExportElementImpl(serializedExportNonPublic.offset);
-    String exportedLibraryUri = summaryResynthesizer.sourceFactory
-        .resolveUri(librarySource, serializedExportPublic.uri)
-        .uri
-        .toString();
-    exportElement.exportedLibrary = new LibraryElementHandle(
-        summaryResynthesizer,
-        new ElementLocationImpl.con3(<String>[exportedLibraryUri]));
-    exportElement.uri = serializedExportPublic.uri;
-    exportElement.combinators =
-        serializedExportPublic.combinators.map(buildCombinator).toList();
-    exportElement.uriOffset = serializedExportNonPublic.uriOffset;
-    exportElement.uriEnd = serializedExportNonPublic.uriEnd;
-    buildAnnotations(exportElement, serializedExportNonPublic.annotations);
-    return exportElement;
-  }
-
-  /**
-   * Build an [ElementHandle] referring to the entity referred to by the given
-   * [exportName].
-   */
-  ElementHandle buildExportName(LinkedExportName exportName) {
-    String name = exportName.name;
-    if (exportName.kind == ReferenceKind.topLevelPropertyAccessor &&
-        !name.endsWith('=')) {
-      name += '?';
-    }
-    ElementLocationImpl location = new ElementLocationImpl.con3(
-        getReferencedLocationComponents(
-            exportName.dependency, exportName.unit, name));
-    switch (exportName.kind) {
-      case ReferenceKind.classOrEnum:
-        return new ClassElementHandle(summaryResynthesizer, location);
-      case ReferenceKind.typedef:
-        return new FunctionTypeAliasElementHandle(
-            summaryResynthesizer, location);
-      case ReferenceKind.topLevelFunction:
-        return new FunctionElementHandle(summaryResynthesizer, location);
-      case ReferenceKind.topLevelPropertyAccessor:
-        return new PropertyAccessorElementHandle(
-            summaryResynthesizer, location);
-      case ReferenceKind.constructor:
-      case ReferenceKind.function:
-      case ReferenceKind.propertyAccessor:
-      case ReferenceKind.method:
-      case ReferenceKind.length:
-      case ReferenceKind.prefix:
-      case ReferenceKind.unresolved:
-      case ReferenceKind.variable:
-        // Should never happen.  Exported names never refer to import prefixes,
-        // and they always refer to defined top-level entities.
-        throw new StateError('Unexpected export name kind: ${exportName.kind}');
-    }
-  }
-
-  /**
-   * Build the export namespace for the library by aggregating together its
-   * [publicNamespace] and [exportNames].
-   */
-  Namespace buildExportNamespace(
-      Namespace publicNamespace, List<LinkedExportName> exportNames) {
-    HashMap<String, Element> definedNames = new HashMap<String, Element>();
-    // Start by populating all the public names from [publicNamespace].
-    publicNamespace.definedNames.forEach((String name, Element element) {
-      definedNames[name] = element;
-    });
-    // Add all the names from [exportNames].
-    for (LinkedExportName exportName in exportNames) {
-      definedNames.putIfAbsent(
-          exportName.name, () => buildExportName(exportName));
-    }
-    return new Namespace(definedNames);
-  }
-
-  /**
    * Build the implicit getter and setter associated with [element], and place
    * them in [holder].
    */
@@ -1485,125 +1957,6 @@
   }
 
   /**
-   * Resynthesize an [ImportElement].
-   */
-  ImportElement buildImport(UnlinkedImport serializedImport, int dependency) {
-    bool isSynthetic = serializedImport.isImplicit;
-    ImportElementImpl importElement =
-        new ImportElementImpl(isSynthetic ? -1 : serializedImport.offset);
-    String absoluteUri = summaryResynthesizer.sourceFactory
-        .resolveUri(librarySource, linkedLibrary.dependencies[dependency].uri)
-        .uri
-        .toString();
-    importElement.importedLibrary = new LibraryElementHandle(
-        summaryResynthesizer,
-        new ElementLocationImpl.con3(<String>[absoluteUri]));
-    if (isSynthetic) {
-      importElement.synthetic = true;
-    } else {
-      importElement.uri = serializedImport.uri;
-      importElement.uriOffset = serializedImport.uriOffset;
-      importElement.uriEnd = serializedImport.uriEnd;
-      importElement.deferred = serializedImport.isDeferred;
-      buildAnnotations(importElement, serializedImport.annotations);
-    }
-    importElement.prefixOffset = serializedImport.prefixOffset;
-    if (serializedImport.prefixReference != 0) {
-      UnlinkedReference serializedPrefix =
-          unlinkedUnits[0].references[serializedImport.prefixReference];
-      importElement.prefix = new PrefixElementImpl(
-          serializedPrefix.name, serializedImport.prefixOffset);
-    }
-    importElement.combinators =
-        serializedImport.combinators.map(buildCombinator).toList();
-    return importElement;
-  }
-
-  /**
-   * Main entry point.  Resynthesize the [LibraryElement] and return it.
-   */
-  LibraryElement buildLibrary() {
-    CompilationUnitElementImpl definingCompilationUnit =
-        new CompilationUnitElementImpl(librarySource.shortName);
-    prepareUnit(definingCompilationUnit, 0);
-    bool hasName = unlinkedUnits[0].libraryName.isNotEmpty;
-    LibraryElementImpl library = new LibraryElementImpl(
-        summaryResynthesizer.context,
-        unlinkedUnits[0].libraryName,
-        hasName ? unlinkedUnits[0].libraryNameOffset : -1,
-        unlinkedUnits[0].libraryNameLength);
-    buildDocumentation(library, unlinkedUnits[0].libraryDocumentationComment);
-    buildAnnotations(library, unlinkedUnits[0].libraryAnnotations);
-    library.definingCompilationUnit = definingCompilationUnit;
-    definingCompilationUnit.source = librarySource;
-    definingCompilationUnit.librarySource = librarySource;
-    List<CompilationUnitElement> parts = <CompilationUnitElement>[];
-    UnlinkedUnit unlinkedDefiningUnit = unlinkedUnits[0];
-    assert(unlinkedDefiningUnit.publicNamespace.parts.length + 1 ==
-        linkedLibrary.units.length);
-    for (int i = 1; i < linkedLibrary.units.length; i++) {
-      CompilationUnitElementImpl part = buildPart(
-          unlinkedDefiningUnit.publicNamespace.parts[i - 1],
-          unlinkedDefiningUnit.parts[i - 1],
-          unlinkedUnits[i]);
-      parts.add(part);
-    }
-    library.parts = parts;
-    List<ImportElement> imports = <ImportElement>[];
-    for (int i = 0; i < unlinkedDefiningUnit.imports.length; i++) {
-      imports.add(buildImport(unlinkedDefiningUnit.imports[i],
-          linkedLibrary.importDependencies[i]));
-    }
-    library.imports = imports;
-    List<ExportElement> exports = <ExportElement>[];
-    assert(unlinkedDefiningUnit.exports.length ==
-        unlinkedDefiningUnit.publicNamespace.exports.length);
-    for (int i = 0; i < unlinkedDefiningUnit.exports.length; i++) {
-      exports.add(buildExport(unlinkedDefiningUnit.publicNamespace.exports[i],
-          unlinkedDefiningUnit.exports[i]));
-    }
-    library.exports = exports;
-    populateUnit(definingCompilationUnit, 0);
-    finishUnit();
-    for (int i = 0; i < parts.length; i++) {
-      prepareUnit(parts[i], i + 1);
-      populateUnit(parts[i], i + 1);
-      finishUnit();
-    }
-    BuildLibraryElementUtils.patchTopLevelAccessors(library);
-    // Update delayed Object class references.
-    if (isCoreLibrary) {
-      ClassElement objectElement = library.getType('Object');
-      assert(objectElement != null);
-      for (ClassElementImpl classElement in delayedObjectSubclasses) {
-        classElement.supertype = objectElement.type;
-      }
-    }
-    // Compute namespaces.
-    library.publicNamespace =
-        new NamespaceBuilder().createPublicNamespaceForLibrary(library);
-    library.exportNamespace = buildExportNamespace(
-        library.publicNamespace, linkedLibrary.exportNames);
-    // Find the entry point.  Note: we can't use element.isEntryPoint because
-    // that will trigger resynthesis of exported libraries.
-    Element entryPoint =
-        library.exportNamespace.get(FunctionElement.MAIN_FUNCTION_NAME);
-    if (entryPoint is FunctionElement) {
-      library.entryPoint = entryPoint;
-    }
-    // Create the synthetic element for `loadLibrary`.
-    // Until the client received dart:core and dart:async, we cannot do this,
-    // because the TypeProvider is not fully initialized. So, it is up to the
-    // Dart SDK client to initialize TypeProvider and finish the dart:core and
-    // dart:async libraries creation.
-    if (library.name != 'dart.core' && library.name != 'dart.async') {
-      library.createLoadLibraryFunction(summaryResynthesizer.typeProvider);
-    }
-    // Done.
-    return library;
-  }
-
-  /**
    * Build the appropriate [DartType] object corresponding to a slot id in the
    * [LinkedUnit.types] table.
    */
@@ -1732,8 +2085,8 @@
       if (serializedParameter.isInitializingFormal &&
           serializedParameter.type == null) {
         // The type is inherited from the matching field.
-        parameterElement.type = fields[serializedParameter.name]?.type ??
-            summaryResynthesizer.typeProvider.dynamicType;
+        parameterElement.type =
+            fields[serializedParameter.name]?.type ?? DynamicTypeImpl.instance;
       } else {
         parameterElement.type =
             buildLinkedType(serializedParameter.inferredTypeSlot) ??
@@ -1761,25 +2114,6 @@
   }
 
   /**
-   * Create, but do not populate, the [CompilationUnitElement] for a part other
-   * than the defining compilation unit.
-   */
-  CompilationUnitElementImpl buildPart(
-      String uri, UnlinkedPart partDecl, UnlinkedUnit serializedPart) {
-    Source unitSource =
-        summaryResynthesizer.sourceFactory.resolveUri(librarySource, uri);
-    CompilationUnitElementImpl partUnit =
-        new CompilationUnitElementImpl(unitSource.shortName);
-    partUnit.uriOffset = partDecl.uriOffset;
-    partUnit.uriEnd = partDecl.uriEnd;
-    partUnit.source = unitSource;
-    partUnit.librarySource = librarySource;
-    partUnit.uri = uri;
-    buildAnnotations(partUnit, partDecl.annotations);
-    return partUnit;
-  }
-
-  /**
    * Handle the parts that are common to top level variables and fields.
    */
   void buildPropertyIntroducingElementCommonParts(
@@ -1801,7 +2135,7 @@
       if (defaultVoid) {
         return VoidTypeImpl.instance;
       } else {
-        return summaryResynthesizer.typeProvider.dynamicType;
+        return DynamicTypeImpl.instance;
       }
     }
     if (type.paramReference != 0) {
@@ -1822,7 +2156,7 @@
         if (i < type.typeArguments.length) {
           return buildType(type.typeArguments[i]);
         } else {
-          return summaryResynthesizer.typeProvider.dynamicType;
+          return DynamicTypeImpl.instance;
         }
       }
       _ReferenceInfo referenceInfo = referenceInfos[type.reference];
@@ -1975,20 +2309,6 @@
   }
 
   /**
-   * Tear down data structures used during deserialization of a compilation
-   * unit.
-   */
-  void finishUnit() {
-    unitHolder = null;
-    linkedUnit = null;
-    unlinkedUnit = null;
-    linkedTypeMap = null;
-    constCycles = null;
-    referenceInfos = null;
-    currentCompilationUnit = null;
-  }
-
-  /**
    * Return a list of type arguments corresponding to [currentTypeParameters],
    * skipping the innermost [skipLevels] nesting levels.
    *
@@ -2008,42 +2328,6 @@
   }
 
   /**
-   * Build the components of an [ElementLocationImpl] for the entity in the
-   * given [unit] of the dependency located at [dependencyIndex], and having
-   * the given [name].
-   */
-  List<String> getReferencedLocationComponents(
-      int dependencyIndex, int unit, String name) {
-    if (dependencyIndex == 0) {
-      String referencedLibraryUri = librarySource.uri.toString();
-      String partUri;
-      if (unit != 0) {
-        String uri = unlinkedUnits[0].publicNamespace.parts[unit - 1];
-        Source partSource =
-            summaryResynthesizer.sourceFactory.resolveUri(librarySource, uri);
-        partUri = partSource.uri.toString();
-      } else {
-        partUri = referencedLibraryUri;
-      }
-      return <String>[referencedLibraryUri, partUri, name];
-    }
-    LinkedDependency dependency = linkedLibrary.dependencies[dependencyIndex];
-    Source referencedLibrarySource = summaryResynthesizer.sourceFactory
-        .resolveUri(librarySource, dependency.uri);
-    String referencedLibraryUri = referencedLibrarySource.uri.toString();
-    String partUri;
-    if (unit != 0) {
-      String uri = dependency.parts[unit - 1];
-      Source partSource = summaryResynthesizer.sourceFactory
-          .resolveUri(referencedLibrarySource, uri);
-      partUri = partSource.uri.toString();
-    } else {
-      partUri = referencedLibraryUri;
-    }
-    return <String>[referencedLibraryUri, partUri, name];
-  }
-
-  /**
    * Get the type parameter from the surrounding scope whose De Bruijn index is
    * [index].
    */
@@ -2086,10 +2370,10 @@
       DartType type;
       int numTypeParameters = linkedReference.numTypeParameters;
       if (linkedReference.kind == ReferenceKind.unresolved) {
-        type = summaryResynthesizer.typeProvider.undefinedType;
+        type = UndefinedTypeImpl.instance;
         element = null;
       } else if (name == 'dynamic') {
-        type = summaryResynthesizer.typeProvider.dynamicType;
+        type = DynamicTypeImpl.instance;
         element = type.element;
       } else if (name == 'void') {
         type = VoidTypeImpl.instance;
@@ -2106,8 +2390,9 @@
           locationComponents.add(identifier);
         } else {
           String identifier = _getElementIdentifier(name, linkedReference.kind);
-          locationComponents = getReferencedLocationComponents(
-              linkedReference.dependency, linkedReference.unit, identifier);
+          locationComponents =
+              libraryResynthesizer.getReferencedLocationComponents(
+                  linkedReference.dependency, linkedReference.unit, identifier);
         }
         ElementLocation location =
             new ElementLocationImpl.con3(locationComponents);
@@ -2183,13 +2468,12 @@
    * Populate a [CompilationUnitElement] by deserializing all the elements
    * contained in it.
    */
-  void populateUnit(CompilationUnitElementImpl unit, int unitNum) {
+  void populateUnit() {
     unlinkedUnit.classes.forEach(buildClass);
     unlinkedUnit.enums.forEach(buildEnum);
     unlinkedUnit.executables.forEach(buildExecutable);
     unlinkedUnit.typedefs.forEach(buildTypedef);
     unlinkedUnit.variables.forEach(buildVariable);
-    String absoluteUri = unit.source.uri.toString();
     unit.accessors = unitHolder.accessors;
     unit.enums = unitHolder.enums;
     unit.functions = unitHolder.functions;
@@ -2202,7 +2486,6 @@
     unit.typeAliases = typeAliases.where((e) => !e.isSynthetic).toList();
     unit.types = unitHolder.types;
     unit.topLevelVariables = unitHolder.topLevelVariables;
-    Map<String, Element> elementMap = <String, Element>{};
     for (ClassElement cls in unit.types) {
       elementMap[cls.name] = cls;
     }
@@ -2219,28 +2502,10 @@
       elementMap[accessor.identifier] = accessor;
     }
     buildCodeRange(unit, unlinkedUnit.codeRange);
-    resynthesizedUnits[absoluteUri] = unit;
-    resynthesizedElements[absoluteUri] = elementMap;
     assert(currentTypeParameters.isEmpty);
   }
 
   /**
-   * Set up data structures for deserializing a compilation unit.
-   */
-  void prepareUnit(CompilationUnitElementImpl unit, int unitNum) {
-    linkedUnit = linkedLibrary.units[unitNum];
-    unlinkedUnit = unlinkedUnits[unitNum];
-    linkedTypeMap = <int, EntityRef>{};
-    currentCompilationUnit = unit;
-    for (EntityRef t in linkedUnit.types) {
-      linkedTypeMap[t.slot] = t;
-    }
-    constCycles = linkedUnit.constCycles.toSet();
-    populateReferenceInfos();
-    unitHolder = new ElementHolder();
-  }
-
-  /**
    * Constructor initializers can reference fields and other constructors of
    * the same class, including forward references. So, we need to delay
    * resolution until after class elements are built.
@@ -2333,149 +2598,3 @@
     return name;
   }
 }
-
-/**
- * Data structure used during resynthesis to record all the information that is
- * known about how to resynthesize a single entry in [LinkedUnit.references]
- * (and its associated entry in [UnlinkedUnit.references], if it exists).
- */
-class _ReferenceInfo {
-  /**
-   * The enclosing [_ReferenceInfo], or `null` for top-level elements.
-   */
-  final _ReferenceInfo enclosing;
-
-  /**
-   * The name of the entity referred to by this reference.
-   */
-  final String name;
-
-  /**
-   * The element referred to by this reference, or `null` if there is no
-   * associated element (e.g. because it is a reference to an undefined
-   * entity).
-   */
-  final Element element;
-
-  /**
-   * If this reference refers to a non-generic type, the type it refers to.
-   * Otherwise `null`.
-   */
-  DartType type;
-
-  /**
-   * The number of type parameters accepted by the entity referred to by this
-   * reference, or zero if it doesn't accept any type parameters.
-   */
-  final int numTypeParameters;
-
-  /**
-   * Create a new [_ReferenceInfo] object referring to an element called [name]
-   * via the element handle [element], and having [numTypeParameters] type
-   * parameters.
-   *
-   * For the special types `dynamic` and `void`, [specialType] should point to
-   * the type itself.  Otherwise, pass `null` and the type will be computed
-   * when appropriate.
-   */
-  _ReferenceInfo(this.enclosing, this.name, this.element, DartType specialType,
-      this.numTypeParameters) {
-    if (specialType != null) {
-      type = specialType;
-    } else {
-      type = _buildType((_) => DynamicTypeImpl.instance, const []);
-    }
-  }
-
-  /**
-   * Build a [DartType] corresponding to the result of applying some type
-   * arguments to the entity referred to by this [_ReferenceInfo].  The type
-   * arguments are retrieved by calling [getTypeArgument].
-   *
-   * If [implicitFunctionTypeIndices] is not empty, a [DartType] should be
-   * created which refers to a function type implicitly defined by one of the
-   * element's parameters.  [implicitFunctionTypeIndices] is interpreted as in
-   * [EntityRef.implicitFunctionTypeIndices].
-   *
-   * If the entity referred to by this [_ReferenceInfo] is not a type, `null`
-   * is returned.
-   */
-  DartType buildType(
-      DartType getTypeArgument(int i), List<int> implicitFunctionTypeIndices) {
-    DartType result =
-        (numTypeParameters == 0 && implicitFunctionTypeIndices.isEmpty)
-            ? type
-            : _buildType(getTypeArgument, implicitFunctionTypeIndices);
-    if (result == null) {
-      // TODO(paulberry): figure out how to handle this case (which should
-      // only occur in the event of erroneous code).
-      throw new UnimplementedError();
-    }
-    return result;
-  }
-
-  /**
-   * If this reference refers to a type, build a [DartType] which instantiates
-   * it with type arguments returned by [getTypeArgument].  Otherwise return
-   * `null`.
-   *
-   * If [implicitFunctionTypeIndices] is not null, a [DartType] should be
-   * created which refers to a function type implicitly defined by one of the
-   * element's parameters.  [implicitFunctionTypeIndices] is interpreted as in
-   * [EntityRef.implicitFunctionTypeIndices].
-   */
-  DartType _buildType(
-      DartType getTypeArgument(int i), List<int> implicitFunctionTypeIndices) {
-    ElementHandle element = this.element; // To allow type promotion
-    if (element is ClassElementHandle) {
-      return new InterfaceTypeImpl.elementWithNameAndArgs(element, name,
-          _buildTypeArguments(numTypeParameters, getTypeArgument));
-    } else if (element is FunctionTypeAliasElementHandle) {
-      return new FunctionTypeImpl.elementWithNameAndArgs(
-          element,
-          name,
-          _buildTypeArguments(numTypeParameters, getTypeArgument),
-          numTypeParameters != 0);
-    } else if (element is FunctionTypedElement) {
-      int numTypeArguments;
-      FunctionTypedElementComputer computer;
-      if (implicitFunctionTypeIndices.isNotEmpty) {
-        numTypeArguments = numTypeParameters;
-        computer = () {
-          FunctionTypedElement element = this.element;
-          for (int index in implicitFunctionTypeIndices) {
-            element = element.parameters[index].type.element;
-          }
-          return element;
-        };
-      } else {
-        // For a type that refers to a generic executable, the type arguments are
-        // not supposed to include the arguments to the executable itself.
-        numTypeArguments = enclosing == null ? 0 : enclosing.numTypeParameters;
-        computer = () => this.element;
-      }
-      // TODO(paulberry): Is it a bug that we have to pass `false` for
-      // isInstantiated?
-      return new DeferredFunctionTypeImpl(computer, null,
-          _buildTypeArguments(numTypeArguments, getTypeArgument), false);
-    } else {
-      return null;
-    }
-  }
-
-  /**
-   * Build a list of type arguments having length [numTypeArguments] where each
-   * type argument is obtained by calling [getTypeArgument].
-   */
-  List<DartType> _buildTypeArguments(
-      int numTypeArguments, DartType getTypeArgument(int i)) {
-    List<DartType> typeArguments = const <DartType>[];
-    if (numTypeArguments != 0) {
-      typeArguments = <DartType>[];
-      for (int i = 0; i < numTypeArguments; i++) {
-        typeArguments.add(getTypeArgument(i));
-      }
-    }
-    return typeArguments;
-  }
-}
diff --git a/pkg/analyzer/lib/src/summary/summarize_ast.dart b/pkg/analyzer/lib/src/summary/summarize_ast.dart
index a527fba..715267b 100644
--- a/pkg/analyzer/lib/src/summary/summarize_ast.dart
+++ b/pkg/analyzer/lib/src/summary/summarize_ast.dart
@@ -255,6 +255,11 @@
   final Map<int, Map<String, int>> nameToReference = <int, Map<String, int>>{};
 
   /**
+   * True if the 'dart:core' library is been summarized.
+   */
+  bool isCoreLibrary = false;
+
+  /**
    * If the library has a library directive, the library name derived from it.
    * Otherwise `null`.
    */
@@ -375,6 +380,8 @@
         serializeTypeParameters(typeParameters, typeParameterScope);
     if (superclass != null) {
       b.supertype = serializeTypeName(superclass);
+    } else {
+      b.hasNoSupertype = isCoreLibrary && name == 'Object';
     }
     if (withClause != null) {
       b.mixins = withClause.mixinTypes.map(serializeTypeName).toList();
@@ -472,6 +479,36 @@
   }
 
   /**
+   * Serialize the given [declaredIdentifier] into [UnlinkedVariable], and
+   * store it in [variables].
+   */
+  void serializeDeclaredIdentifier(
+      AstNode scopeNode,
+      Comment documentationComment,
+      NodeList<Annotation> annotations,
+      bool isFinal,
+      bool isConst,
+      TypeName type,
+      bool assignPropagatedTypeSlot,
+      SimpleIdentifier declaredIdentifier) {
+    UnlinkedVariableBuilder b = new UnlinkedVariableBuilder();
+    b.isFinal = isFinal;
+    b.isConst = isConst;
+    b.name = declaredIdentifier.name;
+    b.nameOffset = declaredIdentifier.offset;
+    b.type = serializeTypeName(type);
+    b.documentationComment = serializeDocumentation(documentationComment);
+    b.annotations = serializeAnnotations(annotations);
+    b.codeRange = serializeCodeRange(declaredIdentifier);
+    if (assignPropagatedTypeSlot) {
+      b.propagatedTypeSlot = assignSlot();
+    }
+    b.visibleOffset = scopeNode?.offset;
+    b.visibleLength = scopeNode?.length;
+    this.variables.add(b);
+  }
+
+  /**
    * Serialize a [Comment] node into an [UnlinkedDocumentationComment] object.
    */
   UnlinkedDocumentationCommentBuilder serializeDocumentation(
@@ -521,7 +558,8 @@
     } else {
       b.kind = UnlinkedExecutableKind.functionOrMethod;
     }
-    b.isAbstract = body is EmptyFunctionBody;
+    b.isExternal = isExternal;
+    b.isAbstract = !isExternal && body is EmptyFunctionBody;
     b.name = nameString;
     b.nameOffset = nameOffset;
     b.typeParameters =
@@ -530,7 +568,6 @@
       b.isStatic = isDeclaredStatic;
     }
     b.returnType = serializeTypeName(returnType);
-    b.isExternal = isExternal;
     bool isSemanticallyStatic = isTopLevel || isDeclaredStatic;
     if (formalParameters != null) {
       b.parameters = formalParameters.parameters
@@ -769,6 +806,7 @@
    * in [this.variables].
    */
   void serializeVariables(
+      AstNode scopeNode,
       VariableDeclarationList variables,
       bool isDeclaredStatic,
       Comment documentationComment,
@@ -801,8 +839,8 @@
           (variable.initializer != null || !isSemanticallyStatic)) {
         b.inferredTypeSlot = assignSlot();
       }
-      b.visibleOffset = enclosingBlock?.offset;
-      b.visibleLength = enclosingBlock?.length;
+      b.visibleOffset = scopeNode?.offset;
+      b.visibleLength = scopeNode?.length;
       b.initializer = serializeInitializerFunction(variable.initializer);
       this.variables.add(b);
     }
@@ -817,6 +855,21 @@
   }
 
   @override
+  void visitCatchClause(CatchClause node) {
+    SimpleIdentifier exception = node.exceptionParameter;
+    SimpleIdentifier st = node.stackTraceParameter;
+    if (exception != null) {
+      serializeDeclaredIdentifier(
+          node, null, null, false, false, node.exceptionType, false, exception);
+    }
+    if (st != null) {
+      serializeDeclaredIdentifier(
+          node, null, null, false, false, null, false, st);
+    }
+    super.visitCatchClause(node);
+  }
+
+  @override
   void visitClassDeclaration(ClassDeclaration node) {
     TypeName superclass =
         node.extendsClause == null ? null : node.extendsClause.superclass;
@@ -890,6 +943,7 @@
     b.isExternal = node.externalKeyword != null;
     b.documentationComment = serializeDocumentation(node.documentationComment);
     b.annotations = serializeAnnotations(node.metadata);
+    b.codeRange = serializeCodeRange(node);
     if (node.constKeyword != null) {
       Set<String> constructorParameterNames =
           node.parameters.parameters.map((p) => p.identifier.name).toSet();
@@ -913,6 +967,7 @@
       b.defaultValueCode = node.defaultValue.toSource();
     }
     b.initializer = serializeInitializerFunction(node.defaultValue);
+    b.codeRange = serializeCodeRange(node);
     return b;
   }
 
@@ -944,7 +999,7 @@
 
   @override
   void visitFieldDeclaration(FieldDeclaration node) {
-    serializeVariables(node.fields, node.staticKeyword != null,
+    serializeVariables(null, node.fields, node.staticKeyword != null,
         node.documentationComment, node.metadata, true);
   }
 
@@ -964,6 +1019,30 @@
   }
 
   @override
+  void visitForEachStatement(ForEachStatement node) {
+    DeclaredIdentifier loopVariable = node.loopVariable;
+    serializeDeclaredIdentifier(
+        node,
+        loopVariable.documentationComment,
+        loopVariable.metadata,
+        loopVariable.isFinal,
+        loopVariable.isConst,
+        loopVariable.type,
+        true,
+        loopVariable.identifier);
+    super.visitForEachStatement(node);
+  }
+
+  @override
+  void visitForStatement(ForStatement node) {
+    VariableDeclarationList declaredVariables = node.variables;
+    if (declaredVariables != null) {
+      serializeVariables(node, declaredVariables, false, null, null, false);
+    }
+    super.visitForStatement(node);
+  }
+
+  @override
   void visitFunctionDeclaration(FunctionDeclaration node) {
     executables.add(serializeExecutable(
         node,
@@ -1060,12 +1139,14 @@
   @override
   void visitLabel(Label node) {
     AstNode parent = node.parent;
-    labels.add(new UnlinkedLabelBuilder(
-        name: node.label.name,
-        nameOffset: node.offset,
-        isOnSwitchMember: parent is SwitchMember,
-        isOnSwitchStatement:
-            parent is LabeledStatement && parent.statement is SwitchStatement));
+    if (parent is! NamedExpression) {
+      labels.add(new UnlinkedLabelBuilder(
+          name: node.label.name,
+          nameOffset: node.offset,
+          isOnSwitchMember: parent is SwitchMember,
+          isOnSwitchStatement: parent is LabeledStatement &&
+              parent.statement is SwitchStatement));
+    }
   }
 
   @override
@@ -1074,6 +1155,7 @@
         node.name.components.map((SimpleIdentifier id) => id.name).join('.');
     libraryNameOffset = node.name.offset;
     libraryNameLength = node.name.length;
+    isCoreLibrary = libraryName == 'dart.core';
     libraryDocumentationComment =
         serializeDocumentation(node.documentationComment);
     libraryAnnotations = serializeAnnotations(node.metadata);
@@ -1107,7 +1189,9 @@
   }
 
   @override
-  void visitPartOfDirective(PartOfDirective node) {}
+  void visitPartOfDirective(PartOfDirective node) {
+    isCoreLibrary = node.libraryName.name == 'dart.core';
+  }
 
   @override
   UnlinkedParamBuilder visitSimpleFormalParameter(SimpleFormalParameter node) {
@@ -1118,8 +1202,8 @@
 
   @override
   void visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
-    serializeVariables(
-        node.variables, false, node.documentationComment, node.metadata, false);
+    serializeVariables(null, node.variables, false, node.documentationComment,
+        node.metadata, false);
   }
 
   @override
@@ -1137,7 +1221,8 @@
 
   @override
   void visitVariableDeclarationStatement(VariableDeclarationStatement node) {
-    serializeVariables(node.variables, false, null, null, false);
+    serializeVariables(
+        enclosingBlock, node.variables, false, null, null, false);
   }
 
   /**
diff --git a/pkg/analyzer/lib/src/summary/summarize_elements.dart b/pkg/analyzer/lib/src/summary/summarize_elements.dart
index 798c152..09ea986 100644
--- a/pkg/analyzer/lib/src/summary/summarize_elements.dart
+++ b/pkg/analyzer/lib/src/summary/summarize_elements.dart
@@ -138,6 +138,40 @@
   final List<String> _unlinkedUnitHashes = <String>[];
 
   /**
+   * Add a fallback library to the package bundle, corresponding to the library
+   * whose defining compilation unit is located at [source].  Caller must also
+   * call [addFallbackUnit] for all compilation units contained in the library
+   * (including the defining compilation unit).
+   */
+  void addFallbackLibrary(Source source) {
+    String uri = source.uri.toString();
+    _linkedLibraryUris.add(uri);
+    _linkedLibraries.add(new LinkedLibraryBuilder(fallbackMode: true));
+  }
+
+  /**
+   * Add a fallback compilation unit to the package bundle, corresponding to
+   * the compilation unit located at [source].
+   */
+  void addFallbackUnit(Source source) {
+    String uri = source.uri.toString();
+    _unlinkedUnitUris.add(uri);
+    _unlinkedUnits
+        .add(new UnlinkedUnitBuilder(fallbackModePath: source.fullName));
+  }
+
+  void addLinkedLibrary(String uri, LinkedLibraryBuilder library) {
+    _linkedLibraries.add(library);
+    _linkedLibraryUris.add(uri);
+  }
+
+  void addUnlinkedUnit(Source source, UnlinkedUnitBuilder unit) {
+    _unlinkedUnitUris.add(source.uri.toString());
+    _unlinkedUnits.add(unit);
+    _unlinkedUnitHashes.add(_hash(source.contents.data));
+  }
+
+  /**
    * Assemble a new [PackageBundleBuilder] using the gathered information.
    */
   PackageBundleBuilder assemble() {
@@ -312,7 +346,9 @@
     for (ClassElement enm in compilationUnit.enums) {
       if (enm.isPublic) {
         names.add(new UnlinkedPublicNameBuilder(
-            kind: ReferenceKind.classOrEnum, name: enm.name));
+            kind: ReferenceKind.classOrEnum,
+            name: enm.name,
+            members: serializeClassConstMembers(enm)));
       }
     }
     for (FunctionElement function in compilationUnit.functions) {
@@ -469,7 +505,8 @@
       return const <UnlinkedConstBuilder>[];
     }
     return element.metadata.map((ElementAnnotationImpl a) {
-      _ConstExprSerializer serializer = new _ConstExprSerializer(this, null);
+      _ConstExprSerializer serializer =
+          new _ConstExprSerializer(this, element, null);
       serializer.serializeAnnotation(a.annotationAst);
       return serializer.toBuilder();
     }).toList();
@@ -615,10 +652,11 @@
   /**
    * Serialize the given [expression], creating an [UnlinkedConstBuilder].
    */
-  UnlinkedConstBuilder serializeConstExpr(Expression expression,
+  UnlinkedConstBuilder serializeConstExpr(
+      Element context, Expression expression,
       [Set<String> constructorParameterNames]) {
     _ConstExprSerializer serializer =
-        new _ConstExprSerializer(this, constructorParameterNames);
+        new _ConstExprSerializer(this, context, constructorParameterNames);
     serializer.serialize(expression);
     return serializer.toBuilder();
   }
@@ -733,8 +771,8 @@
               .map((ConstructorInitializer initializer) =>
                   serializeConstructorInitializer(
                       initializer,
-                      (expr) =>
-                          serializeConstExpr(expr, constructorParameterNames)))
+                      (expr) => serializeConstExpr(
+                          executableElement, expr, constructorParameterNames)))
               .toList();
         }
       }
@@ -870,7 +908,7 @@
       ConstVariableElement constParameter = parameter as ConstVariableElement;
       Expression initializer = constParameter.constantInitializer;
       if (initializer != null) {
-        b.defaultValue = serializeConstExpr(initializer);
+        b.defaultValue = serializeConstExpr(parameter, initializer);
         b.defaultValueCode = parameter.defaultValueCode;
       }
     }
@@ -1084,7 +1122,7 @@
       ConstVariableElement constVariable = variable as ConstVariableElement;
       Expression initializer = constVariable.constantInitializer;
       if (initializer != null) {
-        b.constExpr = serializeConstExpr(initializer);
+        b.constExpr = serializeConstExpr(variable, initializer);
       }
     }
     if (variable is PropertyInducingElement) {
@@ -1248,6 +1286,7 @@
  */
 class _ConstExprSerializer extends AbstractConstExprSerializer {
   final _CompilationUnitSerializer serializer;
+  final Element context;
 
   /**
    * If a constructor initializer expression is being serialized, the names of
@@ -1255,7 +1294,8 @@
    */
   final Set<String> constructorParameterNames;
 
-  _ConstExprSerializer(this.serializer, this.constructorParameterNames);
+  _ConstExprSerializer(
+      this.serializer, this.context, this.constructorParameterNames);
 
   @override
   bool isConstructorParameterName(String name) {
@@ -1386,7 +1426,7 @@
       }
     }
     DartType type = typeName != null ? typeName.type : DynamicTypeImpl.instance;
-    return serializer.serializeTypeRef(type, null);
+    return serializer.serializeTypeRef(type, context);
   }
 }
 
diff --git a/pkg/analyzer/lib/src/task/dart.dart b/pkg/analyzer/lib/src/task/dart.dart
index b366e13..8705dd8 100644
--- a/pkg/analyzer/lib/src/task/dart.dart
+++ b/pkg/analyzer/lib/src/task/dart.dart
@@ -46,7 +46,7 @@
  * The [ResultCachingPolicy] for ASTs.
  */
 const ResultCachingPolicy AST_CACHING_POLICY =
-    const SimpleResultCachingPolicy(8192, 8192);
+    const SimpleResultCachingPolicy(16384, 16384);
 
 /**
  * The [ResultCachingPolicy] for [Element]s.
diff --git a/pkg/analyzer/lib/src/task/html.dart b/pkg/analyzer/lib/src/task/html.dart
index 90e78bd..ae1fb0d 100644
--- a/pkg/analyzer/lib/src/task/html.dart
+++ b/pkg/analyzer/lib/src/task/html.dart
@@ -88,10 +88,6 @@
 
   @override
   bool exists() => source.exists();
-
-  @override
-  Uri resolveRelativeUri(Uri relativeUri) =>
-      throw new StateError('resolveRelativeUri not supported for scripts');
 }
 
 /**
diff --git a/pkg/analyzer/lib/src/task/options_work_manager.dart b/pkg/analyzer/lib/src/task/options_work_manager.dart
index 4447f30..bade2fc 100644
--- a/pkg/analyzer/lib/src/task/options_work_manager.dart
+++ b/pkg/analyzer/lib/src/task/options_work_manager.dart
@@ -169,6 +169,7 @@
   }
 
   /// Return `true` if the given target is an `.analysis_options` source.
-  static bool _isOptionsSource(AnalysisTarget target) => target is Source &&
+  static bool _isOptionsSource(AnalysisTarget target) =>
+      target is Source &&
       AnalysisEngine.isAnalysisOptionsFileName(target.fullName);
 }
diff --git a/pkg/analyzer/lib/src/task/strong/checker.dart b/pkg/analyzer/lib/src/task/strong/checker.dart
index 79da6a8..eaa8599 100644
--- a/pkg/analyzer/lib/src/task/strong/checker.dart
+++ b/pkg/analyzer/lib/src/task/strong/checker.dart
@@ -345,7 +345,8 @@
       // supertype of it, do an implicit downcast to Iterable<dynamic>. Then
       // we'll do a separate cast of the dynamic element to the variable's type.
       if (elementType == null) {
-        var sequenceType = sequenceInterface.instantiate([DynamicTypeImpl.instance]);
+        var sequenceType =
+            sequenceInterface.instantiate([DynamicTypeImpl.instance]);
 
         if (rules.isSubtypeOf(sequenceType, iterableType)) {
           _recordMessage(DownCast.create(
@@ -636,57 +637,6 @@
     }
   }
 
-  void _checkFieldAccess(AstNode node, AstNode target, SimpleIdentifier field) {
-    if ((_isDynamicTarget(target) || field.staticElement == null) &&
-        !_isObjectProperty(target, field)) {
-      _recordDynamicInvoke(node, target);
-    }
-    node.visitChildren(this);
-  }
-
-  void _checkReturnOrYield(Expression expression, AstNode node,
-      {bool yieldStar: false}) {
-    var body = node.getAncestor((n) => n is FunctionBody);
-    var type = _getExpectedReturnType(body, yieldStar: yieldStar);
-    if (type == null) {
-      // We have a type mismatch: the async/async*/sync* modifier does
-      // not match the return or yield type.  We should have already gotten an
-      // analyzer error in this case.
-      return;
-    }
-    InterfaceType futureType = typeProvider.futureType;
-    DartType actualType = expression?.staticType;
-    if (body.isAsynchronous &&
-        !body.isGenerator &&
-        actualType is InterfaceType &&
-        actualType.element == futureType.element) {
-      type = futureType.instantiate([type]);
-    }
-    // TODO(vsm): Enforce void or dynamic (to void?) when expression is null.
-    if (expression != null) checkAssignment(expression, type);
-  }
-
-  void _checkRuntimeTypeCheck(AstNode node, TypeName typeName) {
-    var type = getType(typeName);
-    if (!rules.isGroundType(type)) {
-      _recordMessage(new NonGroundTypeCheckInfo(node, type));
-    }
-  }
-
-  void _checkUnary(/*PrefixExpression|PostfixExpression*/ node) {
-    var op = node.operator;
-    if (op.isUserDefinableOperator ||
-        op.type == TokenType.PLUS_PLUS ||
-        op.type == TokenType.MINUS_MINUS) {
-      if (_isDynamicTarget(node.operand)) {
-        _recordDynamicInvoke(node, node.operand);
-      }
-      // For ++ and --, even if it is not dynamic, we still need to check
-      // that the user defined method accepts an `int` as the RHS.
-      // We assume Analyzer has done this already.
-    }
-  }
-
   /// Records a [DownCast] of [expr] from [from] to [to], if there is one.
   ///
   /// If [from] is omitted, uses the static type of [expr].
@@ -736,6 +686,57 @@
     }
   }
 
+  void _checkFieldAccess(AstNode node, AstNode target, SimpleIdentifier field) {
+    if ((_isDynamicTarget(target) || field.staticElement == null) &&
+        !_isObjectProperty(target, field)) {
+      _recordDynamicInvoke(node, target);
+    }
+    node.visitChildren(this);
+  }
+
+  void _checkReturnOrYield(Expression expression, AstNode node,
+      {bool yieldStar: false}) {
+    FunctionBody body = node.getAncestor((n) => n is FunctionBody);
+    var type = _getExpectedReturnType(body, yieldStar: yieldStar);
+    if (type == null) {
+      // We have a type mismatch: the async/async*/sync* modifier does
+      // not match the return or yield type.  We should have already gotten an
+      // analyzer error in this case.
+      return;
+    }
+    InterfaceType futureType = typeProvider.futureType;
+    DartType actualType = expression?.staticType;
+    if (body.isAsynchronous &&
+        !body.isGenerator &&
+        actualType is InterfaceType &&
+        actualType.element == futureType.element) {
+      type = futureType.instantiate([type]);
+    }
+    // TODO(vsm): Enforce void or dynamic (to void?) when expression is null.
+    if (expression != null) checkAssignment(expression, type);
+  }
+
+  void _checkRuntimeTypeCheck(AstNode node, TypeName typeName) {
+    var type = getType(typeName);
+    if (!rules.isGroundType(type)) {
+      _recordMessage(new NonGroundTypeCheckInfo(node, type));
+    }
+  }
+
+  void _checkUnary(/*PrefixExpression|PostfixExpression*/ node) {
+    var op = node.operator;
+    if (op.isUserDefinableOperator ||
+        op.type == TokenType.PLUS_PLUS ||
+        op.type == TokenType.MINUS_MINUS) {
+      if (_isDynamicTarget(node.operand)) {
+        _recordDynamicInvoke(node, node.operand);
+      }
+      // For ++ and --, even if it is not dynamic, we still need to check
+      // that the user defined method accepts an `int` as the RHS.
+      // We assume Analyzer has done this already.
+    }
+  }
+
   // Produce a coercion which coerces something of type fromT
   // to something of type toT.
   // Returns the error coercion if the types cannot be coerced
@@ -749,7 +750,8 @@
       functionType = _elementType(parent.element);
     } else {
       assert(parent is FunctionExpression);
-      functionType = parent.staticType ?? DynamicTypeImpl.instance;
+      functionType =
+          (parent as FunctionExpression).staticType ?? DynamicTypeImpl.instance;
     }
 
     var type = functionType.returnType;
@@ -804,55 +806,6 @@
     return t;
   }
 
-  /// Remove "fuzzy arrow" in this function type.
-  ///
-  /// Normally we treat dynamically typed parameters as bottom for function
-  /// types. This allows type tests such as `if (f is SingleArgFunction)`.
-  /// It also requires a dynamic check on the parameter type to call these
-  /// functions.
-  ///
-  /// When we convert to a strict arrow, dynamically typed parameters become
-  /// top. This is safe to do for known functions, like top-level or local
-  /// functions and static methods. Those functions must already be essentially
-  /// treating dynamic as top.
-  ///
-  /// Only the outer-most arrow can be strict. Any others must be fuzzy, because
-  /// we don't know what function value will be passed there.
-  // TODO(jmesserly): should we use a real "fuzzyArrow" bit on the function
-  // type? That would allow us to implement this in the subtype relation.
-  // TODO(jmesserly): we'll need to factor this differently if we want to
-  // move CodeChecker's functionality into existing analyzer. Likely we can
-  // let the Expression have a strict arrow, then in places were we do
-  // inference, convert back to a fuzzy arrow.
-  FunctionType _removeFuzz(FunctionType t) {
-    bool foundFuzz = false;
-    List<ParameterElement> parameters = <ParameterElement>[];
-    for (ParameterElement p in t.parameters) {
-      ParameterElement newP = _removeParameterFuzz(p);
-      parameters.add(newP);
-      if (p != newP) foundFuzz = true;
-    }
-    if (!foundFuzz) {
-      return t;
-    }
-
-    FunctionElementImpl function = new FunctionElementImpl("", -1);
-    function.synthetic = true;
-    function.returnType = t.returnType;
-    function.shareTypeParameters(t.typeFormals);
-    function.shareParameters(parameters);
-    return function.type = new FunctionTypeImpl(function);
-  }
-
-  /// Removes fuzzy arrow, see [_removeFuzz].
-  ParameterElement _removeParameterFuzz(ParameterElement p) {
-    if (p.type.isDynamic) {
-      return new ParameterElementImpl.synthetic(
-          p.name, typeProvider.objectType, p.parameterKind);
-    }
-    return p;
-  }
-
   /// Given an expression, return its type assuming it is
   /// in the caller position of a call (that is, accounting
   /// for the possibility of a call method).  Returns null
@@ -955,6 +908,55 @@
     }
   }
 
+  /// Remove "fuzzy arrow" in this function type.
+  ///
+  /// Normally we treat dynamically typed parameters as bottom for function
+  /// types. This allows type tests such as `if (f is SingleArgFunction)`.
+  /// It also requires a dynamic check on the parameter type to call these
+  /// functions.
+  ///
+  /// When we convert to a strict arrow, dynamically typed parameters become
+  /// top. This is safe to do for known functions, like top-level or local
+  /// functions and static methods. Those functions must already be essentially
+  /// treating dynamic as top.
+  ///
+  /// Only the outer-most arrow can be strict. Any others must be fuzzy, because
+  /// we don't know what function value will be passed there.
+  // TODO(jmesserly): should we use a real "fuzzyArrow" bit on the function
+  // type? That would allow us to implement this in the subtype relation.
+  // TODO(jmesserly): we'll need to factor this differently if we want to
+  // move CodeChecker's functionality into existing analyzer. Likely we can
+  // let the Expression have a strict arrow, then in places were we do
+  // inference, convert back to a fuzzy arrow.
+  FunctionType _removeFuzz(FunctionType t) {
+    bool foundFuzz = false;
+    List<ParameterElement> parameters = <ParameterElement>[];
+    for (ParameterElement p in t.parameters) {
+      ParameterElement newP = _removeParameterFuzz(p);
+      parameters.add(newP);
+      if (p != newP) foundFuzz = true;
+    }
+    if (!foundFuzz) {
+      return t;
+    }
+
+    FunctionElementImpl function = new FunctionElementImpl("", -1);
+    function.synthetic = true;
+    function.returnType = t.returnType;
+    function.shareTypeParameters(t.typeFormals);
+    function.shareParameters(parameters);
+    return function.type = new FunctionTypeImpl(function);
+  }
+
+  /// Removes fuzzy arrow, see [_removeFuzz].
+  ParameterElement _removeParameterFuzz(ParameterElement p) {
+    if (p.type.isDynamic) {
+      return new ParameterElementImpl.synthetic(
+          p.name, typeProvider.objectType, p.parameterKind);
+    }
+    return p;
+  }
+
   DartType _specializedBinaryReturnType(
       TokenType op, DartType t1, DartType t2, DartType normalReturnType) {
     // This special cases binary return types as per 16.26 and 16.27 of the
@@ -1058,7 +1060,6 @@
   _checkIndividualOverridesFromClass(ClassDeclaration node,
       InterfaceType baseType, Set<String> seen, bool isSubclass) {
     for (var member in node.members) {
-      if (member is ConstructorDeclaration) continue;
       if (member is FieldDeclaration) {
         if (member.isStatic) continue;
         for (var variable in member.fields.variables) {
@@ -1068,23 +1069,25 @@
           var getter = element.getter;
           var setter = element.setter;
           bool found = _checkSingleOverride(
-              getter, baseType, variable, member, isSubclass);
+              getter, baseType, variable.name, member, isSubclass);
           if (!variable.isFinal &&
               !variable.isConst &&
               _checkSingleOverride(
-                  setter, baseType, variable, member, isSubclass)) {
+                  setter, baseType, variable.name, member, isSubclass)) {
             found = true;
           }
           if (found) seen.add(name);
         }
-      } else {
-        if ((member as MethodDeclaration).isStatic) continue;
-        var method = (member as MethodDeclaration).element;
+      } else if (member is MethodDeclaration) {
+        if (member.isStatic) continue;
+        var method = member.element;
         if (seen.contains(method.name)) continue;
         if (_checkSingleOverride(
-            method, baseType, member, member, isSubclass)) {
+            method, baseType, member.name, member, isSubclass)) {
           seen.add(method.name);
         }
+      } else {
+        assert(member is ConstructorDeclaration);
       }
     }
   }
diff --git a/pkg/analyzer/lib/src/task/strong/info.dart b/pkg/analyzer/lib/src/task/strong/info.dart
index b8f09ea..41703e1 100644
--- a/pkg/analyzer/lib/src/task/strong/info.dart
+++ b/pkg/analyzer/lib/src/task/strong/info.dart
@@ -170,7 +170,7 @@
   @override
   String get name => 'STRONG_MODE_DOWN_CAST_COMPOSITE';
 
-  toErrorCode() => new StaticTypeWarningCode(name, message);
+  toErrorCode() => new StaticWarningCode(name, message);
 }
 
 /// A down cast to a non-ground type.  These behave differently from standard
@@ -518,7 +518,9 @@
 
   static bool isKnownFunction(Expression expression) {
     Element element = null;
-    if (expression is PropertyAccess) {
+    if (expression is FunctionExpression) {
+      return true;
+    } else if (expression is PropertyAccess) {
       element = expression.propertyName.staticElement;
     } else if (expression is Identifier) {
       element = expression.staticElement;
diff --git a/pkg/analyzer/pubspec.yaml b/pkg/analyzer/pubspec.yaml
index e902923..7c34d93 100644
--- a/pkg/analyzer/pubspec.yaml
+++ b/pkg/analyzer/pubspec.yaml
@@ -1,5 +1,5 @@
 name: analyzer
-version: 0.27.3-alpha.4
+version: 0.27.3-alpha.6
 author: Dart Team <misc@dartlang.org>
 description: Static analyzer for Dart.
 homepage: https://github.com/dart-lang/sdk/tree/master/pkg/analyzer
diff --git a/pkg/analyzer/test/cancelable_future_test.dart b/pkg/analyzer/test/cancelable_future_test.dart
index 24c84ae..1ece1a5f 100644
--- a/pkg/analyzer/test/cancelable_future_test.dart
+++ b/pkg/analyzer/test/cancelable_future_test.dart
@@ -39,15 +39,18 @@
     completer.future.cancel();
     expect(cancelCount, 1);
     // Make sure the future still completes with error.
-    return completer.future.then((_) {
-      fail('Expected error completion');
-    }, onError: (error) {
-      expect(error, new isInstanceOf<FutureCanceledError>());
-      // And make sure nothing else happens.
-    }).then((_) => pumpEventQueue()).then((_) {
-      expect(completer.isCompleted, isFalse);
-      expect(cancelCount, 1);
-    });
+    return completer.future
+        .then((_) {
+          fail('Expected error completion');
+        }, onError: (error) {
+          expect(error, new isInstanceOf<FutureCanceledError>());
+          // And make sure nothing else happens.
+        })
+        .then((_) => pumpEventQueue())
+        .then((_) {
+          expect(completer.isCompleted, isFalse);
+          expect(cancelCount, 1);
+        });
   }
 
   Future test_cancel_after_chaining() {
@@ -82,13 +85,16 @@
     // late to cancel.
     expect(cancelCount, 0);
     // Make sure the future still completes with the object.
-    return completer.future.then((result) {
-      expect(result, same(obj));
-      // And make sure nothing else happens.
-    }).then((_) => pumpEventQueue()).then((_) {
-      expect(completer.isCompleted, isTrue);
-      expect(cancelCount, 0);
-    });
+    return completer.future
+        .then((result) {
+          expect(result, same(obj));
+          // And make sure nothing else happens.
+        })
+        .then((_) => pumpEventQueue())
+        .then((_) {
+          expect(completer.isCompleted, isTrue);
+          expect(cancelCount, 0);
+        });
   }
 
   Future test_cancel_before_chaining() {
@@ -126,15 +132,18 @@
     completer.complete(obj);
     expect(completer.isCompleted, isTrue);
     // Make sure the future still completer with error.
-    return completer.future.then((_) {
-      fail('Expected error completion');
-    }, onError: (error) {
-      expect(error, new isInstanceOf<FutureCanceledError>());
-      // And make sure nothing else happens.
-    }).then((_) => pumpEventQueue()).then((_) {
-      expect(completer.isCompleted, isTrue);
-      expect(cancelCount, 1);
-    });
+    return completer.future
+        .then((_) {
+          fail('Expected error completion');
+        }, onError: (error) {
+          expect(error, new isInstanceOf<FutureCanceledError>());
+          // And make sure nothing else happens.
+        })
+        .then((_) => pumpEventQueue())
+        .then((_) {
+          expect(completer.isCompleted, isTrue);
+          expect(cancelCount, 1);
+        });
   }
 
   Future test_complete_after_chaining() {
@@ -150,16 +159,19 @@
     expect(completer.isCompleted, isFalse);
     // Running the event loop should have no effect since the completer hasn't
     // been completed yet.
-    return pumpEventQueue().then((_) {
-      completer.complete(obj);
-      expect(completer.isCompleted, isTrue);
-      // The callback should be deferred to a microtask.
-      expect(callbackInvoked, isFalse);
-    }).then((_) => pumpEventQueue()).then((_) {
-      expect(callbackInvoked, isTrue);
-      expect(completer.isCompleted, isTrue);
-      expect(cancelCount, 0);
-    });
+    return pumpEventQueue()
+        .then((_) {
+          completer.complete(obj);
+          expect(completer.isCompleted, isTrue);
+          // The callback should be deferred to a microtask.
+          expect(callbackInvoked, isFalse);
+        })
+        .then((_) => pumpEventQueue())
+        .then((_) {
+          expect(callbackInvoked, isTrue);
+          expect(completer.isCompleted, isTrue);
+          expect(cancelCount, 0);
+        });
   }
 
   void test_complete_after_complete() {
@@ -221,15 +233,18 @@
     completer.completeError(obj);
     expect(completer.isCompleted, isTrue);
     // Make sure the future still completes with error.
-    return completer.future.then((_) {
-      fail('Expected error completion');
-    }, onError: (error) {
-      expect(error, new isInstanceOf<FutureCanceledError>());
-      // And make sure nothing else happens.
-    }).then((_) => pumpEventQueue()).then((_) {
-      expect(completer.isCompleted, isTrue);
-      expect(cancelCount, 1);
-    });
+    return completer.future
+        .then((_) {
+          fail('Expected error completion');
+        }, onError: (error) {
+          expect(error, new isInstanceOf<FutureCanceledError>());
+          // And make sure nothing else happens.
+        })
+        .then((_) => pumpEventQueue())
+        .then((_) {
+          expect(completer.isCompleted, isTrue);
+          expect(cancelCount, 1);
+        });
   }
 
   Future test_completeError_after_chaining() {
@@ -245,16 +260,19 @@
     expect(completer.isCompleted, isFalse);
     // Running the event loop should have no effect since the completer hasn't
     // been completed yet.
-    return pumpEventQueue().then((_) {
-      completer.completeError(obj);
-      expect(completer.isCompleted, isTrue);
-      // The callback should be deferred to a microtask.
-      expect(callbackInvoked, isFalse);
-    }).then((_) => pumpEventQueue()).then((_) {
-      expect(callbackInvoked, isTrue);
-      expect(completer.isCompleted, isTrue);
-      expect(cancelCount, 0);
-    });
+    return pumpEventQueue()
+        .then((_) {
+          completer.completeError(obj);
+          expect(completer.isCompleted, isTrue);
+          // The callback should be deferred to a microtask.
+          expect(callbackInvoked, isFalse);
+        })
+        .then((_) => pumpEventQueue())
+        .then((_) {
+          expect(callbackInvoked, isTrue);
+          expect(completer.isCompleted, isTrue);
+          expect(cancelCount, 0);
+        });
   }
 
   Future test_completeError_before_chaining() {
diff --git a/pkg/analyzer/test/dart/ast/ast_test.dart b/pkg/analyzer/test/dart/ast/ast_test.dart
index 6cd446d..35ff9a9 100644
--- a/pkg/analyzer/test/dart/ast/ast_test.dart
+++ b/pkg/analyzer/test/dart/ast/ast_test.dart
@@ -573,124 +573,6 @@
 
 @reflectiveTest
 class SimpleIdentifierTest extends ParserTestCase {
-  void test_inDeclarationContext_catch_exception() {
-    SimpleIdentifier identifier =
-        AstFactory.catchClause("e").exceptionParameter;
-    expect(identifier.inDeclarationContext(), isTrue);
-  }
-
-  void test_inDeclarationContext_catch_stack() {
-    SimpleIdentifier identifier =
-        AstFactory.catchClause2("e", "s").stackTraceParameter;
-    expect(identifier.inDeclarationContext(), isTrue);
-  }
-
-  void test_inDeclarationContext_classDeclaration() {
-    SimpleIdentifier identifier =
-        AstFactory.classDeclaration(null, "C", null, null, null, null).name;
-    expect(identifier.inDeclarationContext(), isTrue);
-  }
-
-  void test_inDeclarationContext_classTypeAlias() {
-    SimpleIdentifier identifier =
-        AstFactory.classTypeAlias("C", null, null, null, null, null).name;
-    expect(identifier.inDeclarationContext(), isTrue);
-  }
-
-  void test_inDeclarationContext_constructorDeclaration() {
-    SimpleIdentifier identifier = AstFactory
-        .constructorDeclaration(AstFactory.identifier3("C"), "c", null, null)
-        .name;
-    expect(identifier.inDeclarationContext(), isTrue);
-  }
-
-  void test_inDeclarationContext_declaredIdentifier() {
-    DeclaredIdentifier declaredIdentifier = AstFactory.declaredIdentifier3("v");
-    SimpleIdentifier identifier = declaredIdentifier.identifier;
-    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;
-    expect(identifier.inDeclarationContext(), isFalse);
-  }
-
-  void test_inDeclarationContext_functionDeclaration() {
-    SimpleIdentifier identifier =
-        AstFactory.functionDeclaration(null, null, "f", null).name;
-    expect(identifier.inDeclarationContext(), isTrue);
-  }
-
-  void test_inDeclarationContext_functionTypeAlias() {
-    SimpleIdentifier identifier =
-        AstFactory.typeAlias(null, "F", null, null).name;
-    expect(identifier.inDeclarationContext(), isTrue);
-  }
-
-  void test_inDeclarationContext_label_false() {
-    SimpleIdentifier identifier =
-        AstFactory.namedExpression2("l", AstFactory.integer(0)).name.label;
-    expect(identifier.inDeclarationContext(), isFalse);
-  }
-
-  void test_inDeclarationContext_label_true() {
-    Label label = AstFactory.label2("l");
-    SimpleIdentifier identifier = label.label;
-    AstFactory.labeledStatement([label], AstFactory.emptyStatement());
-    expect(identifier.inDeclarationContext(), isTrue);
-  }
-
-  void test_inDeclarationContext_methodDeclaration() {
-    SimpleIdentifier identifier = AstFactory.identifier3("m");
-    AstFactory.methodDeclaration2(
-        null, null, null, null, identifier, null, null);
-    expect(identifier.inDeclarationContext(), isTrue);
-  }
-
-  void test_inDeclarationContext_prefix() {
-    SimpleIdentifier identifier =
-        AstFactory.importDirective3("uri", "pref").prefix;
-    expect(identifier.inDeclarationContext(), isTrue);
-  }
-
-  void test_inDeclarationContext_simpleFormalParameter() {
-    SimpleIdentifier identifier =
-        AstFactory.simpleFormalParameter3("p").identifier;
-    expect(identifier.inDeclarationContext(), isTrue);
-  }
-
-  void test_inDeclarationContext_typeParameter_bound() {
-    TypeName bound = AstFactory.typeName4("A");
-    SimpleIdentifier identifier = bound.name as SimpleIdentifier;
-    AstFactory.typeParameter2("E", bound);
-    expect(identifier.inDeclarationContext(), isFalse);
-  }
-
-  void test_inDeclarationContext_typeParameter_name() {
-    SimpleIdentifier identifier = AstFactory.typeParameter("E").name;
-    expect(identifier.inDeclarationContext(), isTrue);
-  }
-
-  void test_inDeclarationContext_variableDeclaration() {
-    SimpleIdentifier identifier = AstFactory.variableDeclaration("v").name;
-    expect(identifier.inDeclarationContext(), isTrue);
-  }
-
   void test_inGetterContext() {
     for (_WrapperKind wrapper in _WrapperKind.values) {
       for (_AssignmentKind assignment in _AssignmentKind.values) {
diff --git a/pkg/analyzer/test/file_system/memory_file_system_test.dart b/pkg/analyzer/test/file_system/memory_file_system_test.dart
index 759362b..b40be43 100644
--- a/pkg/analyzer/test/file_system/memory_file_system_test.dart
+++ b/pkg/analyzer/test/file_system/memory_file_system_test.dart
@@ -11,6 +11,7 @@
 import 'package:analyzer/file_system/memory_file_system.dart';
 import 'package:analyzer/src/generated/engine.dart' show TimestampedData;
 import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/generated/utilities_dart.dart';
 import 'package:path/path.dart';
 import 'package:unittest/unittest.dart';
 import 'package:watcher/watcher.dart';
@@ -402,14 +403,14 @@
   }
 
   void test_resolveRelative() {
-    Uri relative = source.resolveRelativeUri(new Uri.file('bar/baz.dart'));
+    Uri relative = resolveRelativeUri(source.uri, new Uri.file('bar/baz.dart'));
     expect(relative.path, '/foo/bar/baz.dart');
   }
 
   void test_resolveRelative_dart() {
     File file = provider.newFile('/sdk/lib/core/core.dart', '');
     Source source = file.createSource(Uri.parse('dart:core'));
-    Uri resolved = source.resolveRelativeUri(Uri.parse('int.dart'));
+    Uri resolved = resolveRelativeUri(source.uri, Uri.parse('int.dart'));
     expect(resolved.toString(), 'dart:core/int.dart');
   }
 
@@ -451,7 +452,7 @@
   }
 
   void test_resolveRelative() {
-    Uri relative = source.resolveRelativeUri(new Uri.file('bar/baz.dart'));
+    Uri relative = resolveRelativeUri(source.uri, new Uri.file('bar/baz.dart'));
     expect(relative.path, '/foo/bar/baz.dart');
   }
 
diff --git a/pkg/analyzer/test/generated/all_the_rest_test.dart b/pkg/analyzer/test/generated/all_the_rest_test.dart
index 33db261..f032daf 100644
--- a/pkg/analyzer/test/generated/all_the_rest_test.dart
+++ b/pkg/analyzer/test/generated/all_the_rest_test.dart
@@ -54,6 +54,7 @@
   runReflectiveTests(ExitDetectorTest2);
   runReflectiveTests(FileBasedSourceTest);
   runReflectiveTests(FileUriResolverTest);
+  runReflectiveTests(ResolveRelativeUriTest);
   runReflectiveTests(SDKLibrariesReaderTest);
   runReflectiveTests(UriKindTest);
 }
@@ -155,6 +156,24 @@
     expect(docFile, isNotNull);
   }
 
+  void test_analysisOptions_afterContextCreation() {
+    DirectoryBasedDartSdk sdk = _createDartSdk();
+    sdk.context;
+    expect(() {
+      sdk.analysisOptions = new AnalysisOptionsImpl();
+    }, throwsStateError);
+  }
+
+  void test_analysisOptions_beforeContextCreation() {
+    DirectoryBasedDartSdk sdk = _createDartSdk();
+    sdk.analysisOptions = new AnalysisOptionsImpl();
+    sdk.context;
+    // cannot change "analysisOptions" in the context
+    expect(() {
+      sdk.context.analysisOptions = new AnalysisOptionsImpl();
+    }, throwsStateError);
+  }
+
   void test_creation() {
     DirectoryBasedDartSdk sdk = _createDartSdk();
     expect(sdk, isNotNull);
@@ -262,6 +281,20 @@
     expect(executable.isExecutable(), isTrue);
   }
 
+  void test_useSummary_afterContextCreation() {
+    DirectoryBasedDartSdk sdk = _createDartSdk();
+    sdk.context;
+    expect(() {
+      sdk.useSummary = true;
+    }, throwsStateError);
+  }
+
+  void test_useSummary_beforeContextCreation() {
+    DirectoryBasedDartSdk sdk = _createDartSdk();
+    sdk.useSummary = true;
+    sdk.context;
+  }
+
   DirectoryBasedDartSdk _createDartSdk() {
     JavaFile sdkDirectory = DirectoryBasedDartSdk.defaultSdkDirectory;
     expect(sdkDirectory, isNotNull,
@@ -563,11 +596,13 @@
     String stackParameterName = "s";
     CatchClause clause =
         AstFactory.catchClause2(exceptionParameterName, stackParameterName);
+    _setNodeSourceRange(clause, 100, 110);
     clause.accept(builder);
 
     List<LocalVariableElement> variables = holder.localVariables;
     expect(variables, hasLength(2));
-    VariableElement exceptionVariable = variables[0];
+
+    LocalVariableElement exceptionVariable = variables[0];
     expect(exceptionVariable, isNotNull);
     expect(exceptionVariable.name, exceptionParameterName);
     expect(exceptionVariable.hasImplicitType, isTrue);
@@ -575,13 +610,16 @@
     expect(exceptionVariable.isConst, isFalse);
     expect(exceptionVariable.isFinal, isFalse);
     expect(exceptionVariable.initializer, isNull);
-    VariableElement stackVariable = variables[1];
+    _assertVisibleRange(exceptionVariable, 100, 110);
+
+    LocalVariableElement stackVariable = variables[1];
     expect(stackVariable, isNotNull);
     expect(stackVariable.name, stackParameterName);
     expect(stackVariable.isSynthetic, isFalse);
     expect(stackVariable.isConst, isFalse);
     expect(stackVariable.isFinal, isFalse);
     expect(stackVariable.initializer, isNull);
+    _assertVisibleRange(stackVariable, 100, 110);
   }
 
   void test_visitCatchClause_withType() {
@@ -4023,38 +4061,6 @@
     expect(source.exists(), isFalse);
   }
 
-  void test_resolveRelative_dart_fileName() {
-    JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
-    FileBasedSource source =
-        new FileBasedSource(file, parseUriWithException("dart:test"));
-    expect(source, isNotNull);
-    Uri relative = source.resolveRelativeUri(parseUriWithException("lib.dart"));
-    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(file, parseUriWithException("dart:test"));
-    expect(source, isNotNull);
-    Uri relative =
-        source.resolveRelativeUri(parseUriWithException("c/lib.dart"));
-    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(
-        file, parseUriWithException("dart:test/b/test.dart"));
-    expect(source, isNotNull);
-    Uri relative =
-        source.resolveRelativeUri(parseUriWithException("../c/lib.dart"));
-    expect(relative, isNotNull);
-    expect(relative.toString(), "dart:test/c/lib.dart");
-  }
-
   void test_resolveRelative_file_fileName() {
     if (OSUtilities.isWindows()) {
       // On Windows, the URI that is produced includes a drive letter,
@@ -4065,7 +4071,8 @@
     JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
     FileBasedSource source = new FileBasedSource(file);
     expect(source, isNotNull);
-    Uri relative = source.resolveRelativeUri(parseUriWithException("lib.dart"));
+    Uri relative =
+        resolveRelativeUri(source.uri, parseUriWithException("lib.dart"));
     expect(relative, isNotNull);
     expect(relative.toString(), "file:///a/b/lib.dart");
   }
@@ -4081,7 +4088,7 @@
     FileBasedSource source = new FileBasedSource(file);
     expect(source, isNotNull);
     Uri relative =
-        source.resolveRelativeUri(parseUriWithException("c/lib.dart"));
+        resolveRelativeUri(source.uri, parseUriWithException("c/lib.dart"));
     expect(relative, isNotNull);
     expect(relative.toString(), "file:///a/b/c/lib.dart");
   }
@@ -4096,53 +4103,11 @@
     FileBasedSource source = new FileBasedSource(file);
     expect(source, isNotNull);
     Uri relative =
-        source.resolveRelativeUri(parseUriWithException("../c/lib.dart"));
+        resolveRelativeUri(source.uri, parseUriWithException("../c/lib.dart"));
     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(file, parseUriWithException("package:b/test.dart"));
-    expect(source, isNotNull);
-    Uri relative = source.resolveRelativeUri(parseUriWithException("lib.dart"));
-    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(file, parseUriWithException("package:test.dart"));
-    expect(source, isNotNull);
-    Uri relative = source.resolveRelativeUri(parseUriWithException("lib.dart"));
-    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(file, parseUriWithException("package:b/test.dart"));
-    expect(source, isNotNull);
-    Uri relative =
-        source.resolveRelativeUri(parseUriWithException("c/lib.dart"));
-    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(
-        file, parseUriWithException("package:a/b/test.dart"));
-    expect(source, isNotNull);
-    Uri relative =
-        source.resolveRelativeUri(parseUriWithException("../c/lib.dart"));
-    expect(relative, isNotNull);
-    expect(relative.toString(), "package:a/c/lib.dart");
-  }
-
   void test_system() {
     JavaFile file = FileUtilities2.createFile("/does/not/exist.dart");
     FileBasedSource source =
@@ -4189,6 +4154,74 @@
 }
 
 @reflectiveTest
+class ResolveRelativeUriTest {
+  void test_resolveRelative_dart_dartUri() {
+    Uri uri = parseUriWithException('dart:foo');
+    Uri relative = resolveRelativeUri(uri, parseUriWithException('dart:bar'));
+    expect(relative, isNotNull);
+    expect(relative.toString(), 'dart:bar');
+  }
+
+  void test_resolveRelative_dart_fileName() {
+    Uri uri = parseUriWithException("dart:test");
+    Uri relative = resolveRelativeUri(uri, parseUriWithException("lib.dart"));
+    expect(relative, isNotNull);
+    expect(relative.toString(), "dart:test/lib.dart");
+  }
+
+  void test_resolveRelative_dart_filePath() {
+    Uri uri = parseUriWithException("dart:test");
+    Uri relative = resolveRelativeUri(uri, parseUriWithException("c/lib.dart"));
+    expect(relative, isNotNull);
+    expect(relative.toString(), "dart:test/c/lib.dart");
+  }
+
+  void test_resolveRelative_dart_filePathWithParent() {
+    Uri uri = parseUriWithException("dart:test/b/test.dart");
+    Uri relative =
+        resolveRelativeUri(uri, parseUriWithException("../c/lib.dart"));
+    expect(relative, isNotNull);
+    expect(relative.toString(), "dart:test/c/lib.dart");
+  }
+
+  void test_resolveRelative_package_dartUri() {
+    Uri uri = parseUriWithException('package:foo/bar.dart');
+    Uri relative = resolveRelativeUri(uri, parseUriWithException('dart:test'));
+    expect(relative, isNotNull);
+    expect(relative.toString(), 'dart:test');
+  }
+
+  void test_resolveRelative_package_fileName() {
+    Uri uri = parseUriWithException("package:b/test.dart");
+    Uri relative = resolveRelativeUri(uri, parseUriWithException("lib.dart"));
+    expect(relative, isNotNull);
+    expect(relative.toString(), "package:b/lib.dart");
+  }
+
+  void test_resolveRelative_package_fileNameWithoutPackageName() {
+    Uri uri = parseUriWithException("package:test.dart");
+    Uri relative = resolveRelativeUri(uri, parseUriWithException("lib.dart"));
+    expect(relative, isNotNull);
+    expect(relative.toString(), "package:lib.dart");
+  }
+
+  void test_resolveRelative_package_filePath() {
+    Uri uri = parseUriWithException("package:b/test.dart");
+    Uri relative = resolveRelativeUri(uri, parseUriWithException("c/lib.dart"));
+    expect(relative, isNotNull);
+    expect(relative.toString(), "package:b/c/lib.dart");
+  }
+
+  void test_resolveRelative_package_filePathWithParent() {
+    Uri uri = parseUriWithException("package:a/b/test.dart");
+    Uri relative =
+        resolveRelativeUri(uri, parseUriWithException("../c/lib.dart"));
+    expect(relative, isNotNull);
+    expect(relative.toString(), "package:a/c/lib.dart");
+  }
+}
+
+@reflectiveTest
 class SDKLibrariesReaderTest extends EngineTestCase {
   void test_readFrom_dart2js() {
     LibraryMap libraryMap = new SdkLibrariesReader(true).readFromFile(
diff --git a/pkg/analyzer/test/generated/analysis_context_factory.dart b/pkg/analyzer/test/generated/analysis_context_factory.dart
index ad6f418..04560c2 100644
--- a/pkg/analyzer/test/generated/analysis_context_factory.dart
+++ b/pkg/analyzer/test/generated/analysis_context_factory.dart
@@ -93,7 +93,7 @@
     //
     TestTypeProvider provider = new TestTypeProvider();
     CompilationUnitElementImpl coreUnit =
-    new CompilationUnitElementImpl("core.dart");
+        new CompilationUnitElementImpl("core.dart");
     Source coreSource = sourceFactory.forUri(DartSdk.DART_CORE);
     coreContext.setContents(coreSource, "");
     coreUnit.librarySource = coreUnit.source = coreSource;
@@ -132,15 +132,15 @@
     TopLevelVariableElement proxyTopLevelVariableElt = ElementFactory
         .topLevelVariableElement3("proxy", true, false, proxyClassElement.type);
     ConstTopLevelVariableElementImpl deprecatedTopLevelVariableElt =
-    ElementFactory.topLevelVariableElement3(
-        "deprecated", true, false, provider.deprecatedType);
+        ElementFactory.topLevelVariableElement3(
+            "deprecated", true, false, provider.deprecatedType);
     {
       ClassElement deprecatedElement = provider.deprecatedType.element;
       InstanceCreationExpression initializer = AstFactory
           .instanceCreationExpression2(
-          Keyword.CONST,
-          AstFactory.typeName(deprecatedElement),
-          [AstFactory.string2('next release')]);
+              Keyword.CONST,
+              AstFactory.typeName(deprecatedElement),
+              [AstFactory.string2('next release')]);
       ConstructorElement constructor = deprecatedElement.constructors.single;
       initializer.staticElement = constructor;
       initializer.constructorName.staticElement = constructor;
@@ -166,18 +166,18 @@
       asyncLibrary = new LibraryElementImpl.forNode(
           coreContext, AstFactory.libraryIdentifier2(["dart", "async"]));
       CompilationUnitElementImpl asyncUnit =
-      new CompilationUnitElementImpl("async.dart");
+          new CompilationUnitElementImpl("async.dart");
       asyncSource = sourceFactory.forUri(DartSdk.DART_ASYNC);
       coreContext.setContents(asyncSource, "");
       asyncUnit.librarySource = asyncUnit.source = asyncSource;
       asyncLibrary.definingCompilationUnit = asyncUnit;
       // Future
       ClassElementImpl futureElement =
-      ElementFactory.classElement2("Future", ["T"]);
+          ElementFactory.classElement2("Future", ["T"]);
       futureElement.enclosingElement = asyncUnit;
       //   factory Future.value([value])
       ConstructorElementImpl futureConstructor =
-      ElementFactory.constructorElement2(futureElement, "value");
+          ElementFactory.constructorElement2(futureElement, "value");
       futureConstructor.parameters = <ParameterElement>[
         ElementFactory.positionalParameter2("value", provider.dynamicType)
       ];
@@ -210,18 +210,18 @@
       futureElement.methods = <MethodElement>[thenMethod];
       // Completer
       ClassElementImpl completerElement =
-      ElementFactory.classElement2("Completer", ["T"]);
+          ElementFactory.classElement2("Completer", ["T"]);
       ConstructorElementImpl completerConstructor =
-      ElementFactory.constructorElement2(completerElement, null);
+          ElementFactory.constructorElement2(completerElement, null);
       completerElement.constructors = <ConstructorElement>[
         completerConstructor
       ];
       // StreamSubscription
       ClassElementImpl streamSubscriptionElement =
-      ElementFactory.classElement2("StreamSubscription", ["T"]);
+          ElementFactory.classElement2("StreamSubscription", ["T"]);
       // Stream
       ClassElementImpl streamElement =
-      ElementFactory.classElement2("Stream", ["T"]);
+          ElementFactory.classElement2("Stream", ["T"]);
       streamElement.constructors = <ConstructorElement>[
         ElementFactory.constructorElement2(streamElement, null)
       ];
@@ -236,7 +236,7 @@
       List<DartType> parameterTypes = <DartType>[listenOnData.type,];
       // TODO(brianwilkerson) This is missing the optional parameters.
       MethodElementImpl listenMethod =
-      ElementFactory.methodElement('listen', returnType, parameterTypes);
+          ElementFactory.methodElement('listen', returnType, parameterTypes);
       streamElement.methods = <MethodElement>[listenMethod];
       listenMethod.type = new FunctionTypeImpl(listenMethod);
 
@@ -257,16 +257,16 @@
     // dart:html
     //
     CompilationUnitElementImpl htmlUnit =
-    new CompilationUnitElementImpl("html_dartium.dart");
+        new CompilationUnitElementImpl("html_dartium.dart");
     Source htmlSource = sourceFactory.forUri(DartSdk.DART_HTML);
     coreContext.setContents(htmlSource, "");
     htmlUnit.librarySource = htmlUnit.source = htmlSource;
     ClassElementImpl elementElement = ElementFactory.classElement2("Element");
     InterfaceType elementType = elementElement.type;
     ClassElementImpl canvasElement =
-    ElementFactory.classElement("CanvasElement", elementType);
+        ElementFactory.classElement("CanvasElement", elementType);
     ClassElementImpl contextElement =
-    ElementFactory.classElement2("CanvasRenderingContext");
+        ElementFactory.classElement2("CanvasRenderingContext");
     InterfaceType contextElementType = contextElement.type;
     ClassElementImpl context2dElement = ElementFactory.classElement(
         "CanvasRenderingContext2D", contextElementType);
@@ -281,9 +281,9 @@
         .map((PropertyAccessorElement accessor) => accessor.variable)
         .toList();
     ClassElementImpl documentElement =
-    ElementFactory.classElement("Document", elementType);
+        ElementFactory.classElement("Document", elementType);
     ClassElementImpl htmlDocumentElement =
-    ElementFactory.classElement("HtmlDocument", documentElement.type);
+        ElementFactory.classElement("HtmlDocument", documentElement.type);
     htmlDocumentElement.methods = <MethodElement>[
       ElementFactory
           .methodElement("query", elementType, <DartType>[provider.stringType])
@@ -307,8 +307,8 @@
           <ClassElement>[provider.stringType.element], ClassElement.EMPTY_LIST)
     ];
     TopLevelVariableElementImpl document =
-    ElementFactory.topLevelVariableElement3(
-        "document", false, true, htmlDocumentElement.type);
+        ElementFactory.topLevelVariableElement3(
+            "document", false, true, htmlDocumentElement.type);
     htmlUnit.topLevelVariables = <TopLevelVariableElement>[document];
     htmlUnit.accessors = <PropertyAccessorElement>[document.getter];
     LibraryElementImpl htmlLibrary = new LibraryElementImpl.forNode(
@@ -318,7 +318,7 @@
     // dart:math
     //
     CompilationUnitElementImpl mathUnit =
-    new CompilationUnitElementImpl("math.dart");
+        new CompilationUnitElementImpl("math.dart");
     Source mathSource = sourceFactory.forUri(_DART_MATH);
     coreContext.setContents(mathSource, "");
     mathUnit.librarySource = mathUnit.source = mathSource;
@@ -330,7 +330,7 @@
     TopLevelVariableElement ln10Element = ElementFactory
         .topLevelVariableElement3("LN10", true, false, provider.doubleType);
     TypeParameterElement maxT =
-    ElementFactory.typeParameterWithType('T', provider.numType);
+        ElementFactory.typeParameterWithType('T', provider.numType);
     FunctionElementImpl maxElement = ElementFactory.functionElement3(
         "max", maxT, [maxT, maxT], ClassElement.EMPTY_LIST);
     maxElement.typeParameters = [maxT];
@@ -340,7 +340,7 @@
     ClassElementImpl randomElement = ElementFactory.classElement2("Random");
     randomElement.abstract = true;
     ConstructorElementImpl randomConstructor =
-    ElementFactory.constructorElement2(randomElement, null);
+        ElementFactory.constructorElement2(randomElement, null);
     randomConstructor.factory = true;
     ParameterElementImpl seedParam = new ParameterElementImpl("seed", 0);
     seedParam.parameterKind = ParameterKind.POSITIONAL;
@@ -386,7 +386,7 @@
     // Record the elements.
     //
     HashMap<Source, LibraryElement> elementMap =
-    new HashMap<Source, LibraryElement>();
+        new HashMap<Source, LibraryElement>();
     elementMap[coreSource] = coreLibrary;
     if (asyncSource != null) {
       elementMap[asyncSource] = asyncLibrary;
@@ -399,7 +399,7 @@
     //
     for (LibraryElementImpl library in elementMap.values) {
       Namespace namespace =
-      new NamespaceBuilder().createPublicNamespaceForLibrary(library);
+          new NamespaceBuilder().createPublicNamespaceForLibrary(library);
       library.exportNamespace = namespace;
       library.publicNamespace = namespace;
     }
@@ -421,7 +421,7 @@
   void set analysisOptions(AnalysisOptions options) {
     AnalysisOptions currentOptions = analysisOptions;
     bool needsRecompute = currentOptions.analyzeFunctionBodiesPredicate !=
-        options.analyzeFunctionBodiesPredicate ||
+            options.analyzeFunctionBodiesPredicate ||
         currentOptions.generateImplicitErrors !=
             options.generateImplicitErrors ||
         currentOptions.generateSdkErrors != options.generateSdkErrors ||
@@ -517,7 +517,7 @@
   TestPackageUriResolver(Map<String, String> map) {
     map.forEach((String uri, String contents) {
       sourceMap[Uri.parse(uri)] =
-      new StringSource(contents, '/test_pkg_source.dart');
+          new StringSource(contents, '/test_pkg_source.dart');
     });
   }
 
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 6231930..34dd9b9 100644
--- a/pkg/analyzer/test/generated/compile_time_error_code_test.dart
+++ b/pkg/analyzer/test/generated/compile_time_error_code_test.dart
@@ -5478,6 +5478,22 @@
     verify([source]);
   }
 
+  void test_recursiveInterfaceInheritanceBaseCaseExtends_abstract() {
+    Source source = addSource(r'''
+class C extends C {
+  var bar = 0;
+  m();
+}
+''');
+    computeLibrarySourceErrors(source);
+    assertErrors(source, [
+      CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_EXTENDS,
+      StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER,
+      StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE
+    ]);
+    verify([source]);
+  }
+
   void test_recursiveInterfaceInheritanceBaseCaseImplements() {
     Source source = addSource("class A implements A {}");
     computeLibrarySourceErrors(source);
@@ -6045,6 +6061,21 @@
     assertErrors(source, [CompileTimeErrorCode.URI_DOES_NOT_EXIST]);
   }
 
+  void test_uriDoesNotExist_import_appears_after_deleting_target() {
+    Source test = addSource("import 'target.dart';");
+    Source target = addNamedSource("/target.dart", "");
+    computeLibrarySourceErrors(test);
+    assertErrors(test, [HintCode.UNUSED_IMPORT]);
+
+    // Remove the overlay in the same way as AnalysisServer.
+    analysisContext2.setContents(target, null);
+    ChangeSet changeSet = new ChangeSet()..removedSource(target);
+    analysisContext2.applyChanges(changeSet);
+
+    computeLibrarySourceErrors(test);
+    assertErrors(test, [CompileTimeErrorCode.URI_DOES_NOT_EXIST]);
+  }
+
   void test_uriDoesNotExist_import_disappears_when_fixed() {
     Source source = addSource("import 'target.dart';");
     computeLibrarySourceErrors(source);
@@ -6065,21 +6096,6 @@
     assertErrors(source, [HintCode.UNUSED_IMPORT]);
   }
 
-  void test_uriDoesNotExist_import_appears_after_deleting_target() {
-    Source test = addSource("import 'target.dart';");
-    Source target = addNamedSource("/target.dart", "");
-    computeLibrarySourceErrors(test);
-    assertErrors(test, [HintCode.UNUSED_IMPORT]);
-
-    // Remove the overlay in the same way as AnalysisServer.
-    analysisContext2.setContents(target, null);
-    ChangeSet changeSet = new ChangeSet()..removedSource(target);
-    analysisContext2.applyChanges(changeSet);
-
-    computeLibrarySourceErrors(test);
-    assertErrors(test, [CompileTimeErrorCode.URI_DOES_NOT_EXIST]);
-  }
-
   void test_uriDoesNotExist_part() {
     Source source = addSource(r'''
 library lib;
diff --git a/pkg/analyzer/test/generated/element_resolver_test.dart b/pkg/analyzer/test/generated/element_resolver_test.dart
index a4cd97e..5eb564a 100644
--- a/pkg/analyzer/test/generated/element_resolver_test.dart
+++ b/pkg/analyzer/test/generated/element_resolver_test.dart
@@ -120,7 +120,7 @@
     //
     ClassElementImpl classA = ElementFactory.classElement2("A");
     MethodElement operator =
-    ElementFactory.methodElement("[]", intType, [intType]);
+        ElementFactory.methodElement("[]", intType, [intType]);
     classA.methods = <MethodElement>[operator];
     //
     // class B implements A {}
@@ -143,7 +143,7 @@
     SimpleIdentifier array = AstFactory.identifier3("a");
     array.staticType = classD.type;
     IndexExpression expression =
-    AstFactory.indexExpression(array, AstFactory.identifier3("i"));
+        AstFactory.indexExpression(array, AstFactory.identifier3("i"));
     expect(_resolveIndexExpression(expression), same(operator));
     _listener.assertNoErrors();
   }
@@ -247,7 +247,7 @@
     BreakStatement breakStatement = AstFactory.breakStatement2(label);
     Expression condition = AstFactory.booleanLiteral(true);
     WhileStatement whileStatement =
-    AstFactory.whileStatement(condition, breakStatement);
+        AstFactory.whileStatement(condition, breakStatement);
     expect(_resolveBreak(breakStatement, labelElement, whileStatement),
         same(labelElement));
     expect(breakStatement.target, same(whileStatement));
@@ -265,9 +265,9 @@
     // set accessors
     String propName = "p";
     PropertyAccessorElement getter =
-    ElementFactory.getterElement(propName, false, _typeProvider.intType);
+        ElementFactory.getterElement(propName, false, _typeProvider.intType);
     PropertyAccessorElement setter =
-    ElementFactory.setterElement(propName, false, _typeProvider.intType);
+        ElementFactory.setterElement(propName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getter, setter];
     // set name scope
     _visitor.nameScope = new EnclosedScope(null)
@@ -286,7 +286,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     // set method
     MethodElement method =
-    ElementFactory.methodElement("m", _typeProvider.intType);
+        ElementFactory.methodElement("m", _typeProvider.intType);
     classA.methods = <MethodElement>[method];
     // set name scope
     _visitor.nameScope = new EnclosedScope(null)
@@ -305,7 +305,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String constructorName = "a";
     ConstructorElement constructor =
-    ElementFactory.constructorElement2(classA, constructorName);
+        ElementFactory.constructorElement2(classA, constructorName);
     classA.constructors = <ConstructorElement>[constructor];
     ConstructorName name = AstFactory.constructorName(
         AstFactory.typeName(classA), constructorName);
@@ -318,7 +318,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String constructorName = null;
     ConstructorElement constructor =
-    ElementFactory.constructorElement2(classA, constructorName);
+        ElementFactory.constructorElement2(classA, constructorName);
     classA.constructors = <ConstructorElement>[constructor];
     ConstructorName name = AstFactory.constructorName(
         AstFactory.typeName(classA), constructorName);
@@ -337,7 +337,7 @@
     ContinueStatement continueStatement = AstFactory.continueStatement(label);
     Expression condition = AstFactory.booleanLiteral(true);
     WhileStatement whileStatement =
-    AstFactory.whileStatement(condition, continueStatement);
+        AstFactory.whileStatement(condition, continueStatement);
     expect(_resolveContinue(continueStatement, labelElement, whileStatement),
         same(labelElement));
     expect(continueStatement.target, same(whileStatement));
@@ -352,16 +352,16 @@
 
   void test_visitEnumDeclaration() {
     CompilationUnitElementImpl compilationUnitElement =
-    ElementFactory.compilationUnit('foo.dart');
+        ElementFactory.compilationUnit('foo.dart');
     ClassElementImpl enumElement =
-    ElementFactory.enumElement(_typeProvider, ('E'));
+        ElementFactory.enumElement(_typeProvider, ('E'));
     compilationUnitElement.enums = <ClassElement>[enumElement];
     EnumDeclaration enumNode = AstFactory.enumDeclaration2('E', []);
     Annotation annotationNode =
-    AstFactory.annotation(AstFactory.identifier3('a'));
+        AstFactory.annotation(AstFactory.identifier3('a'));
     annotationNode.element = ElementFactory.classElement2('A');
     annotationNode.elementAnnotation =
-    new ElementAnnotationImpl(compilationUnitElement);
+        new ElementAnnotationImpl(compilationUnitElement);
     enumNode.metadata.add(annotationNode);
     enumNode.name.staticElement = enumElement;
     List<ElementAnnotation> metadata = <ElementAnnotation>[
@@ -383,13 +383,13 @@
     String fieldName = "f";
     InterfaceType intType = _typeProvider.intType;
     FieldElementImpl fieldElement =
-    ElementFactory.fieldElement(fieldName, false, false, false, intType);
+        ElementFactory.fieldElement(fieldName, false, false, false, intType);
     ClassElementImpl classA = ElementFactory.classElement2("A");
     classA.fields = <FieldElement>[fieldElement];
     FieldFormalParameter parameter =
-    AstFactory.fieldFormalParameter2(fieldName);
+        AstFactory.fieldFormalParameter2(fieldName);
     FieldFormalParameterElementImpl parameterElement =
-    ElementFactory.fieldFormalParameter(parameter.identifier);
+        ElementFactory.fieldFormalParameter(parameter.identifier);
     parameterElement.field = fieldElement;
     parameterElement.type = intType;
     parameter.identifier.staticElement = parameterElement;
@@ -420,17 +420,17 @@
   void test_visitImportDirective_withCombinators() {
     ShowCombinator combinator = AstFactory.showCombinator2(["A", "B", "C"]);
     ImportDirective directive =
-    AstFactory.importDirective3(null, null, [combinator]);
+        AstFactory.importDirective3(null, null, [combinator]);
     LibraryElementImpl library =
-    ElementFactory.library(_definingLibrary.context, "lib");
+        ElementFactory.library(_definingLibrary.context, "lib");
     TopLevelVariableElementImpl varA =
-    ElementFactory.topLevelVariableElement2("A");
+        ElementFactory.topLevelVariableElement2("A");
     TopLevelVariableElementImpl varB =
-    ElementFactory.topLevelVariableElement2("B");
+        ElementFactory.topLevelVariableElement2("B");
     TopLevelVariableElementImpl varC =
-    ElementFactory.topLevelVariableElement2("C");
+        ElementFactory.topLevelVariableElement2("C");
     CompilationUnitElementImpl unit =
-    library.definingCompilationUnit as CompilationUnitElementImpl;
+        library.definingCompilationUnit as CompilationUnitElementImpl;
     unit.accessors = <PropertyAccessorElement>[
       varA.getter,
       varA.setter,
@@ -450,12 +450,12 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     InterfaceType intType = _typeProvider.intType;
     MethodElement getter =
-    ElementFactory.methodElement("[]", intType, [intType]);
+        ElementFactory.methodElement("[]", intType, [intType]);
     classA.methods = <MethodElement>[getter];
     SimpleIdentifier array = AstFactory.identifier3("a");
     array.staticType = classA.type;
     IndexExpression expression =
-    AstFactory.indexExpression(array, AstFactory.identifier3("i"));
+        AstFactory.indexExpression(array, AstFactory.identifier3("i"));
     expect(_resolveIndexExpression(expression), same(getter));
     _listener.assertNoErrors();
   }
@@ -464,12 +464,12 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     InterfaceType intType = _typeProvider.intType;
     MethodElement setter =
-    ElementFactory.methodElement("[]=", intType, [intType]);
+        ElementFactory.methodElement("[]=", intType, [intType]);
     classA.methods = <MethodElement>[setter];
     SimpleIdentifier array = AstFactory.identifier3("a");
     array.staticType = classA.type;
     IndexExpression expression =
-    AstFactory.indexExpression(array, AstFactory.identifier3("i"));
+        AstFactory.indexExpression(array, AstFactory.identifier3("i"));
     AstFactory.assignmentExpression(
         expression, TokenType.EQ, AstFactory.integer(0));
     expect(_resolveIndexExpression(expression), same(setter));
@@ -480,13 +480,13 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String constructorName = "a";
     ConstructorElement constructor =
-    ElementFactory.constructorElement2(classA, constructorName);
+        ElementFactory.constructorElement2(classA, constructorName);
     classA.constructors = <ConstructorElement>[constructor];
     ConstructorName name = AstFactory.constructorName(
         AstFactory.typeName(classA), constructorName);
     name.staticElement = constructor;
     InstanceCreationExpression creation =
-    AstFactory.instanceCreationExpression(Keyword.NEW, name);
+        AstFactory.instanceCreationExpression(Keyword.NEW, name);
     _resolveNode(creation);
     expect(creation.staticElement, same(constructor));
     _listener.assertNoErrors();
@@ -496,13 +496,13 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String constructorName = null;
     ConstructorElement constructor =
-    ElementFactory.constructorElement2(classA, constructorName);
+        ElementFactory.constructorElement2(classA, constructorName);
     classA.constructors = <ConstructorElement>[constructor];
     ConstructorName name = AstFactory.constructorName(
         AstFactory.typeName(classA), constructorName);
     name.staticElement = constructor;
     InstanceCreationExpression creation =
-    AstFactory.instanceCreationExpression(Keyword.NEW, name);
+        AstFactory.instanceCreationExpression(Keyword.NEW, name);
     _resolveNode(creation);
     expect(creation.staticElement, same(constructor));
     _listener.assertNoErrors();
@@ -512,7 +512,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String constructorName = null;
     ConstructorElementImpl constructor =
-    ElementFactory.constructorElement2(classA, constructorName);
+        ElementFactory.constructorElement2(classA, constructorName);
     String parameterName = "a";
     ParameterElement parameter = ElementFactory.namedParameter(parameterName);
     constructor.parameters = <ParameterElement>[parameter];
@@ -575,7 +575,7 @@
     SimpleIdentifier operand = AstFactory.identifier3("i");
     operand.staticType = numType;
     PostfixExpression expression =
-    AstFactory.postfixExpression(operand, TokenType.PLUS_PLUS);
+        AstFactory.postfixExpression(operand, TokenType.PLUS_PLUS);
     _resolveNode(expression);
     expect(expression.staticElement, getMethod(numType, "+"));
     _listener.assertNoErrors();
@@ -589,7 +589,7 @@
     target.staticElement = variable;
     target.staticType = dynamicType;
     PrefixedIdentifier identifier =
-    AstFactory.identifier(target, AstFactory.identifier3("b"));
+        AstFactory.identifier(target, AstFactory.identifier3("b"));
     _resolveNode(identifier);
     expect(identifier.staticElement, isNull);
     expect(identifier.identifier.staticElement, isNull);
@@ -600,7 +600,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "b";
     PropertyAccessorElement getter =
-    ElementFactory.getterElement(getterName, false, _typeProvider.intType);
+        ElementFactory.getterElement(getterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getter];
     SimpleIdentifier target = AstFactory.identifier3("a");
     VariableElementImpl variable = ElementFactory.localVariableElement(target);
@@ -608,7 +608,7 @@
     target.staticElement = variable;
     target.staticType = classA.type;
     PrefixedIdentifier identifier =
-    AstFactory.identifier(target, AstFactory.identifier3(getterName));
+        AstFactory.identifier(target, AstFactory.identifier3(getterName));
     _resolveNode(identifier);
     expect(identifier.staticElement, same(getter));
     expect(identifier.identifier.staticElement, same(getter));
@@ -620,16 +620,16 @@
     // set accessors
     String propName = "b";
     PropertyAccessorElement getter =
-    ElementFactory.getterElement(propName, false, _typeProvider.intType);
+        ElementFactory.getterElement(propName, false, _typeProvider.intType);
     PropertyAccessorElement setter =
-    ElementFactory.setterElement(propName, false, _typeProvider.intType);
+        ElementFactory.setterElement(propName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getter, setter];
     // prepare "A.m"
     SimpleIdentifier target = AstFactory.identifier3("A");
     target.staticElement = classA;
     target.staticType = classA.type;
     PrefixedIdentifier identifier =
-    AstFactory.identifier(target, AstFactory.identifier3(propName));
+        AstFactory.identifier(target, AstFactory.identifier3(propName));
     // resolve
     _resolveNode(identifier);
     expect(identifier.staticElement, same(getter));
@@ -642,14 +642,14 @@
     // set methods
     String propName = "m";
     MethodElement method =
-    ElementFactory.methodElement("m", _typeProvider.intType);
+        ElementFactory.methodElement("m", _typeProvider.intType);
     classA.methods = <MethodElement>[method];
     // prepare "A.m"
     SimpleIdentifier target = AstFactory.identifier3("A");
     target.staticElement = classA;
     target.staticType = classA.type;
     PrefixedIdentifier identifier =
-    AstFactory.identifier(target, AstFactory.identifier3(propName));
+        AstFactory.identifier(target, AstFactory.identifier3(propName));
     AstFactory.assignmentExpression(
         identifier, TokenType.EQ, AstFactory.nullLiteral());
     // resolve
@@ -664,16 +664,16 @@
     // set accessors
     String propName = "b";
     PropertyAccessorElement getter =
-    ElementFactory.getterElement(propName, false, _typeProvider.intType);
+        ElementFactory.getterElement(propName, false, _typeProvider.intType);
     PropertyAccessorElement setter =
-    ElementFactory.setterElement(propName, false, _typeProvider.intType);
+        ElementFactory.setterElement(propName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getter, setter];
     // prepare "A.b = null"
     SimpleIdentifier target = AstFactory.identifier3("A");
     target.staticElement = classA;
     target.staticType = classA.type;
     PrefixedIdentifier identifier =
-    AstFactory.identifier(target, AstFactory.identifier3(propName));
+        AstFactory.identifier(target, AstFactory.identifier3(propName));
     AstFactory.assignmentExpression(
         identifier, TokenType.EQ, AstFactory.nullLiteral());
     // resolve
@@ -688,7 +688,7 @@
     SimpleIdentifier operand = AstFactory.identifier3("i");
     operand.staticType = numType;
     PrefixExpression expression =
-    AstFactory.prefixExpression(TokenType.PLUS_PLUS, operand);
+        AstFactory.prefixExpression(TokenType.PLUS_PLUS, operand);
     _resolveNode(expression);
     expect(expression.staticElement, getMethod(numType, "+"));
     _listener.assertNoErrors();
@@ -698,7 +698,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "b";
     PropertyAccessorElement getter =
-    ElementFactory.getterElement(getterName, false, _typeProvider.intType);
+        ElementFactory.getterElement(getterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getter];
     SimpleIdentifier target = AstFactory.identifier3("a");
     target.staticType = classA.type;
@@ -720,7 +720,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "b";
     PropertyAccessorElement getter =
-    ElementFactory.getterElement(getterName, false, _typeProvider.intType);
+        ElementFactory.getterElement(getterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getter];
     SuperExpression target = AstFactory.superExpression();
     target.staticType = ElementFactory.classElement("B", classA.type).type;
@@ -742,7 +742,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String setterName = "b";
     PropertyAccessorElement setter =
-    ElementFactory.setterElement(setterName, false, _typeProvider.intType);
+        ElementFactory.setterElement(setterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[setter];
     ThisExpression target = AstFactory.thisExpression();
     target.staticType = classA.type;
@@ -783,7 +783,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String fieldName = "a";
     FieldElement field =
-    ElementFactory.fieldElement(fieldName, false, false, false, intType);
+        ElementFactory.fieldElement(fieldName, false, false, false, intType);
     classA.fields = <FieldElement>[field];
     classA.accessors = <PropertyAccessorElement>[field.getter, field.setter];
     SimpleIdentifier node = AstFactory.identifier3(fieldName);
@@ -799,15 +799,15 @@
   void test_visitSuperConstructorInvocation() {
     ClassElementImpl superclass = ElementFactory.classElement2("A");
     ConstructorElementImpl superConstructor =
-    ElementFactory.constructorElement2(superclass, null);
+        ElementFactory.constructorElement2(superclass, null);
     superclass.constructors = <ConstructorElement>[superConstructor];
     ClassElementImpl subclass =
-    ElementFactory.classElement("B", superclass.type);
+        ElementFactory.classElement("B", superclass.type);
     ConstructorElementImpl subConstructor =
-    ElementFactory.constructorElement2(subclass, null);
+        ElementFactory.constructorElement2(subclass, null);
     subclass.constructors = <ConstructorElement>[subConstructor];
     SuperConstructorInvocation invocation =
-    AstFactory.superConstructorInvocation();
+        AstFactory.superConstructorInvocation();
     _resolveInClass(invocation, subclass);
     expect(invocation.staticElement, superConstructor);
     _listener.assertNoErrors();
@@ -816,15 +816,15 @@
   void test_visitSuperConstructorInvocation_namedParameter() {
     ClassElementImpl superclass = ElementFactory.classElement2("A");
     ConstructorElementImpl superConstructor =
-    ElementFactory.constructorElement2(superclass, null);
+        ElementFactory.constructorElement2(superclass, null);
     String parameterName = "p";
     ParameterElement parameter = ElementFactory.namedParameter(parameterName);
     superConstructor.parameters = <ParameterElement>[parameter];
     superclass.constructors = <ConstructorElement>[superConstructor];
     ClassElementImpl subclass =
-    ElementFactory.classElement("B", superclass.type);
+        ElementFactory.classElement("B", superclass.type);
     ConstructorElementImpl subConstructor =
-    ElementFactory.constructorElement2(subclass, null);
+        ElementFactory.constructorElement2(subclass, null);
     subclass.constructors = <ConstructorElement>[subConstructor];
     SuperConstructorInvocation invocation = AstFactory
         .superConstructorInvocation([
@@ -849,9 +849,9 @@
   ElementResolver _createResolver() {
     InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
     FileBasedSource source =
-    new FileBasedSource(FileUtilities2.createFile("/test.dart"));
+        new FileBasedSource(FileUtilities2.createFile("/test.dart"));
     CompilationUnitElementImpl definingCompilationUnit =
-    new CompilationUnitElementImpl("test.dart");
+        new CompilationUnitElementImpl("test.dart");
     definingCompilationUnit.librarySource =
         definingCompilationUnit.source = source;
     _definingLibrary = ElementFactory.library(context, "test");
diff --git a/pkg/analyzer/test/generated/hint_code_test.dart b/pkg/analyzer/test/generated/hint_code_test.dart
index 118b80b..536553b 100644
--- a/pkg/analyzer/test/generated/hint_code_test.dart
+++ b/pkg/analyzer/test/generated/hint_code_test.dart
@@ -624,10 +624,10 @@
     verify([source]);
   }
 
-  void test_deprecatedAnnotationUse_deprecated() {
+  void test_deprecatedAnnotationUse_Deprecated() {
     Source source = addSource(r'''
 class A {
-  @deprecated
+  @Deprecated('0.9')
   m() {}
   n() {m();}
 }''');
@@ -636,10 +636,10 @@
     verify([source]);
   }
 
-  void test_deprecatedAnnotationUse_Deprecated() {
+  void test_deprecatedAnnotationUse_deprecated() {
     Source source = addSource(r'''
 class A {
-  @Deprecated('0.9')
+  @deprecated
   m() {}
   n() {m();}
 }''');
diff --git a/pkg/analyzer/test/generated/incremental_resolver_test.dart b/pkg/analyzer/test/generated/incremental_resolver_test.dart
index 8800865..afd10bf 100644
--- a/pkg/analyzer/test/generated/incremental_resolver_test.dart
+++ b/pkg/analyzer/test/generated/incremental_resolver_test.dart
@@ -4775,6 +4775,34 @@
 ''');
   }
 
+  void test_updateFunctionToForLoop() {
+    _resolveUnit(r'''
+class PlayDrag {
+  final List<num> times = new List<num>();
+
+  PlayDrag.start() {}
+
+  void update(num pos) {
+    fo (int i = times.length - 2; i >= 0; i--) {}
+  }
+}
+''');
+
+    _updateAndValidate(
+        r'''
+class PlayDrag {
+  final List<num> times = new List<num>();
+
+  PlayDrag.start() {}
+
+  void update(num pos) {
+    for (int i = times.length - 2; i >= 0; i--) {}
+  }
+}
+''',
+        expectLibraryUnchanged: false);
+  }
+
   void test_visibleRange() {
     _resolveUnit(r'''
 class Test {
@@ -4846,34 +4874,6 @@
     }
   }
 
-  void test_updateFunctionToForLoop() {
-    _resolveUnit(r'''
-class PlayDrag {
-  final List<num> times = new List<num>();
-
-  PlayDrag.start() {}
-
-  void update(num pos) {
-    fo (int i = times.length - 2; i >= 0; i--) {}
-  }
-}
-''');
-
-    _updateAndValidate(
-        r'''
-class PlayDrag {
-  final List<num> times = new List<num>();
-
-  PlayDrag.start() {}
-
-  void update(num pos) {
-    for (int i = times.length - 2; i >= 0; i--) {}
-  }
-}
-''',
-        expectLibraryUnchanged: false);
-  }
-
   void _assertCacheResults(
       {bool expectLibraryUnchanged: true,
       bool expectCachePostConstantsValid: true}) {
@@ -5290,18 +5290,18 @@
   Object lastException;
   Object lastStackTrace;
 
-  void expectNoErrors() {
-    if (lastException != null) {
-      fail("logged an exception:\n$lastException\n$lastStackTrace\n");
-    }
-  }
-
   @override
   void enter(String name) {}
 
   @override
   void exit() {}
 
+  void expectNoErrors() {
+    if (lastException != null) {
+      fail("logged an exception:\n$lastException\n$lastStackTrace\n");
+    }
+  }
+
   @override
   void log(Object obj) {}
 
diff --git a/pkg/analyzer/test/generated/inheritance_manager_test.dart b/pkg/analyzer/test/generated/inheritance_manager_test.dart
index f8afcd0..e41df2f 100644
--- a/pkg/analyzer/test/generated/inheritance_manager_test.dart
+++ b/pkg/analyzer/test/generated/inheritance_manager_test.dart
@@ -66,13 +66,13 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "g";
     PropertyAccessorElement getterG =
-    ElementFactory.getterElement(getterName, false, _typeProvider.intType);
+        ElementFactory.getterElement(getterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getterG];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
     MemberMap mapB =
-    _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
+        _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapB.size, _numOfMembersInObject + 1);
     expect(mapB.get(getterName), same(getterG));
@@ -86,14 +86,14 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "g";
     PropertyAccessorElement getterG =
-    ElementFactory.getterElement(getterName, false, _typeProvider.intType);
+        ElementFactory.getterElement(getterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getterG];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.interfaces = <InterfaceType>[classA.type];
     MemberMap mapB =
-    _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
+        _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapB.size, _numOfMembersInObject);
     expect(mapB.get(getterName), isNull);
@@ -107,14 +107,14 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "g";
     PropertyAccessorElement getterG =
-    ElementFactory.getterElement(getterName, false, _typeProvider.intType);
+        ElementFactory.getterElement(getterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getterG];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.mixins = <InterfaceType>[classA.type];
     MemberMap mapB =
-    _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
+        _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapB.size, _numOfMembersInObject + 1);
     expect(mapB.get(getterName), same(getterG));
@@ -126,7 +126,7 @@
     // class A {}
     ClassElementImpl classA = ElementFactory.classElement2("A");
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
     expect(mapA.size, _numOfMembersInObject);
     _assertNoErrors(classA);
   }
@@ -137,14 +137,14 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElement methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classA.methods = <MethodElement>[methodM];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.supertype = classA.type;
     MemberMap mapB =
-    _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
+        _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapB.size, _numOfMembersInObject + 1);
     expect(mapB.get(methodName), same(methodM));
@@ -158,14 +158,14 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElement methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classA.methods = <MethodElement>[methodM];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.interfaces = <InterfaceType>[classA.type];
     MemberMap mapB =
-    _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
+        _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapB.size, _numOfMembersInObject);
     expect(mapB.get(methodName), isNull);
@@ -179,14 +179,14 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElement methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classA.methods = <MethodElement>[methodM];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.mixins = <InterfaceType>[classA.type];
     MemberMap mapB =
-    _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
+        _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapB.size, _numOfMembersInObject + 1);
     expect(mapB.get(methodName), same(methodM));
@@ -201,16 +201,16 @@
     ClassElementImpl classA1 = ElementFactory.classElement2("A1");
     String methodName = "m";
     MethodElement methodA1M =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classA1.methods = <MethodElement>[methodA1M];
     ClassElementImpl classA2 = ElementFactory.classElement2("A2");
     MethodElement methodA2M =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classA2.methods = <MethodElement>[methodA2M];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.mixins = <InterfaceType>[classA1.type, classA2.type];
     MemberMap mapB =
-    _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
+        _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
     expect(mapB.get(methodName), same(methodA2M));
     _assertNoErrors(classA1);
     _assertNoErrors(classA2);
@@ -223,13 +223,13 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "g";
     PropertyAccessorElement getterG =
-    ElementFactory.getterElement(getterName, false, _typeProvider.intType);
+        ElementFactory.getterElement(getterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getterG];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
     MemberMap mapB =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapB.size, _numOfMembersInObject + 1);
     expect(mapB.get(getterName), same(getterG));
@@ -243,14 +243,14 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "g";
     PropertyAccessorElement getterG =
-    ElementFactory.getterElement(getterName, false, _typeProvider.intType);
+        ElementFactory.getterElement(getterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getterG];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.interfaces = <InterfaceType>[classA.type];
     MemberMap mapB =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapB.size, _numOfMembersInObject + 1);
     expect(mapB.get(getterName), same(getterG));
@@ -264,14 +264,14 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "g";
     PropertyAccessorElement getterG =
-    ElementFactory.getterElement(getterName, false, _typeProvider.intType);
+        ElementFactory.getterElement(getterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getterG];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.mixins = <InterfaceType>[classA.type];
     MemberMap mapB =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapB.size, _numOfMembersInObject + 1);
     expect(mapB.get(getterName), same(getterG));
@@ -283,29 +283,29 @@
     // class A {}
     ClassElementImpl classA = ElementFactory.classElement2("A");
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject);
     _assertNoErrors(classA);
   }
 
   void
-  test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_getter_method() {
+      test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_getter_method() {
     // class I1 { int m(); }
     // class I2 { int get m; }
     // class A implements I2, I1 {}
     ClassElementImpl classI1 = ElementFactory.classElement2("I1");
     String methodName = "m";
     MethodElement methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classI1.methods = <MethodElement>[methodM];
     ClassElementImpl classI2 = ElementFactory.classElement2("I2");
     PropertyAccessorElement getter =
-    ElementFactory.getterElement(methodName, false, _typeProvider.intType);
+        ElementFactory.getterElement(methodName, false, _typeProvider.intType);
     classI2.accessors = <PropertyAccessorElement>[getter];
     ClassElementImpl classA = ElementFactory.classElement2("A");
     classA.interfaces = <InterfaceType>[classI2.type, classI1.type];
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapA.get(methodName), isNull);
     _assertErrors(classA,
@@ -313,14 +313,14 @@
   }
 
   void
-  test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_int_str() {
+      test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_int_str() {
     // class I1 { int m(); }
     // class I2 { String m(); }
     // class A implements I1, I2 {}
     ClassElementImpl classI1 = ElementFactory.classElement2("I1");
     String methodName = "m";
     MethodElement methodM1 =
-    ElementFactory.methodElement(methodName, null, [_typeProvider.intType]);
+        ElementFactory.methodElement(methodName, null, [_typeProvider.intType]);
     classI1.methods = <MethodElement>[methodM1];
     ClassElementImpl classI2 = ElementFactory.classElement2("I2");
     MethodElement methodM2 = ElementFactory
@@ -329,7 +329,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapA.get(methodName), isNull);
     _assertErrors(
@@ -337,23 +337,23 @@
   }
 
   void
-  test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_method_getter() {
+      test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_method_getter() {
     // class I1 { int m(); }
     // class I2 { int get m; }
     // class A implements I1, I2 {}
     ClassElementImpl classI1 = ElementFactory.classElement2("I1");
     String methodName = "m";
     MethodElement methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classI1.methods = <MethodElement>[methodM];
     ClassElementImpl classI2 = ElementFactory.classElement2("I2");
     PropertyAccessorElement getter =
-    ElementFactory.getterElement(methodName, false, _typeProvider.intType);
+        ElementFactory.getterElement(methodName, false, _typeProvider.intType);
     classI2.accessors = <PropertyAccessorElement>[getter];
     ClassElementImpl classA = ElementFactory.classElement2("A");
     classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapA.get(methodName), isNull);
     _assertErrors(classA,
@@ -361,37 +361,37 @@
   }
 
   void
-  test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_numOfRequiredParams() {
+      test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_numOfRequiredParams() {
     // class I1 { dynamic m(int, [int]); }
     // class I2 { dynamic m(int, int, int); }
     // class A implements I1, I2 {}
     ClassElementImpl classI1 = ElementFactory.classElement2("I1");
     String methodName = "m";
     MethodElementImpl methodM1 =
-    ElementFactory.methodElement(methodName, _typeProvider.dynamicType);
+        ElementFactory.methodElement(methodName, _typeProvider.dynamicType);
     ParameterElementImpl parameter1 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a1"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a1"));
     parameter1.type = _typeProvider.intType;
     parameter1.parameterKind = ParameterKind.REQUIRED;
     ParameterElementImpl parameter2 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a2"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a2"));
     parameter2.type = _typeProvider.intType;
     parameter2.parameterKind = ParameterKind.POSITIONAL;
     methodM1.parameters = <ParameterElement>[parameter1, parameter2];
     classI1.methods = <MethodElement>[methodM1];
     ClassElementImpl classI2 = ElementFactory.classElement2("I2");
     MethodElementImpl methodM2 =
-    ElementFactory.methodElement(methodName, _typeProvider.dynamicType);
+        ElementFactory.methodElement(methodName, _typeProvider.dynamicType);
     ParameterElementImpl parameter3 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a3"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a3"));
     parameter3.type = _typeProvider.intType;
     parameter3.parameterKind = ParameterKind.REQUIRED;
     ParameterElementImpl parameter4 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a4"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a4"));
     parameter4.type = _typeProvider.intType;
     parameter4.parameterKind = ParameterKind.REQUIRED;
     ParameterElementImpl parameter5 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a5"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a5"));
     parameter5.type = _typeProvider.intType;
     parameter5.parameterKind = ParameterKind.REQUIRED;
     methodM2.parameters = <ParameterElement>[
@@ -403,7 +403,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapA.get(methodName), isNull);
     _assertErrors(
@@ -411,7 +411,7 @@
   }
 
   void
-  test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_str_int() {
+      test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_str_int() {
     // class I1 { int m(); }
     // class I2 { String m(); }
     // class A implements I2, I1 {}
@@ -422,12 +422,12 @@
     classI1.methods = <MethodElement>[methodM1];
     ClassElementImpl classI2 = ElementFactory.classElement2("I2");
     MethodElement methodM2 =
-    ElementFactory.methodElement(methodName, null, [_typeProvider.intType]);
+        ElementFactory.methodElement(methodName, null, [_typeProvider.intType]);
     classI2.methods = <MethodElement>[methodM2];
     ClassElementImpl classA = ElementFactory.classElement2("A");
     classA.interfaces = <InterfaceType>[classI2.type, classI1.type];
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapA.get(methodName), isNull);
     _assertErrors(
@@ -440,13 +440,13 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElement methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classA.methods = <MethodElement>[methodM];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
     MemberMap mapB =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapB.size, _numOfMembersInObject + 1);
     expect(mapB.get(methodName), same(methodM));
@@ -460,14 +460,14 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElement methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classA.methods = <MethodElement>[methodM];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.interfaces = <InterfaceType>[classA.type];
     MemberMap mapB =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapB.size, _numOfMembersInObject + 1);
     expect(mapB.get(methodName), same(methodM));
@@ -481,14 +481,14 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElement methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classA.methods = <MethodElement>[methodM];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.mixins = <InterfaceType>[classA.type];
     MemberMap mapB =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject);
     expect(mapB.size, _numOfMembersInObject + 1);
     expect(mapB.get(methodName), same(methodM));
@@ -503,17 +503,17 @@
     ClassElementImpl classI1 = ElementFactory.classElement2("I1");
     String methodName1 = "m1";
     MethodElement methodM1 =
-    ElementFactory.methodElement(methodName1, _typeProvider.intType);
+        ElementFactory.methodElement(methodName1, _typeProvider.intType);
     classI1.methods = <MethodElement>[methodM1];
     ClassElementImpl classI2 = ElementFactory.classElement2("I2");
     String methodName2 = "m2";
     MethodElement methodM2 =
-    ElementFactory.methodElement(methodName2, _typeProvider.intType);
+        ElementFactory.methodElement(methodName2, _typeProvider.intType);
     classI2.methods = <MethodElement>[methodM2];
     ClassElementImpl classA = ElementFactory.classElement2("A");
     classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject + 2);
     expect(mapA.get(methodName1), same(methodM1));
     expect(mapA.get(methodName2), same(methodM2));
@@ -521,7 +521,7 @@
   }
 
   void
-  test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_getters() {
+      test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_getters() {
     // class I1 { int get g; }
     // class I2 { num get g; }
     // class A implements I1, I2 {}
@@ -537,7 +537,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject + 1);
     PropertyAccessorElement syntheticAccessor = ElementFactory.getterElement(
         accessorName, false, _typeProvider.dynamicType);
@@ -546,25 +546,25 @@
   }
 
   void
-  test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_methods() {
+      test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_methods() {
     // class I1 { dynamic m(int); }
     // class I2 { dynamic m(num); }
     // class A implements I1, I2 {}
     ClassElementImpl classI1 = ElementFactory.classElement2("I1");
     String methodName = "m";
     MethodElementImpl methodM1 =
-    ElementFactory.methodElement(methodName, _typeProvider.dynamicType);
+        ElementFactory.methodElement(methodName, _typeProvider.dynamicType);
     ParameterElementImpl parameter1 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a0"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a0"));
     parameter1.type = _typeProvider.intType;
     parameter1.parameterKind = ParameterKind.REQUIRED;
     methodM1.parameters = <ParameterElement>[parameter1];
     classI1.methods = <MethodElement>[methodM1];
     ClassElementImpl classI2 = ElementFactory.classElement2("I2");
     MethodElementImpl methodM2 =
-    ElementFactory.methodElement(methodName, _typeProvider.dynamicType);
+        ElementFactory.methodElement(methodName, _typeProvider.dynamicType);
     ParameterElementImpl parameter2 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a0"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a0"));
     parameter2.type = _typeProvider.numType;
     parameter2.parameterKind = ParameterKind.REQUIRED;
     methodM2.parameters = <ParameterElement>[parameter2];
@@ -572,7 +572,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject + 1);
     MethodElement syntheticMethod = ElementFactory.methodElement(
         methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]);
@@ -581,7 +581,7 @@
   }
 
   void
-  test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_setters() {
+      test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_setters() {
     // class I1 { set s(int); }
     // class I2 { set s(num); }
     // class A implements I1, I2 {}
@@ -597,7 +597,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject + 1);
     PropertyAccessorElementImpl syntheticAccessor = ElementFactory
         .setterElement(accessorName, false, _typeProvider.dynamicType);
@@ -607,7 +607,7 @@
   }
 
   void
-  test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_getters() {
+      test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_getters() {
     // class A {}
     // class B extends A {}
     // class C extends B {}
@@ -621,15 +621,15 @@
     ClassElementImpl classI1 = ElementFactory.classElement2("I1");
     String accessorName = "g";
     PropertyAccessorElement getter1 =
-    ElementFactory.getterElement(accessorName, false, classA.type);
+        ElementFactory.getterElement(accessorName, false, classA.type);
     classI1.accessors = <PropertyAccessorElement>[getter1];
     ClassElementImpl classI2 = ElementFactory.classElement2("I2");
     PropertyAccessorElement getter2 =
-    ElementFactory.getterElement(accessorName, false, classB.type);
+        ElementFactory.getterElement(accessorName, false, classB.type);
     classI2.accessors = <PropertyAccessorElement>[getter2];
     ClassElementImpl classI3 = ElementFactory.classElement2("I3");
     PropertyAccessorElement getter3 =
-    ElementFactory.getterElement(accessorName, false, classC.type);
+        ElementFactory.getterElement(accessorName, false, classC.type);
     classI3.accessors = <PropertyAccessorElement>[getter3];
     ClassElementImpl classD = ElementFactory.classElement2("D");
     classD.interfaces = <InterfaceType>[
@@ -638,7 +638,7 @@
       classI3.type
     ];
     MemberMap mapD =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD);
     expect(mapD.size, _numOfMembersInObject + 1);
     PropertyAccessorElement syntheticAccessor = ElementFactory.getterElement(
         accessorName, false, _typeProvider.dynamicType);
@@ -647,7 +647,7 @@
   }
 
   void
-  test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_methods() {
+      test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_methods() {
     // class A {}
     // class B extends A {}
     // class C extends B {}
@@ -661,27 +661,27 @@
     ClassElementImpl classI1 = ElementFactory.classElement2("I1");
     String methodName = "m";
     MethodElementImpl methodM1 =
-    ElementFactory.methodElement(methodName, _typeProvider.dynamicType);
+        ElementFactory.methodElement(methodName, _typeProvider.dynamicType);
     ParameterElementImpl parameter1 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a0"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a0"));
     parameter1.type = classA.type;
     parameter1.parameterKind = ParameterKind.REQUIRED;
     methodM1.parameters = <ParameterElement>[parameter1];
     classI1.methods = <MethodElement>[methodM1];
     ClassElementImpl classI2 = ElementFactory.classElement2("I2");
     MethodElementImpl methodM2 =
-    ElementFactory.methodElement(methodName, _typeProvider.dynamicType);
+        ElementFactory.methodElement(methodName, _typeProvider.dynamicType);
     ParameterElementImpl parameter2 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a0"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a0"));
     parameter2.type = classB.type;
     parameter2.parameterKind = ParameterKind.REQUIRED;
     methodM2.parameters = <ParameterElement>[parameter2];
     classI2.methods = <MethodElement>[methodM2];
     ClassElementImpl classI3 = ElementFactory.classElement2("I3");
     MethodElementImpl methodM3 =
-    ElementFactory.methodElement(methodName, _typeProvider.dynamicType);
+        ElementFactory.methodElement(methodName, _typeProvider.dynamicType);
     ParameterElementImpl parameter3 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a0"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a0"));
     parameter3.type = classC.type;
     parameter3.parameterKind = ParameterKind.REQUIRED;
     methodM3.parameters = <ParameterElement>[parameter3];
@@ -693,7 +693,7 @@
       classI3.type
     ];
     MemberMap mapD =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD);
     expect(mapD.size, _numOfMembersInObject + 1);
     MethodElement syntheticMethod = ElementFactory.methodElement(
         methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]);
@@ -702,7 +702,7 @@
   }
 
   void
-  test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_setters() {
+      test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_setters() {
     // class A {}
     // class B extends A {}
     // class C extends B {}
@@ -716,15 +716,15 @@
     ClassElementImpl classI1 = ElementFactory.classElement2("I1");
     String accessorName = "s";
     PropertyAccessorElement setter1 =
-    ElementFactory.setterElement(accessorName, false, classA.type);
+        ElementFactory.setterElement(accessorName, false, classA.type);
     classI1.accessors = <PropertyAccessorElement>[setter1];
     ClassElementImpl classI2 = ElementFactory.classElement2("I2");
     PropertyAccessorElement setter2 =
-    ElementFactory.setterElement(accessorName, false, classB.type);
+        ElementFactory.setterElement(accessorName, false, classB.type);
     classI2.accessors = <PropertyAccessorElement>[setter2];
     ClassElementImpl classI3 = ElementFactory.classElement2("I3");
     PropertyAccessorElement setter3 =
-    ElementFactory.setterElement(accessorName, false, classC.type);
+        ElementFactory.setterElement(accessorName, false, classC.type);
     classI3.accessors = <PropertyAccessorElement>[setter3];
     ClassElementImpl classD = ElementFactory.classElement2("D");
     classD.interfaces = <InterfaceType>[
@@ -733,7 +733,7 @@
       classI3.type
     ];
     MemberMap mapD =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD);
     expect(mapD.size, _numOfMembersInObject + 1);
     PropertyAccessorElementImpl syntheticAccessor = ElementFactory
         .setterElement(accessorName, false, _typeProvider.dynamicType);
@@ -743,20 +743,20 @@
   }
 
   void
-  test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_2_methods() {
+      test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_2_methods() {
     // class I1 { int m(); }
     // class I2 { int m([int]); }
     // class A implements I1, I2 {}
     ClassElementImpl classI1 = ElementFactory.classElement2("I1");
     String methodName = "m";
     MethodElement methodM1 =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classI1.methods = <MethodElement>[methodM1];
     ClassElementImpl classI2 = ElementFactory.classElement2("I2");
     MethodElementImpl methodM2 =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     ParameterElementImpl parameter1 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a1"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a1"));
     parameter1.type = _typeProvider.intType;
     parameter1.parameterKind = ParameterKind.POSITIONAL;
     methodM2.parameters = <ParameterElement>[parameter1];
@@ -764,14 +764,14 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject + 1);
     expect(mapA.get(methodName), same(methodM2));
     _assertNoErrors(classA);
   }
 
   void
-  test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_3_methods() {
+      test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_3_methods() {
     // class I1 { int m(); }
     // class I2 { int m([int]); }
     // class I3 { int m([int, int]); }
@@ -779,26 +779,26 @@
     ClassElementImpl classI1 = ElementFactory.classElement2("I1");
     String methodName = "m";
     MethodElementImpl methodM1 =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classI1.methods = <MethodElement>[methodM1];
     ClassElementImpl classI2 = ElementFactory.classElement2("I2");
     MethodElementImpl methodM2 =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     ParameterElementImpl parameter1 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a1"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a1"));
     parameter1.type = _typeProvider.intType;
     parameter1.parameterKind = ParameterKind.POSITIONAL;
     methodM1.parameters = <ParameterElement>[parameter1];
     classI2.methods = <MethodElement>[methodM2];
     ClassElementImpl classI3 = ElementFactory.classElement2("I3");
     MethodElementImpl methodM3 =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     ParameterElementImpl parameter2 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a2"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a2"));
     parameter2.type = _typeProvider.intType;
     parameter2.parameterKind = ParameterKind.POSITIONAL;
     ParameterElementImpl parameter3 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a3"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a3"));
     parameter3.type = _typeProvider.intType;
     parameter3.parameterKind = ParameterKind.POSITIONAL;
     methodM3.parameters = <ParameterElement>[parameter2, parameter3];
@@ -810,14 +810,14 @@
       classI3.type
     ];
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject + 1);
     expect(mapA.get(methodName), same(methodM3));
     _assertNoErrors(classA);
   }
 
   void
-  test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_4_methods() {
+      test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_4_methods() {
     // class I1 { int m(); }
     // class I2 { int m(); }
     // class I3 { int m([int]); }
@@ -826,30 +826,30 @@
     ClassElementImpl classI1 = ElementFactory.classElement2("I1");
     String methodName = "m";
     MethodElement methodM1 =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classI1.methods = <MethodElement>[methodM1];
     ClassElementImpl classI2 = ElementFactory.classElement2("I2");
     MethodElement methodM2 =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classI2.methods = <MethodElement>[methodM2];
     ClassElementImpl classI3 = ElementFactory.classElement2("I3");
     MethodElementImpl methodM3 =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     ParameterElementImpl parameter1 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a1"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a1"));
     parameter1.type = _typeProvider.intType;
     parameter1.parameterKind = ParameterKind.POSITIONAL;
     methodM3.parameters = <ParameterElement>[parameter1];
     classI3.methods = <MethodElement>[methodM3];
     ClassElementImpl classI4 = ElementFactory.classElement2("I4");
     MethodElementImpl methodM4 =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     ParameterElementImpl parameter2 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a2"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a2"));
     parameter2.type = _typeProvider.intType;
     parameter2.parameterKind = ParameterKind.POSITIONAL;
     ParameterElementImpl parameter3 =
-    new ParameterElementImpl.forNode(AstFactory.identifier3("a3"));
+        new ParameterElementImpl.forNode(AstFactory.identifier3("a3"));
     parameter3.type = _typeProvider.intType;
     parameter3.parameterKind = ParameterKind.POSITIONAL;
     methodM4.parameters = <ParameterElement>[parameter2, parameter3];
@@ -862,7 +862,7 @@
       classI4.type
     ];
     MemberMap mapA =
-    _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
+        _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
     expect(mapA.size, _numOfMembersInObject + 1);
     expect(mapA.get(methodName), same(methodM4));
     _assertNoErrors(classA);
@@ -872,7 +872,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "g";
     PropertyAccessorElement getterG =
-    ElementFactory.getterElement(getterName, false, _typeProvider.intType);
+        ElementFactory.getterElement(getterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getterG];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.interfaces = <InterfaceType>[classA.type];
@@ -886,7 +886,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElement methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classA.methods = <MethodElement>[methodM];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.interfaces = <InterfaceType>[classA.type];
@@ -900,7 +900,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String setterName = "s";
     PropertyAccessorElement setterS =
-    ElementFactory.setterElement(setterName, false, _typeProvider.intType);
+        ElementFactory.setterElement(setterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[setterS];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.interfaces = <InterfaceType>[classA.type];
@@ -914,7 +914,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElement methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     (methodM as MethodElementImpl).static = true;
     classA.methods = <MethodElement>[methodM];
     ClassElementImpl classB = ElementFactory.classElement2("B");
@@ -945,12 +945,12 @@
     ClassElementImpl classI1 = ElementFactory.classElement2("I1");
     String methodName1 = "m1";
     MethodElement methodM1 =
-    ElementFactory.methodElement(methodName1, _typeProvider.intType);
+        ElementFactory.methodElement(methodName1, _typeProvider.intType);
     classI1.methods = <MethodElement>[methodM1];
     ClassElementImpl classI2 = ElementFactory.classElement2("I2");
     String methodName2 = "m2";
     MethodElement methodM2 =
-    ElementFactory.methodElement(methodName2, _typeProvider.intType);
+        ElementFactory.methodElement(methodName2, _typeProvider.intType);
     classI2.methods = <MethodElement>[methodM2];
     classI2.interfaces = <InterfaceType>[classI1.type];
     ClassElementImpl classA = ElementFactory.classElement2("A");
@@ -968,7 +968,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "g";
     PropertyAccessorElement getterG =
-    ElementFactory.getterElement(getterName, false, _typeProvider.intType);
+        ElementFactory.getterElement(getterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getterG];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.mixins = <InterfaceType>[classA.type];
@@ -982,7 +982,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElement methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classA.methods = <MethodElement>[methodM];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.mixins = <InterfaceType>[classA.type];
@@ -996,7 +996,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String setterName = "s";
     PropertyAccessorElement setterS =
-    ElementFactory.setterElement(setterName, false, _typeProvider.intType);
+        ElementFactory.setterElement(setterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[setterS];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.mixins = <InterfaceType>[classA.type];
@@ -1010,7 +1010,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElement methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     (methodM as MethodElementImpl).static = true;
     classA.methods = <MethodElement>[methodM];
     ClassElementImpl classB = ElementFactory.classElement2("B");
@@ -1030,7 +1030,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "g";
     PropertyAccessorElement getterG =
-    ElementFactory.getterElement(getterName, false, _typeProvider.intType);
+        ElementFactory.getterElement(getterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getterG];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
     expect(_inheritanceManager.lookupInheritance(classB, getterName),
@@ -1060,7 +1060,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElement methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classA.methods = <MethodElement>[methodM];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
     expect(_inheritanceManager.lookupInheritance(classB, methodName),
@@ -1073,7 +1073,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String setterName = "s";
     PropertyAccessorElement setterS =
-    ElementFactory.setterElement(setterName, false, _typeProvider.intType);
+        ElementFactory.setterElement(setterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[setterS];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
     expect(_inheritanceManager.lookupInheritance(classB, "$setterName="),
@@ -1086,7 +1086,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElement methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     (methodM as MethodElementImpl).static = true;
     classA.methods = <MethodElement>[methodM];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
@@ -1099,7 +1099,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "g";
     PropertyAccessorElement getterG =
-    ElementFactory.getterElement(getterName, false, _typeProvider.intType);
+        ElementFactory.getterElement(getterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getterG];
     expect(_inheritanceManager.lookupMember(classA, getterName), same(getterG));
     _assertNoErrors(classA);
@@ -1109,7 +1109,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "g";
     PropertyAccessorElement getterG =
-    ElementFactory.getterElement(getterName, true, _typeProvider.intType);
+        ElementFactory.getterElement(getterName, true, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[getterG];
     expect(_inheritanceManager.lookupMember(classA, getterName), isNull);
     _assertNoErrors(classA);
@@ -1119,7 +1119,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElement methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classA.methods = <MethodElement>[methodM];
     expect(_inheritanceManager.lookupMember(classA, methodName), same(methodM));
     _assertNoErrors(classA);
@@ -1129,7 +1129,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElement methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     (methodM as MethodElementImpl).static = true;
     classA.methods = <MethodElement>[methodM];
     expect(_inheritanceManager.lookupMember(classA, methodName), isNull);
@@ -1146,7 +1146,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String setterName = "s";
     PropertyAccessorElement setterS =
-    ElementFactory.setterElement(setterName, false, _typeProvider.intType);
+        ElementFactory.setterElement(setterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[setterS];
     expect(_inheritanceManager.lookupMember(classA, "$setterName="),
         same(setterS));
@@ -1157,7 +1157,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String setterName = "s";
     PropertyAccessorElement setterS =
-    ElementFactory.setterElement(setterName, true, _typeProvider.intType);
+        ElementFactory.setterElement(setterName, true, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement>[setterS];
     expect(_inheritanceManager.lookupMember(classA, setterName), isNull);
     _assertNoErrors(classA);
@@ -1167,7 +1167,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElementImpl methodM =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classA.methods = <MethodElement>[methodM];
     expect(
         _inheritanceManager.lookupOverrides(classA, methodName), hasLength(0));
@@ -1178,14 +1178,14 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElementImpl methodMinA =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classA.methods = <MethodElement>[methodMinA];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
     MethodElementImpl methodMinB =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classB.methods = <MethodElement>[methodMinB];
     List<ExecutableElement> overrides =
-    _inheritanceManager.lookupOverrides(classB, methodName);
+        _inheritanceManager.lookupOverrides(classB, methodName);
     expect(overrides, unorderedEquals([methodMinA]));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
@@ -1195,15 +1195,15 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElementImpl methodMinA =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classA.methods = <MethodElement>[methodMinA];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     classB.interfaces = <InterfaceType>[classA.type];
     MethodElementImpl methodMinB =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classB.methods = <MethodElement>[methodMinB];
     List<ExecutableElement> overrides =
-    _inheritanceManager.lookupOverrides(classB, methodName);
+        _inheritanceManager.lookupOverrides(classB, methodName);
     expect(overrides, unorderedEquals([methodMinA]));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
@@ -1213,19 +1213,19 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
     MethodElementImpl methodMinA =
-    ElementFactory.methodElement(methodName, _typeProvider.intType);
+        ElementFactory.methodElement(methodName, _typeProvider.intType);
     classA.methods = <MethodElement>[methodMinA];
     ClassElementImpl classB = ElementFactory.classElement2("B");
     MethodElementImpl methodMinB =
-    ElementFactory.methodElement(methodName, _typeProvider.doubleType);
+        ElementFactory.methodElement(methodName, _typeProvider.doubleType);
     classB.methods = <MethodElement>[methodMinB];
     ClassElementImpl classC = ElementFactory.classElement2("C");
     classC.interfaces = <InterfaceType>[classA.type, classB.type];
     MethodElementImpl methodMinC =
-    ElementFactory.methodElement(methodName, _typeProvider.numType);
+        ElementFactory.methodElement(methodName, _typeProvider.numType);
     classC.methods = <MethodElement>[methodMinC];
     List<ExecutableElement> overrides =
-    _inheritanceManager.lookupOverrides(classC, methodName);
+        _inheritanceManager.lookupOverrides(classC, methodName);
     expect(overrides, unorderedEquals([methodMinA, methodMinB]));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
@@ -1236,7 +1236,7 @@
       [List<ErrorCode> expectedErrorCodes = ErrorCode.EMPTY_LIST]) {
     GatheringErrorListener errorListener = new GatheringErrorListener();
     HashSet<AnalysisError> actualErrors =
-    _inheritanceManager.getErrors(classElt);
+        _inheritanceManager.getErrors(classElt);
     if (actualErrors != null) {
       for (AnalysisError error in actualErrors) {
         errorListener.onError(error);
@@ -1257,9 +1257,9 @@
   InheritanceManager _createInheritanceManager() {
     AnalysisContext context = AnalysisContextFactory.contextWithCore();
     FileBasedSource source =
-    new FileBasedSource(FileUtilities2.createFile("/test.dart"));
+        new FileBasedSource(FileUtilities2.createFile("/test.dart"));
     CompilationUnitElementImpl definingCompilationUnit =
-    new CompilationUnitElementImpl("test.dart");
+        new CompilationUnitElementImpl("test.dart");
     definingCompilationUnit.librarySource =
         definingCompilationUnit.source = source;
     _definingLibrary = ElementFactory.library(context, "test");
diff --git a/pkg/analyzer/test/generated/non_error_resolver_test.dart b/pkg/analyzer/test/generated/non_error_resolver_test.dart
index 292d016..fd3a422 100644
--- a/pkg/analyzer/test/generated/non_error_resolver_test.dart
+++ b/pkg/analyzer/test/generated/non_error_resolver_test.dart
@@ -1477,6 +1477,26 @@
     verify([source]);
   }
 
+  void test_constRedirectSkipsSupertype() {
+    // Since C redirects to C.named, it doesn't implicitly refer to B's
+    // unnamed constructor.  Therefore there is no cycle.
+    Source source = addSource('''
+class B {
+  final x;
+  const B() : x = y;
+  const B.named() : x = null;
+}
+class C extends B {
+  const C() : this.named();
+  const C.named() : super.named();
+}
+const y = const C();
+''');
+    computeLibrarySourceErrors(source);
+    assertNoErrors(source);
+    verify([source]);
+  }
+
   void test_constructorDeclaration_scope_signature() {
     Source source = addSource(r'''
 const app = 0;
diff --git a/pkg/analyzer/test/generated/parser_test.dart b/pkg/analyzer/test/generated/parser_test.dart
index ea02857..9fc01e2 100644
--- a/pkg/analyzer/test/generated/parser_test.dart
+++ b/pkg/analyzer/test/generated/parser_test.dart
@@ -9743,6 +9743,7 @@
   void test_parseStatement_singleLabel() {
     LabeledStatement statement = parse4("parseStatement", "l: return x;");
     expect(statement.labels, hasLength(1));
+    expect(statement.labels[0].label.inDeclarationContext(), isTrue);
     expect(statement.statement, isNotNull);
   }
 
@@ -10013,7 +10014,32 @@
     expect(statement.rightParenthesis, isNotNull);
     expect(statement.leftBracket, isNotNull);
     expect(statement.members, hasLength(1));
-    expect(statement.members[0].labels, hasLength(3));
+    {
+      List<Label> labels = statement.members[0].labels;
+      expect(labels, hasLength(3));
+      expect(labels[0].label.inDeclarationContext(), isTrue);
+      expect(labels[1].label.inDeclarationContext(), isTrue);
+      expect(labels[2].label.inDeclarationContext(), isTrue);
+    }
+    expect(statement.rightBracket, isNotNull);
+  }
+
+  void test_parseSwitchStatement_labeledDefault() {
+    SwitchStatement statement =
+        parse4("parseSwitchStatement", "switch (a) {l1: l2: l3: default:}");
+    expect(statement.switchKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.expression, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.leftBracket, isNotNull);
+    expect(statement.members, hasLength(1));
+    {
+      List<Label> labels = statement.members[0].labels;
+      expect(labels, hasLength(3));
+      expect(labels[0].label.inDeclarationContext(), isTrue);
+      expect(labels[1].label.inDeclarationContext(), isTrue);
+      expect(labels[2].label.inDeclarationContext(), isTrue);
+    }
     expect(statement.rightBracket, isNotNull);
   }
 
diff --git a/pkg/analyzer/test/generated/resolver_test_case.dart b/pkg/analyzer/test/generated/resolver_test_case.dart
index f6bd1cf..264d393 100644
--- a/pkg/analyzer/test/generated/resolver_test_case.dart
+++ b/pkg/analyzer/test/generated/resolver_test_case.dart
@@ -24,447 +24,6 @@
 import 'analysis_context_factory.dart';
 import 'test_support.dart';
 
-class ResolverTestCase extends EngineTestCase {
-  /**
-   * The analysis context used to parse the compilation units being resolved.
-   */
-  InternalAnalysisContext analysisContext2;
-
-  /**
-   * Specifies if [assertErrors] should check for [HintCode.UNUSED_ELEMENT] and
-   * [HintCode.UNUSED_FIELD].
-   */
-  bool enableUnusedElement = false;
-
-  /**
-   * Specifies if [assertErrors] should check for [HintCode.UNUSED_LOCAL_VARIABLE].
-   */
-  bool enableUnusedLocalVariable = false;
-
-  AnalysisContext get analysisContext => analysisContext2;
-
-  /**
-   * Return a type provider that can be used to test the results of resolution.
-   *
-   * @return a type provider
-   * @throws AnalysisException if dart:core cannot be resolved
-   */
-  TypeProvider get typeProvider => analysisContext2.typeProvider;
-
-  /**
-   * Return a type system that can be used to test the results of resolution.
-   *
-   * @return a type system
-   */
-  TypeSystem get typeSystem => analysisContext2.typeSystem;
-
-  /**
-   * Add a source file to the content provider. The file path should be absolute.
-   *
-   * @param filePath the path of the file being added
-   * @param contents the contents to be returned by the content provider for the specified file
-   * @return the source object representing the added file
-   */
-  Source addNamedSource(String filePath, String contents) {
-    Source source = cacheSource(filePath, contents);
-    ChangeSet changeSet = new ChangeSet();
-    changeSet.addedSource(source);
-    analysisContext2.applyChanges(changeSet);
-    return source;
-  }
-
-  /**
-   * Add a source file to the content provider.
-   *
-   * @param contents the contents to be returned by the content provider for the specified file
-   * @return the source object representing the added file
-   */
-  Source addSource(String contents) => addNamedSource("/test.dart", contents);
-
-  /**
-   * Assert that the number of errors reported against the given source matches the number of errors
-   * that are given and that they have the expected error codes. The order in which the errors were
-   * gathered is ignored.
-   *
-   * @param source the source against which the errors should have been reported
-   * @param expectedErrorCodes the error codes of the errors that should have been reported
-   * @throws AnalysisException if the reported errors could not be computed
-   * @throws AssertionFailedError if a different number of errors have been reported than were
-   *           expected
-   */
-  void assertErrors(Source source,
-      [List<ErrorCode> expectedErrorCodes = ErrorCode.EMPTY_LIST]) {
-    GatheringErrorListener errorListener = new GatheringErrorListener();
-    for (AnalysisError error in analysisContext2.computeErrors(source)) {
-      expect(error.source, source);
-      ErrorCode errorCode = error.errorCode;
-      if (!enableUnusedElement &&
-          (errorCode == HintCode.UNUSED_ELEMENT ||
-              errorCode == HintCode.UNUSED_FIELD)) {
-        continue;
-      }
-      if (!enableUnusedLocalVariable &&
-          (errorCode == HintCode.UNUSED_CATCH_CLAUSE ||
-              errorCode == HintCode.UNUSED_CATCH_STACK ||
-              errorCode == HintCode.UNUSED_LOCAL_VARIABLE)) {
-        continue;
-      }
-      errorListener.onError(error);
-    }
-    errorListener.assertErrorsWithCodes(expectedErrorCodes);
-  }
-
-  /**
-   * Asserts that [code] verifies, but has errors with the given error codes.
-   *
-   * Like [assertErrors], but takes a string of source code.
-   */
-  // TODO(rnystrom): Use this in more tests that have the same structure.
-  void assertErrorsInCode(String code, List<ErrorCode> errors) {
-    Source source = addSource(code);
-    computeLibrarySourceErrors(source);
-    assertErrors(source, errors);
-    verify([source]);
-  }
-
-  /**
-   * Asserts that [code] has errors with the given error codes.
-   *
-   * Like [assertErrors], but takes a string of source code.
-   */
-  void assertErrorsInUnverifiedCode(String code, List<ErrorCode> errors) {
-    Source source = addSource(code);
-    computeLibrarySourceErrors(source);
-    assertErrors(source, errors);
-  }
-
-  /**
-   * Assert that no errors have been reported against the given source.
-   *
-   * @param source the source against which no errors should have been reported
-   * @throws AnalysisException if the reported errors could not be computed
-   * @throws AssertionFailedError if any errors have been reported
-   */
-  void assertNoErrors(Source source) {
-    assertErrors(source);
-  }
-
-  /**
-   * Asserts that [code] has no errors or warnings.
-   */
-  // TODO(rnystrom): Use this in more tests that have the same structure.
-  void assertNoErrorsInCode(String code) {
-    Source source = addSource(code);
-    computeLibrarySourceErrors(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  /**
-   * Cache the source file content in the source factory but don't add the source to the analysis
-   * context. The file path should be absolute.
-   *
-   * @param filePath the path of the file being cached
-   * @param contents the contents to be returned by the content provider for the specified file
-   * @return the source object representing the cached file
-   */
-  Source cacheSource(String filePath, String contents) {
-    Source source = new FileBasedSource(FileUtilities2.createFile(filePath));
-    analysisContext2.setContents(source, contents);
-    return source;
-  }
-
-  /**
-   * Change the contents of the given [source] to the given [contents].
-   */
-  void changeSource(Source source, String contents) {
-    analysisContext2.setContents(source, contents);
-    ChangeSet changeSet = new ChangeSet();
-    changeSet.changedSource(source);
-    analysisContext2.applyChanges(changeSet);
-  }
-
-  /**
-   * Computes errors for the given [librarySource].
-   * This assumes that the given [librarySource] and its parts have already
-   * been added to the content provider using the method [addNamedSource].
-   */
-  void computeLibrarySourceErrors(Source librarySource) {
-    analysisContext.computeErrors(librarySource);
-  }
-
-  /**
-   * Create a library element that represents a library named `"test"` containing a single
-   * empty compilation unit.
-   *
-   * @return the library element that was created
-   */
-  LibraryElementImpl createDefaultTestLibrary() =>
-      createTestLibrary(AnalysisContextFactory.contextWithCore(), "test");
-
-  /**
-   * Create a library element that represents a library with the given name containing a single
-   * empty compilation unit.
-   *
-   * @param libraryName the name of the library to be created
-   * @return the library element that was created
-   */
-  LibraryElementImpl createTestLibrary(
-      AnalysisContext context, String libraryName,
-      [List<String> typeNames]) {
-    String fileName = "$libraryName.dart";
-    FileBasedSource definingCompilationUnitSource =
-    createNamedSource(fileName);
-    List<CompilationUnitElement> sourcedCompilationUnits;
-    if (typeNames == null) {
-      sourcedCompilationUnits = CompilationUnitElement.EMPTY_LIST;
-    } else {
-      int count = typeNames.length;
-      sourcedCompilationUnits = new List<CompilationUnitElement>(count);
-      for (int i = 0; i < count; i++) {
-        String typeName = typeNames[i];
-        ClassElementImpl type =
-        new ClassElementImpl.forNode(AstFactory.identifier3(typeName));
-        String fileName = "$typeName.dart";
-        CompilationUnitElementImpl compilationUnit =
-        new CompilationUnitElementImpl(fileName);
-        compilationUnit.source = createNamedSource(fileName);
-        compilationUnit.librarySource = definingCompilationUnitSource;
-        compilationUnit.types = <ClassElement>[type];
-        sourcedCompilationUnits[i] = compilationUnit;
-      }
-    }
-    CompilationUnitElementImpl compilationUnit =
-    new CompilationUnitElementImpl(fileName);
-    compilationUnit.librarySource =
-        compilationUnit.source = definingCompilationUnitSource;
-    LibraryElementImpl library = new LibraryElementImpl.forNode(
-        context, AstFactory.libraryIdentifier2([libraryName]));
-    library.definingCompilationUnit = compilationUnit;
-    library.parts = sourcedCompilationUnits;
-    return library;
-  }
-
-  Expression findTopLevelConstantExpression(
-      CompilationUnit compilationUnit, String name) =>
-      findTopLevelDeclaration(compilationUnit, name).initializer;
-
-  VariableDeclaration findTopLevelDeclaration(
-      CompilationUnit compilationUnit, String name) {
-    for (CompilationUnitMember member in compilationUnit.declarations) {
-      if (member is TopLevelVariableDeclaration) {
-        for (VariableDeclaration variable in member.variables.variables) {
-          if (variable.name.name == name) {
-            return variable;
-          }
-        }
-      }
-    }
-    return null;
-    // Not found
-  }
-
-  /**
-   * In the rare cases we want to group several tests into single "test_" method, so need a way to
-   * reset test instance to reuse it.
-   */
-  void reset() {
-    analysisContext2 = AnalysisContextFactory.contextWithCore();
-  }
-
-  /**
-   * Reset the analysis context to have the given options applied.
-   *
-   * @param options the analysis options to be applied to the context
-   */
-  void resetWithOptions(AnalysisOptions options) {
-    analysisContext2 =
-        AnalysisContextFactory.contextWithCoreAndOptions(options);
-  }
-
-  /**
-   * Given a library and all of its parts, resolve the contents of the library and the contents of
-   * the parts. This assumes that the sources for the library and its parts have already been added
-   * to the content provider using the method [addNamedSource].
-   *
-   * @param librarySource the source for the compilation unit that defines the library
-   * @return the element representing the resolved library
-   * @throws AnalysisException if the analysis could not be performed
-   */
-  LibraryElement resolve2(Source librarySource) =>
-      analysisContext2.computeLibraryElement(librarySource);
-
-  /**
-   * Return the resolved compilation unit corresponding to the given source in the given library.
-   *
-   * @param source the source of the compilation unit to be returned
-   * @param library the library in which the compilation unit is to be resolved
-   * @return the resolved compilation unit
-   * @throws Exception if the compilation unit could not be resolved
-   */
-  CompilationUnit resolveCompilationUnit(
-      Source source, LibraryElement library) =>
-      analysisContext2.resolveCompilationUnit(source, library);
-
-  CompilationUnit resolveSource(String sourceText) =>
-      resolveSource2("/test.dart", sourceText);
-
-  CompilationUnit resolveSource2(String fileName, String sourceText) {
-    Source source = addNamedSource(fileName, sourceText);
-    LibraryElement library = analysisContext.computeLibraryElement(source);
-    return analysisContext.resolveCompilationUnit(source, library);
-  }
-
-  Source resolveSources(List<String> sourceTexts) {
-    for (int i = 0; i < sourceTexts.length; 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;
-      }
-    }
-    return null;
-  }
-
-  void resolveWithAndWithoutExperimental(
-      List<String> strSources,
-      List<ErrorCode> codesWithoutExperimental,
-      List<ErrorCode> codesWithExperimental) {
-    // Setup analysis context as non-experimental
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-//    options.enableDeferredLoading = false;
-    resetWithOptions(options);
-    // Analysis and assertions
-    Source source = resolveSources(strSources);
-    assertErrors(source, codesWithoutExperimental);
-    verify([source]);
-    // Setup analysis context as experimental
-    reset();
-    // Analysis and assertions
-    source = resolveSources(strSources);
-    assertErrors(source, codesWithExperimental);
-    verify([source]);
-  }
-
-  void resolveWithErrors(List<String> strSources, List<ErrorCode> codes) {
-    // Analysis and assertions
-    Source source = resolveSources(strSources);
-    assertErrors(source, codes);
-    verify([source]);
-  }
-
-  @override
-  void setUp() {
-    ElementFactory.flushStaticState();
-    super.setUp();
-    reset();
-  }
-
-  @override
-  void tearDown() {
-    analysisContext2 = null;
-    super.tearDown();
-  }
-
-  /**
-   * Verify that all of the identifiers in the compilation units associated with
-   * the given [sources] have been resolved.
-   */
-  void verify(List<Source> sources) {
-    ResolutionVerifier verifier = new ResolutionVerifier();
-    for (Source source in sources) {
-      List<Source> libraries = analysisContext2.getLibrariesContaining(source);
-      for (Source library in libraries) {
-        analysisContext2
-            .resolveCompilationUnit2(source, library)
-            .accept(verifier);
-      }
-    }
-    verifier.assertResolved();
-  }
-
-  /**
-   * @param code the code that assigns the value to the variable "v", no matter how. We check that
-   *          "v" has expected static and propagated type.
-   */
-  void assertPropagatedAssignedType(String code, DartType expectedStaticType,
-      DartType expectedPropagatedType) {
-    SimpleIdentifier identifier = findMarkedIdentifier(code, "v = ");
-    expect(identifier.staticType, same(expectedStaticType));
-    expect(identifier.propagatedType, same(expectedPropagatedType));
-  }
-
-  /**
-   * @param code the code that iterates using variable "v". We check that
-   *          "v" has expected static and propagated type.
-   */
-  void assertPropagatedIterationType(String code, DartType expectedStaticType,
-      DartType expectedPropagatedType) {
-    SimpleIdentifier identifier = findMarkedIdentifier(code, "v in ");
-    expect(identifier.staticType, same(expectedStaticType));
-    expect(identifier.propagatedType, same(expectedPropagatedType));
-  }
-
-  /**
-   * Check the static and propagated types of the expression marked with "; // marker" comment.
-   *
-   * @param code source code to analyze, with the expression to check marked with "// marker".
-   * @param expectedStaticType if non-null, check actual static type is equal to this.
-   * @param expectedPropagatedType if non-null, check actual static type is equal to this.
-   * @throws Exception
-   */
-  void assertTypeOfMarkedExpression(String code, DartType expectedStaticType,
-      DartType expectedPropagatedType) {
-    SimpleIdentifier identifier = findMarkedIdentifier(code, "; // marker");
-    if (expectedStaticType != null) {
-      expect(identifier.staticType, expectedStaticType);
-    }
-    expect(identifier.propagatedType, expectedPropagatedType);
-  }
-
-  /**
-   * Create a source object representing a file with the given [fileName] and
-   * give it an empty content. Return the source that was created.
-   */
-  FileBasedSource createNamedSource(String fileName) {
-    FileBasedSource source =
-    new FileBasedSource(FileUtilities2.createFile(fileName));
-    analysisContext2.setContents(source, "");
-    return source;
-  }
-
-  /**
-   * Return the `SimpleIdentifier` marked by `marker`. The source code must have no
-   * errors and be verifiable.
-   *
-   * @param code source code to analyze.
-   * @param marker marker identifying sought after expression in source code.
-   * @return expression marked by the marker.
-   * @throws Exception
-   */
-  SimpleIdentifier findMarkedIdentifier(String code, String marker) {
-    try {
-      Source source = addSource(code);
-      LibraryElement library = resolve2(source);
-      assertNoErrors(source);
-      verify([source]);
-      CompilationUnit unit = resolveCompilationUnit(source, library);
-      // Could generalize this further by making [SimpleIdentifier.class] a
-      // parameter.
-      return EngineTestCase.findNode(
-          unit, code, marker, (node) => node is SimpleIdentifier);
-    } catch (exception) {
-      // Is there a better exception to throw here? The point is that an
-      // assertion failure 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");
-    }
-  }
-}
-
 /**
  * An AST visitor used to verify that all of the nodes in an AST structure that
  * should have been resolved were resolved.
@@ -738,6 +297,446 @@
   }
 }
 
+class ResolverTestCase extends EngineTestCase {
+  /**
+   * The analysis context used to parse the compilation units being resolved.
+   */
+  InternalAnalysisContext analysisContext2;
+
+  /**
+   * Specifies if [assertErrors] should check for [HintCode.UNUSED_ELEMENT] and
+   * [HintCode.UNUSED_FIELD].
+   */
+  bool enableUnusedElement = false;
+
+  /**
+   * Specifies if [assertErrors] should check for [HintCode.UNUSED_LOCAL_VARIABLE].
+   */
+  bool enableUnusedLocalVariable = false;
+
+  AnalysisContext get analysisContext => analysisContext2;
+
+  /**
+   * Return a type provider that can be used to test the results of resolution.
+   *
+   * @return a type provider
+   * @throws AnalysisException if dart:core cannot be resolved
+   */
+  TypeProvider get typeProvider => analysisContext2.typeProvider;
+
+  /**
+   * Return a type system that can be used to test the results of resolution.
+   *
+   * @return a type system
+   */
+  TypeSystem get typeSystem => analysisContext2.typeSystem;
+
+  /**
+   * Add a source file to the content provider. The file path should be absolute.
+   *
+   * @param filePath the path of the file being added
+   * @param contents the contents to be returned by the content provider for the specified file
+   * @return the source object representing the added file
+   */
+  Source addNamedSource(String filePath, String contents) {
+    Source source = cacheSource(filePath, contents);
+    ChangeSet changeSet = new ChangeSet();
+    changeSet.addedSource(source);
+    analysisContext2.applyChanges(changeSet);
+    return source;
+  }
+
+  /**
+   * Add a source file to the content provider.
+   *
+   * @param contents the contents to be returned by the content provider for the specified file
+   * @return the source object representing the added file
+   */
+  Source addSource(String contents) => addNamedSource("/test.dart", contents);
+
+  /**
+   * Assert that the number of errors reported against the given source matches the number of errors
+   * that are given and that they have the expected error codes. The order in which the errors were
+   * gathered is ignored.
+   *
+   * @param source the source against which the errors should have been reported
+   * @param expectedErrorCodes the error codes of the errors that should have been reported
+   * @throws AnalysisException if the reported errors could not be computed
+   * @throws AssertionFailedError if a different number of errors have been reported than were
+   *           expected
+   */
+  void assertErrors(Source source,
+      [List<ErrorCode> expectedErrorCodes = ErrorCode.EMPTY_LIST]) {
+    GatheringErrorListener errorListener = new GatheringErrorListener();
+    for (AnalysisError error in analysisContext2.computeErrors(source)) {
+      expect(error.source, source);
+      ErrorCode errorCode = error.errorCode;
+      if (!enableUnusedElement &&
+          (errorCode == HintCode.UNUSED_ELEMENT ||
+              errorCode == HintCode.UNUSED_FIELD)) {
+        continue;
+      }
+      if (!enableUnusedLocalVariable &&
+          (errorCode == HintCode.UNUSED_CATCH_CLAUSE ||
+              errorCode == HintCode.UNUSED_CATCH_STACK ||
+              errorCode == HintCode.UNUSED_LOCAL_VARIABLE)) {
+        continue;
+      }
+      errorListener.onError(error);
+    }
+    errorListener.assertErrorsWithCodes(expectedErrorCodes);
+  }
+
+  /**
+   * Asserts that [code] verifies, but has errors with the given error codes.
+   *
+   * Like [assertErrors], but takes a string of source code.
+   */
+  // TODO(rnystrom): Use this in more tests that have the same structure.
+  void assertErrorsInCode(String code, List<ErrorCode> errors) {
+    Source source = addSource(code);
+    computeLibrarySourceErrors(source);
+    assertErrors(source, errors);
+    verify([source]);
+  }
+
+  /**
+   * Asserts that [code] has errors with the given error codes.
+   *
+   * Like [assertErrors], but takes a string of source code.
+   */
+  void assertErrorsInUnverifiedCode(String code, List<ErrorCode> errors) {
+    Source source = addSource(code);
+    computeLibrarySourceErrors(source);
+    assertErrors(source, errors);
+  }
+
+  /**
+   * Assert that no errors have been reported against the given source.
+   *
+   * @param source the source against which no errors should have been reported
+   * @throws AnalysisException if the reported errors could not be computed
+   * @throws AssertionFailedError if any errors have been reported
+   */
+  void assertNoErrors(Source source) {
+    assertErrors(source);
+  }
+
+  /**
+   * Asserts that [code] has no errors or warnings.
+   */
+  // TODO(rnystrom): Use this in more tests that have the same structure.
+  void assertNoErrorsInCode(String code) {
+    Source source = addSource(code);
+    computeLibrarySourceErrors(source);
+    assertNoErrors(source);
+    verify([source]);
+  }
+
+  /**
+   * @param code the code that assigns the value to the variable "v", no matter how. We check that
+   *          "v" has expected static and propagated type.
+   */
+  void assertPropagatedAssignedType(String code, DartType expectedStaticType,
+      DartType expectedPropagatedType) {
+    SimpleIdentifier identifier = findMarkedIdentifier(code, "v = ");
+    expect(identifier.staticType, same(expectedStaticType));
+    expect(identifier.propagatedType, same(expectedPropagatedType));
+  }
+
+  /**
+   * @param code the code that iterates using variable "v". We check that
+   *          "v" has expected static and propagated type.
+   */
+  void assertPropagatedIterationType(String code, DartType expectedStaticType,
+      DartType expectedPropagatedType) {
+    SimpleIdentifier identifier = findMarkedIdentifier(code, "v in ");
+    expect(identifier.staticType, same(expectedStaticType));
+    expect(identifier.propagatedType, same(expectedPropagatedType));
+  }
+
+  /**
+   * Check the static and propagated types of the expression marked with "; // marker" comment.
+   *
+   * @param code source code to analyze, with the expression to check marked with "// marker".
+   * @param expectedStaticType if non-null, check actual static type is equal to this.
+   * @param expectedPropagatedType if non-null, check actual static type is equal to this.
+   * @throws Exception
+   */
+  void assertTypeOfMarkedExpression(String code, DartType expectedStaticType,
+      DartType expectedPropagatedType) {
+    SimpleIdentifier identifier = findMarkedIdentifier(code, "; // marker");
+    if (expectedStaticType != null) {
+      expect(identifier.staticType, expectedStaticType);
+    }
+    expect(identifier.propagatedType, expectedPropagatedType);
+  }
+
+  /**
+   * Cache the source file content in the source factory but don't add the source to the analysis
+   * context. The file path should be absolute.
+   *
+   * @param filePath the path of the file being cached
+   * @param contents the contents to be returned by the content provider for the specified file
+   * @return the source object representing the cached file
+   */
+  Source cacheSource(String filePath, String contents) {
+    Source source = new FileBasedSource(FileUtilities2.createFile(filePath));
+    analysisContext2.setContents(source, contents);
+    return source;
+  }
+
+  /**
+   * Change the contents of the given [source] to the given [contents].
+   */
+  void changeSource(Source source, String contents) {
+    analysisContext2.setContents(source, contents);
+    ChangeSet changeSet = new ChangeSet();
+    changeSet.changedSource(source);
+    analysisContext2.applyChanges(changeSet);
+  }
+
+  /**
+   * Computes errors for the given [librarySource].
+   * This assumes that the given [librarySource] and its parts have already
+   * been added to the content provider using the method [addNamedSource].
+   */
+  void computeLibrarySourceErrors(Source librarySource) {
+    analysisContext.computeErrors(librarySource);
+  }
+
+  /**
+   * Create a library element that represents a library named `"test"` containing a single
+   * empty compilation unit.
+   *
+   * @return the library element that was created
+   */
+  LibraryElementImpl createDefaultTestLibrary() =>
+      createTestLibrary(AnalysisContextFactory.contextWithCore(), "test");
+
+  /**
+   * Create a source object representing a file with the given [fileName] and
+   * give it an empty content. Return the source that was created.
+   */
+  FileBasedSource createNamedSource(String fileName) {
+    FileBasedSource source =
+        new FileBasedSource(FileUtilities2.createFile(fileName));
+    analysisContext2.setContents(source, "");
+    return source;
+  }
+
+  /**
+   * Create a library element that represents a library with the given name containing a single
+   * empty compilation unit.
+   *
+   * @param libraryName the name of the library to be created
+   * @return the library element that was created
+   */
+  LibraryElementImpl createTestLibrary(
+      AnalysisContext context, String libraryName,
+      [List<String> typeNames]) {
+    String fileName = "$libraryName.dart";
+    FileBasedSource definingCompilationUnitSource = createNamedSource(fileName);
+    List<CompilationUnitElement> sourcedCompilationUnits;
+    if (typeNames == null) {
+      sourcedCompilationUnits = CompilationUnitElement.EMPTY_LIST;
+    } else {
+      int count = typeNames.length;
+      sourcedCompilationUnits = new List<CompilationUnitElement>(count);
+      for (int i = 0; i < count; i++) {
+        String typeName = typeNames[i];
+        ClassElementImpl type =
+            new ClassElementImpl.forNode(AstFactory.identifier3(typeName));
+        String fileName = "$typeName.dart";
+        CompilationUnitElementImpl compilationUnit =
+            new CompilationUnitElementImpl(fileName);
+        compilationUnit.source = createNamedSource(fileName);
+        compilationUnit.librarySource = definingCompilationUnitSource;
+        compilationUnit.types = <ClassElement>[type];
+        sourcedCompilationUnits[i] = compilationUnit;
+      }
+    }
+    CompilationUnitElementImpl compilationUnit =
+        new CompilationUnitElementImpl(fileName);
+    compilationUnit.librarySource =
+        compilationUnit.source = definingCompilationUnitSource;
+    LibraryElementImpl library = new LibraryElementImpl.forNode(
+        context, AstFactory.libraryIdentifier2([libraryName]));
+    library.definingCompilationUnit = compilationUnit;
+    library.parts = sourcedCompilationUnits;
+    return library;
+  }
+
+  /**
+   * Return the `SimpleIdentifier` marked by `marker`. The source code must have no
+   * errors and be verifiable.
+   *
+   * @param code source code to analyze.
+   * @param marker marker identifying sought after expression in source code.
+   * @return expression marked by the marker.
+   * @throws Exception
+   */
+  SimpleIdentifier findMarkedIdentifier(String code, String marker) {
+    try {
+      Source source = addSource(code);
+      LibraryElement library = resolve2(source);
+      assertNoErrors(source);
+      verify([source]);
+      CompilationUnit unit = resolveCompilationUnit(source, library);
+      // Could generalize this further by making [SimpleIdentifier.class] a
+      // parameter.
+      return EngineTestCase.findNode(
+          unit, code, marker, (node) => node is SimpleIdentifier);
+    } catch (exception) {
+      // Is there a better exception to throw here? The point is that an
+      // assertion failure 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");
+    }
+  }
+
+  Expression findTopLevelConstantExpression(
+          CompilationUnit compilationUnit, String name) =>
+      findTopLevelDeclaration(compilationUnit, name).initializer;
+
+  VariableDeclaration findTopLevelDeclaration(
+      CompilationUnit compilationUnit, String name) {
+    for (CompilationUnitMember member in compilationUnit.declarations) {
+      if (member is TopLevelVariableDeclaration) {
+        for (VariableDeclaration variable in member.variables.variables) {
+          if (variable.name.name == name) {
+            return variable;
+          }
+        }
+      }
+    }
+    return null;
+    // Not found
+  }
+
+  /**
+   * In the rare cases we want to group several tests into single "test_" method, so need a way to
+   * reset test instance to reuse it.
+   */
+  void reset() {
+    analysisContext2 = AnalysisContextFactory.contextWithCore();
+  }
+
+  /**
+   * Reset the analysis context to have the given options applied.
+   *
+   * @param options the analysis options to be applied to the context
+   */
+  void resetWithOptions(AnalysisOptions options) {
+    analysisContext2 =
+        AnalysisContextFactory.contextWithCoreAndOptions(options);
+  }
+
+  /**
+   * Given a library and all of its parts, resolve the contents of the library and the contents of
+   * the parts. This assumes that the sources for the library and its parts have already been added
+   * to the content provider using the method [addNamedSource].
+   *
+   * @param librarySource the source for the compilation unit that defines the library
+   * @return the element representing the resolved library
+   * @throws AnalysisException if the analysis could not be performed
+   */
+  LibraryElement resolve2(Source librarySource) =>
+      analysisContext2.computeLibraryElement(librarySource);
+
+  /**
+   * Return the resolved compilation unit corresponding to the given source in the given library.
+   *
+   * @param source the source of the compilation unit to be returned
+   * @param library the library in which the compilation unit is to be resolved
+   * @return the resolved compilation unit
+   * @throws Exception if the compilation unit could not be resolved
+   */
+  CompilationUnit resolveCompilationUnit(
+          Source source, LibraryElement library) =>
+      analysisContext2.resolveCompilationUnit(source, library);
+
+  CompilationUnit resolveSource(String sourceText) =>
+      resolveSource2("/test.dart", sourceText);
+
+  CompilationUnit resolveSource2(String fileName, String sourceText) {
+    Source source = addNamedSource(fileName, sourceText);
+    LibraryElement library = analysisContext.computeLibraryElement(source);
+    return analysisContext.resolveCompilationUnit(source, library);
+  }
+
+  Source resolveSources(List<String> sourceTexts) {
+    for (int i = 0; i < sourceTexts.length; 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;
+      }
+    }
+    return null;
+  }
+
+  void resolveWithAndWithoutExperimental(
+      List<String> strSources,
+      List<ErrorCode> codesWithoutExperimental,
+      List<ErrorCode> codesWithExperimental) {
+    // Setup analysis context as non-experimental
+    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
+//    options.enableDeferredLoading = false;
+    resetWithOptions(options);
+    // Analysis and assertions
+    Source source = resolveSources(strSources);
+    assertErrors(source, codesWithoutExperimental);
+    verify([source]);
+    // Setup analysis context as experimental
+    reset();
+    // Analysis and assertions
+    source = resolveSources(strSources);
+    assertErrors(source, codesWithExperimental);
+    verify([source]);
+  }
+
+  void resolveWithErrors(List<String> strSources, List<ErrorCode> codes) {
+    // Analysis and assertions
+    Source source = resolveSources(strSources);
+    assertErrors(source, codes);
+    verify([source]);
+  }
+
+  @override
+  void setUp() {
+    ElementFactory.flushStaticState();
+    super.setUp();
+    reset();
+  }
+
+  @override
+  void tearDown() {
+    analysisContext2 = null;
+    super.tearDown();
+  }
+
+  /**
+   * Verify that all of the identifiers in the compilation units associated with
+   * the given [sources] have been resolved.
+   */
+  void verify(List<Source> sources) {
+    ResolutionVerifier verifier = new ResolutionVerifier();
+    for (Source source in sources) {
+      List<Source> libraries = analysisContext2.getLibrariesContaining(source);
+      for (Source library in libraries) {
+        analysisContext2
+            .resolveCompilationUnit2(source, library)
+            .accept(verifier);
+      }
+    }
+    verifier.assertResolved();
+  }
+}
+
 /**
  * Shared infrastructure for [StaticTypeAnalyzer2Test] and
  * [StrongModeStaticTypeAnalyzer2Test].
@@ -800,7 +799,7 @@
   void expectInitializerType(String name, type, [propagatedType]) {
     SimpleIdentifier identifier = findIdentifier(name);
     VariableDeclaration declaration =
-    identifier.getAncestor((node) => node is VariableDeclaration);
+        identifier.getAncestor((node) => node is VariableDeclaration);
     Expression initializer = declaration.initializer;
     _expectType(initializer.staticType, type);
     if (propagatedType != null) {
@@ -808,20 +807,6 @@
     }
   }
 
-  /**
-   * Validates that [type] matches [expected].
-   *
-   * If [expected] is a string, validates that the type stringifies to that
-   * text. Otherwise, [expected] is used directly a [Matcher] to match the type.
-   */
-  _expectType(DartType type, expected) {
-    if (expected is String) {
-      expect(type.toString(), expected);
-    } else {
-      expect(type, expected);
-    }
-  }
-
   SimpleIdentifier findIdentifier(String search) {
     SimpleIdentifier identifier = EngineTestCase.findNode(
         testUnit, testCode, search, (node) => node is SimpleIdentifier);
@@ -836,4 +821,18 @@
     verify([testSource]);
     testUnit = resolveCompilationUnit(testSource, library);
   }
+
+  /**
+   * Validates that [type] matches [expected].
+   *
+   * If [expected] is a string, validates that the type stringifies to that
+   * text. Otherwise, [expected] is used directly a [Matcher] to match the type.
+   */
+  _expectType(DartType type, expected) {
+    if (expected is String) {
+      expect(type.toString(), expected);
+    } else {
+      expect(type, expected);
+    }
+  }
 }
diff --git a/pkg/analyzer/test/generated/simple_resolver_test.dart b/pkg/analyzer/test/generated/simple_resolver_test.dart
index 12fc550..fcd3a5f 100644
--- a/pkg/analyzer/test/generated/simple_resolver_test.dart
+++ b/pkg/analyzer/test/generated/simple_resolver_test.dart
@@ -51,7 +51,7 @@
     // Verify that both the getter and setter for "x" in "new C().x" refer to
     // the accessors defined in M2.
     FunctionDeclaration main =
-    library.definingCompilationUnit.functions[0].computeNode();
+        library.definingCompilationUnit.functions[0].computeNode();
     BlockFunctionBody body = main.functionExpression.body;
     ExpressionStatement stmt = body.block.statements[0];
     AssignmentExpression assignment = stmt.expression;
@@ -196,7 +196,7 @@
       FunctionBody mainBody = mainElement.computeNode().functionExpression.body;
       Statement statement = (mainBody as BlockFunctionBody).block.statements[1];
       ExpressionStatement expressionStatement =
-      statement as ExpressionStatement;
+          statement as ExpressionStatement;
       assignment = expressionStatement.expression as AssignmentExpression;
     }
     // get parameter
@@ -232,7 +232,7 @@
       FunctionBody mainBody = mainElement.computeNode().functionExpression.body;
       Statement statement = (mainBody as BlockFunctionBody).block.statements[1];
       ExpressionStatement expressionStatement =
-      statement as ExpressionStatement;
+          statement as ExpressionStatement;
       assignment = expressionStatement.expression as AssignmentExpression;
     }
     // get parameter
@@ -265,7 +265,7 @@
       FunctionBody mainBody = mainElement.computeNode().functionExpression.body;
       Statement statement = (mainBody as BlockFunctionBody).block.statements[1];
       ExpressionStatement expressionStatement =
-      statement as ExpressionStatement;
+          statement as ExpressionStatement;
       assignment = expressionStatement.expression as AssignmentExpression;
     }
     // get parameter
@@ -300,7 +300,7 @@
       FunctionBody mainBody = mainElement.computeNode().functionExpression.body;
       Statement statement = (mainBody as BlockFunctionBody).block.statements[1];
       ExpressionStatement expressionStatement =
-      statement as ExpressionStatement;
+          statement as ExpressionStatement;
       assignment = expressionStatement.expression as AssignmentExpression;
     }
     // get parameter
@@ -331,7 +331,7 @@
     WhileStatement whileStatement = EngineTestCase.findNode(
         unit, text, 'while (true)', (n) => n is WhileStatement);
     ForStatement forStatement =
-    EngineTestCase.findNode(unit, text, 'for', (n) => n is ForStatement);
+        EngineTestCase.findNode(unit, text, 'for', (n) => n is ForStatement);
     BreakStatement break1 = EngineTestCase.findNode(
         unit, text, 'break loop1', (n) => n is BreakStatement);
     BreakStatement break2 = EngineTestCase.findNode(
@@ -350,7 +350,7 @@
 ''';
     CompilationUnit unit = resolveSource(text);
     DoStatement doStatement =
-    EngineTestCase.findNode(unit, text, 'do', (n) => n is DoStatement);
+        EngineTestCase.findNode(unit, text, 'do', (n) => n is DoStatement);
     BreakStatement breakStatement = EngineTestCase.findNode(
         unit, text, 'break', (n) => n is BreakStatement);
     expect(breakStatement.target, same(doStatement));
@@ -366,7 +366,7 @@
 ''';
     CompilationUnit unit = resolveSource(text);
     ForStatement forStatement =
-    EngineTestCase.findNode(unit, text, 'for', (n) => n is ForStatement);
+        EngineTestCase.findNode(unit, text, 'for', (n) => n is ForStatement);
     BreakStatement breakStatement = EngineTestCase.findNode(
         unit, text, 'break', (n) => n is BreakStatement);
     expect(breakStatement.target, same(forStatement));
@@ -517,7 +517,7 @@
     WhileStatement whileStatement = EngineTestCase.findNode(
         unit, text, 'while (true)', (n) => n is WhileStatement);
     ForStatement forStatement =
-    EngineTestCase.findNode(unit, text, 'for', (n) => n is ForStatement);
+        EngineTestCase.findNode(unit, text, 'for', (n) => n is ForStatement);
     ContinueStatement continue1 = EngineTestCase.findNode(
         unit, text, 'continue loop1', (n) => n is ContinueStatement);
     ContinueStatement continue2 = EngineTestCase.findNode(
@@ -536,7 +536,7 @@
 ''';
     CompilationUnit unit = resolveSource(text);
     DoStatement doStatement =
-    EngineTestCase.findNode(unit, text, 'do', (n) => n is DoStatement);
+        EngineTestCase.findNode(unit, text, 'do', (n) => n is DoStatement);
     ContinueStatement continueStatement = EngineTestCase.findNode(
         unit, text, 'continue', (n) => n is ContinueStatement);
     expect(continueStatement.target, same(doStatement));
@@ -552,7 +552,7 @@
 ''';
     CompilationUnit unit = resolveSource(text);
     ForStatement forStatement =
-    EngineTestCase.findNode(unit, text, 'for', (n) => n is ForStatement);
+        EngineTestCase.findNode(unit, text, 'for', (n) => n is ForStatement);
     ContinueStatement continueStatement = EngineTestCase.findNode(
         unit, text, 'continue', (n) => n is ContinueStatement);
     expect(continueStatement.target, same(forStatement));
@@ -839,7 +839,7 @@
     // Verify that the getter for "x" in "new C().x" refers to the getter
     // defined in M2.
     FunctionDeclaration main =
-    library.definingCompilationUnit.functions[0].computeNode();
+        library.definingCompilationUnit.functions[0].computeNode();
     BlockFunctionBody body = main.functionExpression.body;
     VariableDeclarationStatement stmt = body.block.statements[0];
     PropertyAccess propertyAccess = stmt.variables.variables[0].initializer;
@@ -1197,7 +1197,7 @@
     LibraryElement library = resolve2(source);
     expect(library, isNotNull);
     CompilationUnit unit =
-    analysisContext.resolveCompilationUnit(source, library);
+        analysisContext.resolveCompilationUnit(source, library);
     expect(unit, isNotNull);
     List<bool> found = [false];
     List<CaughtException> thrownException = new List<CaughtException>(1);
@@ -1470,7 +1470,7 @@
     verify([source]);
     // Verify that the "f" in "new C().f()" refers to the "f" defined in M2.
     FunctionDeclaration main =
-    library.definingCompilationUnit.functions[0].computeNode();
+        library.definingCompilationUnit.functions[0].computeNode();
     BlockFunctionBody body = main.functionExpression.body;
     ExpressionStatement stmt = body.block.statements[0];
     MethodInvocation expr = stmt.expression;
@@ -1525,7 +1525,7 @@
     // Verify that the call to f() in "new C().f()" refers to the method
     // defined in M2.
     FunctionDeclaration main =
-    library.definingCompilationUnit.functions[0].computeNode();
+        library.definingCompilationUnit.functions[0].computeNode();
     BlockFunctionBody body = main.functionExpression.body;
     ExpressionStatement stmt = body.block.statements[0];
     MethodInvocation invocation = stmt.expression;
@@ -1642,7 +1642,7 @@
     // Verify that the setter for "x" in "new C().x" refers to the setter
     // defined in M2.
     FunctionDeclaration main =
-    library.definingCompilationUnit.functions[0].computeNode();
+        library.definingCompilationUnit.functions[0].computeNode();
     BlockFunctionBody body = main.functionExpression.body;
     ExpressionStatement stmt = body.block.statements[0];
     AssignmentExpression assignment = stmt.expression;
@@ -1708,9 +1708,9 @@
     CompilationUnit unit = resolveCompilationUnit(source, library);
     expect(unit, isNotNull);
     ClassDeclaration classDeclaration =
-    unit.declarations[0] as ClassDeclaration;
+        unit.declarations[0] as ClassDeclaration;
     MethodDeclaration methodDeclaration =
-    classDeclaration.members[0] as MethodDeclaration;
+        classDeclaration.members[0] as MethodDeclaration;
     Block block = (methodDeclaration.body as BlockFunctionBody).block;
     ExpressionStatement statement = block.statements[0] as ExpressionStatement;
     MethodInvocation invocation = statement.expression as MethodInvocation;
diff --git a/pkg/analyzer/test/generated/static_type_analyzer_test.dart b/pkg/analyzer/test/generated/static_type_analyzer_test.dart
index 6191020..dd0d172 100644
--- a/pkg/analyzer/test/generated/static_type_analyzer_test.dart
+++ b/pkg/analyzer/test/generated/static_type_analyzer_test.dart
@@ -37,6 +37,143 @@
   runReflectiveTests(StaticTypeAnalyzer2Test);
 }
 
+/**
+ * Like [StaticTypeAnalyzerTest], but as end-to-end tests.
+ */
+@reflectiveTest
+class StaticTypeAnalyzer2Test extends StaticTypeAnalyzer2TestShared {
+  void test_FunctionExpressionInvocation_block() {
+    String code = r'''
+main() {
+  var foo = (() { return 1; })();
+}
+''';
+    resolveTestUnit(code);
+    expectInitializerType('foo', 'dynamic', isNull);
+  }
+
+  void test_FunctionExpressionInvocation_curried() {
+    String code = r'''
+typedef int F();
+F f() => null;
+main() {
+  var foo = f()();
+}
+''';
+    resolveTestUnit(code);
+    expectInitializerType('foo', 'int', isNull);
+  }
+
+  void test_FunctionExpressionInvocation_expression() {
+    String code = r'''
+main() {
+  var foo = (() => 1)();
+}
+''';
+    resolveTestUnit(code);
+    expectInitializerType('foo', 'int', isNull);
+  }
+
+  void test_MethodInvocation_nameType_localVariable() {
+    String code = r"""
+typedef Foo();
+main() {
+  Foo foo;
+  foo();
+}
+""";
+    resolveTestUnit(code);
+    // "foo" should be resolved to the "Foo" type
+    expectIdentifierType("foo();", new isInstanceOf<FunctionType>());
+  }
+
+  void test_MethodInvocation_nameType_parameter_FunctionTypeAlias() {
+    String code = r"""
+typedef Foo();
+main(Foo foo) {
+  foo();
+}
+""";
+    resolveTestUnit(code);
+    // "foo" should be resolved to the "Foo" type
+    expectIdentifierType("foo();", new isInstanceOf<FunctionType>());
+  }
+
+  void test_MethodInvocation_nameType_parameter_propagatedType() {
+    String code = r"""
+typedef Foo();
+main(p) {
+  if (p is Foo) {
+    p();
+  }
+}
+""";
+    resolveTestUnit(code);
+    expectIdentifierType("p()", DynamicTypeImpl.instance,
+        predicate((type) => type.name == 'Foo'));
+  }
+
+  void test_staticMethods_classTypeParameters() {
+    String code = r'''
+class C<T> {
+  static void m() => null;
+}
+main() {
+  print(C.m);
+}
+''';
+    resolveTestUnit(code);
+    expectFunctionType('m);', '() → void');
+  }
+
+  void test_staticMethods_classTypeParameters_genericMethod() {
+    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
+    options.enableGenericMethods = true;
+    resetWithOptions(options);
+    String code = r'''
+class C<T> {
+  static void m<S>(S s) {
+    void f<U>(S s, U u) {}
+    print(f);
+  }
+}
+main() {
+  print(C.m);
+}
+''';
+    resolveTestUnit(code);
+    // C - m
+    TypeParameterType typeS;
+    {
+      expectFunctionType('m);', '<S>(S) → void',
+          elementTypeParams: '[S]', typeFormals: '[S]');
+
+      FunctionTypeImpl type = findIdentifier('m);').staticType;
+      typeS = type.typeFormals[0].type;
+      type = type.instantiate([DynamicTypeImpl.instance]);
+      expect(type.toString(), '(dynamic) → void');
+      expect(type.typeParameters.toString(), '[S]');
+      expect(type.typeArguments, [DynamicTypeImpl.instance]);
+      expect(type.typeFormals, isEmpty);
+    }
+    // C - m - f
+    {
+      expectFunctionType('f);', '<U>(S, U) → void',
+          elementTypeParams: '[U]',
+          typeParams: '[S]',
+          typeArgs: '[S]',
+          typeFormals: '[U]');
+
+      FunctionTypeImpl type = findIdentifier('f);').staticType;
+      type = type.instantiate([DynamicTypeImpl.instance]);
+      expect(type.toString(), '(S, dynamic) → void');
+      expect(type.typeParameters.toString(), '[S, U]');
+      expect(type.typeArguments, [typeS, DynamicTypeImpl.instance]);
+      expect(type.typeFormals, isEmpty);
+    }
+  }
+}
+
 @reflectiveTest
 class StaticTypeAnalyzerTest extends EngineTestCase {
   /**
@@ -89,7 +226,7 @@
   void test_flatten_derived() {
     // class Derived<T> extends Future<T> { ... }
     ClassElementImpl derivedClass =
-    ElementFactory.classElement2('Derived', ['T']);
+        ElementFactory.classElement2('Derived', ['T']);
     derivedClass.supertype = _typeProvider.futureType
         .instantiate([derivedClass.typeParameters[0].type]);
     InterfaceType intType = _typeProvider.intType;
@@ -97,7 +234,7 @@
     InterfaceType derivedIntType = derivedClass.type.instantiate([intType]);
     // flatten(Derived) = dynamic
     InterfaceType derivedDynamicType =
-    derivedClass.type.instantiate([dynamicType]);
+        derivedClass.type.instantiate([dynamicType]);
     expect(_flatten(derivedDynamicType), dynamicType);
     // flatten(Derived<int>) = int
     expect(_flatten(derivedIntType), intType);
@@ -128,19 +265,19 @@
     InterfaceType numType = _typeProvider.numType;
     // class Derived<T> extends Future<T>
     ClassElementImpl derivedClass =
-    ElementFactory.classElement2('Derived', ['T']);
+        ElementFactory.classElement2('Derived', ['T']);
     derivedClass.supertype = _typeProvider.futureType
         .instantiate([derivedClass.typeParameters[0].type]);
     InterfaceType derivedType = derivedClass.type;
     // class A extends Derived<int> implements Derived<num> { ... }
     ClassElementImpl classA =
-    ElementFactory.classElement('A', derivedType.instantiate([intType]));
+        ElementFactory.classElement('A', derivedType.instantiate([intType]));
     classA.interfaces = <InterfaceType>[
       derivedType.instantiate([numType])
     ];
     // class B extends Future<num> implements Future<int> { ... }
     ClassElementImpl classB =
-    ElementFactory.classElement('B', derivedType.instantiate([numType]));
+        ElementFactory.classElement('B', derivedType.instantiate([numType]));
     classB.interfaces = <InterfaceType>[
       derivedType.instantiate([intType])
     ];
@@ -157,13 +294,13 @@
     InterfaceType numType = _typeProvider.numType;
     // class A extends Future<int> implements Future<num> { ... }
     ClassElementImpl classA =
-    ElementFactory.classElement('A', futureType.instantiate([intType]));
+        ElementFactory.classElement('A', futureType.instantiate([intType]));
     classA.interfaces = <InterfaceType>[
       futureType.instantiate([numType])
     ];
     // class B extends Future<num> implements Future<int> { ... }
     ClassElementImpl classB =
-    ElementFactory.classElement('B', futureType.instantiate([numType]));
+        ElementFactory.classElement('B', futureType.instantiate([numType]));
     classB.interfaces = <InterfaceType>[
       futureType.instantiate([intType])
     ];
@@ -177,11 +314,11 @@
     DartType dynamicType = _typeProvider.dynamicType;
     InterfaceType futureDynamicType = _typeProvider.futureDynamicType;
     InterfaceType futureIntType =
-    _typeProvider.futureType.instantiate([intType]);
+        _typeProvider.futureType.instantiate([intType]);
     InterfaceType futureFutureDynamicType =
-    _typeProvider.futureType.instantiate([futureDynamicType]);
+        _typeProvider.futureType.instantiate([futureDynamicType]);
     InterfaceType futureFutureIntType =
-    _typeProvider.futureType.instantiate([futureIntType]);
+        _typeProvider.futureType.instantiate([futureIntType]);
     // flatten(int) = int
     expect(_flatten(intType), intType);
     // flatten(dynamic) = dynamic
@@ -202,13 +339,13 @@
     InterfaceType stringType = _typeProvider.stringType;
     // class A extends Future<int> implements Future<String> { ... }
     ClassElementImpl classA =
-    ElementFactory.classElement('A', futureType.instantiate([intType]));
+        ElementFactory.classElement('A', futureType.instantiate([intType]));
     classA.interfaces = <InterfaceType>[
       futureType.instantiate([stringType])
     ];
     // class B extends Future<String> implements Future<int> { ... }
     ClassElementImpl classB =
-    ElementFactory.classElement('B', futureType.instantiate([stringType]));
+        ElementFactory.classElement('B', futureType.instantiate([stringType]));
     classB.interfaces = <InterfaceType>[
       futureType.instantiate([intType])
     ];
@@ -283,11 +420,11 @@
     // await e, where e has type Future<Future<int>>
     InterfaceType intType = _typeProvider.intType;
     InterfaceType futureIntType =
-    _typeProvider.futureType.instantiate(<DartType>[intType]);
+        _typeProvider.futureType.instantiate(<DartType>[intType]);
     InterfaceType futureFutureIntType =
-    _typeProvider.futureType.instantiate(<DartType>[futureIntType]);
+        _typeProvider.futureType.instantiate(<DartType>[futureIntType]);
     Expression node =
-    AstFactory.awaitExpression(_resolvedVariable(futureFutureIntType, 'e'));
+        AstFactory.awaitExpression(_resolvedVariable(futureFutureIntType, 'e'));
     expect(_analyze(node), same(intType));
     _listener.assertNoErrors();
   }
@@ -296,9 +433,9 @@
     // await e, where e has type Future<int>
     InterfaceType intType = _typeProvider.intType;
     InterfaceType futureIntType =
-    _typeProvider.futureType.instantiate(<DartType>[intType]);
+        _typeProvider.futureType.instantiate(<DartType>[intType]);
     Expression node =
-    AstFactory.awaitExpression(_resolvedVariable(futureIntType, 'e'));
+        AstFactory.awaitExpression(_resolvedVariable(futureIntType, 'e'));
     expect(_analyze(node), same(intType));
     _listener.assertNoErrors();
   }
@@ -406,7 +543,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A");
     InterfaceType typeA = classA.type;
     MethodElement operator =
-    ElementFactory.methodElement("*", typeA, [_typeProvider.doubleType]);
+        ElementFactory.methodElement("*", typeA, [_typeProvider.doubleType]);
     classA.methods = <MethodElement>[operator];
     BinaryExpression node = AstFactory.binaryExpression(
         AstFactory.asExpression(
@@ -481,7 +618,7 @@
     BlockFunctionBody body = AstFactory.blockFunctionBody2();
     body.keyword = TokenFactory.tokenFromString('async');
     FunctionExpression node =
-    _resolvedFunctionExpression(AstFactory.formalParameterList([]), body);
+        _resolvedFunctionExpression(AstFactory.formalParameterList([]), body);
     DartType resultType = _analyze(node);
     _assertFunctionType(
         _typeProvider.futureDynamicType, null, null, null, resultType);
@@ -492,12 +629,12 @@
     // () async => e, where e has type int
     InterfaceType intType = _typeProvider.intType;
     InterfaceType futureIntType =
-    _typeProvider.futureType.instantiate(<DartType>[intType]);
+        _typeProvider.futureType.instantiate(<DartType>[intType]);
     Expression expression = _resolvedVariable(intType, 'e');
     ExpressionFunctionBody body = AstFactory.expressionFunctionBody(expression);
     body.keyword = TokenFactory.tokenFromString('async');
     FunctionExpression node =
-    _resolvedFunctionExpression(AstFactory.formalParameterList([]), body);
+        _resolvedFunctionExpression(AstFactory.formalParameterList([]), body);
     DartType resultType = _analyze(node);
     _assertFunctionType(futureIntType, null, null, null, resultType);
     _listener.assertNoErrors();
@@ -507,12 +644,12 @@
     // () async => e, where e has type Future<int>
     InterfaceType intType = _typeProvider.intType;
     InterfaceType futureIntType =
-    _typeProvider.futureType.instantiate(<DartType>[intType]);
+        _typeProvider.futureType.instantiate(<DartType>[intType]);
     Expression expression = _resolvedVariable(futureIntType, 'e');
     ExpressionFunctionBody body = AstFactory.expressionFunctionBody(expression);
     body.keyword = TokenFactory.tokenFromString('async');
     FunctionExpression node =
-    _resolvedFunctionExpression(AstFactory.formalParameterList([]), body);
+        _resolvedFunctionExpression(AstFactory.formalParameterList([]), body);
     DartType resultType = _analyze(node);
     _assertFunctionType(futureIntType, null, null, null, resultType);
     _listener.assertNoErrors();
@@ -522,14 +659,14 @@
     // () async => e, where e has type Future<Future<int>>
     InterfaceType intType = _typeProvider.intType;
     InterfaceType futureIntType =
-    _typeProvider.futureType.instantiate(<DartType>[intType]);
+        _typeProvider.futureType.instantiate(<DartType>[intType]);
     InterfaceType futureFutureIntType =
-    _typeProvider.futureType.instantiate(<DartType>[futureIntType]);
+        _typeProvider.futureType.instantiate(<DartType>[futureIntType]);
     Expression expression = _resolvedVariable(futureFutureIntType, 'e');
     ExpressionFunctionBody body = AstFactory.expressionFunctionBody(expression);
     body.keyword = TokenFactory.tokenFromString('async');
     FunctionExpression node =
-    _resolvedFunctionExpression(AstFactory.formalParameterList([]), body);
+        _resolvedFunctionExpression(AstFactory.formalParameterList([]), body);
     DartType resultType = _analyze(node);
     _assertFunctionType(futureIntType, null, null, null, resultType);
     _listener.assertNoErrors();
@@ -541,7 +678,7 @@
     body.keyword = TokenFactory.tokenFromString('async');
     body.star = TokenFactory.tokenFromType(TokenType.STAR);
     FunctionExpression node =
-    _resolvedFunctionExpression(AstFactory.formalParameterList([]), body);
+        _resolvedFunctionExpression(AstFactory.formalParameterList([]), body);
     DartType resultType = _analyze(node);
     _assertFunctionType(
         _typeProvider.streamDynamicType, null, null, null, resultType);
@@ -554,7 +691,7 @@
     body.keyword = TokenFactory.tokenFromString('sync');
     body.star = TokenFactory.tokenFromType(TokenType.STAR);
     FunctionExpression node =
-    _resolvedFunctionExpression(AstFactory.formalParameterList([]), body);
+        _resolvedFunctionExpression(AstFactory.formalParameterList([]), body);
     DartType resultType = _analyze(node);
     _assertFunctionType(
         _typeProvider.iterableDynamicType, null, null, null, resultType);
@@ -755,7 +892,7 @@
     InterfaceType listType = _typeProvider.listType;
     SimpleIdentifier identifier = _resolvedVariable(listType, "a");
     IndexExpression node =
-    AstFactory.indexExpression(identifier, _resolvedInteger(2));
+        AstFactory.indexExpression(identifier, _resolvedInteger(2));
     MethodElement indexMethod = listType.element.methods[0];
     node.staticElement = indexMethod;
     expect(_analyze(node), same(listType.typeArguments[0]));
@@ -768,7 +905,7 @@
     InterfaceType listType = _typeProvider.listType;
     SimpleIdentifier identifier = _resolvedVariable(listType, "a");
     IndexExpression node =
-    AstFactory.indexExpression(identifier, _resolvedInteger(2));
+        AstFactory.indexExpression(identifier, _resolvedInteger(2));
     MethodElement indexMethod = listType.element.methods[1];
     node.staticElement = indexMethod;
     AstFactory.assignmentExpression(node, TokenType.EQ, AstFactory.integer(0));
@@ -789,7 +926,7 @@
     identifier.staticType = listOfIntType;
     // list[0] has MethodElement element (int) -> E
     IndexExpression indexExpression =
-    AstFactory.indexExpression(identifier, AstFactory.integer(0));
+        AstFactory.indexExpression(identifier, AstFactory.integer(0));
     MethodElement indexMethod = MethodMember.from(methodElement, listOfIntType);
     indexExpression.staticElement = indexMethod;
     // analyze and assert result of the index expression
@@ -810,7 +947,7 @@
     identifier.staticType = listOfIntType;
     // list[0] has MethodElement element (int) -> E
     IndexExpression indexExpression =
-    AstFactory.indexExpression(identifier, AstFactory.integer(0));
+        AstFactory.indexExpression(identifier, AstFactory.integer(0));
     MethodElement indexMethod = MethodMember.from(methodElement, listOfIntType);
     indexExpression.staticElement = indexMethod;
     // list[0] should be in a setter context
@@ -826,7 +963,7 @@
     ClassElementImpl classElement = ElementFactory.classElement2("C");
     String constructorName = "m";
     ConstructorElementImpl constructor =
-    ElementFactory.constructorElement2(classElement, constructorName);
+        ElementFactory.constructorElement2(classElement, constructorName);
     constructor.returnType = classElement.type;
     FunctionTypeImpl constructorType = new FunctionTypeImpl(constructor);
     constructor.type = constructorType;
@@ -845,16 +982,16 @@
     ClassElementImpl elementC = ElementFactory.classElement2("C", ["E"]);
     ClassElementImpl elementI = ElementFactory.classElement2("I");
     ConstructorElementImpl constructor =
-    ElementFactory.constructorElement2(elementC, null);
+        ElementFactory.constructorElement2(elementC, null);
     elementC.constructors = <ConstructorElement>[constructor];
     constructor.returnType = elementC.type;
     FunctionTypeImpl constructorType = new FunctionTypeImpl(constructor);
     constructor.type = constructorType;
     TypeName typeName =
-    AstFactory.typeName(elementC, [AstFactory.typeName(elementI)]);
+        AstFactory.typeName(elementC, [AstFactory.typeName(elementI)]);
     typeName.type = elementC.type.instantiate(<DartType>[elementI.type]);
     InstanceCreationExpression node =
-    AstFactory.instanceCreationExpression2(null, typeName);
+        AstFactory.instanceCreationExpression2(null, typeName);
     node.staticElement = constructor;
     InterfaceType interfaceType = _analyze(node) as InterfaceType;
     List<DartType> typeArgs = interfaceType.typeArguments;
@@ -867,7 +1004,7 @@
     // new C()
     ClassElementImpl classElement = ElementFactory.classElement2("C");
     ConstructorElementImpl constructor =
-    ElementFactory.constructorElement2(classElement, null);
+        ElementFactory.constructorElement2(classElement, null);
     constructor.returnType = classElement.type;
     FunctionTypeImpl constructorType = new FunctionTypeImpl(constructor);
     constructor.type = constructorType;
@@ -986,7 +1123,7 @@
   void test_visitPostfixExpression_plusPlus() {
     // 0++
     PostfixExpression node =
-    AstFactory.postfixExpression(_resolvedInteger(0), TokenType.PLUS_PLUS);
+        AstFactory.postfixExpression(_resolvedInteger(0), TokenType.PLUS_PLUS);
     expect(_analyze(node), same(_typeProvider.intType));
     _listener.assertNoErrors();
   }
@@ -994,7 +1131,7 @@
   void test_visitPrefixedIdentifier_getter() {
     DartType boolType = _typeProvider.boolType;
     PropertyAccessorElementImpl getter =
-    ElementFactory.getterElement("b", false, boolType);
+        ElementFactory.getterElement("b", false, boolType);
     PrefixedIdentifier node = AstFactory.identifier5("a", "b");
     node.identifier.staticElement = getter;
     expect(_analyze(node), same(boolType));
@@ -1004,7 +1141,7 @@
   void test_visitPrefixedIdentifier_setter() {
     DartType boolType = _typeProvider.boolType;
     FieldElementImpl field =
-    ElementFactory.fieldElement("b", false, false, false, boolType);
+        ElementFactory.fieldElement("b", false, false, false, boolType);
     PropertyAccessorElement setter = field.setter;
     PrefixedIdentifier node = AstFactory.identifier5("a", "b");
     node.identifier.staticElement = setter;
@@ -1024,7 +1161,7 @@
   void test_visitPrefixExpression_bang() {
     // !0
     PrefixExpression node =
-    AstFactory.prefixExpression(TokenType.BANG, _resolvedInteger(0));
+        AstFactory.prefixExpression(TokenType.BANG, _resolvedInteger(0));
     expect(_analyze(node), same(_typeProvider.boolType));
     _listener.assertNoErrors();
   }
@@ -1032,7 +1169,7 @@
   void test_visitPrefixExpression_minus() {
     // -0
     PrefixExpression node =
-    AstFactory.prefixExpression(TokenType.MINUS, _resolvedInteger(0));
+        AstFactory.prefixExpression(TokenType.MINUS, _resolvedInteger(0));
     MethodElement minusMethod = getMethod(_typeProvider.numType, "-");
     node.staticElement = minusMethod;
     expect(_analyze(node), same(_typeProvider.numType));
@@ -1042,7 +1179,7 @@
   void test_visitPrefixExpression_minusMinus() {
     // --0
     PrefixExpression node =
-    AstFactory.prefixExpression(TokenType.MINUS_MINUS, _resolvedInteger(0));
+        AstFactory.prefixExpression(TokenType.MINUS_MINUS, _resolvedInteger(0));
     MethodElement minusMethod = getMethod(_typeProvider.numType, "-");
     node.staticElement = minusMethod;
     expect(_analyze(node), same(_typeProvider.intType));
@@ -1060,7 +1197,7 @@
   void test_visitPrefixExpression_plusPlus() {
     // ++0
     PrefixExpression node =
-    AstFactory.prefixExpression(TokenType.PLUS_PLUS, _resolvedInteger(0));
+        AstFactory.prefixExpression(TokenType.PLUS_PLUS, _resolvedInteger(0));
     MethodElement plusMethod = getMethod(_typeProvider.numType, "+");
     node.staticElement = plusMethod;
     expect(_analyze(node), same(_typeProvider.intType));
@@ -1070,7 +1207,7 @@
   void test_visitPrefixExpression_tilde() {
     // ~0
     PrefixExpression node =
-    AstFactory.prefixExpression(TokenType.TILDE, _resolvedInteger(0));
+        AstFactory.prefixExpression(TokenType.TILDE, _resolvedInteger(0));
     MethodElement tildeMethod = getMethod(_typeProvider.intType, "~");
     node.staticElement = tildeMethod;
     expect(_analyze(node), same(_typeProvider.intType));
@@ -1080,9 +1217,9 @@
   void test_visitPropertyAccess_propagated_getter() {
     DartType boolType = _typeProvider.boolType;
     PropertyAccessorElementImpl getter =
-    ElementFactory.getterElement("b", false, boolType);
+        ElementFactory.getterElement("b", false, boolType);
     PropertyAccess node =
-    AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b");
+        AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b");
     node.propertyName.propagatedElement = getter;
     expect(_analyze2(node, false), same(boolType));
     _listener.assertNoErrors();
@@ -1091,10 +1228,10 @@
   void test_visitPropertyAccess_propagated_setter() {
     DartType boolType = _typeProvider.boolType;
     FieldElementImpl field =
-    ElementFactory.fieldElement("b", false, false, false, boolType);
+        ElementFactory.fieldElement("b", false, false, false, boolType);
     PropertyAccessorElement setter = field.setter;
     PropertyAccess node =
-    AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b");
+        AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b");
     node.propertyName.propagatedElement = setter;
     expect(_analyze2(node, false), same(boolType));
     _listener.assertNoErrors();
@@ -1103,9 +1240,9 @@
   void test_visitPropertyAccess_static_getter() {
     DartType boolType = _typeProvider.boolType;
     PropertyAccessorElementImpl getter =
-    ElementFactory.getterElement("b", false, boolType);
+        ElementFactory.getterElement("b", false, boolType);
     PropertyAccess node =
-    AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b");
+        AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b");
     node.propertyName.staticElement = getter;
     expect(_analyze(node), same(boolType));
     _listener.assertNoErrors();
@@ -1114,10 +1251,10 @@
   void test_visitPropertyAccess_static_setter() {
     DartType boolType = _typeProvider.boolType;
     FieldElementImpl field =
-    ElementFactory.fieldElement("b", false, false, false, boolType);
+        ElementFactory.fieldElement("b", false, false, false, boolType);
     PropertyAccessorElement setter = field.setter;
     PropertyAccess node =
-    AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b");
+        AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b");
     node.propertyName.staticElement = setter;
     expect(_analyze(node), same(boolType));
     _listener.assertNoErrors();
@@ -1340,13 +1477,13 @@
   StaticTypeAnalyzer _createAnalyzer() {
     InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
     FileBasedSource source =
-    new FileBasedSource(FileUtilities2.createFile("/lib.dart"));
+        new FileBasedSource(FileUtilities2.createFile("/lib.dart"));
     CompilationUnitElementImpl definingCompilationUnit =
-    new CompilationUnitElementImpl("lib.dart");
+        new CompilationUnitElementImpl("lib.dart");
     definingCompilationUnit.librarySource =
         definingCompilationUnit.source = source;
     LibraryElementImpl definingLibrary =
-    new LibraryElementImpl.forNode(context, null);
+        new LibraryElementImpl.forNode(context, null);
     definingLibrary.definingCompilationUnit = definingCompilationUnit;
     _typeProvider = new TestTypeProvider(context);
     _visitor = new ResolverVisitor(
@@ -1374,7 +1511,7 @@
       InterfaceType type, String variableName) {
     SimpleIdentifier identifier = AstFactory.identifier3(variableName);
     VariableElementImpl element =
-    ElementFactory.localVariableElement(identifier);
+        ElementFactory.localVariableElement(identifier);
     element.type = type;
     identifier.staticType = _typeProvider.dynamicType;
     identifier.propagatedElement = element;
@@ -1409,7 +1546,7 @@
     List<ParameterElement> parameterElements = new List<ParameterElement>();
     for (FormalParameter parameter in parameters.parameters) {
       ParameterElementImpl element =
-      new ParameterElementImpl.forNode(parameter.identifier);
+          new ParameterElementImpl.forNode(parameter.identifier);
       element.parameterKind = parameter.kind;
       element.type = _typeProvider.dynamicType;
       parameter.identifier.staticElement = element;
@@ -1457,7 +1594,7 @@
   SimpleIdentifier _resolvedVariable(InterfaceType type, String variableName) {
     SimpleIdentifier identifier = AstFactory.identifier3(variableName);
     VariableElementImpl element =
-    ElementFactory.localVariableElement(identifier);
+        ElementFactory.localVariableElement(identifier);
     element.type = type;
     identifier.staticElement = element;
     identifier.staticType = type;
@@ -1480,140 +1617,3 @@
     (element as ParameterElementImpl).type = type;
   }
 }
-
-/**
- * Like [StaticTypeAnalyzerTest], but as end-to-end tests.
- */
-@reflectiveTest
-class StaticTypeAnalyzer2Test extends StaticTypeAnalyzer2TestShared {
-  void test_FunctionExpressionInvocation_block() {
-    String code = r'''
-main() {
-  var foo = (() { return 1; })();
-}
-''';
-    resolveTestUnit(code);
-    expectInitializerType('foo', 'dynamic', isNull);
-  }
-
-  void test_FunctionExpressionInvocation_curried() {
-    String code = r'''
-typedef int F();
-F f() => null;
-main() {
-  var foo = f()();
-}
-''';
-    resolveTestUnit(code);
-    expectInitializerType('foo', 'int', isNull);
-  }
-
-  void test_FunctionExpressionInvocation_expression() {
-    String code = r'''
-main() {
-  var foo = (() => 1)();
-}
-''';
-    resolveTestUnit(code);
-    expectInitializerType('foo', 'int', isNull);
-  }
-
-  void test_MethodInvocation_nameType_localVariable() {
-    String code = r"""
-typedef Foo();
-main() {
-  Foo foo;
-  foo();
-}
-""";
-    resolveTestUnit(code);
-    // "foo" should be resolved to the "Foo" type
-    expectIdentifierType("foo();", new isInstanceOf<FunctionType>());
-  }
-
-  void test_MethodInvocation_nameType_parameter_FunctionTypeAlias() {
-    String code = r"""
-typedef Foo();
-main(Foo foo) {
-  foo();
-}
-""";
-    resolveTestUnit(code);
-    // "foo" should be resolved to the "Foo" type
-    expectIdentifierType("foo();", new isInstanceOf<FunctionType>());
-  }
-
-  void test_MethodInvocation_nameType_parameter_propagatedType() {
-    String code = r"""
-typedef Foo();
-main(p) {
-  if (p is Foo) {
-    p();
-  }
-}
-""";
-    resolveTestUnit(code);
-    expectIdentifierType("p()", DynamicTypeImpl.instance,
-        predicate((type) => type.name == 'Foo'));
-  }
-
-  void test_staticMethods_classTypeParameters() {
-    String code = r'''
-class C<T> {
-  static void m() => null;
-}
-main() {
-  print(C.m);
-}
-''';
-    resolveTestUnit(code);
-    expectFunctionType('m);', '() → void');
-  }
-
-  void test_staticMethods_classTypeParameters_genericMethod() {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableGenericMethods = true;
-    resetWithOptions(options);
-    String code = r'''
-class C<T> {
-  static void m<S>(S s) {
-    void f<U>(S s, U u) {}
-    print(f);
-  }
-}
-main() {
-  print(C.m);
-}
-''';
-    resolveTestUnit(code);
-    // C - m
-    TypeParameterType typeS;
-    {
-      expectFunctionType('m);', '<S>(S) → void',
-          elementTypeParams: '[S]', typeFormals: '[S]');
-
-      FunctionTypeImpl type = findIdentifier('m);').staticType;
-      typeS = type.typeFormals[0].type;
-      type = type.instantiate([DynamicTypeImpl.instance]);
-      expect(type.toString(), '(dynamic) → void');
-      expect(type.typeParameters.toString(), '[S]');
-      expect(type.typeArguments, [DynamicTypeImpl.instance]);
-      expect(type.typeFormals, isEmpty);
-    }
-    // C - m - f
-        {
-      expectFunctionType('f);', '<U>(S, U) → void',
-          elementTypeParams: '[U]',
-          typeParams: '[S]',
-          typeArgs: '[S]',
-          typeFormals: '[U]');
-
-      FunctionTypeImpl type = findIdentifier('f);').staticType;
-      type = type.instantiate([DynamicTypeImpl.instance]);
-      expect(type.toString(), '(S, dynamic) → void');
-      expect(type.typeParameters.toString(), '[S, U]');
-      expect(type.typeArguments, [typeS, DynamicTypeImpl.instance]);
-      expect(type.typeFormals, isEmpty);
-    }
-  }
-}
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 02993c5..64bebe3 100644
--- a/pkg/analyzer/test/generated/static_type_warning_code_test.dart
+++ b/pkg/analyzer/test/generated/static_type_warning_code_test.dart
@@ -181,6 +181,111 @@
         [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
   }
 
+  void test_awaitForIn_declaredVariableRightType() {
+    assertNoErrorsInCode('''
+import 'dart:async';
+f() async {
+  Stream<int> stream;
+  await for (int i in stream) {}
+}
+''');
+  }
+
+  void test_awaitForIn_declaredVariableWrongType() {
+    assertErrorsInCode(
+        '''
+import 'dart:async';
+f() async {
+  Stream<String> stream;
+  await for (int i in stream) {}
+}
+''',
+        [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]);
+  }
+
+  void test_awaitForIn_downcast() {
+    assertNoErrorsInCode('''
+import 'dart:async';
+f() async {
+  Stream<num> stream;
+  await for (int i in stream) {}
+}
+''');
+  }
+
+  void test_awaitForIn_dynamicStream() {
+    assertNoErrorsInCode('''
+f() async {
+  dynamic stream;
+  await for (int i in stream) {}
+}
+''');
+  }
+
+  void test_awaitForIn_dynamicVariable() {
+    assertNoErrorsInCode('''
+import 'dart:async';
+f() async {
+  Stream<int> stream;
+  await for (var i in stream) {}
+}
+''');
+  }
+
+  void test_awaitForIn_existingVariableRightType() {
+    assertNoErrorsInCode('''
+import 'dart:async';
+f() async {
+  Stream<int> stream;
+  int i;
+  await for (i in stream) {}
+}
+''');
+  }
+
+  void test_awaitForIn_existingVariableWrongType() {
+    assertErrorsInCode(
+        '''
+import 'dart:async';
+f() async {
+  Stream<String> stream;
+  int i;
+  await for (i in stream) {}
+}
+''',
+        [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]);
+  }
+
+  void test_awaitForIn_notStream() {
+    assertErrorsInCode(
+        '''
+f() async {
+  await for (var i in true) {}
+}
+''',
+        [StaticTypeWarningCode.FOR_IN_OF_INVALID_TYPE]);
+  }
+
+  void test_awaitForIn_streamOfDynamic() {
+    assertNoErrorsInCode('''
+import 'dart:async';
+f() async {
+  Stream stream;
+  await for (int i in stream) {}
+}
+''');
+  }
+
+  void test_awaitForIn_upcast() {
+    assertNoErrorsInCode('''
+import 'dart:async';
+f() async {
+  Stream<int> stream;
+  await for (num i in stream) {}
+}
+''');
+  }
+
   void test_bug21912() {
     assertErrorsInCode(
         '''
@@ -236,6 +341,135 @@
         [StaticTypeWarningCode.EXPECTED_TWO_MAP_TYPE_ARGUMENTS]);
   }
 
+  void test_forIn_declaredVariableRightType() {
+    assertNoErrorsInCode('''
+f() {
+  for (int i in <int>[]) {}
+}
+''');
+  }
+
+  void test_forIn_declaredVariableWrongType() {
+    assertErrorsInCode(
+        '''
+f() {
+  for (int i in <String>[]) {}
+}
+''',
+        [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]);
+  }
+
+  void test_forIn_downcast() {
+    assertNoErrorsInCode('''
+f() {
+  for (int i in <num>[]) {}
+}
+''');
+  }
+
+  void test_forIn_dynamic() {
+    assertNoErrorsInCode('''
+f() {
+  dynamic d; // Could be [].
+  for (var i in d) {}
+}
+''');
+  }
+
+  void test_forIn_dynamicIterable() {
+    assertNoErrorsInCode('''
+f() {
+  dynamic iterable;
+  for (int i in iterable) {}
+}
+''');
+  }
+
+  void test_forIn_dynamicVariable() {
+    assertNoErrorsInCode('''
+f() {
+  for (var i in <int>[]) {}
+}
+''');
+  }
+
+  void test_forIn_existingVariableRightType() {
+    assertNoErrorsInCode('''
+f() {
+  int i;
+  for (i in <int>[]) {}
+}
+''');
+  }
+
+  void test_forIn_existingVariableWrongType() {
+    assertErrorsInCode(
+        '''
+f() {
+  int i;
+  for (i in <String>[]) {}
+}
+''',
+        [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]);
+  }
+
+  void test_forIn_iterableOfDynamic() {
+    assertNoErrorsInCode('''
+f() {
+  for (int i in []) {}
+}
+''');
+  }
+
+  void test_forIn_notIterable() {
+    assertErrorsInCode(
+        '''
+f() {
+  for (var i in true) {}
+}
+''',
+        [StaticTypeWarningCode.FOR_IN_OF_INVALID_TYPE]);
+  }
+
+  void test_forIn_object() {
+    assertNoErrorsInCode('''
+f() {
+  Object o; // Could be [].
+  for (var i in o) {}
+}
+''');
+  }
+
+  void test_forIn_typeBoundBad() {
+    assertErrorsInCode(
+        '''
+class Foo<T extends Iterable<int>> {
+  void method(T iterable) {
+    for (String i in iterable) {}
+  }
+}
+''',
+        [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]);
+  }
+
+  void test_forIn_typeBoundGood() {
+    assertNoErrorsInCode('''
+class Foo<T extends Iterable<int>> {
+  void method(T iterable) {
+    for (var i in iterable) {}
+  }
+}
+''');
+  }
+
+  void test_forIn_upcast() {
+    assertNoErrorsInCode('''
+f() {
+  for (num i in <int>[]) {}
+}
+''');
+  }
+
   void test_illegal_return_type_async_function() {
     assertErrorsInCode(
         '''
@@ -646,6 +880,7 @@
         [StaticTypeWarningCode.NON_BOOL_CONDITION]);
   }
 
+  // https://github.com/dart-lang/sdk/issues/24713
   void test_nonBoolCondition_for() {
     assertErrorsInCode(
         r'''
@@ -856,7 +1091,6 @@
         [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]);
   }
 
-  // https://github.com/dart-lang/sdk/issues/24713
   void test_returnOfInvalidType_not_issued_for_valid_generic_return() {
     assertNoErrorsInCode(r'''
 abstract class F<T, U>  {
@@ -1907,242 +2141,6 @@
         [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]);
   }
 
-  void test_forIn_notIterable() {
-    assertErrorsInCode(
-        '''
-f() {
-  for (var i in true) {}
-}
-''',
-        [StaticTypeWarningCode.FOR_IN_OF_INVALID_TYPE]);
-  }
-
-  void test_forIn_object() {
-    assertNoErrorsInCode(
-        '''
-f() {
-  Object o; // Could be [].
-  for (var i in o) {}
-}
-''');
-  }
-
-  void test_forIn_dynamic() {
-    assertNoErrorsInCode(
-        '''
-f() {
-  dynamic d; // Could be [].
-  for (var i in d) {}
-}
-''');
-  }
-
-  void test_forIn_declaredVariableWrongType() {
-    assertErrorsInCode(
-        '''
-f() {
-  for (int i in <String>[]) {}
-}
-''',
-        [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]);
-  }
-
-  void test_forIn_existingVariableWrongType() {
-    assertErrorsInCode(
-        '''
-f() {
-  int i;
-  for (i in <String>[]) {}
-}
-''',
-        [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]);
-  }
-
-  void test_forIn_declaredVariableRightType() {
-    assertNoErrorsInCode('''
-f() {
-  for (int i in <int>[]) {}
-}
-''');
-  }
-
-  void test_forIn_existingVariableRightType() {
-    assertNoErrorsInCode('''
-f() {
-  int i;
-  for (i in <int>[]) {}
-}
-''');
-  }
-
-  void test_forIn_dynamicVariable() {
-    assertNoErrorsInCode('''
-f() {
-  for (var i in <int>[]) {}
-}
-''');
-  }
-
-  void test_forIn_iterableOfDynamic() {
-    assertNoErrorsInCode('''
-f() {
-  for (int i in []) {}
-}
-''');
-  }
-
-  void test_forIn_dynamicIterable() {
-    assertNoErrorsInCode('''
-f() {
-  dynamic iterable;
-  for (int i in iterable) {}
-}
-''');
-  }
-
-  void test_forIn_upcast() {
-    assertNoErrorsInCode('''
-f() {
-  for (num i in <int>[]) {}
-}
-''');
-  }
-
-  void test_forIn_downcast() {
-    assertNoErrorsInCode('''
-f() {
-  for (int i in <num>[]) {}
-}
-''');
-  }
-
-  void test_forIn_typeBoundBad() {
-    assertErrorsInCode(
-        '''
-class Foo<T extends Iterable<int>> {
-  void method(T iterable) {
-    for (String i in iterable) {}
-  }
-}
-''',
-        [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]);
-  }
-
-  void test_forIn_typeBoundGood() {
-    assertNoErrorsInCode('''
-class Foo<T extends Iterable<int>> {
-  void method(T iterable) {
-    for (var i in iterable) {}
-  }
-}
-''');
-  }
-
-  void test_awaitForIn_notStream() {
-    assertErrorsInCode(
-        '''
-f() async {
-  await for (var i in true) {}
-}
-''',
-        [StaticTypeWarningCode.FOR_IN_OF_INVALID_TYPE]);
-  }
-
-  void test_awaitForIn_declaredVariableWrongType() {
-    assertErrorsInCode(
-        '''
-import 'dart:async';
-f() async {
-  Stream<String> stream;
-  await for (int i in stream) {}
-}
-''',
-        [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]);
-  }
-
-  void test_awaitForIn_existingVariableWrongType() {
-    assertErrorsInCode(
-        '''
-import 'dart:async';
-f() async {
-  Stream<String> stream;
-  int i;
-  await for (i in stream) {}
-}
-''',
-        [StaticTypeWarningCode.FOR_IN_OF_INVALID_ELEMENT_TYPE]);
-  }
-
-  void test_awaitForIn_declaredVariableRightType() {
-    assertNoErrorsInCode('''
-import 'dart:async';
-f() async {
-  Stream<int> stream;
-  await for (int i in stream) {}
-}
-''');
-  }
-
-  void test_awaitForIn_existingVariableRightType() {
-    assertNoErrorsInCode('''
-import 'dart:async';
-f() async {
-  Stream<int> stream;
-  int i;
-  await for (i in stream) {}
-}
-''');
-  }
-
-  void test_awaitForIn_dynamicVariable() {
-    assertNoErrorsInCode('''
-import 'dart:async';
-f() async {
-  Stream<int> stream;
-  await for (var i in stream) {}
-}
-''');
-  }
-
-  void test_awaitForIn_streamOfDynamic() {
-    assertNoErrorsInCode('''
-import 'dart:async';
-f() async {
-  Stream stream;
-  await for (int i in stream) {}
-}
-''');
-  }
-
-  void test_awaitForIn_dynamicStream() {
-    assertNoErrorsInCode('''
-f() async {
-  dynamic stream;
-  await for (int i in stream) {}
-}
-''');
-  }
-
-  void test_awaitForIn_upcast() {
-    assertNoErrorsInCode('''
-import 'dart:async';
-f() async {
-  Stream<int> stream;
-  await for (num i in stream) {}
-}
-''');
-  }
-
-  void test_awaitForIn_downcast() {
-    assertNoErrorsInCode('''
-import 'dart:async';
-f() async {
-  Stream<num> stream;
-  await for (int i in stream) {}
-}
-''');
-  }
-
   void test_yield_async_to_basic_type() {
     assertErrorsInCode(
         '''
diff --git a/pkg/analyzer/test/generated/static_warning_code_test.dart b/pkg/analyzer/test/generated/static_warning_code_test.dart
index 7e8e4f3..1445233 100644
--- a/pkg/analyzer/test/generated/static_warning_code_test.dart
+++ b/pkg/analyzer/test/generated/static_warning_code_test.dart
@@ -993,7 +993,8 @@
     assertErrors(source, [StaticWarningCode.CONFLICTING_DART_IMPORT]);
   }
 
-  void test_conflictingInstanceGetterAndSuperclassMember_declField_direct_setter() {
+  void
+      test_conflictingInstanceGetterAndSuperclassMember_declField_direct_setter() {
     Source source = addSource(r'''
 class A {
   static set v(x) {}
@@ -1007,7 +1008,8 @@
     verify([source]);
   }
 
-  void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_getter() {
+  void
+      test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_getter() {
     Source source = addSource(r'''
 class A {
   static get v => 0;
@@ -1021,7 +1023,8 @@
     verify([source]);
   }
 
-  void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_method() {
+  void
+      test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_method() {
     Source source = addSource(r'''
 class A {
   static v() {}
@@ -1035,7 +1038,8 @@
     verify([source]);
   }
 
-  void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_setter() {
+  void
+      test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_setter() {
     Source source = addSource(r'''
 class A {
   static set v(x) {}
@@ -2319,6 +2323,24 @@
     verify([source]);
   }
 
+  void test_missingEnumConstantInSwitch() {
+    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;
+}''');
+    computeLibrarySourceErrors(source);
+    assertErrors(source, [
+      StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH,
+      StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH
+    ]);
+    verify([source]);
+  }
+
   void test_mixedReturnTypes_localFunction() {
     Source source = addSource(r'''
 class C {
@@ -2505,7 +2527,8 @@
     verify([source]);
   }
 
-  void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface() {
+  void
+      test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface() {
     // 15979
     Source source = addSource(r'''
 abstract class M {}
@@ -2534,7 +2557,8 @@
     verify([source]);
   }
 
-  void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass() {
+  void
+      test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass() {
     // 15979
     Source source = addSource(r'''
 class M {}
@@ -2548,7 +2572,8 @@
     verify([source]);
   }
 
-  void test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubtypeIsUsedInImplementation() {
+  void
+      test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubtypeIsUsedInImplementation() {
     // 15028
     Source source = addSource(r'''
 class C {
@@ -2616,7 +2641,8 @@
     verify([source]);
   }
 
-  void test_nonAbstractClassInheritsAbstractMemberOne_method_optionalParamCount() {
+  void
+      test_nonAbstractClassInheritsAbstractMemberOne_method_optionalParamCount() {
     // 7640
     Source source = addSource(r'''
 abstract class A {
@@ -2683,7 +2709,8 @@
     verify([source]);
   }
 
-  void test_nonAbstractClassInheritsAbstractMemberOne_setter_and_implicitSetter() {
+  void
+      test_nonAbstractClassInheritsAbstractMemberOne_setter_and_implicitSetter() {
     // test from language/override_inheritance_abstract_test_14.dart
     Source source = addSource(r'''
 abstract class A {
@@ -2744,7 +2771,8 @@
     verify([source]);
   }
 
-  void test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingGetter() {
+  void
+      test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingGetter() {
     // 16133
     Source source = addSource(r'''
 class I {
@@ -2759,7 +2787,8 @@
     verify([source]);
   }
 
-  void test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingSetter() {
+  void
+      test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingSetter() {
     // 16133
     Source source = addSource(r'''
 class I {
@@ -2803,7 +2832,8 @@
     verify([source]);
   }
 
-  void test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromInterface_missingBoth() {
+  void
+      test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromInterface_missingBoth() {
     // 16133
     Source source = addSource(r'''
 class I {
@@ -3189,7 +3219,8 @@
     ]);
   }
 
-  void test_typeAnnotationDeferredClass_functionTypedFormalParameter_returnType() {
+  void
+      test_typeAnnotationDeferredClass_functionTypedFormalParameter_returnType() {
     resolveWithErrors(<String>[
       r'''
 library lib1;
@@ -3616,22 +3647,4 @@
     computeLibrarySourceErrors(source);
     assertErrors(source, [StaticWarningCode.VOID_RETURN_FOR_GETTER]);
   }
-
-  void test_missingEnumConstantInSwitch() {
-    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;
-}''');
-    computeLibrarySourceErrors(source);
-    assertErrors(source, [
-      StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH,
-      StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH
-    ]);
-    verify([source]);
-  }
 }
diff --git a/pkg/analyzer/test/generated/strong_mode_test.dart b/pkg/analyzer/test/generated/strong_mode_test.dart
index 115d966..8a55212 100644
--- a/pkg/analyzer/test/generated/strong_mode_test.dart
+++ b/pkg/analyzer/test/generated/strong_mode_test.dart
@@ -39,13 +39,13 @@
   Asserter<DartType> _isString;
 
   AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, DartType>
-  _isFunction2Of;
+      _isFunction2Of;
   AsserterBuilder<List<Asserter<DartType>>, InterfaceType> _isFutureOf;
   AsserterBuilderBuilder<Asserter<DartType>, List<Asserter<DartType>>, DartType>
-  _isInstantiationOf;
+      _isInstantiationOf;
   AsserterBuilder<Asserter<DartType>, InterfaceType> _isListOf;
   AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, InterfaceType>
-  _isMapOf;
+      _isMapOf;
   AsserterBuilder<List<Asserter<DartType>>, InterfaceType> _isStreamOf;
   AsserterBuilder<DartType, DartType> _isType;
 
@@ -264,7 +264,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     CascadeExpression fetch(int i) {
       VariableDeclarationStatement stmt = statements[i];
       VariableDeclaration decl = stmt.variables.variables[0];
@@ -291,7 +291,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     ConstructorDeclaration constructor =
-    AstFinder.getConstructorInClass(unit, "A", null);
+        AstFinder.getConstructorInClass(unit, "A", null);
     ConstructorFieldInitializer assignment = constructor.initializers[0];
     Expression exp = assignment.expression;
     _isListOf(_isString)(exp.staticType);
@@ -307,7 +307,7 @@
     CompilationUnit unit = resolveSource(code);
 
     ConstructorDeclaration constructor =
-    AstFinder.getConstructorInClass(unit, "A", null);
+        AstFinder.getConstructorInClass(unit, "A", null);
     BlockFunctionBody body = constructor.body;
     ReturnStatement stmt = body.block.statements[0];
     InstanceCreationExpression exp = stmt.expression;
@@ -353,7 +353,7 @@
     assertListOfInt(body.expression.staticType);
 
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "test2");
+        AstFinder.getStatementsInTopLevelFunction(unit, "test2");
 
     FunctionDeclaration inner =
         (statements[0] as FunctionDeclarationStatement).functionDeclaration;
@@ -384,7 +384,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     DartType literal(int i) {
       VariableDeclarationStatement stmt = statements[i];
       VariableDeclaration decl = stmt.variables.variables[0];
@@ -412,7 +412,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     DartType literal(int i) {
       VariableDeclarationStatement stmt = statements[i];
       VariableDeclaration decl = stmt.variables.variables[0];
@@ -439,7 +439,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     Expression functionReturnValue(int i) {
       VariableDeclarationStatement stmt = statements[i];
       VariableDeclaration decl = stmt.variables.variables[0];
@@ -475,7 +475,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     DartType literal(int i) {
       ExpressionStatement stmt = statements[i];
       FunctionExpressionInvocation invk = stmt.expression;
@@ -505,7 +505,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     DartType literal(int i) {
       ExpressionStatement stmt = statements[i];
       FunctionExpressionInvocation invk = stmt.expression;
@@ -533,7 +533,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     DartType literal(int i) {
       ExpressionStatement stmt = statements[i];
       MethodInvocation invk = stmt.expression;
@@ -561,7 +561,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     DartType literal(int i) {
       ExpressionStatement stmt = statements[i];
       MethodInvocation invk = stmt.expression;
@@ -591,7 +591,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     DartType literal(int i) {
       ExpressionStatement stmt = statements[i];
       MethodInvocation invk = stmt.expression;
@@ -621,7 +621,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     DartType literal(int i) {
       ExpressionStatement stmt = statements[i];
       MethodInvocation invk = stmt.expression;
@@ -649,7 +649,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     Expression functionReturnValue(int i) {
       VariableDeclarationStatement stmt = statements[i];
       VariableDeclaration decl = stmt.variables.variables[0];
@@ -794,21 +794,21 @@
     Element elementF = AstFinder.getClass(unit, "F").element;
 
     AsserterBuilder<List<Asserter<DartType>>, DartType> assertAOf =
-    _isInstantiationOf(_hasElement(elementA));
+        _isInstantiationOf(_hasElement(elementA));
     AsserterBuilder<List<Asserter<DartType>>, DartType> assertBOf =
-    _isInstantiationOf(_hasElement(elementB));
+        _isInstantiationOf(_hasElement(elementB));
     AsserterBuilder<List<Asserter<DartType>>, DartType> assertCOf =
-    _isInstantiationOf(_hasElement(elementC));
+        _isInstantiationOf(_hasElement(elementC));
     AsserterBuilder<List<Asserter<DartType>>, DartType> assertDOf =
-    _isInstantiationOf(_hasElement(elementD));
+        _isInstantiationOf(_hasElement(elementD));
     AsserterBuilder<List<Asserter<DartType>>, DartType> assertEOf =
-    _isInstantiationOf(_hasElement(elementE));
+        _isInstantiationOf(_hasElement(elementE));
     AsserterBuilder<List<Asserter<DartType>>, DartType> assertFOf =
-    _isInstantiationOf(_hasElement(elementF));
+        _isInstantiationOf(_hasElement(elementF));
 
     {
       List<Statement> statements =
-      AstFinder.getStatementsInTopLevelFunction(unit, "test0");
+          AstFinder.getStatementsInTopLevelFunction(unit, "test0");
 
       hasType(assertAOf([_isInt, _isString]), rhs(statements[0]));
       hasType(assertAOf([_isInt, _isString]), rhs(statements[0]));
@@ -821,14 +821,14 @@
 
     {
       List<Statement> statements =
-      AstFinder.getStatementsInTopLevelFunction(unit, "test1");
+          AstFinder.getStatementsInTopLevelFunction(unit, "test1");
       hasType(assertAOf([_isInt, _isString]), rhs(statements[0]));
       hasType(assertAOf([_isInt, _isString]), rhs(statements[1]));
     }
 
     {
       List<Statement> statements =
-      AstFinder.getStatementsInTopLevelFunction(unit, "test2");
+          AstFinder.getStatementsInTopLevelFunction(unit, "test2");
       hasType(assertBOf([_isString, _isInt]), rhs(statements[0]));
       hasType(assertBOf([_isString, _isInt]), rhs(statements[1]));
       hasType(assertBOf([_isString, _isInt]), rhs(statements[2]));
@@ -839,14 +839,14 @@
 
     {
       List<Statement> statements =
-      AstFinder.getStatementsInTopLevelFunction(unit, "test3");
+          AstFinder.getStatementsInTopLevelFunction(unit, "test3");
       hasType(assertBOf([_isString, _isInt]), rhs(statements[0]));
       hasType(assertBOf([_isString, _isInt]), rhs(statements[1]));
     }
 
     {
       List<Statement> statements =
-      AstFinder.getStatementsInTopLevelFunction(unit, "test4");
+          AstFinder.getStatementsInTopLevelFunction(unit, "test4");
       hasType(assertCOf([_isInt]), rhs(statements[0]));
       hasType(assertCOf([_isInt]), rhs(statements[1]));
       hasType(assertCOf([_isInt]), rhs(statements[2]));
@@ -857,7 +857,7 @@
 
     {
       List<Statement> statements =
-      AstFinder.getStatementsInTopLevelFunction(unit, "test5");
+          AstFinder.getStatementsInTopLevelFunction(unit, "test5");
       hasType(assertCOf([_isInt]), rhs(statements[0]));
       hasType(assertCOf([_isInt]), rhs(statements[1]));
     }
@@ -867,7 +867,7 @@
       // context.  We could choose a tighter type, but currently
       // we just use dynamic.
       List<Statement> statements =
-      AstFinder.getStatementsInTopLevelFunction(unit, "test6");
+          AstFinder.getStatementsInTopLevelFunction(unit, "test6");
       hasType(assertDOf([_isDynamic, _isString]), rhs(statements[0]));
       hasType(assertDOf([_isDynamic, _isString]), rhs(statements[1]));
       hasType(assertDOf([_isInt, _isString]), rhs(statements[2]));
@@ -878,20 +878,20 @@
 
     {
       List<Statement> statements =
-      AstFinder.getStatementsInTopLevelFunction(unit, "test7");
+          AstFinder.getStatementsInTopLevelFunction(unit, "test7");
       hasType(assertDOf([_isDynamic, _isString]), rhs(statements[0]));
       hasType(assertDOf([_isDynamic, _isString]), rhs(statements[1]));
     }
 
     {
       List<Statement> statements =
-      AstFinder.getStatementsInTopLevelFunction(unit, "test8");
+          AstFinder.getStatementsInTopLevelFunction(unit, "test8");
       hasType(assertEOf([_isDynamic, _isDynamic]), rhs(statements[0]));
     }
 
     {
       List<Statement> statements =
-      AstFinder.getStatementsInTopLevelFunction(unit, "test9");
+          AstFinder.getStatementsInTopLevelFunction(unit, "test9");
       hasType(assertFOf([_isInt, _isString]), rhs(statements[0]));
       hasType(assertFOf([_isInt, _isString]), rhs(statements[1]));
       hasType(assertFOf([_isInt, _isString]), rhs(statements[2]));
@@ -912,7 +912,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     ListLiteral literal(int i) {
       VariableDeclarationStatement stmt = statements[i];
       VariableDeclaration decl = stmt.variables.variables[0];
@@ -944,7 +944,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     DartType literal(int i) {
       VariableDeclarationStatement stmt = statements[i];
       VariableDeclaration decl = stmt.variables.variables[0];
@@ -971,7 +971,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     DartType literal(int i) {
       VariableDeclarationStatement stmt = statements[i];
       VariableDeclaration decl = stmt.variables.variables[0];
@@ -998,7 +998,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     DartType literal(int i) {
       VariableDeclarationStatement stmt = statements[i];
       VariableDeclaration decl = stmt.variables.variables[0];
@@ -1023,7 +1023,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     DartType literal(int i) {
       VariableDeclarationStatement stmt = statements[i];
       VariableDeclaration decl = stmt.variables.variables[0];
@@ -1051,7 +1051,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     MapLiteral literal(int i) {
       VariableDeclarationStatement stmt = statements[i];
       VariableDeclaration decl = stmt.variables.variables[0];
@@ -1061,7 +1061,7 @@
 
     Asserter<InterfaceType> assertListOfString = _isListOf(_isString);
     Asserter<InterfaceType> assertMapOfIntToListOfString =
-    _isMapOf(_isInt, assertListOfString);
+        _isMapOf(_isInt, assertListOfString);
 
     assertMapOfIntToListOfString(literal(0).staticType);
     assertMapOfIntToListOfString(literal(1).staticType);
@@ -1087,7 +1087,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     DartType literal(int i) {
       VariableDeclarationStatement stmt = statements[i];
       VariableDeclaration decl = stmt.variables.variables[0];
@@ -1096,7 +1096,7 @@
     }
 
     Asserter<InterfaceType> assertMapOfIntToString =
-    _isMapOf(_isInt, _isString);
+        _isMapOf(_isInt, _isString);
 
     assertMapOfIntToString(literal(0));
     assertMapOfIntToString(literal(1));
@@ -1115,7 +1115,7 @@
    ''';
     CompilationUnit unit = resolveSource(code);
     List<Statement> statements =
-    AstFinder.getStatementsInTopLevelFunction(unit, "main");
+        AstFinder.getStatementsInTopLevelFunction(unit, "main");
     DartType literal(int i) {
       VariableDeclarationStatement stmt = statements[i];
       VariableDeclaration decl = stmt.variables.variables[0];
@@ -1124,7 +1124,7 @@
     }
 
     Asserter<InterfaceType> assertMapOfIntToDynamic =
-    _isMapOf(_isInt, _isDynamic);
+        _isMapOf(_isInt, _isDynamic);
 
     assertMapOfIntToDynamic(literal(0));
     assertMapOfIntToDynamic(literal(1));
@@ -1142,7 +1142,7 @@
     CompilationUnit unit = resolveSource(code);
     Expression methodReturnValue(String methodName) {
       MethodDeclaration method =
-      AstFinder.getMethodInClass(unit, "A", methodName);
+          AstFinder.getMethodInClass(unit, "A", methodName);
       FunctionBody body = method.body;
       if (body is ExpressionFunctionBody) {
         return body.expression;
@@ -1166,7 +1166,7 @@
     CompilationUnit unit = resolveSource(code);
 
     ConstructorDeclaration constructor =
-    AstFinder.getConstructorInClass(unit, "A", null);
+        AstFinder.getConstructorInClass(unit, "A", null);
     RedirectingConstructorInvocation invocation = constructor.initializers[0];
     Expression exp = invocation.argumentList.arguments[0];
     _isListOf(_isString)(exp.staticType);
@@ -1184,7 +1184,7 @@
     CompilationUnit unit = resolveSource(code);
 
     ConstructorDeclaration constructor =
-    AstFinder.getConstructorInClass(unit, "A", null);
+        AstFinder.getConstructorInClass(unit, "A", null);
     SuperConstructorInvocation invocation = constructor.initializers[0];
     Expression exp = invocation.argumentList.arguments[0];
     _isListOf(_isString)(exp.staticType);
@@ -1389,7 +1389,7 @@
 
     checkBody(String className) {
       List<Statement> statements =
-      AstFinder.getStatementsInMethod(testUnit, className, "g");
+          AstFinder.getStatementsInMethod(testUnit, className, "g");
 
       for (int i = 1; i <= 5; i++) {
         Expression exp = (statements[i] as ExpressionStatement).expression;
@@ -1725,7 +1725,7 @@
     expectFunctionType('f/*<T>*/(/*=T*/ x) => null; // from D', '<T>(T) → T',
         elementTypeParams: '[T]', typeFormals: '[T]');
     SimpleIdentifier f =
-    findIdentifier('f/*<T>*/(/*=T*/ x) => null; // from D');
+        findIdentifier('f/*<T>*/(/*=T*/ x) => null; // from D');
     MethodElementImpl e = f.staticElement;
     FunctionType ft = e.type.instantiate([typeProvider.stringType]);
     expect(ft.toString(), '(String) → String');
@@ -1967,10 +1967,7 @@
 set g(int x) => 42;
 ''');
     computeLibrarySourceErrors(source);
-    assertErrors(source, [
-      StaticTypeWarningCode.RETURN_OF_INVALID_TYPE,
-      StaticTypeWarningCode.RETURN_OF_INVALID_TYPE
-    ]);
+    assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE,]);
     verify([source]);
   }
 
diff --git a/pkg/analyzer/test/generated/test_support.dart b/pkg/analyzer/test/generated/test_support.dart
index 803ff8c..1168c8b 100644
--- a/pkg/analyzer/test/generated/test_support.dart
+++ b/pkg/analyzer/test/generated/test_support.dart
@@ -624,10 +624,6 @@
     throw new UnsupportedOperationException();
   }
 
-  Uri resolveRelativeUri(Uri uri) {
-    return new Uri(scheme: 'file', path: _name).resolveUri(uri);
-  }
-
   void setContents(String value) {
     generateExceptionOnRead = false;
     _modificationStamp = new DateTime.now().millisecondsSinceEpoch;
@@ -663,8 +659,4 @@
     }
     return false;
   }
-
-  Uri resolveRelativeUri(Uri uri) {
-    return this.uri.resolveUri(uri);
-  }
 }
diff --git a/pkg/analyzer/test/generated/type_system_test.dart b/pkg/analyzer/test/generated/type_system_test.dart
index fe69d2c..c164540 100644
--- a/pkg/analyzer/test/generated/type_system_test.dart
+++ b/pkg/analyzer/test/generated/type_system_test.dart
@@ -10,6 +10,7 @@
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/element/type.dart';
+import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/resolver.dart';
 import 'package:analyzer/src/generated/testing/element_factory.dart';
 import 'package:analyzer/src/generated/testing/test_type_provider.dart';
@@ -17,6 +18,7 @@
 
 import '../reflective_tests.dart';
 import '../utils.dart';
+import 'analysis_context_factory.dart';
 
 main() {
   initializeTestEnvironment();
@@ -24,6 +26,526 @@
   runReflectiveTests(StrongSubtypingTest);
   runReflectiveTests(StrongGenericFunctionInferenceTest);
   runReflectiveTests(LeastUpperBoundTest);
+  runReflectiveTests(StrongLeastUpperBoundTest);
+  runReflectiveTests(StrongGreatestLowerBoundTest);
+}
+
+/**
+ * Base class for testing LUB and GLB in spec and strong mode.
+ */
+abstract class BoundTestBase {
+  TypeProvider typeProvider;
+  TypeSystem typeSystem;
+  FunctionType simpleFunctionType;
+
+  DartType get bottomType => typeProvider.bottomType;
+  InterfaceType get doubleType => typeProvider.doubleType;
+  DartType get dynamicType => typeProvider.dynamicType;
+  InterfaceType get functionType => typeProvider.functionType;
+  InterfaceType get intType => typeProvider.intType;
+  InterfaceType get iterableType => typeProvider.iterableType;
+  InterfaceType get listType => typeProvider.listType;
+  InterfaceType get numType => typeProvider.numType;
+  InterfaceType get objectType => typeProvider.objectType;
+  InterfaceType get stringType => typeProvider.stringType;
+  StrongTypeSystemImpl get strongTypeSystem =>
+      typeSystem as StrongTypeSystemImpl;
+
+  DartType get voidType => VoidTypeImpl.instance;
+
+  void setUp() {
+    InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
+    typeProvider = context.typeProvider;
+    FunctionTypeAliasElementImpl typeAlias =
+        ElementFactory.functionTypeAliasElement('A');
+    typeAlias.parameters = [];
+    typeAlias.returnType = voidType;
+    simpleFunctionType = typeAlias.type;
+  }
+
+  void _checkGreatestLowerBound(
+      DartType type1, DartType type2, DartType expectedResult) {
+    DartType glb =
+        strongTypeSystem.getGreatestLowerBound(typeProvider, type1, type2);
+    expect(glb, expectedResult);
+    // Check that the result is a lower bound.
+    expect(typeSystem.isSubtypeOf(glb, type1), true);
+    expect(typeSystem.isSubtypeOf(glb, type2), true);
+    // Check for symmetry while we're at it.  Unfortunately,
+    // for function types, the current version of equality
+    // does not respect re-ordering of named parameters, so
+    // for function types we just check if they are mutual subtypes.
+    // https://github.com/dart-lang/sdk/issues/26126
+    // TODO(leafp): Fix this.
+    glb = strongTypeSystem.getGreatestLowerBound(typeProvider, type2, type1);
+    if (glb is FunctionTypeImpl) {
+      expect(typeSystem.isSubtypeOf(glb, expectedResult), true);
+      expect(typeSystem.isSubtypeOf(expectedResult, glb), true);
+    } else {
+      expect(glb, expectedResult);
+    }
+  }
+
+  void _checkLeastUpperBound(
+      DartType type1, DartType type2, DartType expectedResult) {
+    DartType lub = typeSystem.getLeastUpperBound(typeProvider, type1, type2);
+    expect(lub, expectedResult);
+    // Check that the result is an upper bound.
+    expect(typeSystem.isSubtypeOf(type1, lub), true);
+    expect(typeSystem.isSubtypeOf(type2, lub), true);
+
+    // Check for symmetry while we're at it.  Unfortunately,
+    // for function types, the current version of equality
+    // does not respect re-ordering of named parameters, so
+    // for function types we just check if they are mutual subtypes.
+    // https://github.com/dart-lang/sdk/issues/26126
+    // TODO(leafp): Fix this.
+    lub = typeSystem.getLeastUpperBound(typeProvider, type2, type1);
+    if (lub is FunctionTypeImpl) {
+      expect(typeSystem.isSubtypeOf(lub, expectedResult), true);
+      expect(typeSystem.isSubtypeOf(expectedResult, lub), true);
+    } else {
+      expect(lub, expectedResult);
+    }
+  }
+
+  /**
+   * Creates a function type with the given parameter and return types.
+   *
+   * The return type defaults to `void` if omitted.
+   */
+  FunctionType _functionType(List<DartType> required,
+      {List<DartType> optional,
+      Map<String, DartType> named,
+      DartType returns}) {
+    if (returns == null) {
+      returns = voidType;
+    }
+
+    return ElementFactory
+        .functionElement8(required, returns, optional: optional, named: named)
+        .type;
+  }
+}
+
+/**
+ * Tests LUB in spec mode.
+ *
+ * Tests defined in this class are ones whose behavior is spec mode-specific.
+ * In particular, function parameters are compared using LUB in spec mode, but
+ * GLB in strong mode.
+ */
+@reflectiveTest
+class LeastUpperBoundTest extends LeastUpperBoundTestBase {
+  void setUp() {
+    typeSystem = new TypeSystemImpl();
+    super.setUp();
+  }
+
+  void test_functionsLubNamedParams() {
+    FunctionType type1 =
+        _functionType([], named: {'a': stringType, 'b': intType});
+    FunctionType type2 = _functionType([], named: {'a': intType, 'b': numType});
+    FunctionType expected =
+        _functionType([], named: {'a': objectType, 'b': numType});
+    _checkLeastUpperBound(type1, type2, expected);
+  }
+
+  void test_functionsLubPositionalParams() {
+    FunctionType type1 = _functionType([], optional: [stringType, intType]);
+    FunctionType type2 = _functionType([], optional: [intType, numType]);
+    FunctionType expected = _functionType([], optional: [objectType, numType]);
+    _checkLeastUpperBound(type1, type2, expected);
+  }
+
+  void test_functionsLubRequiredParams() {
+    FunctionType type1 = _functionType([stringType, intType, intType]);
+    FunctionType type2 = _functionType([intType, doubleType, numType]);
+    FunctionType expected = _functionType([objectType, numType, numType]);
+    _checkLeastUpperBound(type1, type2, expected);
+  }
+
+  void test_nestedNestedFunctionsLubInnermostParamTypes() {
+    FunctionType type1 = _functionType([
+      _functionType([
+        _functionType([stringType, intType, intType])
+      ])
+    ]);
+    FunctionType type2 = _functionType([
+      _functionType([
+        _functionType([intType, doubleType, numType])
+      ])
+    ]);
+    FunctionType expected = _functionType([
+      _functionType([
+        _functionType([objectType, numType, numType])
+      ])
+    ]);
+    _checkLeastUpperBound(type1, type2, expected);
+  }
+
+  /// Check least upper bound of the same class with different type parameters.
+  void test_typeParameters_different() {
+    // class List<int>
+    // class List<double>
+    InterfaceType listOfIntType = listType.instantiate(<DartType>[intType]);
+    InterfaceType listOfDoubleType =
+        listType.instantiate(<DartType>[doubleType]);
+    _checkLeastUpperBound(listOfIntType, listOfDoubleType, objectType);
+  }
+
+  /// Check least upper bound of two related classes with different
+  /// type parameters.
+  void test_typeParametersAndClass_different() {
+    // class List<int>
+    // class Iterable<double>
+    InterfaceType listOfIntType = listType.instantiate(<DartType>[intType]);
+    InterfaceType iterableOfDoubleType =
+        iterableType.instantiate(<DartType>[doubleType]);
+    _checkLeastUpperBound(listOfIntType, iterableOfDoubleType, objectType);
+  }
+}
+
+/**
+ * Base class for testing LUB in spec and strong mode.
+ * Defines helper functions and tests. Tests here are ones whose behavior is
+ * the same in strong and spec mode.
+ */
+abstract class LeastUpperBoundTestBase extends BoundTestBase {
+  void test_bottom_function() {
+    _checkLeastUpperBound(bottomType, simpleFunctionType, simpleFunctionType);
+  }
+
+  void test_bottom_interface() {
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+    _checkLeastUpperBound(bottomType, interfaceType, interfaceType);
+  }
+
+  void test_bottom_typeParam() {
+    DartType typeParam = ElementFactory.typeParameterElement('T').type;
+    _checkLeastUpperBound(bottomType, typeParam, typeParam);
+  }
+
+  void test_directInterfaceCase() {
+    // class A
+    // class B implements A
+    // class C implements B
+    ClassElementImpl classA = ElementFactory.classElement2("A");
+    ClassElementImpl classB = ElementFactory.classElement2("B");
+    ClassElementImpl classC = ElementFactory.classElement2("C");
+    InterfaceType typeA = classA.type;
+    InterfaceType typeB = classB.type;
+    InterfaceType typeC = classC.type;
+    classB.interfaces = <InterfaceType>[typeA];
+    classC.interfaces = <InterfaceType>[typeB];
+    _checkLeastUpperBound(typeB, typeC, typeB);
+  }
+
+  void test_directSubclassCase() {
+    // class A
+    // class B extends A
+    // class C extends B
+    ClassElementImpl classA = ElementFactory.classElement2("A");
+    ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
+    ClassElementImpl classC = ElementFactory.classElement("C", classB.type);
+    InterfaceType typeB = classB.type;
+    InterfaceType typeC = classC.type;
+    _checkLeastUpperBound(typeB, typeC, typeB);
+  }
+
+  void test_dynamic_bottom() {
+    _checkLeastUpperBound(dynamicType, bottomType, dynamicType);
+  }
+
+  void test_dynamic_function() {
+    _checkLeastUpperBound(dynamicType, simpleFunctionType, dynamicType);
+  }
+
+  void test_dynamic_interface() {
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+    _checkLeastUpperBound(dynamicType, interfaceType, dynamicType);
+  }
+
+  void test_dynamic_typeParam() {
+    DartType typeParam = ElementFactory.typeParameterElement('T').type;
+    _checkLeastUpperBound(dynamicType, typeParam, dynamicType);
+  }
+
+  void test_dynamic_void() {
+    _checkLeastUpperBound(dynamicType, voidType, dynamicType);
+  }
+
+  void test_functionsDifferentRequiredArity() {
+    FunctionType type1 = _functionType([intType, intType]);
+    FunctionType type2 = _functionType([intType, intType, intType]);
+    _checkLeastUpperBound(type1, type2, functionType);
+  }
+
+  void test_functionsIgnoreExtraNamedParams() {
+    FunctionType type1 = _functionType([], named: {'a': intType, 'b': intType});
+    FunctionType type2 = _functionType([], named: {'a': intType, 'c': intType});
+    FunctionType expected = _functionType([], named: {'a': intType});
+    _checkLeastUpperBound(type1, type2, expected);
+  }
+
+  void test_functionsIgnoreExtraPositionalParams() {
+    FunctionType type1 =
+        _functionType([], optional: [intType, intType, stringType]);
+    FunctionType type2 = _functionType([], optional: [intType]);
+    FunctionType expected = _functionType([], optional: [intType]);
+    _checkLeastUpperBound(type1, type2, expected);
+  }
+
+  void test_functionsLubReturnType() {
+    FunctionType type1 = _functionType([], returns: intType);
+    FunctionType type2 = _functionType([], returns: doubleType);
+    FunctionType expected = _functionType([], returns: numType);
+    _checkLeastUpperBound(type1, type2, expected);
+  }
+
+  void test_functionsSameType() {
+    FunctionType type1 = _functionType([stringType, intType, numType],
+        optional: [doubleType], named: {'n': numType}, returns: intType);
+    FunctionType type2 = _functionType([stringType, intType, numType],
+        optional: [doubleType], named: {'n': numType}, returns: intType);
+    FunctionType expected = _functionType([stringType, intType, numType],
+        optional: [doubleType], named: {'n': numType}, returns: intType);
+    _checkLeastUpperBound(type1, type2, expected);
+  }
+
+  void test_interface_function() {
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+    _checkLeastUpperBound(interfaceType, simpleFunctionType, objectType);
+  }
+
+  void test_mixinCase() {
+    // class A
+    // class B extends A
+    // class C extends A
+    // class D extends B with M, N, O, P
+    ClassElement classA = ElementFactory.classElement2("A");
+    ClassElement classB = ElementFactory.classElement("B", classA.type);
+    ClassElement classC = ElementFactory.classElement("C", classA.type);
+    ClassElementImpl classD = ElementFactory.classElement("D", classB.type);
+    InterfaceType typeA = classA.type;
+    InterfaceType typeC = classC.type;
+    InterfaceType typeD = classD.type;
+    classD.mixins = <InterfaceType>[
+      ElementFactory.classElement2("M").type,
+      ElementFactory.classElement2("N").type,
+      ElementFactory.classElement2("O").type,
+      ElementFactory.classElement2("P").type
+    ];
+    _checkLeastUpperBound(typeD, typeC, typeA);
+  }
+
+  void test_nestedFunctionsLubInnerParamTypes() {
+    FunctionType type1 = _functionType([
+      _functionType([stringType, intType, intType])
+    ]);
+    FunctionType type2 = _functionType([
+      _functionType([intType, doubleType, numType])
+    ]);
+    FunctionType expected = _functionType([
+      _functionType([objectType, numType, numType])
+    ]);
+    _checkLeastUpperBound(type1, type2, expected);
+  }
+
+  void test_object() {
+    ClassElementImpl classA = ElementFactory.classElement2("A");
+    ClassElementImpl classB = ElementFactory.classElement2("B");
+    InterfaceType typeA = classA.type;
+    InterfaceType typeB = classB.type;
+    DartType typeObject = typeA.element.supertype;
+    // assert that object does not have a super type
+    expect((typeObject.element as ClassElement).supertype, isNull);
+    // assert that both A and B have the same super type of Object
+    expect(typeB.element.supertype, typeObject);
+    // finally, assert that the only least upper bound of A and B is Object
+    _checkLeastUpperBound(typeA, typeB, typeObject);
+  }
+
+  void test_self() {
+    DartType typeParam = ElementFactory.typeParameterElement('T').type;
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+
+    List<DartType> types = [
+      dynamicType,
+      voidType,
+      bottomType,
+      typeParam,
+      interfaceType,
+      simpleFunctionType
+    ];
+
+    for (DartType type in types) {
+      _checkLeastUpperBound(type, type, type);
+    }
+  }
+
+  void test_sharedSuperclass1() {
+    ClassElementImpl classA = ElementFactory.classElement2("A");
+    ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
+    ClassElementImpl classC = ElementFactory.classElement("C", classA.type);
+    InterfaceType typeA = classA.type;
+    InterfaceType typeB = classB.type;
+    InterfaceType typeC = classC.type;
+    _checkLeastUpperBound(typeB, typeC, typeA);
+  }
+
+  void test_sharedSuperclass2() {
+    ClassElementImpl classA = ElementFactory.classElement2("A");
+    ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
+    ClassElementImpl classC = ElementFactory.classElement("C", classA.type);
+    ClassElementImpl classD = ElementFactory.classElement("D", classC.type);
+    InterfaceType typeA = classA.type;
+    InterfaceType typeB = classB.type;
+    InterfaceType typeD = classD.type;
+    _checkLeastUpperBound(typeB, typeD, typeA);
+  }
+
+  void test_sharedSuperclass3() {
+    ClassElementImpl classA = ElementFactory.classElement2("A");
+    ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
+    ClassElementImpl classC = ElementFactory.classElement("C", classB.type);
+    ClassElementImpl classD = ElementFactory.classElement("D", classB.type);
+    InterfaceType typeB = classB.type;
+    InterfaceType typeC = classC.type;
+    InterfaceType typeD = classD.type;
+    _checkLeastUpperBound(typeC, typeD, typeB);
+  }
+
+  void test_sharedSuperclass4() {
+    ClassElement classA = ElementFactory.classElement2("A");
+    ClassElement classA2 = ElementFactory.classElement2("A2");
+    ClassElement classA3 = ElementFactory.classElement2("A3");
+    ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
+    ClassElementImpl classC = ElementFactory.classElement("C", classA.type);
+    InterfaceType typeA = classA.type;
+    InterfaceType typeA2 = classA2.type;
+    InterfaceType typeA3 = classA3.type;
+    InterfaceType typeB = classB.type;
+    InterfaceType typeC = classC.type;
+    classB.interfaces = <InterfaceType>[typeA2];
+    classC.interfaces = <InterfaceType>[typeA3];
+    _checkLeastUpperBound(typeB, typeC, typeA);
+  }
+
+  void test_sharedSuperinterface1() {
+    ClassElementImpl classA = ElementFactory.classElement2("A");
+    ClassElementImpl classB = ElementFactory.classElement2("B");
+    ClassElementImpl classC = ElementFactory.classElement2("C");
+    InterfaceType typeA = classA.type;
+    InterfaceType typeB = classB.type;
+    InterfaceType typeC = classC.type;
+    classB.interfaces = <InterfaceType>[typeA];
+    classC.interfaces = <InterfaceType>[typeA];
+    _checkLeastUpperBound(typeB, typeC, typeA);
+  }
+
+  void test_sharedSuperinterface2() {
+    ClassElementImpl classA = ElementFactory.classElement2("A");
+    ClassElementImpl classB = ElementFactory.classElement2("B");
+    ClassElementImpl classC = ElementFactory.classElement2("C");
+    ClassElementImpl classD = ElementFactory.classElement2("D");
+    InterfaceType typeA = classA.type;
+    InterfaceType typeB = classB.type;
+    InterfaceType typeC = classC.type;
+    InterfaceType typeD = classD.type;
+    classB.interfaces = <InterfaceType>[typeA];
+    classC.interfaces = <InterfaceType>[typeA];
+    classD.interfaces = <InterfaceType>[typeC];
+    _checkLeastUpperBound(typeB, typeD, typeA);
+  }
+
+  void test_sharedSuperinterface3() {
+    ClassElementImpl classA = ElementFactory.classElement2("A");
+    ClassElementImpl classB = ElementFactory.classElement2("B");
+    ClassElementImpl classC = ElementFactory.classElement2("C");
+    ClassElementImpl classD = ElementFactory.classElement2("D");
+    InterfaceType typeA = classA.type;
+    InterfaceType typeB = classB.type;
+    InterfaceType typeC = classC.type;
+    InterfaceType typeD = classD.type;
+    classB.interfaces = <InterfaceType>[typeA];
+    classC.interfaces = <InterfaceType>[typeB];
+    classD.interfaces = <InterfaceType>[typeB];
+    _checkLeastUpperBound(typeC, typeD, typeB);
+  }
+
+  void test_sharedSuperinterface4() {
+    ClassElement classA = ElementFactory.classElement2("A");
+    ClassElement classA2 = ElementFactory.classElement2("A2");
+    ClassElement classA3 = ElementFactory.classElement2("A3");
+    ClassElementImpl classB = ElementFactory.classElement2("B");
+    ClassElementImpl classC = ElementFactory.classElement2("C");
+    InterfaceType typeA = classA.type;
+    InterfaceType typeA2 = classA2.type;
+    InterfaceType typeA3 = classA3.type;
+    InterfaceType typeB = classB.type;
+    InterfaceType typeC = classC.type;
+    classB.interfaces = <InterfaceType>[typeA, typeA2];
+    classC.interfaces = <InterfaceType>[typeA, typeA3];
+    _checkLeastUpperBound(typeB, typeC, typeA);
+  }
+
+  void test_twoComparables() {
+    _checkLeastUpperBound(stringType, numType, objectType);
+  }
+
+  void test_typeParam_function_bounded() {
+    DartType typeA = ElementFactory.classElement('A', functionType).type;
+    TypeParameterElementImpl typeParamElement =
+        ElementFactory.typeParameterElement('T');
+    typeParamElement.bound = typeA;
+    DartType typeParam = typeParamElement.type;
+    _checkLeastUpperBound(typeParam, simpleFunctionType, functionType);
+  }
+
+  void test_typeParam_function_noBound() {
+    DartType typeParam = ElementFactory.typeParameterElement('T').type;
+    _checkLeastUpperBound(typeParam, simpleFunctionType, objectType);
+  }
+
+  void test_typeParam_interface_bounded() {
+    DartType typeA = ElementFactory.classElement2('A', []).type;
+    DartType typeB = ElementFactory.classElement('B', typeA).type;
+    DartType typeC = ElementFactory.classElement('C', typeA).type;
+    TypeParameterElementImpl typeParamElement =
+        ElementFactory.typeParameterElement('T');
+    typeParamElement.bound = typeB;
+    DartType typeParam = typeParamElement.type;
+    _checkLeastUpperBound(typeParam, typeC, typeA);
+  }
+
+  void test_typeParam_interface_noBound() {
+    DartType typeParam = ElementFactory.typeParameterElement('T').type;
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+    _checkLeastUpperBound(typeParam, interfaceType, objectType);
+  }
+
+  void test_typeParameters_same() {
+    // List<int>
+    // List<int>
+    InterfaceType listOfIntType = listType.instantiate(<DartType>[intType]);
+    _checkLeastUpperBound(listOfIntType, listOfIntType, listOfIntType);
+  }
+
+  void test_void() {
+    List<DartType> types = [
+      bottomType,
+      simpleFunctionType,
+      ElementFactory.classElement2('A', []).type,
+      ElementFactory.typeParameterElement('T').type
+    ];
+    for (DartType type in types) {
+      _checkLeastUpperBound(
+          _functionType([], returns: voidType),
+          _functionType([], returns: type),
+          _functionType([], returns: voidType));
+    }
+  }
 }
 
 @reflectiveTest
@@ -527,6 +1049,359 @@
   }
 }
 
+/**
+ * Tests GLB, which only exists in strong mode.
+ */
+@reflectiveTest
+class StrongGreatestLowerBoundTest extends BoundTestBase {
+  void setUp() {
+    typeSystem = new StrongTypeSystemImpl();
+    super.setUp();
+  }
+
+  void test_bottom_function() {
+    _checkGreatestLowerBound(bottomType, simpleFunctionType, bottomType);
+  }
+
+  void test_bottom_interface() {
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+    _checkGreatestLowerBound(bottomType, interfaceType, bottomType);
+  }
+
+  void test_bottom_typeParam() {
+    DartType typeParam = ElementFactory.typeParameterElement('T').type;
+    _checkGreatestLowerBound(bottomType, typeParam, bottomType);
+  }
+
+  void test_classAndSuperclass() {
+    // class A
+    // class B extends A
+    // class C extends B
+    ClassElementImpl classA = ElementFactory.classElement2("A");
+    ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
+    ClassElementImpl classC = ElementFactory.classElement("C", classB.type);
+    _checkGreatestLowerBound(classA.type, classC.type, classC.type);
+  }
+
+  void test_classAndSuperinterface() {
+    // class A
+    // class B implements A
+    // class C implements B
+    ClassElementImpl classA = ElementFactory.classElement2("A");
+    ClassElementImpl classB = ElementFactory.classElement2("B");
+    ClassElementImpl classC = ElementFactory.classElement2("C");
+    classB.interfaces = <InterfaceType>[classA.type];
+    classC.interfaces = <InterfaceType>[classB.type];
+    _checkGreatestLowerBound(classA.type, classC.type, classC.type);
+  }
+
+  void test_dynamic_bottom() {
+    _checkGreatestLowerBound(dynamicType, bottomType, bottomType);
+  }
+
+  void test_dynamic_function() {
+    _checkGreatestLowerBound(
+        dynamicType, simpleFunctionType, simpleFunctionType);
+  }
+
+  void test_dynamic_interface() {
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+    _checkGreatestLowerBound(dynamicType, interfaceType, interfaceType);
+  }
+
+  void test_dynamic_typeParam() {
+    DartType typeParam = ElementFactory.typeParameterElement('T').type;
+    _checkGreatestLowerBound(dynamicType, typeParam, typeParam);
+  }
+
+  void test_dynamic_void() {
+    _checkGreatestLowerBound(dynamicType, voidType, voidType);
+  }
+
+  void test_functionsDifferentNamedTakeUnion() {
+    FunctionType type1 = _functionType([], named: {'a': intType, 'b': intType});
+    FunctionType type2 =
+        _functionType([], named: {'b': doubleType, 'c': stringType});
+    FunctionType expected =
+        _functionType([], named: {'a': intType, 'b': numType, 'c': stringType});
+    _checkGreatestLowerBound(type1, type2, expected);
+  }
+
+  void test_functionsDifferentOptionalArityTakeMax() {
+    FunctionType type1 = _functionType([], optional: [intType]);
+    FunctionType type2 =
+        _functionType([], optional: [doubleType, stringType, objectType]);
+    FunctionType expected =
+        _functionType([], optional: [numType, stringType, objectType]);
+    _checkGreatestLowerBound(type1, type2, expected);
+  }
+
+  void test_functionsDifferentRequiredArityBecomeOptional() {
+    FunctionType type1 = _functionType([intType]);
+    FunctionType type2 = _functionType([intType, intType, intType]);
+    FunctionType expected =
+        _functionType([intType], optional: [intType, intType]);
+    _checkGreatestLowerBound(type1, type2, expected);
+  }
+
+  void test_functionsGlbReturnType() {
+    FunctionType type1 = _functionType([], returns: intType);
+    FunctionType type2 = _functionType([], returns: numType);
+    FunctionType expected = _functionType([], returns: intType);
+    _checkGreatestLowerBound(type1, type2, expected);
+  }
+
+  void test_functionsLubNamedParams() {
+    FunctionType type1 =
+        _functionType([], named: {'a': stringType, 'b': intType});
+    FunctionType type2 = _functionType([], named: {'a': intType, 'b': numType});
+    FunctionType expected =
+        _functionType([], named: {'a': objectType, 'b': numType});
+    _checkGreatestLowerBound(type1, type2, expected);
+  }
+
+  void test_functionsLubPositionalParams() {
+    FunctionType type1 = _functionType([], optional: [stringType, intType]);
+    FunctionType type2 = _functionType([], optional: [intType, numType]);
+    FunctionType expected = _functionType([], optional: [objectType, numType]);
+    _checkGreatestLowerBound(type1, type2, expected);
+  }
+
+  void test_functionsLubRequiredParams() {
+    FunctionType type1 = _functionType([stringType, intType, intType]);
+    FunctionType type2 = _functionType([intType, doubleType, numType]);
+    FunctionType expected = _functionType([objectType, numType, numType]);
+    _checkGreatestLowerBound(type1, type2, expected);
+  }
+
+  void test_functionsMixedOptionalAndRequiredBecomeOptional() {
+    FunctionType type1 = _functionType([intType, intType],
+        optional: [intType, intType, intType]);
+    FunctionType type2 = _functionType([intType], optional: [intType, intType]);
+    FunctionType expected = _functionType([intType],
+        optional: [intType, intType, intType, intType]);
+    _checkGreatestLowerBound(type1, type2, expected);
+  }
+
+  void test_functionsReturnBottomIfMixOptionalAndNamed() {
+    // Dart doesn't allow a function to have both optional and named parameters,
+    // so if we would have synthethized that, pick bottom instead.
+    FunctionType type1 = _functionType([intType], named: {'a': intType});
+    FunctionType type2 = _functionType([], named: {'a': intType});
+    _checkGreatestLowerBound(type1, type2, bottomType);
+  }
+
+  void test_functionsSameType() {
+    FunctionType type1 = _functionType([stringType, intType, numType],
+        optional: [doubleType], named: {'n': numType}, returns: intType);
+    FunctionType type2 = _functionType([stringType, intType, numType],
+        optional: [doubleType], named: {'n': numType}, returns: intType);
+    FunctionType expected = _functionType([stringType, intType, numType],
+        optional: [doubleType], named: {'n': numType}, returns: intType);
+    _checkGreatestLowerBound(type1, type2, expected);
+  }
+
+  void test_interface_function() {
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+    _checkGreatestLowerBound(interfaceType, simpleFunctionType, bottomType);
+  }
+
+  void test_mixin() {
+    // class A
+    // class B
+    // class C
+    // class D extends A with B, C
+    ClassElement classA = ElementFactory.classElement2("A");
+    ClassElement classB = ElementFactory.classElement2("B");
+    ClassElement classC = ElementFactory.classElement2("C");
+    ClassElementImpl classD = ElementFactory.classElement("D", classA.type);
+    classD.mixins = <InterfaceType>[classB.type, classC.type];
+    _checkGreatestLowerBound(classA.type, classD.type, classD.type);
+    _checkGreatestLowerBound(classB.type, classD.type, classD.type);
+    _checkGreatestLowerBound(classC.type, classD.type, classD.type);
+  }
+
+  void test_self() {
+    DartType typeParam = ElementFactory.typeParameterElement('T').type;
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+
+    List<DartType> types = [
+      dynamicType,
+      voidType,
+      bottomType,
+      typeParam,
+      interfaceType,
+      simpleFunctionType
+    ];
+
+    for (DartType type in types) {
+      _checkGreatestLowerBound(type, type, type);
+    }
+  }
+
+  void test_typeParam_function_noBound() {
+    DartType typeParam = ElementFactory.typeParameterElement('T').type;
+    _checkGreatestLowerBound(typeParam, simpleFunctionType, bottomType);
+  }
+
+  void test_typeParam_interface_bounded() {
+    DartType typeA = ElementFactory.classElement2('A', []).type;
+    DartType typeB = ElementFactory.classElement('B', typeA).type;
+    DartType typeC = ElementFactory.classElement('C', typeB).type;
+    TypeParameterElementImpl typeParam =
+        ElementFactory.typeParameterElement('T');
+    typeParam.bound = typeB;
+    _checkGreatestLowerBound(typeParam.type, typeC, bottomType);
+  }
+
+  void test_typeParam_interface_noBound() {
+    // GLB(T, A) = ⊥
+    DartType typeParam = ElementFactory.typeParameterElement('T').type;
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+    _checkGreatestLowerBound(typeParam, interfaceType, bottomType);
+  }
+
+  void test_typeParameters_different() {
+    // GLB(List<int>, List<double>) = ⊥
+    InterfaceType listOfIntType = listType.instantiate(<DartType>[intType]);
+    InterfaceType listOfDoubleType =
+        listType.instantiate(<DartType>[doubleType]);
+    // TODO(rnystrom): Can we do something better here?
+    _checkGreatestLowerBound(listOfIntType, listOfDoubleType, bottomType);
+  }
+
+  void test_typeParameters_same() {
+    // GLB(List<int>, List<int>) = List<int>
+    InterfaceType listOfIntType = listType.instantiate(<DartType>[intType]);
+    _checkGreatestLowerBound(listOfIntType, listOfIntType, listOfIntType);
+  }
+
+  void test_unrelatedClasses() {
+    // class A
+    // class B
+    // class C
+    ClassElementImpl classA = ElementFactory.classElement2("A");
+    ClassElementImpl classB = ElementFactory.classElement2("B");
+    _checkGreatestLowerBound(classA.type, classB.type, bottomType);
+  }
+
+  void test_void() {
+    List<DartType> types = [
+      bottomType,
+      simpleFunctionType,
+      ElementFactory.classElement2('A', []).type,
+      ElementFactory.typeParameterElement('T').type
+    ];
+    for (DartType type in types) {
+      _checkGreatestLowerBound(_functionType([], returns: voidType),
+          _functionType([], returns: type), _functionType([], returns: type));
+    }
+  }
+}
+
+/**
+ * Tests LUB in strong mode.
+ *
+ * Tests defined in this class are ones whose behavior is spec mode-specific.
+ * In particular, function parameters are compared using LUB in spec mode, but
+ * GLB in strong mode.
+ */
+@reflectiveTest
+class StrongLeastUpperBoundTest extends LeastUpperBoundTestBase {
+  void setUp() {
+    typeSystem = new StrongTypeSystemImpl();
+    super.setUp();
+  }
+
+  void test_functionsGlbNamedParams() {
+    FunctionType type1 =
+        _functionType([], named: {'a': stringType, 'b': intType});
+    FunctionType type2 = _functionType([], named: {'a': intType, 'b': numType});
+    FunctionType expected =
+        _functionType([], named: {'a': bottomType, 'b': intType});
+    _checkLeastUpperBound(type1, type2, expected);
+  }
+
+  void test_functionsGlbPositionalParams() {
+    FunctionType type1 = _functionType([], optional: [stringType, intType]);
+    FunctionType type2 = _functionType([], optional: [intType, numType]);
+    FunctionType expected = _functionType([], optional: [bottomType, intType]);
+    _checkLeastUpperBound(type1, type2, expected);
+  }
+
+  void test_functionsGlbRequiredParams() {
+    FunctionType type1 = _functionType([stringType, intType, intType]);
+    FunctionType type2 = _functionType([intType, doubleType, numType]);
+    FunctionType expected = _functionType([bottomType, bottomType, intType]);
+    _checkLeastUpperBound(type1, type2, expected);
+  }
+
+  void test_nestedNestedFunctionsGlbInnermostParamTypes() {
+    FunctionType type1 = _functionType([
+      _functionType([
+        _functionType([stringType, intType, intType])
+      ])
+    ]);
+    FunctionType type2 = _functionType([
+      _functionType([
+        _functionType([intType, doubleType, numType])
+      ])
+    ]);
+    FunctionType expected = _functionType([
+      _functionType([
+        _functionType([bottomType, bottomType, intType])
+      ])
+    ]);
+    _checkLeastUpperBound(type1, type2, expected);
+  }
+
+  void test_typeParam_boundedByParam() {
+    TypeParameterElementImpl typeParamElementT =
+        ElementFactory.typeParameterElement('T');
+    TypeParameterElementImpl typeParamElementS =
+        ElementFactory.typeParameterElement('S');
+    DartType typeParamT = typeParamElementT.type;
+    DartType typeParamS = typeParamElementS.type;
+    typeParamElementT.bound = typeParamS;
+    _checkLeastUpperBound(typeParamT, typeParamS, typeParamS);
+  }
+
+  void test_typeParam_fBounded() {
+    ClassElementImpl AClass = ElementFactory.classElement2('A', ["Q"]);
+    InterfaceType AType = AClass.type;
+
+    DartType s = TypeBuilder.variable("S");
+    (s.element as TypeParameterElementImpl).bound = AType.instantiate([s]);
+    DartType u = TypeBuilder.variable("U");
+    (u.element as TypeParameterElementImpl).bound = AType.instantiate([u]);
+
+    _checkLeastUpperBound(s, u, AType.instantiate([objectType]));
+  }
+
+  /// Check least upper bound of the same class with different type parameters.
+  void test_typeParameters_different() {
+    // class List<int>
+    // class List<double>
+    InterfaceType listOfIntType = listType.instantiate(<DartType>[intType]);
+    InterfaceType listOfDoubleType =
+        listType.instantiate(<DartType>[doubleType]);
+    InterfaceType listOfNum = listType.instantiate(<DartType>[numType]);
+    _checkLeastUpperBound(listOfIntType, listOfDoubleType, listOfNum);
+  }
+
+  /// Check least upper bound of two related classes with different
+  /// type parameters.
+  void test_typeParametersAndClass_different() {
+    // class List<int>
+    // class Iterable<double>
+    InterfaceType listOfIntType = listType.instantiate(<DartType>[intType]);
+    InterfaceType iterableOfDoubleType =
+        iterableType.instantiate(<DartType>[doubleType]);
+    // TODO(leafp): this should be iterableOfNumType
+    _checkLeastUpperBound(listOfIntType, iterableOfDoubleType, objectType);
+  }
+}
+
 @reflectiveTest
 class StrongSubtypingTest {
   TypeProvider typeProvider;
@@ -923,428 +1798,3 @@
   static TypeParameterType variable(String name, {DartType bound}) =>
       ElementFactory.typeParameterWithType(name, bound).type;
 }
-
-@reflectiveTest
-class LeastUpperBoundTest {
-  TypeProvider typeProvider;
-  TypeSystem typeSystem;
-  FunctionType simpleFunctionType;
-
-  DartType get bottomType => typeProvider.bottomType;
-  InterfaceType get doubleType => typeProvider.doubleType;
-  DartType get dynamicType => typeProvider.dynamicType;
-  InterfaceType get functionType => typeProvider.functionType;
-  InterfaceType get intType => typeProvider.intType;
-  InterfaceType get listType => typeProvider.listType;
-  InterfaceType get numType => typeProvider.numType;
-  InterfaceType get objectType => typeProvider.objectType;
-  InterfaceType get stringType => typeProvider.stringType;
-  DartType get voidType => VoidTypeImpl.instance;
-
-  void setUp() {
-    typeProvider = new TestTypeProvider();
-    typeSystem = new TypeSystemImpl();
-    FunctionTypeAliasElementImpl typeAlias =
-        ElementFactory.functionTypeAliasElement('A');
-    typeAlias.parameters = [];
-    typeAlias.returnType = voidType;
-    simpleFunctionType = typeAlias.type;
-  }
-
-  void test_bottom_function() {
-    _checkLeastUpperBound(bottomType, simpleFunctionType, simpleFunctionType);
-  }
-
-  void test_bottom_interface() {
-    DartType interfaceType = ElementFactory.classElement2('A', []).type;
-    _checkLeastUpperBound(bottomType, interfaceType, interfaceType);
-  }
-
-  void test_bottom_typeParam() {
-    DartType typeParam = ElementFactory.typeParameterElement('T').type;
-    _checkLeastUpperBound(bottomType, typeParam, typeParam);
-  }
-
-  void test_directInterfaceCase() {
-    //
-    // class A
-    // class B implements A
-    // class C implements B
-    //
-    ClassElementImpl classA = ElementFactory.classElement2("A");
-    ClassElementImpl classB = ElementFactory.classElement2("B");
-    ClassElementImpl classC = ElementFactory.classElement2("C");
-    InterfaceType typeA = classA.type;
-    InterfaceType typeB = classB.type;
-    InterfaceType typeC = classC.type;
-    classB.interfaces = <InterfaceType>[typeA];
-    classC.interfaces = <InterfaceType>[typeB];
-    _checkLeastUpperBound(typeB, typeC, typeB);
-  }
-
-  void test_directSubclassCase() {
-    //
-    // class A
-    // class B extends A
-    // class C extends B
-    //
-    ClassElementImpl classA = ElementFactory.classElement2("A");
-    ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
-    ClassElementImpl classC = ElementFactory.classElement("C", classB.type);
-    InterfaceType typeB = classB.type;
-    InterfaceType typeC = classC.type;
-    _checkLeastUpperBound(typeB, typeC, typeB);
-  }
-
-  void test_dynamic_bottom() {
-    _checkLeastUpperBound(dynamicType, bottomType, dynamicType);
-  }
-
-  void test_dynamic_function() {
-    _checkLeastUpperBound(dynamicType, simpleFunctionType, dynamicType);
-  }
-
-  void test_dynamic_interface() {
-    DartType interfaceType = ElementFactory.classElement2('A', []).type;
-    _checkLeastUpperBound(dynamicType, interfaceType, dynamicType);
-  }
-
-  void test_dynamic_typeParam() {
-    DartType typeParam = ElementFactory.typeParameterElement('T').type;
-    _checkLeastUpperBound(dynamicType, typeParam, dynamicType);
-  }
-
-  void test_dynamic_void() {
-    _checkLeastUpperBound(dynamicType, voidType, dynamicType);
-  }
-
-  void test_interface_function() {
-    DartType interfaceType = ElementFactory.classElement2('A', []).type;
-    _checkLeastUpperBound(interfaceType, simpleFunctionType, objectType);
-  }
-
-  void test_mixinCase() {
-    //
-    // class A
-    // class B extends A
-    // class C extends A
-    // class D extends B with M, N, O, P
-    //
-    ClassElement classA = ElementFactory.classElement2("A");
-    ClassElement classB = ElementFactory.classElement("B", classA.type);
-    ClassElement classC = ElementFactory.classElement("C", classA.type);
-    ClassElementImpl classD = ElementFactory.classElement("D", classB.type);
-    InterfaceType typeA = classA.type;
-    InterfaceType typeC = classC.type;
-    InterfaceType typeD = classD.type;
-    classD.mixins = <InterfaceType>[
-      ElementFactory.classElement2("M").type,
-      ElementFactory.classElement2("N").type,
-      ElementFactory.classElement2("O").type,
-      ElementFactory.classElement2("P").type
-    ];
-    _checkLeastUpperBound(typeD, typeC, typeA);
-  }
-
-  void test_object() {
-    ClassElementImpl classA = ElementFactory.classElement2("A");
-    ClassElementImpl classB = ElementFactory.classElement2("B");
-    InterfaceType typeA = classA.type;
-    InterfaceType typeB = classB.type;
-    DartType typeObject = typeA.element.supertype;
-    // assert that object does not have a super type
-    expect((typeObject.element as ClassElement).supertype, isNull);
-    // assert that both A and B have the same super type of Object
-    expect(typeB.element.supertype, typeObject);
-    // finally, assert that the only least upper bound of A and B is Object
-    _checkLeastUpperBound(typeA, typeB, typeObject);
-  }
-
-  void test_self() {
-    DartType typeParam = ElementFactory.typeParameterElement('T').type;
-    DartType interfaceType = ElementFactory.classElement2('A', []).type;
-
-    List<DartType> types = [
-      dynamicType,
-      voidType,
-      bottomType,
-      typeParam,
-      interfaceType,
-      simpleFunctionType
-    ];
-
-    for (DartType type in types) {
-      _checkLeastUpperBound(type, type, type);
-    }
-  }
-
-  void test_sharedSuperclass1() {
-    ClassElementImpl classA = ElementFactory.classElement2("A");
-    ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
-    ClassElementImpl classC = ElementFactory.classElement("C", classA.type);
-    InterfaceType typeA = classA.type;
-    InterfaceType typeB = classB.type;
-    InterfaceType typeC = classC.type;
-    _checkLeastUpperBound(typeB, typeC, typeA);
-  }
-
-  void test_sharedSuperclass2() {
-    ClassElementImpl classA = ElementFactory.classElement2("A");
-    ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
-    ClassElementImpl classC = ElementFactory.classElement("C", classA.type);
-    ClassElementImpl classD = ElementFactory.classElement("D", classC.type);
-    InterfaceType typeA = classA.type;
-    InterfaceType typeB = classB.type;
-    InterfaceType typeD = classD.type;
-    _checkLeastUpperBound(typeB, typeD, typeA);
-  }
-
-  void test_sharedSuperclass3() {
-    ClassElementImpl classA = ElementFactory.classElement2("A");
-    ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
-    ClassElementImpl classC = ElementFactory.classElement("C", classB.type);
-    ClassElementImpl classD = ElementFactory.classElement("D", classB.type);
-    InterfaceType typeB = classB.type;
-    InterfaceType typeC = classC.type;
-    InterfaceType typeD = classD.type;
-    _checkLeastUpperBound(typeC, typeD, typeB);
-  }
-
-  void test_sharedSuperclass4() {
-    ClassElement classA = ElementFactory.classElement2("A");
-    ClassElement classA2 = ElementFactory.classElement2("A2");
-    ClassElement classA3 = ElementFactory.classElement2("A3");
-    ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
-    ClassElementImpl classC = ElementFactory.classElement("C", classA.type);
-    InterfaceType typeA = classA.type;
-    InterfaceType typeA2 = classA2.type;
-    InterfaceType typeA3 = classA3.type;
-    InterfaceType typeB = classB.type;
-    InterfaceType typeC = classC.type;
-    classB.interfaces = <InterfaceType>[typeA2];
-    classC.interfaces = <InterfaceType>[typeA3];
-    _checkLeastUpperBound(typeB, typeC, typeA);
-  }
-
-  void test_sharedSuperinterface1() {
-    ClassElementImpl classA = ElementFactory.classElement2("A");
-    ClassElementImpl classB = ElementFactory.classElement2("B");
-    ClassElementImpl classC = ElementFactory.classElement2("C");
-    InterfaceType typeA = classA.type;
-    InterfaceType typeB = classB.type;
-    InterfaceType typeC = classC.type;
-    classB.interfaces = <InterfaceType>[typeA];
-    classC.interfaces = <InterfaceType>[typeA];
-    _checkLeastUpperBound(typeB, typeC, typeA);
-  }
-
-  void test_sharedSuperinterface2() {
-    ClassElementImpl classA = ElementFactory.classElement2("A");
-    ClassElementImpl classB = ElementFactory.classElement2("B");
-    ClassElementImpl classC = ElementFactory.classElement2("C");
-    ClassElementImpl classD = ElementFactory.classElement2("D");
-    InterfaceType typeA = classA.type;
-    InterfaceType typeB = classB.type;
-    InterfaceType typeC = classC.type;
-    InterfaceType typeD = classD.type;
-    classB.interfaces = <InterfaceType>[typeA];
-    classC.interfaces = <InterfaceType>[typeA];
-    classD.interfaces = <InterfaceType>[typeC];
-    _checkLeastUpperBound(typeB, typeD, typeA);
-  }
-
-  void test_sharedSuperinterface3() {
-    ClassElementImpl classA = ElementFactory.classElement2("A");
-    ClassElementImpl classB = ElementFactory.classElement2("B");
-    ClassElementImpl classC = ElementFactory.classElement2("C");
-    ClassElementImpl classD = ElementFactory.classElement2("D");
-    InterfaceType typeA = classA.type;
-    InterfaceType typeB = classB.type;
-    InterfaceType typeC = classC.type;
-    InterfaceType typeD = classD.type;
-    classB.interfaces = <InterfaceType>[typeA];
-    classC.interfaces = <InterfaceType>[typeB];
-    classD.interfaces = <InterfaceType>[typeB];
-    _checkLeastUpperBound(typeC, typeD, typeB);
-  }
-
-  void test_sharedSuperinterface4() {
-    ClassElement classA = ElementFactory.classElement2("A");
-    ClassElement classA2 = ElementFactory.classElement2("A2");
-    ClassElement classA3 = ElementFactory.classElement2("A3");
-    ClassElementImpl classB = ElementFactory.classElement2("B");
-    ClassElementImpl classC = ElementFactory.classElement2("C");
-    InterfaceType typeA = classA.type;
-    InterfaceType typeA2 = classA2.type;
-    InterfaceType typeA3 = classA3.type;
-    InterfaceType typeB = classB.type;
-    InterfaceType typeC = classC.type;
-    classB.interfaces = <InterfaceType>[typeA, typeA2];
-    classC.interfaces = <InterfaceType>[typeA, typeA3];
-    _checkLeastUpperBound(typeB, typeC, typeA);
-  }
-
-  void test_twoComparables() {
-    _checkLeastUpperBound(stringType, numType, objectType);
-  }
-
-  void test_typeParam_function_bounded() {
-    DartType typeA = ElementFactory.classElement('A', functionType).type;
-    TypeParameterElementImpl typeParamElement =
-        ElementFactory.typeParameterElement('T');
-    typeParamElement.bound = typeA;
-    DartType typeParam = typeParamElement.type;
-    _checkLeastUpperBound(typeParam, simpleFunctionType, functionType);
-  }
-
-  void test_typeParam_function_noBound() {
-    DartType typeParam = ElementFactory.typeParameterElement('T').type;
-    _checkLeastUpperBound(typeParam, simpleFunctionType, objectType);
-  }
-
-  void test_typeParam_interface_bounded() {
-    DartType typeA = ElementFactory.classElement2('A', []).type;
-    DartType typeB = ElementFactory.classElement('B', typeA).type;
-    DartType typeC = ElementFactory.classElement('C', typeA).type;
-    TypeParameterElementImpl typeParamElement =
-        ElementFactory.typeParameterElement('T');
-    typeParamElement.bound = typeB;
-    DartType typeParam = typeParamElement.type;
-    _checkLeastUpperBound(typeParam, typeC, typeA);
-  }
-
-  void test_typeParam_interface_noBound() {
-    DartType typeParam = ElementFactory.typeParameterElement('T').type;
-    DartType interfaceType = ElementFactory.classElement2('A', []).type;
-    _checkLeastUpperBound(typeParam, interfaceType, objectType);
-  }
-
-  void test_typeParameters_different() {
-    //
-    // class List<int>
-    // class List<double>
-    //
-    InterfaceType listOfIntType = listType.instantiate(<DartType>[intType]);
-    InterfaceType listOfDoubleType =
-        listType.instantiate(<DartType>[doubleType]);
-    _checkLeastUpperBound(listOfIntType, listOfDoubleType, objectType);
-  }
-
-  void test_typeParameters_same() {
-    //
-    // List<int>
-    // List<int>
-    //
-    InterfaceType listOfIntType = listType.instantiate(<DartType>[intType]);
-    expect(
-        typeSystem.getLeastUpperBound(
-            typeProvider, listOfIntType, listOfIntType),
-        listOfIntType);
-  }
-
-  void test_void_bottom() {
-    _checkLeastUpperBound(voidType, bottomType, voidType);
-  }
-
-  void test_void_function() {
-    _checkLeastUpperBound(voidType, simpleFunctionType, voidType);
-  }
-
-  void test_void_interface() {
-    DartType interfaceType = ElementFactory.classElement2('A', []).type;
-    _checkLeastUpperBound(voidType, interfaceType, voidType);
-  }
-
-  void test_void_typeParam() {
-    DartType typeParam = ElementFactory.typeParameterElement('T').type;
-    _checkLeastUpperBound(voidType, typeParam, voidType);
-  }
-
-  void test_functionsSameType() {
-    FunctionType type1 = _functionType([stringType, intType, numType],
-        optional: [doubleType], named: {'n': numType}, returns: intType);
-    FunctionType type2 = _functionType([stringType, intType, numType],
-        optional: [doubleType], named: {'n': numType}, returns: intType);
-    FunctionType expected = _functionType([stringType, intType, numType],
-        optional: [doubleType], named: {'n': numType}, returns: intType);
-    _checkLeastUpperBound(type1, type2, expected);
-  }
-
-  void test_functionsDifferentRequiredArity() {
-    FunctionType type1 = _functionType([intType, intType]);
-    FunctionType type2 = _functionType([intType, intType, intType]);
-    _checkLeastUpperBound(type1, type2, functionType);
-  }
-
-  void test_functionsLubRequiredParams() {
-    FunctionType type1 = _functionType([stringType, intType, intType]);
-    FunctionType type2 = _functionType([intType, doubleType, numType]);
-    FunctionType expected = _functionType([objectType, numType, numType]);
-    _checkLeastUpperBound(type1, type2, expected);
-  }
-
-  void test_functionsLubPositionalParams() {
-    FunctionType type1 = _functionType([], optional: [stringType, intType]);
-    FunctionType type2 = _functionType([], optional: [intType, doubleType]);
-    FunctionType expected = _functionType([], optional: [objectType, numType]);
-    _checkLeastUpperBound(type1, type2, expected);
-  }
-
-  void test_functionsIgnoreExtraPositionalParams() {
-    FunctionType type1 =
-        _functionType([], optional: [intType, intType, stringType]);
-    FunctionType type2 = _functionType([], optional: [doubleType]);
-    FunctionType expected = _functionType([], optional: [numType]);
-    _checkLeastUpperBound(type1, type2, expected);
-  }
-
-  void test_functionsLubNamedParams() {
-    FunctionType type1 =
-        _functionType([], named: {'a': stringType, 'b': intType});
-    FunctionType type2 =
-        _functionType([], named: {'a': intType, 'b': doubleType});
-    FunctionType expected =
-        _functionType([], named: {'a': objectType, 'b': numType});
-    _checkLeastUpperBound(type1, type2, expected);
-  }
-
-  void test_functionsIgnoreExtraNamedParams() {
-    FunctionType type1 = _functionType([], named: {'a': intType, 'b': intType});
-    FunctionType type2 =
-        _functionType([], named: {'a': doubleType, 'c': doubleType});
-    FunctionType expected = _functionType([], named: {'a': numType});
-    _checkLeastUpperBound(type1, type2, expected);
-  }
-
-  void test_functionsLubReturnType() {
-    FunctionType type1 = _functionType([], returns: intType);
-    FunctionType type2 = _functionType([], returns: doubleType);
-
-    FunctionType expected = _functionType([], returns: numType);
-    _checkLeastUpperBound(type1, type2, expected);
-  }
-
-  /**
-   * Creates a function type with the given parameter and return types.
-   *
-   * The return type defaults to `void` if omitted.
-   */
-  FunctionType _functionType(List<DartType> required,
-      {List<DartType> optional,
-      Map<String, DartType> named,
-      DartType returns}) {
-    if (returns == null) {
-      returns = voidType;
-    }
-
-    return ElementFactory
-        .functionElement8(required, returns, optional: optional, named: named)
-        .type;
-  }
-
-  void _checkLeastUpperBound(
-      DartType type1, DartType type2, DartType expectedResult) {
-    expect(typeSystem.getLeastUpperBound(typeProvider, type1, type2),
-        expectedResult);
-  }
-}
diff --git a/pkg/analyzer/test/parse_compilation_unit_test.dart b/pkg/analyzer/test/parse_compilation_unit_test.dart
index 9f9679d..c5313da 100644
--- a/pkg/analyzer/test/parse_compilation_unit_test.dart
+++ b/pkg/analyzer/test/parse_compilation_unit_test.dart
@@ -31,7 +31,9 @@
       parseCompilationUnit("void main() => print('Hello, world!')");
     }, throwsA(predicate((error) {
       return error is AnalyzerErrorGroup &&
-          error.toString().contains("Error in <unknown source>: Expected to find ';'");
+          error
+              .toString()
+              .contains("Error in <unknown source>: Expected to find ';'");
     })));
   });
 
diff --git a/pkg/analyzer/test/reflective_tests.dart b/pkg/analyzer/test/reflective_tests.dart
index 2391879..820cb16 100644
--- a/pkg/analyzer/test/reflective_tests.dart
+++ b/pkg/analyzer/test/reflective_tests.dart
@@ -11,6 +11,12 @@
 import 'package:unittest/unittest.dart';
 
 /**
+ * A marker annotation used to instruct dart2js to keep reflection information
+ * for the annotated classes.
+ */
+const ReflectiveTest reflectiveTest = const ReflectiveTest();
+
+/**
  * Runs test methods existing in the given [type].
  *
  * Methods with names starting with `test` are run using [test] function.
@@ -114,9 +120,3 @@
 class ReflectiveTest {
   const ReflectiveTest();
 }
-
-/**
- * A marker annotation used to instruct dart2js to keep reflection information
- * for the annotated classes.
- */
-const ReflectiveTest reflectiveTest = const ReflectiveTest();
diff --git a/pkg/analyzer/test/resource_utils.dart b/pkg/analyzer/test/resource_utils.dart
index fdf1e5a..5936144 100644
--- a/pkg/analyzer/test/resource_utils.dart
+++ b/pkg/analyzer/test/resource_utils.dart
@@ -12,7 +12,6 @@
 import 'package:path/path.dart' as path;
 import 'package:unittest/unittest.dart';
 
-
 bool get isWindows => path.Style.platform == path.Style.windows;
 
 /**
@@ -32,6 +31,15 @@
 }
 
 /**
+ * Translate the given posixPath to a file URI appropriate for the
+ * platform on which the tests are executing.
+ */
+String posixToOSFileUri(String posixPath) {
+  expectPosixPath(posixPath);
+  return isWindows ? 'file:///C:$posixPath' : 'file://$posixPath';
+}
+
+/**
  * Translate the given posixPath to a path appropriate for the
  * platform on which the tests are executing.
  */
@@ -48,15 +56,6 @@
 }
 
 /**
- * Translate the given posixPath to a file URI appropriate for the
- * platform on which the tests are executing.
- */
-String posixToOSFileUri(String posixPath) {
-  expectPosixPath(posixPath);
-  return isWindows ? 'file:///C:$posixPath' : 'file://$posixPath';
-}
-
-/**
  * A convenience utility for setting up a test [MemoryResourceProvider].
  * All supplied paths are assumed to be in [path.posix] format
  * and are automatically translated to [path.context].
@@ -96,6 +95,9 @@
   AbsolutePathContext get absolutePathContext => _provider.absolutePathContext;
 
   @override
+  path.Context get pathContext => _provider.pathContext;
+
+  @override
   File getFile(String path) => _provider.getFile(_assertPath(path));
 
   @override
@@ -108,9 +110,6 @@
   Folder getStateLocation(String pluginId) =>
       _provider.getStateLocation(pluginId);
 
-  @override
-  path.Context get pathContext => _provider.pathContext;
-
   /**
    * Assert that the given path is valid for the OS platform on which the
    * tests are running.
diff --git a/pkg/analyzer/test/source/analysis_options_provider_test.dart b/pkg/analyzer/test/source/analysis_options_provider_test.dart
index 0b00a6d..ee9f0e0 100644
--- a/pkg/analyzer/test/source/analysis_options_provider_test.dart
+++ b/pkg/analyzer/test/source/analysis_options_provider_test.dart
@@ -4,15 +4,21 @@
 
 library analyzer.test.source.analysis_options_provider_test;
 
+import 'dart:core' hide Resource;
+
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/file_system/memory_file_system.dart';
 import 'package:analyzer/source/analysis_options_provider.dart';
 import 'package:unittest/unittest.dart';
 import 'package:yaml/yaml.dart';
 
+import '../reflective_tests.dart';
 import '../resource_utils.dart';
+import '../utils.dart';
 
 main() {
+  initializeTestEnvironment();
+  runReflectiveTests(AnalysisOptionsProviderTest);
   group('AnalysisOptionsProvider', () {
     void expectMergesTo(String defaults, String overrides, String expected) {
       var optionsProvider = new AnalysisOptionsProvider();
@@ -67,68 +73,6 @@
   });
 
   group('AnalysisOptionsProvider', () {
-    setUp(() {
-      buildResourceProvider();
-    });
-    tearDown(() {
-      clearResourceProvider();
-    });
-    test('test_simple', () {
-      var optionsProvider = new AnalysisOptionsProvider();
-      Map<String, YamlNode> options =
-          optionsProvider.getOptions(pathTranslator.getResource('/'));
-      expect(options, hasLength(1));
-      expect(options['analyzer'], isNotNull);
-      YamlMap analyzer = options['analyzer'];
-      expect(analyzer, hasLength(1));
-      expect(analyzer['ignore'], isNotNull);
-      YamlList ignore = analyzer['ignore'];
-      expect(ignore, hasLength(2));
-      expect(ignore[0], 'ignoreme.dart');
-      expect(ignore[1], 'sdk_ext/**');
-    });
-    test('test_doesnotexist', () {
-      var optionsProvider = new AnalysisOptionsProvider();
-      Map<String, YamlNode> options =
-          optionsProvider.getOptions(pathTranslator.getResource('/empty'));
-      expect(options, isEmpty);
-    });
-  });
-  group('AnalysisOptionsProvider', () {
-    setUp(() {
-      buildResourceProvider(emptyAnalysisOptions: true);
-    });
-    tearDown(() {
-      clearResourceProvider();
-    });
-    test('test_empty', () {
-      var optionsProvider = new AnalysisOptionsProvider();
-      Map<String, YamlNode> options =
-          optionsProvider.getOptions(pathTranslator.getResource('/'));
-      expect(options, isNotNull);
-    });
-  });
-  group('AnalysisOptionsProvider', () {
-    setUp(() {
-      buildResourceProvider(badAnalysisOptions: true);
-    });
-    tearDown(() {
-      clearResourceProvider();
-    });
-    test('test_invalid', () {
-      var optionsProvider = new AnalysisOptionsProvider();
-      bool exceptionCaught = false;
-      try {
-        Map<String, YamlNode> options =
-            optionsProvider.getOptions(pathTranslator.getResource('/'));
-        expect(options, isNotNull);
-      } catch (e) {
-        exceptionCaught = true;
-      }
-      expect(exceptionCaught, isTrue);
-    });
-  });
-  group('AnalysisOptionsProvider', () {
     test('test_bad_yaml (1)', () {
       var src = '''
     analyzer: # <= bang
@@ -155,21 +99,90 @@
   });
 }
 
-ResourceProvider resourceProvider;
-TestPathTranslator pathTranslator;
+@reflectiveTest
+class AnalysisOptionsProviderTest {
+  TestPathTranslator pathTranslator;
+  ResourceProvider resourceProvider;
 
-buildResourceProvider(
-    {bool emptyAnalysisOptions: false, bool badAnalysisOptions: false}) {
-  var rawProvider = new MemoryResourceProvider(isWindows: isWindows);
-  resourceProvider = new TestResourceProvider(rawProvider);
-  pathTranslator = new TestPathTranslator(rawProvider)
-    ..newFolder('/empty')
-    ..newFolder('/tmp');
-  if (badAnalysisOptions) {
-    pathTranslator.newFile('/.analysis_options', r''':''');
-  } else if (emptyAnalysisOptions) {
+  AnalysisOptionsProvider provider = new AnalysisOptionsProvider();
+
+  void setUp() {
+    var rawProvider = new MemoryResourceProvider(isWindows: isWindows);
+    resourceProvider = new TestResourceProvider(rawProvider);
+    pathTranslator = new TestPathTranslator(rawProvider);
+  }
+
+  void test_getOptions_crawlUp_hasInFolder() {
+    pathTranslator.newFolder('/foo/bar');
+    pathTranslator.newFile(
+        '/foo/.analysis_options',
+        r'''
+analyzer:
+  ignore:
+    - foo
+''');
+    pathTranslator.newFile(
+        '/foo/bar/.analysis_options',
+        r'''
+analyzer:
+  ignore:
+    - bar
+''');
+    Map<String, YamlNode> options = _getOptions('/foo/bar', crawlUp: true);
+    expect(options, hasLength(1));
+    {
+      YamlMap analyzer = options['analyzer'];
+      expect(analyzer, isNotNull);
+      expect(analyzer['ignore'], unorderedEquals(['bar']));
+    }
+  }
+
+  void test_getOptions_crawlUp_hasInParent() {
+    pathTranslator.newFolder('/foo/bar/baz');
+    pathTranslator.newFile(
+        '/foo/.analysis_options',
+        r'''
+analyzer:
+  ignore:
+    - foo
+''');
+    pathTranslator.newFile(
+        '/foo/bar/.analysis_options',
+        r'''
+analyzer:
+  ignore:
+    - bar
+''');
+    Map<String, YamlNode> options = _getOptions('/foo/bar/baz', crawlUp: true);
+    expect(options, hasLength(1));
+    {
+      YamlMap analyzer = options['analyzer'];
+      expect(analyzer, isNotNull);
+      expect(analyzer['ignore'], unorderedEquals(['bar']));
+    }
+  }
+
+  void test_getOptions_doesNotExist() {
+    pathTranslator.newFolder('/notFile');
+    Map<String, YamlNode> options = _getOptions('/notFile');
+    expect(options, isEmpty);
+  }
+
+  void test_getOptions_empty() {
     pathTranslator.newFile('/.analysis_options', r'''#empty''');
-  } else {
+    Map<String, YamlNode> options = _getOptions('/');
+    expect(options, isNotNull);
+    expect(options, isEmpty);
+  }
+
+  void test_getOptions_invalid() {
+    pathTranslator.newFile('/.analysis_options', r''':''');
+    expect(() {
+      _getOptions('/');
+    }, throws);
+  }
+
+  void test_getOptions_simple() {
     pathTranslator.newFile(
         '/.analysis_options',
         r'''
@@ -178,9 +191,22 @@
     - ignoreme.dart
     - 'sdk_ext/**'
 ''');
+    Map<String, YamlNode> options = _getOptions('/');
+    expect(options, hasLength(1));
+    {
+      YamlMap analyzer = options['analyzer'];
+      expect(analyzer, hasLength(1));
+      {
+        YamlList ignore = analyzer['ignore'];
+        expect(ignore, hasLength(2));
+        expect(ignore[0], 'ignoreme.dart');
+        expect(ignore[1], 'sdk_ext/**');
+      }
+    }
   }
-}
 
-clearResourceProvider() {
-  resourceProvider = null;
+  Map<String, YamlNode> _getOptions(String posixPath, {bool crawlUp: false}) {
+    Resource resource = pathTranslator.getResource(posixPath);
+    return provider.getOptions(resource, crawlUp: crawlUp);
+  }
 }
diff --git a/pkg/analyzer/test/source/embedder_test.dart b/pkg/analyzer/test/source/embedder_test.dart
index 448fdb0..898aa1f 100644
--- a/pkg/analyzer/test/source/embedder_test.dart
+++ b/pkg/analyzer/test/source/embedder_test.dart
@@ -138,8 +138,8 @@
   });
 }
 
-ResourceProvider resourceProvider;
 TestPathTranslator pathTranslator;
+ResourceProvider resourceProvider;
 
 buildResourceProvider() {
   var rawProvider = new MemoryResourceProvider(isWindows: isWindows);
diff --git a/pkg/analyzer/test/src/abstract_single_unit.dart b/pkg/analyzer/test/src/abstract_single_unit.dart
index 1955d6e..787ac21 100644
--- a/pkg/analyzer/test/src/abstract_single_unit.dart
+++ b/pkg/analyzer/test/src/abstract_single_unit.dart
@@ -24,9 +24,10 @@
   CompilationUnitElement testUnitElement;
   LibraryElement testLibraryElement;
 
-  void addTestSource(String code, [Uri uri]) {
+  Source addTestSource(String code, [Uri uri]) {
     testCode = code;
     testSource = addSource(testFile, code);
+    return testSource;
   }
 
   void assertNoErrorsInSource(Source source) {
diff --git a/pkg/analyzer/test/src/context/abstract_context.dart b/pkg/analyzer/test/src/context/abstract_context.dart
index b0b7a01..be85eff 100644
--- a/pkg/analyzer/test/src/context/abstract_context.dart
+++ b/pkg/analyzer/test/src/context/abstract_context.dart
@@ -45,9 +45,12 @@
 typedef void _ElementVisitorFunction(Element element);
 
 class AbstractContextTest {
+  static final MockSdk SHARED_MOCK_SDK = new MockSdk();
+  static final MockSdk SHARED_STRONG_MOCK_SDK = new MockSdk();
+
   MemoryResourceProvider resourceProvider = new MemoryResourceProvider();
 
-  DartSdk sdk = new MockSdk();
+  DartSdk sdk;
   SourceFactory sourceFactory;
   AnalysisContextImpl context;
   AnalysisCache analysisCache;
@@ -120,6 +123,8 @@
     return new AnalysisContextImpl();
   }
 
+  DartSdk createDartSdk() => new MockSdk();
+
   Source newSource(String path, [String content = '']) {
     File file = resourceProvider.newFile(path, content);
     return file.createSource();
@@ -135,6 +140,7 @@
   }
 
   void prepareAnalysisContext([AnalysisOptions options]) {
+    sdk = createDartSdk();
     sdkResolver = new DartUriResolver(sdk);
     resourceResolver = new ResourceUriResolver(resourceProvider);
     sourceFactory =
diff --git a/pkg/analyzer/test/src/context/context_test.dart b/pkg/analyzer/test/src/context/context_test.dart
index 63130a5..b2e1f04 100644
--- a/pkg/analyzer/test/src/context/context_test.dart
+++ b/pkg/analyzer/test/src/context/context_test.dart
@@ -1397,6 +1397,22 @@
     expect(analysisResult.changeNotices, isNotNull);
   }
 
+  void test_handleContentsChanged_incremental_newContentsNull() {
+    context.analysisOptions = new AnalysisOptionsImpl()..incremental = true;
+    ContentCache contentCache = new ContentCache();
+    context.contentCache = contentCache;
+    // old contents
+    String oldContents = 'foo() {}';
+    Source source = resourceProvider.getFile('/test.dart').createSource();
+    contentCache.setContents(source, oldContents);
+    expect(context.computeLibraryElement(source), isNotNull);
+    // new contents
+    String newContents = null;
+    contentCache.setContents(source, newContents);
+    context.handleContentsChanged(source, oldContents, newContents, true);
+    expect(context.getLibraryElement(source), isNull);
+  }
+
   Future test_implicitAnalysisEvents_added() async {
     AnalyzedSourcesListener listener = new AnalyzedSourcesListener();
     context.implicitAnalysisEvents.listen(listener.onData);
diff --git a/pkg/analyzer/test/src/context/mock_sdk.dart b/pkg/analyzer/test/src/context/mock_sdk.dart
index 8103e12..a28f4b8 100644
--- a/pkg/analyzer/test/src/context/mock_sdk.dart
+++ b/pkg/analyzer/test/src/context/mock_sdk.dart
@@ -113,6 +113,14 @@
   num operator -(num other);
   num operator *(num other);
   num operator /(num other);
+  int operator ^(int other);
+  int operator &(int other);
+  int operator |(int other);
+  int operator <<(int other);
+  int operator >>(int other);
+  int operator ~/(int other);
+  int operator %(int other);
+  int operator ~();
   int toInt();
   double toDouble();
   num abs();
diff --git a/pkg/analyzer/test/src/dart/element/element_test.dart b/pkg/analyzer/test/src/dart/element/element_test.dart
index 17f71cc..ebee2d6 100644
--- a/pkg/analyzer/test/src/dart/element/element_test.dart
+++ b/pkg/analyzer/test/src/dart/element/element_test.dart
@@ -30,6 +30,7 @@
   runReflectiveTests(FieldElementImplTest);
   runReflectiveTests(FunctionTypeImplTest);
   runReflectiveTests(InterfaceTypeImplTest);
+  runReflectiveTests(LocalVariableElementImplTest);
   runReflectiveTests(TypeParameterTypeImplTest);
   runReflectiveTests(VoidTypeImplTest);
   runReflectiveTests(ClassElementImplTest);
@@ -3770,6 +3771,45 @@
 }
 
 @reflectiveTest
+class LocalVariableElementImplTest extends EngineTestCase {
+  void test_computeNode_declaredIdentifier() {
+    AnalysisContextHelper contextHelper = new AnalysisContextHelper();
+    AnalysisContext context = contextHelper.context;
+    Source source = contextHelper.addSource(
+        "/test.dart",
+        r'''
+main() {
+  for (int v in <int>[1, 2, 3]) {}
+}''');
+    LibraryElement libraryElement = context.computeLibraryElement(source);
+    FunctionElement mainElement = libraryElement.units[0].functions[0];
+    LocalVariableElement element = mainElement.localVariables[0];
+    DeclaredIdentifier node = element.computeNode() as DeclaredIdentifier;
+    expect(node, isNotNull);
+    expect(node.identifier.name, 'v');
+    expect(node.element, same(element));
+  }
+
+  void test_computeNode_variableDeclaration() {
+    AnalysisContextHelper contextHelper = new AnalysisContextHelper();
+    AnalysisContext context = contextHelper.context;
+    Source source = contextHelper.addSource(
+        "/test.dart",
+        r'''
+main() {
+  int v = 0;
+}''');
+    LibraryElement libraryElement = context.computeLibraryElement(source);
+    FunctionElement mainElement = libraryElement.units[0].functions[0];
+    LocalVariableElement element = mainElement.localVariables[0];
+    VariableDeclaration node = element.computeNode() as VariableDeclaration;
+    expect(node, isNotNull);
+    expect(node.name.name, 'v');
+    expect(node.element, same(element));
+  }
+}
+
+@reflectiveTest
 class MethodElementImplTest extends EngineTestCase {
   void test_computeNode() {
     AnalysisContextHelper contextHelper = new AnalysisContextHelper();
diff --git a/pkg/analyzer/test/src/summary/in_summary_source_test.dart b/pkg/analyzer/test/src/summary/in_summary_source_test.dart
new file mode 100644
index 0000000..f45602c
--- /dev/null
+++ b/pkg/analyzer/test/src/summary/in_summary_source_test.dart
@@ -0,0 +1,78 @@
+// Copyright (c) 2016, 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 analyzer.test.src.summary.in_summary_source_test;
+
+import 'package:analyzer/src/generated/source_io.dart';
+import 'package:analyzer/src/summary/format.dart';
+import 'package:analyzer/src/summary/idl.dart';
+import 'package:analyzer/src/summary/package_bundle_reader.dart';
+import 'package:path/path.dart';
+import 'package:unittest/unittest.dart';
+
+import '../../reflective_tests.dart';
+
+main() {
+  groupSep = ' | ';
+  runReflectiveTests(InSummarySourceTest);
+}
+
+@reflectiveTest
+class InSummarySourceTest extends ReflectiveTest {
+  test_fallbackPath() {
+    String fooFallbackPath = absolute('path', 'to', 'foo.dart');
+    var sourceFactory = new SourceFactory([
+      new InSummaryPackageUriResolver(new MockSummaryDataStore.fake(
+          {'package:foo/foo.dart': 'foo.sum',},
+          uriToFallbackModePath: {'package:foo/foo.dart': fooFallbackPath}))
+    ]);
+
+    InSummarySource source = sourceFactory.forUri('package:foo/foo.dart');
+    expect(source, new isInstanceOf<FileBasedSource>());
+    expect(source.fullName, fooFallbackPath);
+  }
+
+  test_InSummarySource() {
+    var sourceFactory = new SourceFactory([
+      new InSummaryPackageUriResolver(new MockSummaryDataStore.fake({
+        'package:foo/foo.dart': 'foo.sum',
+        'package:foo/src/foo_impl.dart': 'foo.sum',
+        'package:bar/baz.dart': 'bar.sum',
+      }))
+    ]);
+
+    InSummarySource source = sourceFactory.forUri('package:foo/foo.dart');
+    expect(source, isNot(new isInstanceOf<FileBasedSource>()));
+    expect(source.summaryPath, 'foo.sum');
+
+    source = sourceFactory.forUri('package:foo/src/foo_impl.dart');
+    expect(source, isNot(new isInstanceOf<FileBasedSource>()));
+    expect(source.summaryPath, 'foo.sum');
+
+    source = sourceFactory.forUri('package:bar/baz.dart');
+    expect(source, isNot(new isInstanceOf<FileBasedSource>()));
+    expect(source.summaryPath, 'bar.sum');
+  }
+}
+
+class MockSummaryDataStore implements SummaryDataStore {
+  final Map<String, LinkedLibrary> linkedMap;
+  final Map<String, UnlinkedUnit> unlinkedMap;
+  final Map<String, String> uriToSummaryPath;
+
+  MockSummaryDataStore(this.linkedMap, this.unlinkedMap, this.uriToSummaryPath);
+
+  factory MockSummaryDataStore.fake(Map<String, String> uriToSummary,
+      {Map<String, String> uriToFallbackModePath: const {}}) {
+    // Create fake unlinked map.
+    // We don't populate the values as it is not needed for the test.
+    var unlinkedMap = new Map<String, UnlinkedUnit>.fromIterable(
+        uriToSummary.keys,
+        value: (uri) => new UnlinkedUnitBuilder(
+            fallbackModePath: uriToFallbackModePath[uri]));
+    return new MockSummaryDataStore(null, unlinkedMap, uriToSummary);
+  }
+
+  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
diff --git a/pkg/analyzer/test/src/summary/index_unit_test.dart b/pkg/analyzer/test/src/summary/index_unit_test.dart
index f9639e2..cb18d02 100644
--- a/pkg/analyzer/test/src/summary/index_unit_test.dart
+++ b/pkg/analyzer/test/src/summary/index_unit_test.dart
@@ -99,6 +99,11 @@
     _assertDefinedName('A', IndexNameKind.topLevel, 'A {}');
   }
 
+  void test_definedName_topLevel_class2() {
+    _indexTestUnit('class A {}', declOnly: true);
+    _assertDefinedName('A', IndexNameKind.topLevel, 'A {}');
+  }
+
   void test_definedName_topLevel_classAlias() {
     _indexTestUnit('''
 class M {}
@@ -1169,10 +1174,14 @@
     return _getStringId(str);
   }
 
-  void _indexTestUnit(String code) {
+  void _indexTestUnit(String code, {bool declOnly: false}) {
     resolveTestUnit(code);
     PackageIndexAssembler assembler = new PackageIndexAssembler();
-    assembler.index(testUnit);
+    if (declOnly) {
+      assembler.indexDeclarations(testUnit);
+    } else {
+      assembler.indexUnit(testUnit);
+    }
     // assemble, write and read
     PackageIndexBuilder indexBuilder = assembler.assemble();
     List<int> indexBytes = indexBuilder.toBuffer();
diff --git a/pkg/analyzer/test/src/summary/name_filter_test.dart b/pkg/analyzer/test/src/summary/name_filter_test.dart
index 5f5ca4f..3646720 100644
--- a/pkg/analyzer/test/src/summary/name_filter_test.dart
+++ b/pkg/analyzer/test/src/summary/name_filter_test.dart
@@ -113,8 +113,8 @@
 
   test_merge_hides_hides() {
     NameFilter filter = new NameFilter.forUnlinkedCombinator(
-        new UnlinkedCombinatorBuilder(hides: ['foo'])).merge(
-        new NameFilter.forUnlinkedCombinator(
+            new UnlinkedCombinatorBuilder(hides: ['foo']))
+        .merge(new NameFilter.forUnlinkedCombinator(
             new UnlinkedCombinatorBuilder(hides: ['bar'])));
     expect(filter.accepts('foo'), isFalse);
     expect(filter.accepts('bar'), isFalse);
@@ -138,8 +138,8 @@
 
   test_merge_hides_shows() {
     NameFilter filter = new NameFilter.forUnlinkedCombinator(
-        new UnlinkedCombinatorBuilder(hides: ['bar', 'baz'])).merge(
-        new NameFilter.forUnlinkedCombinator(
+            new UnlinkedCombinatorBuilder(hides: ['bar', 'baz']))
+        .merge(new NameFilter.forUnlinkedCombinator(
             new UnlinkedCombinatorBuilder(shows: ['foo', 'bar'])));
     expect(filter.accepts('foo'), isTrue);
     expect(filter.accepts('bar'), isFalse);
@@ -183,8 +183,8 @@
 
   test_merge_shows_hides() {
     NameFilter filter = new NameFilter.forUnlinkedCombinator(
-        new UnlinkedCombinatorBuilder(shows: ['foo', 'bar'])).merge(
-        new NameFilter.forUnlinkedCombinator(
+            new UnlinkedCombinatorBuilder(shows: ['foo', 'bar']))
+        .merge(new NameFilter.forUnlinkedCombinator(
             new UnlinkedCombinatorBuilder(hides: ['bar', 'baz'])));
     expect(filter.accepts('foo'), isTrue);
     expect(filter.accepts('bar'), isFalse);
@@ -208,8 +208,8 @@
 
   test_merge_shows_shows() {
     NameFilter filter = new NameFilter.forUnlinkedCombinator(
-        new UnlinkedCombinatorBuilder(shows: ['foo', 'bar'])).merge(
-        new NameFilter.forUnlinkedCombinator(
+            new UnlinkedCombinatorBuilder(shows: ['foo', 'bar']))
+        .merge(new NameFilter.forUnlinkedCombinator(
             new UnlinkedCombinatorBuilder(shows: ['bar', 'baz'])));
     expect(filter.accepts('foo'), isFalse);
     expect(filter.accepts('bar'), isTrue);
@@ -221,8 +221,8 @@
 
   test_merge_shows_shows_emptyResult() {
     NameFilter filter = new NameFilter.forUnlinkedCombinator(
-        new UnlinkedCombinatorBuilder(shows: ['foo'])).merge(
-        new NameFilter.forUnlinkedCombinator(
+            new UnlinkedCombinatorBuilder(shows: ['foo']))
+        .merge(new NameFilter.forUnlinkedCombinator(
             new UnlinkedCombinatorBuilder(shows: ['bar'])));
     expect(filter.accepts('foo'), isFalse);
     expect(filter.accepts('bar'), isFalse);
diff --git a/pkg/analyzer/test/src/summary/prelinker_test.dart b/pkg/analyzer/test/src/summary/prelinker_test.dart
index 4453ab0..b4d4098 100644
--- a/pkg/analyzer/test/src/summary/prelinker_test.dart
+++ b/pkg/analyzer/test/src/summary/prelinker_test.dart
@@ -75,7 +75,8 @@
     }
     UnlinkedPublicNamespace getImport(String relativeUri) {
       String absoluteUri = resolveToAbsoluteUri(library, relativeUri);
-      UnlinkedPublicNamespace namespace = sdkPublicNamespace[absoluteUri];
+      UnlinkedPublicNamespace namespace = SerializedMockSdk
+          .instance.uriToUnlinkedUnit[absoluteUri]?.publicNamespace;
       if (namespace == null) {
         namespace = uriToPublicNamespace[absoluteUri];
       }
diff --git a/pkg/analyzer/test/src/summary/resynthesize_ast_test.dart b/pkg/analyzer/test/src/summary/resynthesize_ast_test.dart
new file mode 100644
index 0000000..c0077e2
--- /dev/null
+++ b/pkg/analyzer/test/src/summary/resynthesize_ast_test.dart
@@ -0,0 +1,156 @@
+// Copyright (c) 2016, 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 analyzer.test.src.summary.resynthesize_ast_test;
+
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/summary/format.dart';
+import 'package:analyzer/src/summary/idl.dart';
+import 'package:analyzer/src/summary/prelink.dart';
+import 'package:analyzer/src/summary/resynthesize.dart';
+import 'package:analyzer/src/summary/summarize_ast.dart';
+import 'package:analyzer/src/summary/summarize_elements.dart'
+    show PackageBundleAssembler;
+import 'package:analyzer/task/dart.dart' show PARSED_UNIT;
+import 'package:unittest/unittest.dart';
+
+import '../../reflective_tests.dart';
+import 'resynthesize_test.dart';
+
+main() {
+  groupSep = ' | ';
+  runReflectiveTests(ResynthesizeAstTest);
+}
+
+@reflectiveTest
+class ResynthesizeAstTest extends ResynthesizeTest {
+  final Set<Source> serializedSources = new Set<Source>();
+  final PackageBundleAssembler bundleAssembler = new PackageBundleAssembler();
+  final Map<Uri, UnlinkedUnitBuilder> uriToUnit = <Uri, UnlinkedUnitBuilder>{};
+
+  @override
+  bool get checkPropagatedTypes => false;
+
+  @override
+  void checkLibrary(String text,
+      {bool allowErrors: false, bool dumpSummaries: false}) {
+    Source source = addTestSource(text);
+    SummaryResynthesizer resynthesizer = _encodeLibrary(source);
+    LibraryElementImpl resynthesized =
+        resynthesizer.getLibraryElement(source.uri.toString());
+    LibraryElementImpl original = context.computeLibraryElement(source);
+    checkLibraryElements(original, resynthesized);
+  }
+
+  @override
+  TestSummaryResynthesizer encodeDecodeLibrarySource(Source source) {
+    return _encodeLibrary(source);
+  }
+
+  @override
+  void test_const_invokeConstructor_named() {
+    // TODO(scheglov) fix me
+  }
+
+  @override
+  void test_constructor_withCycles_const() {
+    // TODO(scheglov) fix me
+  }
+
+  @override
+  void test_inferred_function_type_in_generic_class_constructor() {
+    // TODO(scheglov) fix me
+  }
+
+  @override
+  void test_metadata_constructor_call_named() {
+    // TODO(scheglov) fix me
+  }
+
+  @override
+  void test_metadata_constructor_call_named_prefixed() {
+    // TODO(scheglov) fix me
+  }
+
+  @override
+  void test_metadata_constructor_call_unnamed() {
+    // TODO(scheglov) fix me
+  }
+
+  @override
+  void test_metadata_constructor_call_with_args() {
+    // TODO(scheglov) fix me
+  }
+
+  @override
+  void test_type_reference_to_import_part_in_subdir() {
+    // TODO(scheglov) fix me
+  }
+
+  TestSummaryResynthesizer _encodeLibrary(Source source) {
+    addLibrary('dart:core');
+    _serializeLibrary(source);
+
+    PackageBundle bundle =
+        new PackageBundle.fromBuffer(bundleAssembler.assemble().toBuffer());
+
+    Map<String, UnlinkedUnit> unlinkedSummaries = <String, UnlinkedUnit>{};
+    Map<String, LinkedLibrary> linkedSummaries = <String, LinkedLibrary>{};
+    for (int i = 0; i < bundle.unlinkedUnitUris.length; i++) {
+      String uri = bundle.unlinkedUnitUris[i];
+      unlinkedSummaries[uri] = bundle.unlinkedUnits[i];
+    }
+    for (int i = 0; i < bundle.linkedLibraryUris.length; i++) {
+      String uri = bundle.linkedLibraryUris[i];
+      linkedSummaries[uri] = bundle.linkedLibraries[i];
+    }
+
+    return new TestSummaryResynthesizer(
+        null, context, unlinkedSummaries, linkedSummaries);
+  }
+
+  UnlinkedUnitBuilder _getUnlinkedUnit(Source source) {
+    return uriToUnit.putIfAbsent(source.uri, () {
+      CompilationUnit unit = context.computeResult(source, PARSED_UNIT);
+      UnlinkedUnitBuilder unlinkedUnit = serializeAstUnlinked(unit);
+      bundleAssembler.addUnlinkedUnit(source, unlinkedUnit);
+      return unlinkedUnit;
+    });
+  }
+
+  void _serializeLibrary(Source librarySource) {
+    if (!serializedSources.add(librarySource)) {
+      return;
+    }
+
+    Source resolveRelativeUri(String relativeUri) {
+      Source resolvedSource =
+          context.sourceFactory.resolveUri(librarySource, relativeUri);
+      if (resolvedSource == null) {
+        throw new StateError('Could not resolve $relativeUri in the context of '
+            '$librarySource (${librarySource.runtimeType})');
+      }
+      return resolvedSource;
+    }
+
+    UnlinkedUnitBuilder getPart(String relativeUri) {
+      return _getUnlinkedUnit(resolveRelativeUri(relativeUri));
+    }
+
+    UnlinkedPublicNamespace getImport(String relativeUri) {
+      return getPart(relativeUri).publicNamespace;
+    }
+
+    UnlinkedUnitBuilder definingUnit = _getUnlinkedUnit(librarySource);
+    LinkedLibraryBuilder linkedLibrary =
+        prelink(definingUnit, getPart, getImport);
+    bundleAssembler.addLinkedLibrary(
+        librarySource.uri.toString(), linkedLibrary);
+    linkedLibrary.dependencies.skip(1).forEach((LinkedDependency d) {
+      _serializeLibrary(resolveRelativeUri(d.uri));
+    });
+  }
+}
diff --git a/pkg/analyzer/test/src/summary/resynthesize_strong_test.dart b/pkg/analyzer/test/src/summary/resynthesize_strong_test.dart
index 37c2f4a..c52b604 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_strong_test.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_strong_test.dart
@@ -5,18 +5,22 @@
 library analyzer.test.src.summary.resynthesize_strong_test;
 
 import 'package:analyzer/src/generated/engine.dart';
+import 'package:analyzer/src/generated/sdk.dart';
 import 'package:unittest/unittest.dart';
 
 import '../../reflective_tests.dart';
+import '../context/abstract_context.dart';
 import 'resynthesize_test.dart';
 
 main() {
   groupSep = ' | ';
-  runReflectiveTests(ResynthStrongTest);
+  runReflectiveTests(ResynthesizeStrongTest);
 }
 
 @reflectiveTest
-class ResynthStrongTest extends ResynthTest {
+class ResynthesizeStrongTest extends ResynthesizeElementTest {
+  DartSdk createDartSdk() => AbstractContextTest.SHARED_STRONG_MOCK_SDK;
+
   @override
   AnalysisOptionsImpl createOptions() =>
       super.createOptions()..strongMode = true;
diff --git a/pkg/analyzer/test/src/summary/resynthesize_test.dart b/pkg/analyzer/test/src/summary/resynthesize_test.dart
index 0d810b4..dc8fd6d 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_test.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_test.dart
@@ -16,8 +16,10 @@
 import 'package:analyzer/src/dart/element/member.dart';
 import 'package:analyzer/src/dart/element/type.dart';
 import 'package:analyzer/src/generated/engine.dart';
+import 'package:analyzer/src/generated/error.dart';
 import 'package:analyzer/src/generated/resolver.dart'
     show Namespace, TypeProvider;
+import 'package:analyzer/src/generated/sdk.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/generated/testing/ast_factory.dart';
 import 'package:analyzer/src/summary/idl.dart';
@@ -25,26 +27,155 @@
 import 'package:analyzer/src/summary/summarize_elements.dart';
 import 'package:unittest/unittest.dart';
 
-import '../../generated/resolver_test_case.dart';
+import '../../generated/test_support.dart';
 import '../../reflective_tests.dart';
+import '../abstract_single_unit.dart';
+import '../context/abstract_context.dart';
 import 'summary_common.dart' show canonicalize;
 
 main() {
   groupSep = ' | ';
-  runReflectiveTests(ResynthTest);
+  runReflectiveTests(ResynthesizeElementTest);
 }
 
 @reflectiveTest
-class ResynthTest extends ResolverTestCase {
+class ResynthesizeElementTest extends ResynthesizeTest {
+  @override
+  void checkLibrary(String text,
+      {bool allowErrors: false, bool dumpSummaries: false}) {
+    Source source = addTestSource(text);
+    LibraryElementImpl original = context.computeLibraryElement(source);
+    LibraryElementImpl resynthesized = resynthesizeLibraryElement(
+        encodeLibrary(original,
+            allowErrors: allowErrors, dumpSummaries: dumpSummaries),
+        source.uri.toString(),
+        original);
+    checkLibraryElements(original, resynthesized);
+  }
+
+  @override
+  SummaryResynthesizer encodeDecodeLibrarySource(Source librarySource) {
+    LibraryElement libraryElement =
+        context.computeLibraryElement(librarySource);
+    return encodeLibrary(libraryElement);
+  }
+
+  /**
+   * Serialize the given [library] into a summary.  Then create a
+   * [TestSummaryResynthesizer] which can deserialize it, along with any
+   * references it makes to `dart:core`.
+   *
+   * Errors will lead to a test failure unless [allowErrors] is `true`.
+   */
+  TestSummaryResynthesizer encodeLibrary(LibraryElementImpl library,
+      {bool allowErrors: false, bool dumpSummaries: false}) {
+    if (!allowErrors) {
+      assertNoErrors(library.source);
+    }
+    addLibrary('dart:core');
+    addLibrary('dart:async');
+    addLibrary('dart:math');
+    return encodeLibraryElement(library, dumpSummaries: dumpSummaries);
+  }
+
+  /**
+   * Convert the library element [library] into a summary, and then create a
+   * [TestSummaryResynthesizer] which can deserialize it.
+   *
+   * Caller is responsible for checking the library for errors, and adding any
+   * dependent libraries using [addLibrary].
+   */
+  TestSummaryResynthesizer encodeLibraryElement(LibraryElementImpl library,
+      {bool dumpSummaries: false}) {
+    Map<String, UnlinkedUnit> unlinkedSummaries = <String, UnlinkedUnit>{};
+    LinkedLibrary getLinkedSummaryFor(LibraryElement lib) {
+      LibrarySerializationResult serialized = serializeLibrary(
+          lib, context.typeProvider, context.analysisOptions.strongMode);
+      for (int i = 0; i < serialized.unlinkedUnits.length; i++) {
+        unlinkedSummaries[serialized.unitUris[i]] =
+            new UnlinkedUnit.fromBuffer(serialized.unlinkedUnits[i].toBuffer());
+      }
+      return new LinkedLibrary.fromBuffer(serialized.linked.toBuffer());
+    }
+    Map<String, LinkedLibrary> linkedSummaries = <String, LinkedLibrary>{
+      library.source.uri.toString(): getLinkedSummaryFor(library)
+    };
+    for (Source source in otherLibrarySources) {
+      LibraryElement original = context.computeLibraryElement(source);
+      String uri = source.uri.toString();
+      linkedSummaries[uri] = getLinkedSummaryFor(original);
+    }
+    if (dumpSummaries) {
+      unlinkedSummaries.forEach((String path, UnlinkedUnit unit) {
+        print('Unlinked $path: ${JSON.encode(canonicalize(unit))}');
+      });
+      linkedSummaries.forEach((String path, LinkedLibrary lib) {
+        print('Linked $path: ${JSON.encode(canonicalize(lib))}');
+      });
+    }
+    return new TestSummaryResynthesizer(
+        null, context, unlinkedSummaries, linkedSummaries);
+  }
+
+  /**
+   * Resynthesize the library element associated with [uri] using
+   * [resynthesizer], and verify that it only had to consult one summary in
+   * order to do so.  [original] is consulted merely to verify that no
+   * unnecessary resynthesis work was performed.
+   */
+  LibraryElementImpl resynthesizeLibraryElement(
+      TestSummaryResynthesizer resynthesizer,
+      String uri,
+      LibraryElement original) {
+    LibraryElementImpl resynthesized = resynthesizer.getLibraryElement(uri);
+    checkMinimalResynthesisWork(resynthesizer, original);
+    return resynthesized;
+  }
+
+  test_core() {
+    addLibrary('dart:async');
+    addLibrary('dart:math');
+    String uri = 'dart:core';
+    LibraryElementImpl original =
+        context.computeLibraryElement(context.sourceFactory.forUri(uri));
+    LibraryElementImpl resynthesized = resynthesizeLibraryElement(
+        encodeLibraryElement(original), uri, original);
+    checkLibraryElements(original, resynthesized);
+  }
+}
+
+@reflectiveTest
+abstract class ResynthesizeTest extends AbstractSingleUnitTest {
   Set<Source> otherLibrarySources = new Set<Source>();
   bool constantInitializersAreInvalid = false;
 
+  bool get checkPropagatedTypes => true;
+
   void addLibrary(String uri) {
-    otherLibrarySources.add(analysisContext2.sourceFactory.forUri(uri));
+    otherLibrarySources.add(context.sourceFactory.forUri(uri));
   }
 
   void addLibrarySource(String filePath, String contents) {
-    otherLibrarySources.add(addNamedSource(filePath, contents));
+    otherLibrarySources.add(addSource(filePath, contents));
+  }
+
+  void assertNoErrors(Source source) {
+    GatheringErrorListener errorListener = new GatheringErrorListener();
+    for (AnalysisError error in context.computeErrors(source)) {
+      expect(error.source, source);
+      ErrorCode errorCode = error.errorCode;
+      if (errorCode == HintCode.UNUSED_ELEMENT ||
+          errorCode == HintCode.UNUSED_FIELD) {
+        continue;
+      }
+      if (errorCode == HintCode.UNUSED_CATCH_CLAUSE ||
+          errorCode == HintCode.UNUSED_CATCH_STACK ||
+          errorCode == HintCode.UNUSED_LOCAL_VARIABLE) {
+        continue;
+      }
+      errorListener.onError(error);
+    }
+    errorListener.assertNoErrors();
   }
 
   /**
@@ -59,16 +190,7 @@
   }
 
   void checkLibrary(String text,
-      {bool allowErrors: false, bool dumpSummaries: false}) {
-    Source source = addSource(text);
-    LibraryElementImpl original = resolve2(source);
-    LibraryElementImpl resynthesized = resynthesizeLibraryElement(
-        encodeLibrary(original,
-            allowErrors: allowErrors, dumpSummaries: dumpSummaries),
-        source.uri.toString(),
-        original);
-    checkLibraryElements(original, resynthesized);
-  }
+      {bool allowErrors: false, bool dumpSummaries: false});
 
   void checkLibraryElements(
       LibraryElementImpl original, LibraryElementImpl resynthesized) {
@@ -121,7 +243,7 @@
    * resynthesizing [library].
    */
   void checkMinimalResynthesisWork(
-      _TestSummaryResynthesizer resynthesizer, LibraryElement library) {
+      TestSummaryResynthesizer resynthesizer, LibraryElement library) {
     // Check that no other summaries needed to be resynthesized to resynthesize
     // the library element.
     expect(resynthesizer.resynthesisCount, 1);
@@ -179,57 +301,48 @@
   }
 
   void compareClassElements(
-      ClassElementImpl resynthesized, ClassElementImpl original, String desc) {
-    compareElements(resynthesized, original, desc);
-    expect(resynthesized.fields.length, original.fields.length,
-        reason: '$desc fields.length');
-    for (int i = 0; i < resynthesized.fields.length; i++) {
-      String name = original.fields[i].name;
-      compareFieldElements(
-          resynthesized.fields[i], original.fields[i], '$desc.field $name');
+      ClassElement resynthesized, ClassElement original, String desc) {
+    ClassElementImpl r = getActualElement(resynthesized, desc);
+    ClassElementImpl o = getActualElement(original, desc);
+    compareElements(r, o, desc);
+    expect(r.fields.length, o.fields.length, reason: '$desc fields.length');
+    for (int i = 0; i < r.fields.length; i++) {
+      String name = o.fields[i].name;
+      compareFieldElements(r.fields[i], o.fields[i], '$desc.field $name');
     }
-    compareTypes(
-        resynthesized.supertype, original.supertype, '$desc supertype');
-    expect(resynthesized.interfaces.length, original.interfaces.length);
-    for (int i = 0; i < resynthesized.interfaces.length; i++) {
-      compareTypes(resynthesized.interfaces[i], original.interfaces[i],
-          '$desc interface ${original.interfaces[i].name}');
+    compareTypes(r.supertype, o.supertype, '$desc supertype');
+    expect(r.interfaces.length, o.interfaces.length);
+    for (int i = 0; i < r.interfaces.length; i++) {
+      compareTypes(r.interfaces[i], o.interfaces[i],
+          '$desc interface ${o.interfaces[i].name}');
     }
-    expect(resynthesized.mixins.length, original.mixins.length);
-    for (int i = 0; i < resynthesized.mixins.length; i++) {
-      compareTypes(resynthesized.mixins[i], original.mixins[i],
-          '$desc mixin ${original.mixins[i].name}');
+    expect(r.mixins.length, o.mixins.length);
+    for (int i = 0; i < r.mixins.length; i++) {
+      compareTypes(r.mixins[i], o.mixins[i], '$desc mixin ${o.mixins[i].name}');
     }
-    expect(resynthesized.typeParameters.length, original.typeParameters.length);
-    for (int i = 0; i < resynthesized.typeParameters.length; i++) {
-      compareTypeParameterElements(
-          resynthesized.typeParameters[i],
-          original.typeParameters[i],
-          '$desc type parameter ${original.typeParameters[i].name}');
+    expect(r.typeParameters.length, o.typeParameters.length);
+    for (int i = 0; i < r.typeParameters.length; i++) {
+      compareTypeParameterElements(r.typeParameters[i], o.typeParameters[i],
+          '$desc type parameter ${o.typeParameters[i].name}');
     }
-    expect(resynthesized.constructors.length, original.constructors.length,
+    expect(r.constructors.length, o.constructors.length,
         reason: '$desc constructors.length');
-    for (int i = 0; i < resynthesized.constructors.length; i++) {
-      compareConstructorElements(
-          resynthesized.constructors[i],
-          original.constructors[i],
-          '$desc constructor ${original.constructors[i].name}');
+    for (int i = 0; i < r.constructors.length; i++) {
+      compareConstructorElements(r.constructors[i], o.constructors[i],
+          '$desc constructor ${o.constructors[i].name}');
     }
-    expect(resynthesized.accessors.length, original.accessors.length);
-    for (int i = 0; i < resynthesized.accessors.length; i++) {
-      comparePropertyAccessorElements(
-          resynthesized.accessors[i],
-          original.accessors[i],
-          '$desc accessor ${original.accessors[i].name}');
+    expect(r.accessors.length, o.accessors.length);
+    for (int i = 0; i < r.accessors.length; i++) {
+      comparePropertyAccessorElements(r.accessors[i], o.accessors[i],
+          '$desc accessor ${o.accessors[i].name}');
     }
-    expect(resynthesized.methods.length, original.methods.length);
-    for (int i = 0; i < resynthesized.methods.length; i++) {
-      compareMethodElements(resynthesized.methods[i], original.methods[i],
-          '$desc.${original.methods[i].name}');
+    expect(r.methods.length, o.methods.length);
+    for (int i = 0; i < r.methods.length; i++) {
+      compareMethodElements(
+          r.methods[i], o.methods[i], '$desc.${o.methods[i].name}');
     }
-    compareTypes(resynthesized.type, original.type, desc);
-    expect(resynthesized.hasBeenInferred, original.hasBeenInferred,
-        reason: desc);
+    compareTypes(r.type, o.type, desc);
+    expect(r.hasBeenInferred, o.hasBeenInferred, reason: desc);
   }
 
   void compareCompilationUnitElements(CompilationUnitElementImpl resynthesized,
@@ -654,8 +767,10 @@
     compareElements(resynthesized, original, desc);
     compareParameterElementLists(
         resynthesized.parameters, original.parameters, desc);
-    compareTypes(
-        resynthesized.returnType, original.returnType, '$desc return type');
+    if (checkPropagatedTypes || !original.hasImplicitReturnType) {
+      compareTypes(
+          resynthesized.returnType, original.returnType, '$desc return type');
+    }
     if (!shallow) {
       compareTypes(resynthesized.type, original.type, desc);
     }
@@ -880,7 +995,9 @@
       PropertyInducingElementImpl original,
       String desc) {
     compareVariableElements(resynthesized, original, desc);
-    compareTypes(resynthesized.propagatedType, original.propagatedType, desc);
+    if (checkPropagatedTypes) {
+      compareTypes(resynthesized.propagatedType, original.propagatedType, desc);
+    }
     if (original.getter == null) {
       expect(resynthesized.getter, isNull);
     } else {
@@ -1033,6 +1150,8 @@
     checkPossibleLocalElements(resynthesized, original);
   }
 
+  DartSdk createDartSdk() => AbstractContextTest.SHARED_MOCK_SDK;
+
   /**
    * Determine the analysis options that should be used for this test.
    */
@@ -1040,34 +1159,42 @@
       new AnalysisOptionsImpl()..enableGenericMethods = true;
 
   /**
+   * Return a [SummaryResynthesizer] to resynthesize the library with the
+   * given [librarySource].
+   */
+  SummaryResynthesizer encodeDecodeLibrarySource(Source librarySource);
+
+  /**
    * Serialize the given [library] into a summary.  Then create a
-   * [_TestSummaryResynthesizer] which can deserialize it, along with any
+   * [TestSummaryResynthesizer] which can deserialize it, along with any
    * references it makes to `dart:core`.
    *
    * Errors will lead to a test failure unless [allowErrors] is `true`.
    */
-  _TestSummaryResynthesizer encodeLibrary(LibraryElementImpl library,
+  TestSummaryResynthesizer encodeLibrary(LibraryElementImpl library,
       {bool allowErrors: false, bool dumpSummaries: false}) {
     if (!allowErrors) {
       assertNoErrors(library.source);
     }
     addLibrary('dart:core');
+    addLibrary('dart:async');
+    addLibrary('dart:math');
     return encodeLibraryElement(library, dumpSummaries: dumpSummaries);
   }
 
   /**
    * Convert the library element [library] into a summary, and then create a
-   * [_TestSummaryResynthesizer] which can deserialize it.
+   * [TestSummaryResynthesizer] which can deserialize it.
    *
    * Caller is responsible for checking the library for errors, and adding any
    * dependent libraries using [addLibrary].
    */
-  _TestSummaryResynthesizer encodeLibraryElement(LibraryElementImpl library,
+  TestSummaryResynthesizer encodeLibraryElement(LibraryElementImpl library,
       {bool dumpSummaries: false}) {
     Map<String, UnlinkedUnit> unlinkedSummaries = <String, UnlinkedUnit>{};
     LinkedLibrary getLinkedSummaryFor(LibraryElement lib) {
       LibrarySerializationResult serialized = serializeLibrary(
-          lib, typeProvider, analysisContext.analysisOptions.strongMode);
+          lib, context.typeProvider, context.analysisOptions.strongMode);
       for (int i = 0; i < serialized.unlinkedUnits.length; i++) {
         unlinkedSummaries[serialized.unitUris[i]] =
             new UnlinkedUnit.fromBuffer(serialized.unlinkedUnits[i].toBuffer());
@@ -1078,7 +1205,7 @@
       library.source.uri.toString(): getLinkedSummaryFor(library)
     };
     for (Source source in otherLibrarySources) {
-      LibraryElement original = resolve2(source);
+      LibraryElement original = context.computeLibraryElement(source);
       String uri = source.uri.toString();
       linkedSummaries[uri] = getLinkedSummaryFor(original);
     }
@@ -1090,14 +1217,8 @@
         print('Linked $path: ${JSON.encode(canonicalize(lib))}');
       });
     }
-    return new _TestSummaryResynthesizer(
-        null,
-        analysisContext,
-        analysisContext.typeProvider,
-        analysisContext.sourceFactory,
-        unlinkedSummaries,
-        linkedSummaries,
-        createOptions().strongMode);
+    return new TestSummaryResynthesizer(
+        null, context, unlinkedSummaries, linkedSummaries);
   }
 
   fail_library_hasExtUri() {
@@ -1124,25 +1245,10 @@
     }
   }
 
-  /**
-   * Resynthesize the library element associated with [uri] using
-   * [resynthesizer], and verify that it only had to consult one summary in
-   * order to do so.  [original] is consulted merely to verify that no
-   * unnecessary resynthesis work was performed.
-   */
-  LibraryElementImpl resynthesizeLibraryElement(
-      _TestSummaryResynthesizer resynthesizer,
-      String uri,
-      LibraryElement original) {
-    LibraryElementImpl resynthesized = resynthesizer.getLibraryElement(uri);
-    checkMinimalResynthesisWork(resynthesizer, original);
-    return resynthesized;
-  }
-
   @override
   void setUp() {
     super.setUp();
-    resetWithOptions(createOptions());
+    prepareAnalysisContext(createOptions());
   }
 
   test_class_abstract() {
@@ -2025,6 +2131,15 @@
 ''');
   }
 
+  test_const_reference_type_functionType() {
+    checkLibrary(r'''
+typedef F();
+class C {
+  final f = <F>[];
+}
+''');
+  }
+
   test_const_reference_type_imported() {
     addLibrarySource(
         '/a.dart',
@@ -2057,6 +2172,14 @@
 ''');
   }
 
+  test_const_reference_type_typeParameter() {
+    checkLibrary(r'''
+class C<T> {
+  final f = <T>[];
+}
+''');
+  }
+
   test_const_reference_unresolved_prefix0() {
     checkLibrary(
         r'''
@@ -2548,20 +2671,6 @@
 ''');
   }
 
-  test_core() {
-    if (createOptions().strongMode) {
-      // The fake `dart:core` library is always in spec mode, so don't bother
-      // trying to check that it resynthesizes properly; it won't.
-      return;
-    }
-    String uri = 'dart:core';
-    LibraryElementImpl original =
-        resolve2(analysisContext2.sourceFactory.forUri(uri));
-    LibraryElementImpl resynthesized = resynthesizeLibraryElement(
-        encodeLibraryElement(original), uri, original);
-    checkLibraryElements(original, resynthesized);
-  }
-
   test_enum_documented() {
     checkLibrary('''
 // Extra comment so doc comment offset != 0
@@ -2712,7 +2821,7 @@
   }
 
   test_field_propagatedType_final_dep_inPart() {
-    addNamedSource('/a.dart', 'part of lib; final a = 1;');
+    addSource('/a.dart', 'part of lib; final a = 1;');
     checkLibrary('''
 library lib;
 part "a.dart";
@@ -2759,7 +2868,7 @@
   }
 
   test_function_entry_point_in_part() {
-    addNamedSource('/a.dart', 'part of my.lib; main() {}');
+    addSource('/a.dart', 'part of my.lib; main() {}');
     checkLibrary('library my.lib; part "a.dart";');
   }
 
@@ -2812,12 +2921,12 @@
   }
 
   test_function_type_parameter() {
-    resetWithOptions(createOptions()..enableGenericMethods = true);
+    prepareAnalysisContext(createOptions()..enableGenericMethods = true);
     checkLibrary('T f<T, U>(U u) => null;');
   }
 
   test_function_type_parameter_with_function_typed_parameter() {
-    resetWithOptions(createOptions()..enableGenericMethods = true);
+    prepareAnalysisContext(createOptions()..enableGenericMethods = true);
     checkLibrary('void f<T, U>(T x(U u)) {}');
   }
 
@@ -2826,7 +2935,7 @@
   }
 
   test_generic_gClass_gMethodStatic() {
-    resetWithOptions(createOptions()..enableGenericMethods = true);
+    prepareAnalysisContext(createOptions()..enableGenericMethods = true);
     checkLibrary('''
 class C<T, U> {
   static void m<V, W>(V v, W w) {
@@ -2838,73 +2947,89 @@
   }
 
   test_getElement_constructor_named() {
-    ConstructorElement original = resolve2(addSource('class C { C.named(); }'))
+    String text = 'class C { C.named(); }';
+    ConstructorElement original = context
+        .computeLibraryElement(addTestSource(text))
         .getType('C')
         .getNamedConstructor('named');
     expect(original, isNotNull);
-    ConstructorElement resynthesized = validateGetElement(original);
+    ConstructorElement resynthesized = validateGetElement(text, original);
     compareConstructorElements(resynthesized, original, 'C.constructor named');
   }
 
   test_getElement_constructor_unnamed() {
-    ConstructorElement original =
-        resolve2(addSource('class C { C(); }')).getType('C').unnamedConstructor;
+    String text = 'class C { C(); }';
+    ConstructorElement original = context
+        .computeLibraryElement(addTestSource(text))
+        .getType('C')
+        .unnamedConstructor;
     expect(original, isNotNull);
-    ConstructorElement resynthesized = validateGetElement(original);
+    ConstructorElement resynthesized = validateGetElement(text, original);
     compareConstructorElements(resynthesized, original, 'C.constructor');
   }
 
   test_getElement_field() {
-    FieldElement original =
-        resolve2(addSource('class C { var f; }')).getType('C').getField('f');
+    String text = 'class C { var f; }';
+    FieldElement original = context
+        .computeLibraryElement(addTestSource(text))
+        .getType('C')
+        .getField('f');
     expect(original, isNotNull);
-    FieldElement resynthesized = validateGetElement(original);
+    FieldElement resynthesized = validateGetElement(text, original);
     compareFieldElements(resynthesized, original, 'C.field f');
   }
 
   test_getElement_getter() {
-    PropertyAccessorElement original =
-        resolve2(addSource('class C { get f => null; }'))
-            .getType('C')
-            .getGetter('f');
+    String text = 'class C { get f => null; }';
+    PropertyAccessorElement original = context
+        .computeLibraryElement(addTestSource(text))
+        .getType('C')
+        .getGetter('f');
     expect(original, isNotNull);
-    PropertyAccessorElement resynthesized = validateGetElement(original);
+    PropertyAccessorElement resynthesized = validateGetElement(text, original);
     comparePropertyAccessorElements(resynthesized, original, 'C.getter f');
   }
 
   test_getElement_method() {
-    MethodElement original =
-        resolve2(addSource('class C { f() {} }')).getType('C').getMethod('f');
+    String text = 'class C { f() {} }';
+    MethodElement original = context
+        .computeLibraryElement(addTestSource(text))
+        .getType('C')
+        .getMethod('f');
     expect(original, isNotNull);
-    MethodElement resynthesized = validateGetElement(original);
+    MethodElement resynthesized = validateGetElement(text, original);
     compareMethodElements(resynthesized, original, 'C.method f');
   }
 
   test_getElement_operator() {
-    MethodElement original =
-        resolve2(addSource('class C { operator+(x) => null; }'))
-            .getType('C')
-            .getMethod('+');
+    String text = 'class C { operator+(x) => null; }';
+    MethodElement original = context
+        .computeLibraryElement(addTestSource(text))
+        .getType('C')
+        .getMethod('+');
     expect(original, isNotNull);
-    MethodElement resynthesized = validateGetElement(original);
+    MethodElement resynthesized = validateGetElement(text, original);
     compareMethodElements(resynthesized, original, 'C.operator+');
   }
 
   test_getElement_setter() {
-    PropertyAccessorElement original =
-        resolve2(addSource('class C { void set f(value) {} }'))
-            .getType('C')
-            .getSetter('f');
+    String text = 'class C { void set f(value) {} }';
+    PropertyAccessorElement original = context
+        .computeLibraryElement(addTestSource(text))
+        .getType('C')
+        .getSetter('f');
     expect(original, isNotNull);
-    PropertyAccessorElement resynthesized = validateGetElement(original);
+    PropertyAccessorElement resynthesized = validateGetElement(text, original);
     comparePropertyAccessorElements(resynthesized, original, 'C.setter f');
   }
 
   test_getElement_unit() {
-    Source source = addSource('class C { f() {} }');
-    CompilationUnitElement original = resolve2(source).definingCompilationUnit;
+    String text = 'class C { f() {} }';
+    Source source = addTestSource(text);
+    CompilationUnitElement original =
+        context.computeLibraryElement(source).definingCompilationUnit;
     expect(original, isNotNull);
-    CompilationUnitElement resynthesized = validateGetElement(original);
+    CompilationUnitElement resynthesized = validateGetElement(text, original);
     compareCompilationUnitElements(resynthesized, original);
   }
 
@@ -3426,7 +3551,7 @@
   }
 
   test_metadata_partDirective() {
-    addNamedSource('/foo.dart', 'part of L;');
+    addSource('/foo.dart', 'part of L;');
     checkLibrary('library L; @a part "foo.dart"; const a = null;');
   }
 
@@ -3501,17 +3626,17 @@
   }
 
   test_method_type_parameter() {
-    resetWithOptions(createOptions()..enableGenericMethods = true);
+    prepareAnalysisContext(createOptions()..enableGenericMethods = true);
     checkLibrary('class C { T f<T, U>(U u) => null; }');
   }
 
   test_method_type_parameter_in_generic_class() {
-    resetWithOptions(createOptions()..enableGenericMethods = true);
+    prepareAnalysisContext(createOptions()..enableGenericMethods = true);
     checkLibrary('class C<T, U> { V f<V, W>(T t, U u, W w) => null; }');
   }
 
   test_method_type_parameter_with_function_typed_parameter() {
-    resetWithOptions(createOptions()..enableGenericMethods = true);
+    prepareAnalysisContext(createOptions()..enableGenericMethods = true);
     checkLibrary('class C { void f<T, U>(T x(U u)) {} }');
   }
 
@@ -3644,8 +3769,8 @@
   }
 
   test_parts() {
-    addNamedSource('/a.dart', 'part of my.lib;');
-    addNamedSource('/b.dart', 'part of my.lib;');
+    addSource('/a.dart', 'part of my.lib;');
+    addSource('/b.dart', 'part of my.lib;');
     checkLibrary('library my.lib; part "a.dart"; part "b.dart";');
   }
 
@@ -3781,26 +3906,24 @@
   }
 
   test_type_reference_lib_to_part() {
-    addNamedSource(
-        '/a.dart', 'part of l; class C {} enum E { v } typedef F();');
+    addSource('/a.dart', 'part of l; class C {} enum E { v } typedef F();');
     checkLibrary('library l; part "a.dart"; C c; E e; F f;');
   }
 
   test_type_reference_part_to_lib() {
-    addNamedSource('/a.dart', 'part of l; C c; E e; F f;');
+    addSource('/a.dart', 'part of l; C c; E e; F f;');
     checkLibrary(
         'library l; part "a.dart"; class C {} enum E { v } typedef F();');
   }
 
   test_type_reference_part_to_other_part() {
-    addNamedSource(
-        '/a.dart', 'part of l; class C {} enum E { v } typedef F();');
-    addNamedSource('/b.dart', 'part of l; C c; E e; F f;');
+    addSource('/a.dart', 'part of l; class C {} enum E { v } typedef F();');
+    addSource('/b.dart', 'part of l; C c; E e; F f;');
     checkLibrary('library l; part "a.dart"; part "b.dart";');
   }
 
   test_type_reference_part_to_part() {
-    addNamedSource('/a.dart',
+    addSource('/a.dart',
         'part of l; class C {} enum E { v } typedef F(); C c; E e; F f;');
     checkLibrary('library l; part "a.dart";');
   }
@@ -3854,22 +3977,20 @@
 
   test_type_reference_to_import_part() {
     addLibrarySource('/a.dart', 'library l; part "b.dart";');
-    addNamedSource(
-        '/b.dart', 'part of l; class C {} enum E { v } typedef F();');
+    addSource('/b.dart', 'part of l; class C {} enum E { v } typedef F();');
     checkLibrary('import "a.dart"; C c; E e; F f;');
   }
 
   test_type_reference_to_import_part2() {
     addLibrarySource('/a.dart', 'library l; part "p1.dart"; part "p2.dart";');
-    addNamedSource('/p1.dart', 'part of l; class C1 {}');
-    addNamedSource('/p2.dart', 'part of l; class C2 {}');
+    addSource('/p1.dart', 'part of l; class C1 {}');
+    addSource('/p2.dart', 'part of l; class C2 {}');
     checkLibrary('import "a.dart"; C1 c1; C2 c2;');
   }
 
   test_type_reference_to_import_part_in_subdir() {
     addLibrarySource('/a/b.dart', 'library l; part "c.dart";');
-    addNamedSource(
-        '/a/c.dart', 'part of l; class C {} enum E { v } typedef F();');
+    addSource('/a/c.dart', 'part of l; class C {} enum E { v } typedef F();');
     checkLibrary('import "a/b.dart"; C c; E e; F f;');
   }
 
@@ -3985,18 +4106,18 @@
   }
 
   test_variable_getterInLib_setterInPart() {
-    addNamedSource('/a.dart', 'part of my.lib; void set x(int _) {}');
+    addSource('/a.dart', 'part of my.lib; void set x(int _) {}');
     checkLibrary('library my.lib; part "a.dart"; int get x => 42;');
   }
 
   test_variable_getterInPart_setterInLib() {
-    addNamedSource('/a.dart', 'part of my.lib; int get x => 42;');
+    addSource('/a.dart', 'part of my.lib; int get x => 42;');
     checkLibrary('library my.lib; part "a.dart"; void set x(int _) {}');
   }
 
   test_variable_getterInPart_setterInPart() {
-    addNamedSource('/a.dart', 'part of my.lib; int get x => 42;');
-    addNamedSource('/b.dart', 'part of my.lib; void set x(int _) {}');
+    addSource('/a.dart', 'part of my.lib; int get x => 42;');
+    addSource('/b.dart', 'part of my.lib; void set x(int _) {}');
     checkLibrary('library my.lib; part "a.dart"; part "b.dart";');
   }
 
@@ -4018,7 +4139,7 @@
   }
 
   test_variable_propagatedType_final_dep_inPart() {
-    addNamedSource('/a.dart', 'part of lib; final a = 1;');
+    addSource('/a.dart', 'part of lib; final a = 1;');
     checkLibrary('library lib; part "a.dart"; final b = a / 2;');
   }
 
@@ -4034,8 +4155,8 @@
   }
 
   test_variable_setterInPart_getterInPart() {
-    addNamedSource('/a.dart', 'part of my.lib; void set x(int _) {}');
-    addNamedSource('/b.dart', 'part of my.lib; int get x => 42;');
+    addSource('/a.dart', 'part of my.lib; void set x(int _) {}');
+    addSource('/b.dart', 'part of my.lib; int get x => 42;');
     checkLibrary('library my.lib; part "a.dart"; part "b.dart";');
   }
 
@@ -4045,11 +4166,12 @@
 
   /**
    * Encode the library containing [original] into a summary and then use
-   * [_TestSummaryResynthesizer.getElement] to retrieve just the original
+   * [TestSummaryResynthesizer.getElement] to retrieve just the original
    * element from the resynthesized summary.
    */
-  Element validateGetElement(Element original) {
-    _TestSummaryResynthesizer resynthesizer = encodeLibrary(original.library);
+  Element validateGetElement(String text, Element original) {
+    SummaryResynthesizer resynthesizer =
+        encodeDecodeLibrarySource(original.library.source);
     ElementLocationImpl location = original.location;
     Element result = resynthesizer.getElement(location);
     checkMinimalResynthesisWork(resynthesizer, original.library);
@@ -4067,7 +4189,7 @@
   }
 }
 
-class _TestSummaryResynthesizer extends SummaryResynthesizer {
+class TestSummaryResynthesizer extends SummaryResynthesizer {
   final Map<String, UnlinkedUnit> unlinkedSummaries;
   final Map<String, LinkedLibrary> linkedSummaries;
 
@@ -4083,15 +4205,10 @@
    */
   final Set<String> linkedSummariesRequested = new Set<String>();
 
-  _TestSummaryResynthesizer(
-      SummaryResynthesizer parent,
-      AnalysisContext context,
-      TypeProvider typeProvider,
-      SourceFactory sourceFactory,
-      this.unlinkedSummaries,
-      this.linkedSummaries,
-      bool strongMode)
-      : super(parent, context, typeProvider, sourceFactory, strongMode);
+  TestSummaryResynthesizer(SummaryResynthesizer parent, AnalysisContext context,
+      this.unlinkedSummaries, this.linkedSummaries)
+      : super(parent, context, context.typeProvider, context.sourceFactory,
+            context.analysisOptions.strongMode);
 
   @override
   LinkedLibrary getLinkedSummary(String uri) {
diff --git a/pkg/analyzer/test/src/summary/summarize_ast_strong_test.dart b/pkg/analyzer/test/src/summary/summarize_ast_strong_test.dart
new file mode 100644
index 0000000..7784cae
--- /dev/null
+++ b/pkg/analyzer/test/src/summary/summarize_ast_strong_test.dart
@@ -0,0 +1,224 @@
+// Copyright (c) 2016, 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 analyzer.test.src.summary.summarize_ast_test;
+
+import 'package:unittest/unittest.dart';
+
+import '../../reflective_tests.dart';
+import 'summarize_ast_test.dart';
+
+main() {
+  groupSep = ' | ';
+  runReflectiveTests(LinkedSummarizeAstStrongTest);
+}
+
+/**
+ * Override of [LinkedSummarizeAstTest] which uses strong mode.
+ */
+@reflectiveTest
+class LinkedSummarizeAstStrongTest extends LinkedSummarizeAstTest {
+  @override
+  bool get strongMode => true;
+
+  @override
+  test_bottom_reference_shared() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_closure_executable_with_imported_return_type() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_closure_executable_with_return_type_from_closure() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_closure_executable_with_unimported_return_type() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_field_formal_param_inferred_type_explicit() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_field_formal_param_inferred_type_implicit() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_field_inferred_type_nonstatic_implicit_initialized() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_field_inferred_type_nonstatic_implicit_uninitialized() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_field_inferred_type_static_implicit_initialized() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_field_propagated_type_final_immediate() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_fully_linked_references_follow_other_references() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_getter_inferred_type_nonstatic_implicit_return() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_implicit_dependencies_follow_other_dependencies() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_inferred_type_refers_to_bound_type_param() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_inferred_type_refers_to_function_typed_parameter_type_generic_class() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_inferred_type_refers_to_function_typed_parameter_type_other_lib() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_inferred_type_refers_to_method_function_typed_parameter_type() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_inferred_type_refers_to_setter_function_typed_parameter_type() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_initializer_executable_with_bottom_return_type() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_initializer_executable_with_imported_return_type() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_initializer_executable_with_return_type_from_closure() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_initializer_executable_with_return_type_from_closure_field() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_initializer_executable_with_return_type_from_closure_local() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_initializer_executable_with_unimported_return_type() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_linked_reference_reuse() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_linked_type_dependency_reuse() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_method_inferred_type_nonstatic_implicit_param() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_method_inferred_type_nonstatic_implicit_return() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_setter_inferred_type_nonstatic_implicit_param() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_setter_inferred_type_nonstatic_implicit_return() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_syntheticFunctionType_genericClosure() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_syntheticFunctionType_genericClosure_inGenericFunction() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_syntheticFunctionType_inGenericClass() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_syntheticFunctionType_inGenericFunction() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_syntheticFunctionType_noArguments() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_syntheticFunctionType_withArguments() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_variable_inferred_type_implicit_initialized() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_variable_propagated_type_final_immediate() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_variable_propagated_type_new_reference() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_variable_propagated_type_omit_dynamic() {
+    // TODO(paulberry): fix.
+  }
+}
diff --git a/pkg/analyzer/test/src/summary/summarize_ast_test.dart b/pkg/analyzer/test/src/summary/summarize_ast_test.dart
index 4e4cc1e..60ec0cb 100644
--- a/pkg/analyzer/test/src/summary/summarize_ast_test.dart
+++ b/pkg/analyzer/test/src/summary/summarize_ast_test.dart
@@ -12,7 +12,7 @@
 import 'package:analyzer/src/generated/error.dart';
 import 'package:analyzer/src/generated/parser.dart';
 import 'package:analyzer/src/summary/idl.dart';
-import 'package:analyzer/src/summary/prelink.dart';
+import 'package:analyzer/src/summary/link.dart';
 import 'package:analyzer/src/summary/summarize_ast.dart';
 import 'package:unittest/unittest.dart';
 
@@ -21,15 +21,136 @@
 
 main() {
   groupSep = ' | ';
-  runReflectiveTests(UnlinkedSummarizeAstTest);
+  runReflectiveTests(LinkedSummarizeAstSpecTest);
+}
+
+@reflectiveTest
+class LinkedSummarizeAstSpecTest extends LinkedSummarizeAstTest {
+  @override
+  bool get strongMode => false;
+
+  @override
+  test_bottom_reference_shared() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_closure_executable_with_bottom_return_type() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_closure_executable_with_imported_return_type() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_closure_executable_with_return_type_from_closure() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_closure_executable_with_unimported_return_type() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_field_propagated_type_final_immediate() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_fully_linked_references_follow_other_references() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_implicit_dependencies_follow_other_dependencies() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_initializer_executable_with_bottom_return_type() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_initializer_executable_with_imported_return_type() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_initializer_executable_with_return_type_from_closure() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_initializer_executable_with_return_type_from_closure_field() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_initializer_executable_with_return_type_from_closure_local() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_initializer_executable_with_unimported_return_type() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_linked_reference_reuse() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_linked_type_dependency_reuse() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_syntheticFunctionType_inGenericClass() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_syntheticFunctionType_inGenericFunction() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_syntheticFunctionType_noArguments() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_syntheticFunctionType_withArguments() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_variable_propagated_type_final_immediate() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_variable_propagated_type_new_reference() {
+    // TODO(paulberry): fix.
+  }
+
+  @override
+  test_variable_propagated_type_omit_dynamic() {
+    // TODO(paulberry): fix.
+  }
 }
 
 /**
- * Override of [SummaryTest] which creates unlinked summaries directly from the
+ * Override of [SummaryTest] which creates linked summaries directly from the
  * AST.
  */
 @reflectiveTest
-class UnlinkedSummarizeAstTest extends Object with SummaryTest {
+abstract class LinkedSummarizeAstTest extends Object with SummaryTest {
   @override
   LinkedLibrary linked;
 
@@ -49,10 +170,7 @@
   bool get expectAbsoluteUrisInDependencies => false;
 
   @override
-  bool get skipFullyLinkedData => true;
-
-  @override
-  bool get strongMode => false;
+  bool get skipFullyLinkedData => false;
 
   @override
   addNamedSource(String filePath, String contents) {
@@ -65,39 +183,36 @@
   @override
   void serializeLibraryText(String text, {bool allowErrors: false}) {
     Uri testDartUri = Uri.parse(absUri('/test.dart'));
-    String resolveToAbsoluteUri(String relativeUri) =>
-        testDartUri.resolve(relativeUri).toString();
     CompilationUnit unit = _parseText(text);
     UnlinkedUnit definingUnit =
         new UnlinkedUnit.fromBuffer(serializeAstUnlinked(unit).toBuffer());
-    UnlinkedUnit getPart(String relativeUri) {
-      String absoluteUri = resolveToAbsoluteUri(relativeUri);
-      UnlinkedUnit unit = uriToUnit[absoluteUri];
+    uriToUnit[testDartUri.toString()] = definingUnit;
+    LinkedLibrary getDependency(String absoluteUri) {
+      Map<String, LinkedLibrary> sdkLibraries =
+          SerializedMockSdk.instance.uriToLinkedLibrary;
+      LinkedLibrary linkedLibrary = sdkLibraries[absoluteUri];
+      if (linkedLibrary == null && !allowMissingFiles) {
+        fail('Linker unexpectedly requested LinkedLibrary for "$absoluteUri".'
+            '  Libraries available: ${sdkLibraries.keys}');
+      }
+      return linkedLibrary;
+    }
+    UnlinkedUnit getUnit(String absoluteUri) {
+      UnlinkedUnit unit = uriToUnit[absoluteUri] ??
+          SerializedMockSdk.instance.uriToUnlinkedUnit[absoluteUri];
       if (unit == null && !allowMissingFiles) {
-        fail('Prelinker unexpectedly requested unit for "$relativeUri"'
-            ' (resolves to "$absoluteUri").');
+        fail('Linker unexpectedly requested unit for "$absoluteUri".');
       }
       return unit;
     }
-    UnlinkedPublicNamespace getImport(String relativeUri) {
-      String absoluteUri = resolveToAbsoluteUri(relativeUri);
-      UnlinkedPublicNamespace namespace = sdkPublicNamespace[absoluteUri];
-      if (namespace == null) {
-        namespace = uriToUnit[absoluteUri]?.publicNamespace;
-      }
-      if (namespace == null && !allowMissingFiles) {
-        fail('Prelinker unexpectedly requested namespace for "$relativeUri"'
-            ' (resolves to "$absoluteUri").'
-            '  Namespaces available: ${uriToUnit.keys}');
-      }
-      return namespace;
-    }
-    linked = new LinkedLibrary.fromBuffer(
-        prelink(definingUnit, getPart, getImport).toBuffer());
+    linked = link(uriToUnit.keys.toSet(), getDependency, getUnit)[
+        testDartUri.toString()];
+    expect(linked, isNotNull);
     validateLinkedLibrary(linked);
     unlinkedUnits = <UnlinkedUnit>[definingUnit];
     for (String relativeUri in definingUnit.publicNamespace.parts) {
-      UnlinkedUnit unit = uriToUnit[resolveToAbsoluteUri(relativeUri)];
+      UnlinkedUnit unit = uriToUnit[
+          resolveRelativeUri(testDartUri, Uri.parse(relativeUri)).toString()];
       if (unit == null) {
         if (!allowMissingFiles) {
           fail('Test referred to unknown unit $relativeUri');
@@ -108,6 +223,13 @@
     }
   }
 
+  test_class_no_superclass() {
+    UnlinkedClass cls = serializeClassText('part of dart.core; class Object {}',
+        className: 'Object');
+    expect(cls.supertype, isNull);
+    expect(cls.hasNoSupertype, isTrue);
+  }
+
   CompilationUnit _parseText(String text) {
     CharSequenceReader reader = new CharSequenceReader(text);
     Scanner scanner =
diff --git a/pkg/analyzer/test/src/summary/summary_common.dart b/pkg/analyzer/test/src/summary/summary_common.dart
index ae3d8ec..c690ab8 100644
--- a/pkg/analyzer/test/src/summary/summary_common.dart
+++ b/pkg/analyzer/test/src/summary/summary_common.dart
@@ -26,40 +26,6 @@
 import '../../generated/analysis_context_factory.dart';
 
 /**
- * The public namespaces of the sdk are computed once so that we don't bog
- * down the test.  Structured as a map from absolute URI to the corresponding
- * public namespace.
- *
- * Note: should an exception occur during computation of this variable, it
- * will silently be set to null to allow other tests to run.
- */
-final Map<String, UnlinkedPublicNamespace> sdkPublicNamespace = () {
-  try {
-    AnalysisContext analysisContext = AnalysisContextFactory.contextWithCore();
-    Map<String, UnlinkedPublicNamespace> uriToNamespace =
-        <String, UnlinkedPublicNamespace>{};
-    List<LibraryElement> libraries = [
-      analysisContext.typeProvider.objectType.element.library,
-      analysisContext.typeProvider.futureType.element.library
-    ];
-    for (LibraryElement library in libraries) {
-      summarize_elements.LibrarySerializationResult serializedLibrary =
-          summarize_elements.serializeLibrary(
-              library, analysisContext.typeProvider, false);
-      for (int i = 0; i < serializedLibrary.unlinkedUnits.length; i++) {
-        uriToNamespace[serializedLibrary.unitUris[i]] =
-            new UnlinkedUnit.fromBuffer(
-                    serializedLibrary.unlinkedUnits[i].toBuffer())
-                .publicNamespace;
-      }
-    }
-    return uriToNamespace;
-  } catch (_) {
-    return null;
-  }
-}();
-
-/**
  * Convert a summary object (or a portion of one) into a canonical form that
  * can be easily compared using [expect].  If [orderByName] is true, and the
  * object is a [List], it is sorted by the `name` field of its elements.
@@ -116,6 +82,51 @@
 typedef void _EntityRefValidator(EntityRef entityRef);
 
 /**
+ * [SerializedMockSdk] is a singleton class representing the result of
+ * serializing the mock SDK to summaries.  It is computed once and then shared
+ * among test invocations so that we don't bog down the tests.
+ *
+ * Note: should an exception occur during computation of [instance], it will
+ * silently be set to null to allow other tests to complete quickly.
+ */
+class SerializedMockSdk {
+  static final SerializedMockSdk instance = _serializeMockSdk();
+
+  final Map<String, UnlinkedUnit> uriToUnlinkedUnit;
+
+  final Map<String, LinkedLibrary> uriToLinkedLibrary;
+  SerializedMockSdk._(this.uriToUnlinkedUnit, this.uriToLinkedLibrary);
+
+  static SerializedMockSdk _serializeMockSdk() {
+    try {
+      AnalysisContext analysisContext =
+          AnalysisContextFactory.contextWithCore();
+      Map<String, UnlinkedUnit> uriToUnlinkedUnit = <String, UnlinkedUnit>{};
+      Map<String, LinkedLibrary> uriToLinkedLibrary = <String, LinkedLibrary>{};
+      List<LibraryElement> libraries = [
+        analysisContext.typeProvider.objectType.element.library,
+        analysisContext.typeProvider.futureType.element.library
+      ];
+      for (LibraryElement library in libraries) {
+        summarize_elements.LibrarySerializationResult serializedLibrary =
+            summarize_elements.serializeLibrary(
+                library, analysisContext.typeProvider, false);
+        uriToLinkedLibrary[library.source.uri.toString()] =
+            new LinkedLibrary.fromBuffer(serializedLibrary.linked.toBuffer());
+        for (int i = 0; i < serializedLibrary.unlinkedUnits.length; i++) {
+          uriToUnlinkedUnit[serializedLibrary.unitUris[i]] =
+              new UnlinkedUnit.fromBuffer(
+                  serializedLibrary.unlinkedUnits[i].toBuffer());
+        }
+      }
+      return new SerializedMockSdk._(uriToUnlinkedUnit, uriToLinkedLibrary);
+    } catch (_) {
+      return null;
+    }
+  }
+}
+
+/**
  * Base class containing most summary tests.  This allows summary tests to be
  * re-used to exercise all the different ways in which summaries can be
  * generated (e.g. direct from the AST, from the element model, from a
@@ -200,6 +211,21 @@
     ]);
   }
 
+  void checkConstCycle(String className,
+      {String name: '', bool hasCycle: true}) {
+    UnlinkedClass cls = findClass(className);
+    int constCycleSlot =
+        findExecutable(name, executables: cls.executables).constCycleSlot;
+    expect(constCycleSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(
+          definingUnit.constCycles,
+          hasCycle
+              ? contains(constCycleSlot)
+              : isNot(contains(constCycleSlot)));
+    }
+  }
+
   /**
    * Verify that the [dependency]th element of the dependency table represents
    * a file reachable via the given [absoluteUri] and [relativeUri].
@@ -2604,6 +2630,82 @@
     ]);
   }
 
+  test_constExpr_pushReference_enumValue() {
+    UnlinkedVariable variable = serializeVariableText('''
+enum C {V1, V2, V3}
+const v = C.V1;
+''');
+    _assertUnlinkedConst(variable.constExpr, operators: [
+      UnlinkedConstOperation.pushReference
+    ], referenceValidators: [
+      (EntityRef r) => checkTypeRef(r, null, null, 'V1',
+              expectedKind: ReferenceKind.propertyAccessor,
+              prefixExpectations: [
+                new _PrefixExpectation(ReferenceKind.classOrEnum, 'C')
+              ])
+    ]);
+  }
+
+  test_constExpr_pushReference_enumValue_viaImport() {
+    addNamedSource(
+        '/a.dart',
+        '''
+enum C {V1, V2, V3}
+''');
+    UnlinkedVariable variable = serializeVariableText('''
+import 'a.dart';
+const v = C.V1;
+''');
+    _assertUnlinkedConst(variable.constExpr, operators: [
+      UnlinkedConstOperation.pushReference
+    ], referenceValidators: [
+      (EntityRef r) => checkTypeRef(r, null, null, 'V1',
+              expectedKind: ReferenceKind.propertyAccessor,
+              prefixExpectations: [
+                new _PrefixExpectation(ReferenceKind.classOrEnum, 'C',
+                    absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart')
+              ])
+    ]);
+  }
+
+  test_constExpr_pushReference_enumValues() {
+    UnlinkedVariable variable = serializeVariableText('''
+enum C {V1, V2, V3}
+const v = C.values;
+''');
+    _assertUnlinkedConst(variable.constExpr, operators: [
+      UnlinkedConstOperation.pushReference
+    ], referenceValidators: [
+      (EntityRef r) => checkTypeRef(r, null, null, 'values',
+              expectedKind: ReferenceKind.propertyAccessor,
+              prefixExpectations: [
+                new _PrefixExpectation(ReferenceKind.classOrEnum, 'C')
+              ])
+    ]);
+  }
+
+  test_constExpr_pushReference_enumValues_viaImport() {
+    addNamedSource(
+        '/a.dart',
+        '''
+enum C {V1, V2, V3}
+''');
+    UnlinkedVariable variable = serializeVariableText('''
+import 'a.dart';
+const v = C.values;
+''');
+    _assertUnlinkedConst(variable.constExpr, operators: [
+      UnlinkedConstOperation.pushReference
+    ], referenceValidators: [
+      (EntityRef r) => checkTypeRef(r, null, null, 'values',
+              expectedKind: ReferenceKind.propertyAccessor,
+              prefixExpectations: [
+                new _PrefixExpectation(ReferenceKind.classOrEnum, 'C',
+                    absoluteUri: absUri('/a.dart'), relativeUri: 'a.dart')
+              ])
+    ]);
+  }
+
   test_constExpr_pushReference_field() {
     UnlinkedVariable variable = serializeVariableText('''
 class C {
@@ -3338,6 +3440,7 @@
     expect(parameter.kind, UnlinkedParamKind.named);
     expect(parameter.initializer, isNotNull);
     expect(parameter.defaultValueCode, '42');
+    _assertCodeRange(parameter.codeRange, 13, 10);
     _assertUnlinkedConst(parameter.defaultValue,
         operators: [UnlinkedConstOperation.pushInt], ints: [42]);
   }
@@ -3369,6 +3472,7 @@
     expect(parameter.kind, UnlinkedParamKind.positional);
     expect(parameter.initializer, isNotNull);
     expect(parameter.defaultValueCode, '42');
+    _assertCodeRange(parameter.codeRange, 13, 11);
     _assertUnlinkedConst(parameter.defaultValue,
         operators: [UnlinkedConstOperation.pushInt], ints: [42]);
   }
@@ -3413,6 +3517,7 @@
     expect(executable.nameOffset, text.indexOf('foo'));
     expect(executable.periodOffset, text.indexOf('.foo'));
     expect(executable.nameEnd, text.indexOf('()'));
+    _assertCodeRange(executable.codeRange, 10, 8);
   }
 
   test_constructor_non_const() {
@@ -3820,17 +3925,9 @@
   const E() : x = null;
 }
 ''');
-    int classCConstCycleSlot = findClass('C').executables[0].constCycleSlot;
-    expect(classCConstCycleSlot, isNot(0));
-    int classDConstCycleSlot = findClass('D').executables[0].constCycleSlot;
-    expect(classDConstCycleSlot, isNot(0));
-    int classEConstCycleSlot = findClass('E').executables[0].constCycleSlot;
-    expect(classEConstCycleSlot, isNot(0));
-    if (!skipFullyLinkedData) {
-      expect(definingUnit.constCycles, contains(classCConstCycleSlot));
-      expect(definingUnit.constCycles, contains(classDConstCycleSlot));
-      expect(definingUnit.constCycles, isNot(contains(classEConstCycleSlot)));
-    }
+    checkConstCycle('C');
+    checkConstCycle('D');
+    checkConstCycle('E', hasCycle: false);
   }
 
   test_constructor_withCycles_nonConst() {
@@ -3848,6 +3945,516 @@
     expect(findClass('D').executables[0].constCycleSlot, 0);
   }
 
+  test_constructorCycle_redirectToImplicitConstructor() {
+    serializeLibraryText(
+        '''
+class C {
+  const factory C() = D;
+}
+class D extends C {}
+''',
+        allowErrors: true);
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_redirectToNonConstConstructor() {
+    // It's not valid Dart but we need to make sure it doesn't crash
+    // summary generation.
+    serializeLibraryText(
+        '''
+class C {
+  const factory C() = D;
+}
+class D extends C {
+  D();
+}
+''',
+        allowErrors: true);
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_redirectToSymbolConstructor() {
+    // The symbol constructor has some special case behaviors in analyzer.
+    // Make sure those special case behaviors don't cause problems.
+    serializeLibraryText(
+        '''
+class C {
+  const factory C(String name) = Symbol;
+}
+''',
+        allowErrors: true);
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_referenceToClass() {
+    serializeLibraryText('''
+class C {
+  final x;
+  const C() : x = C;
+}
+''');
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_referenceToEnum() {
+    serializeLibraryText('''
+enum E { v }
+class C {
+  final x;
+  const C() : x = E;
+}
+''');
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_referenceToEnumValue() {
+    serializeLibraryText('''
+enum E { v }
+class C {
+  final x;
+  const C() : x = E.v;
+}
+''');
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_referenceToEnumValues() {
+    serializeLibraryText('''
+enum E { v }
+class C {
+  final x;
+  const C() : x = E.values;
+}
+''');
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_referenceToGenericParameter() {
+    // It's not valid Dart but we need to make sure it doesn't crash
+    // summary generation.
+    serializeLibraryText(
+        '''
+class C<T> {
+  final x;
+  const C() : x = T;
+}
+''',
+        allowErrors: true);
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_referenceToGenericParameter_asSupertype() {
+    // It's not valid Dart but we need to make sure it doesn't crash
+    // summary generation.
+    serializeLibraryText(
+        '''
+class C<T> extends T {
+  const C();
+}
+''',
+        allowErrors: true);
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_referenceToStaticMethod_inOtherClass() {
+    serializeLibraryText('''
+class C {
+  final x;
+  const C() : x = D.f;
+}
+class D {
+  static void f() {}
+}
+''');
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_referenceToStaticMethod_inSameClass() {
+    serializeLibraryText('''
+class C {
+  final x;
+  static void f() {}
+  const C() : x = f;
+}
+''');
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_referenceToTopLevelFunction() {
+    serializeLibraryText('''
+void f() {}
+class C {
+  final x;
+  const C() : x = f;
+}
+''');
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_referenceToTypedef() {
+    serializeLibraryText('''
+typedef F();
+class C {
+  final x;
+  const C() : x = F;
+}
+''');
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_referenceToUndefinedName() {
+    // It's not valid Dart but we need to make sure it doesn't crash
+    // summary generation.
+    serializeLibraryText(
+        '''
+class C {
+  final x;
+  const C() : x = foo;
+}
+''',
+        allowErrors: true);
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_referenceToUndefinedName_viaPrefix() {
+    // It's not valid Dart but we need to make sure it doesn't crash
+    // summary generation.
+    addNamedSource('/a.dart', '');
+    serializeLibraryText(
+        '''
+import 'a.dart' as a;
+class C {
+  final x;
+  const C() : x = a.foo;
+}
+''',
+        allowErrors: true);
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_referenceToUndefinedName_viaPrefix_nonExistentFile() {
+    // It's not valid Dart but we need to make sure it doesn't crash
+    // summary generation.
+    allowMissingFiles = true;
+    serializeLibraryText(
+        '''
+import 'a.dart' as a;
+class C {
+  final x;
+  const C() : x = a.foo;
+}
+''',
+        allowErrors: true);
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_trivial() {
+    serializeLibraryText(
+        '''
+class C {
+  const C() : this();
+}
+''',
+        allowErrors: true);
+    checkConstCycle('C');
+  }
+
+  test_constructorCycle_viaFactoryRedirect() {
+    serializeLibraryText(
+        '''
+class C {
+  const C();
+  const factory C.named() = D;
+}
+class D extends C {
+  final x;
+  const D() : x = y;
+}
+const y = const C.named();
+''',
+        allowErrors: true);
+    checkConstCycle('C', hasCycle: false);
+    checkConstCycle('C', name: 'named');
+    checkConstCycle('D');
+  }
+
+  test_constructorCycle_viaFinalField() {
+    serializeLibraryText(
+        '''
+class C {
+  final x = const C();
+  const C();
+}
+''',
+        allowErrors: true);
+    checkConstCycle('C');
+  }
+
+  test_constructorCycle_viaLength() {
+    // It's not valid Dart but we need to make sure it doesn't crash
+    // summary generation.
+    serializeLibraryText(
+        '''
+class C {
+  final x;
+  const C() : x = y.length;
+}
+const y = const C();
+''',
+        allowErrors: true);
+    checkConstCycle('C');
+  }
+
+  test_constructorCycle_viaNamedConstructor() {
+    serializeLibraryText('''
+class C {
+  final x;
+  const C() : x = const D.named();
+}
+class D {
+  final x;
+  const D.named() : x = const C();
+}
+''');
+    checkConstCycle('C');
+    checkConstCycle('D', name: 'named');
+  }
+
+  test_constructorCycle_viaOrdinaryRedirect() {
+    serializeLibraryText('''
+class C {
+  final x;
+  const C() : this.named();
+  const C.named() : x = const C();
+}
+''');
+    checkConstCycle('C');
+    checkConstCycle('C', name: 'named');
+  }
+
+  test_constructorCycle_viaOrdinaryRedirect_suppressSupertype() {
+    // Since C redirects to C.named, it doesn't implicitly refer to B's unnamed
+    // constructor.  Therefore there is no cycle.
+    serializeLibraryText('''
+class B {
+  final x;
+  const B() : x = const C();
+  const B.named() : x = null;
+}
+class C extends B {
+  const C() : this.named();
+  const C.named() : super.named();
+}
+''');
+    checkConstCycle('B', hasCycle: false);
+    checkConstCycle('B', name: 'named', hasCycle: false);
+    checkConstCycle('C', hasCycle: false);
+    checkConstCycle('C', name: 'named', hasCycle: false);
+  }
+
+  test_constructorCycle_viaRedirectArgument() {
+    serializeLibraryText(
+        '''
+class C {
+  final x;
+  const C() : this.named(y);
+  const C.named(this.x);
+}
+const y = const C();
+''',
+        allowErrors: true);
+    checkConstCycle('C');
+    checkConstCycle('C', name: 'named', hasCycle: false);
+  }
+
+  test_constructorCycle_viaStaticField_inOtherClass() {
+    serializeLibraryText(
+        '''
+class C {
+  final x;
+  const C() : x = D.y;
+}
+class D {
+  static const y = const C();
+}
+''',
+        allowErrors: true);
+    checkConstCycle('C');
+  }
+
+  test_constructorCycle_viaStaticField_inSameClass() {
+    serializeLibraryText(
+        '''
+class C {
+  final x;
+  static const y = const C();
+  const C() : x = y;
+}
+''',
+        allowErrors: true);
+    checkConstCycle('C');
+  }
+
+  test_constructorCycle_viaSuperArgument() {
+    serializeLibraryText(
+        '''
+class B {
+  final x;
+  const B(this.x);
+}
+class C extends B {
+  const C() : super(y);
+}
+const y = const C();
+''',
+        allowErrors: true);
+    checkConstCycle('B', hasCycle: false);
+    checkConstCycle('C');
+  }
+
+  test_constructorCycle_viaSupertype() {
+    serializeLibraryText('''
+class C {
+  final x;
+  const C() : x = const D();
+}
+class D extends C {
+  const D();
+}
+''');
+    checkConstCycle('C');
+    checkConstCycle('D');
+  }
+
+  test_constructorCycle_viaSupertype_Enum() {
+    // It's not valid Dart but we need to make sure it doesn't crash
+    // summary generation.
+    serializeLibraryText(
+        '''
+enum E { v }
+class C extends E {
+  const C();
+}
+''',
+        allowErrors: true);
+    checkConstCycle('C', hasCycle: false);
+  }
+
+  test_constructorCycle_viaSupertype_explicit() {
+    serializeLibraryText('''
+class C {
+  final x;
+  const C() : x = const D();
+  const C.named() : x = const D.named();
+}
+class D extends C {
+  const D() : super();
+  const D.named() : super.named();
+}
+''');
+    checkConstCycle('C');
+    checkConstCycle('C', name: 'named');
+    checkConstCycle('D');
+    checkConstCycle('D', name: 'named');
+  }
+
+  test_constructorCycle_viaSupertype_explicit_undefined() {
+    // It's not valid Dart but we need to make sure it doesn't crash
+    // summary generation.
+    serializeLibraryText(
+        '''
+class C {
+  final x;
+  const C() : x = const D();
+}
+class D extends C {
+  const D() : super.named();
+}
+''',
+        allowErrors: true);
+    checkConstCycle('C', hasCycle: false);
+    checkConstCycle('D', hasCycle: false);
+  }
+
+  test_constructorCycle_viaSupertype_withDefaultTypeArgument() {
+    serializeLibraryText('''
+class C<T> {
+  final x;
+  const C() : x = const D();
+}
+class D extends C {
+  const D();
+}
+''');
+    checkConstCycle('C');
+    checkConstCycle('D');
+  }
+
+  test_constructorCycle_viaSupertype_withTypeArgument() {
+    serializeLibraryText('''
+class C<T> {
+  final x;
+  const C() : x = const D();
+}
+class D extends C<int> {
+  const D();
+}
+''');
+    checkConstCycle('C');
+    checkConstCycle('D');
+  }
+
+  test_constructorCycle_viaTopLevelVariable() {
+    serializeLibraryText(
+        '''
+class C {
+  final x;
+  const C() : x = y;
+}
+const y = const C();
+''',
+        allowErrors: true);
+    checkConstCycle('C');
+  }
+
+  test_constructorCycle_viaTopLevelVariable_imported() {
+    addNamedSource(
+        '/a.dart',
+        '''
+import 'test.dart';
+const y = const C();
+    ''');
+    serializeLibraryText(
+        '''
+import 'a.dart';
+class C {
+  final x;
+  const C() : x = y;
+}
+''',
+        allowErrors: true);
+    checkConstCycle('C');
+  }
+
+  test_constructorCycle_viaTopLevelVariable_importedViaPrefix() {
+    addNamedSource(
+        '/a.dart',
+        '''
+import 'test.dart';
+const y = const C();
+    ''');
+    serializeLibraryText(
+        '''
+import 'a.dart' as a;
+class C {
+  final x;
+  const C() : x = a.y;
+}
+''',
+        allowErrors: true);
+    checkConstCycle('C');
+  }
+
   test_dependencies_export_to_export_unused() {
     addNamedSource('/a.dart', 'export "b.dart";');
     addNamedSource('/b.dart', '');
@@ -4021,6 +4628,19 @@
         ReferenceKind.classOrEnum);
     expect(unlinkedUnits[0].publicNamespace.names[0].name, 'E');
     expect(unlinkedUnits[0].publicNamespace.names[0].numTypeParameters, 0);
+    expect(unlinkedUnits[0].publicNamespace.names[0].members, hasLength(2));
+    expect(unlinkedUnits[0].publicNamespace.names[0].members[0].kind,
+        ReferenceKind.propertyAccessor);
+    expect(unlinkedUnits[0].publicNamespace.names[0].members[0].name, 'values');
+    expect(
+        unlinkedUnits[0].publicNamespace.names[0].members[0].numTypeParameters,
+        0);
+    expect(unlinkedUnits[0].publicNamespace.names[0].members[1].kind,
+        ReferenceKind.propertyAccessor);
+    expect(unlinkedUnits[0].publicNamespace.names[0].members[1].name, 'v1');
+    expect(
+        unlinkedUnits[0].publicNamespace.names[0].members[1].numTypeParameters,
+        0);
   }
 
   test_enum_documented() {
@@ -4060,6 +4680,13 @@
     checkDocumentationComment(value.documentationComment, text);
   }
 
+  test_enum_value_private() {
+    serializeEnumText('enum E { _v }', 'E');
+    expect(unlinkedUnits[0].publicNamespace.names, hasLength(1));
+    expect(unlinkedUnits[0].publicNamespace.names[0].members, hasLength(1));
+    expect(unlinkedUnits[0].publicNamespace.names[0].members[0].name, 'values');
+  }
+
   test_executable_abstract() {
     UnlinkedExecutable executable =
         serializeClassText('abstract class C { f(); }').executables[0];
@@ -4198,12 +4825,14 @@
   bbb: switch (42) {
     ccc: case 0:
       break;
+    ddd: default:
+      break;
   }
 }
 ''';
     UnlinkedExecutable executable = serializeExecutableText(code);
     List<UnlinkedLabel> labels = executable.localLabels;
-    expect(labels, hasLength(3));
+    expect(labels, hasLength(4));
     {
       UnlinkedLabel aaa = labels.singleWhere((l) => l.name == 'aaa');
       expect(aaa, isNotNull);
@@ -4222,6 +4851,12 @@
       expect(ccc.isOnSwitchMember, isTrue);
       expect(ccc.isOnSwitchStatement, isFalse);
     }
+    {
+      UnlinkedLabel ccc = labels.singleWhere((l) => l.name == 'ddd');
+      expect(ccc, isNotNull);
+      expect(ccc.isOnSwitchMember, isTrue);
+      expect(ccc.isOnSwitchStatement, isFalse);
+    }
   }
 
   test_executable_localLabels_inTopLevelGetter() {
@@ -4249,6 +4884,56 @@
     }
   }
 
+  test_executable_localLabels_namedExpressionLabel() {
+    String code = r'''
+f() {
+  foo(p: 42);
+}
+foo({int p}) {}
+''';
+    UnlinkedExecutable executable = serializeExecutableText(code);
+    List<UnlinkedLabel> labels = executable.localLabels;
+    expect(labels, isEmpty);
+  }
+
+  test_executable_localVariables_catch() {
+    String code = r'''
+f() { // 1
+  try {
+    throw 42;
+  } on int catch (e, st) { // 2
+    print(e);
+    print(st);
+  } // 3
+} // 4
+''';
+    UnlinkedExecutable executable = serializeExecutableText(code);
+    List<UnlinkedVariable> variables = executable.localVariables;
+    expect(variables, hasLength(2));
+    {
+      UnlinkedVariable e = variables.singleWhere((v) => v.name == 'e');
+      _assertVariableVisible(code, e, 'on int catch (', '} // 3');
+      checkTypeRef(e.type, 'dart:core', 'dart:core', 'int');
+    }
+    {
+      UnlinkedVariable st = variables.singleWhere((v) => v.name == 'st');
+      _assertVariableVisible(code, st, 'on int catch (', '} // 3');
+    }
+  }
+
+  test_executable_localVariables_catch_noVariables() {
+    String code = r'''
+f() {
+  try {
+    throw 42;
+  } on int {}
+}
+''';
+    UnlinkedExecutable executable = serializeExecutableText(code);
+    List<UnlinkedVariable> variables = executable.localVariables;
+    expect(variables, isEmpty);
+  }
+
   test_executable_localVariables_empty() {
     UnlinkedExecutable executable = serializeExecutableText(r'''
 f() {
@@ -4257,6 +4942,58 @@
     expect(executable.localVariables, isEmpty);
   }
 
+  test_executable_localVariables_forEachLoop() {
+    String code = r'''
+f() { // 1
+  for (int i in <int>[]) { // 2
+    print(i);
+  } // 3
+} // 4
+''';
+    UnlinkedExecutable executable = serializeExecutableText(code);
+    List<UnlinkedVariable> variables = executable.localVariables;
+    expect(variables, hasLength(1));
+    {
+      UnlinkedVariable i = variables.singleWhere((v) => v.name == 'i');
+      _assertVariableVisible(code, i, 'for', '} // 3');
+      checkTypeRef(i.type, 'dart:core', 'dart:core', 'int');
+    }
+  }
+
+  test_executable_localVariables_forLoop() {
+    String code = r'''
+f() { // 1
+  for (int i = 0, j = 0; i < 10; i++, j++) { // 2
+    print(i);
+  } // 3
+} // 4
+''';
+    UnlinkedExecutable executable = serializeExecutableText(code);
+    List<UnlinkedVariable> variables = executable.localVariables;
+    expect(variables, hasLength(2));
+    {
+      UnlinkedVariable i = variables.singleWhere((v) => v.name == 'i');
+      _assertVariableVisible(code, i, 'for', '} // 3');
+      checkTypeRef(i.type, 'dart:core', 'dart:core', 'int');
+    }
+    {
+      UnlinkedVariable i = variables.singleWhere((v) => v.name == 'j');
+      _assertVariableVisible(code, i, 'for', '} // 3');
+      checkTypeRef(i.type, 'dart:core', 'dart:core', 'int');
+    }
+  }
+
+  test_executable_localVariables_forLoop_noVariables() {
+    String code = r'''
+f() {
+  for (; true;) {}
+}
+''';
+    UnlinkedExecutable executable = serializeExecutableText(code);
+    List<UnlinkedVariable> variables = executable.localVariables;
+    expect(variables, isEmpty);
+  }
+
   test_executable_localVariables_inConstructor() {
     String code = r'''
 class C {
@@ -4521,6 +5258,14 @@
     expect(executable.isExternal, false);
   }
 
+  test_executable_operator_abstract() {
+    UnlinkedExecutable executable =
+        serializeClassText('class C { C operator+(C c); }', allowErrors: true)
+            .executables[0];
+    expect(executable.isAbstract, true);
+    expect(executable.isExternal, false);
+  }
+
   test_executable_operator_equal() {
     UnlinkedExecutable executable = serializeClassText(
             'class C { bool operator==(Object other) => false; }')
@@ -4532,6 +5277,7 @@
     UnlinkedExecutable executable =
         serializeClassText('class C { external C operator+(C c); }')
             .executables[0];
+    expect(executable.isAbstract, false);
     expect(executable.isExternal, true);
   }
 
@@ -4677,6 +5423,7 @@
     expect(param.kind, UnlinkedParamKind.named);
     expect(param.initializer, isNotNull);
     expect(param.defaultValueCode, '42');
+    _assertCodeRange(param.codeRange, 3, 5);
     _assertUnlinkedConst(param.defaultValue,
         operators: [UnlinkedConstOperation.pushInt], ints: [42]);
   }
@@ -4696,6 +5443,7 @@
     expect(param.kind, UnlinkedParamKind.positional);
     expect(param.initializer, isNotNull);
     expect(param.defaultValueCode, '42');
+    _assertCodeRange(param.codeRange, 3, 6);
     _assertUnlinkedConst(param.defaultValue,
         operators: [UnlinkedConstOperation.pushInt], ints: [42]);
   }
@@ -5145,6 +5893,18 @@
     _assertUnlinkedConst(variable.constExpr, isInvalid: true);
   }
 
+  test_field_final_typeParameter() {
+    UnlinkedVariable variable = serializeClassText(r'''
+class C<T> {
+  final f = <T>[];
+}''').fields[0];
+    expect(variable.isFinal, isTrue);
+    _assertUnlinkedConst(variable.constExpr,
+        operators: [UnlinkedConstOperation.makeTypedList],
+        ints: [0],
+        referenceValidators: [(EntityRef r) => checkParamTypeRef(r, 1)]);
+  }
+
   test_field_formal_param_inferred_type_explicit() {
     UnlinkedClass cls = serializeClassText(
         'class C extends D { var v; C(int this.v); }'
@@ -6600,14 +7360,12 @@
 final v = f() ? /*<T>*/(T t) => 0 : /*<T>*/(T t) => 1;
 bool f() => true;
 ''');
-    // The inferred type of `v` is currently `(Object) -> int` due to
-    // dartbug.com/25802.  TODO(paulberry): fix this test when the bug is fixed.
     EntityRef inferredType = getTypeRefForSlot(variable.inferredTypeSlot);
     checkLinkedTypeRef(
         inferredType.syntheticReturnType, 'dart:core', 'dart:core', 'int');
     expect(inferredType.syntheticParams, hasLength(1));
-    checkLinkedTypeRef(inferredType.syntheticParams[0].type, 'dart:core',
-        'dart:core', 'Object');
+    checkLinkedTypeRef(
+        inferredType.syntheticParams[0].type, null, null, '*bottom*');
   }
 
   test_syntheticFunctionType_genericClosure_inGenericFunction() {
@@ -6628,16 +7386,14 @@
   final v = b ? /*<V>*/(T t, U u, V v) => 0 : /*<V>*/(T t, U u, V v) => 1;
 }
 ''').localVariables[0];
-    // The inferred type of `v` is currently `(T, U, Object) -> int` due to
-    // dartbug.com/25802.  TODO(paulberry): fix this test when the bug is fixed.
     EntityRef inferredType = getTypeRefForSlot(variable.inferredTypeSlot);
     checkLinkedTypeRef(
         inferredType.syntheticReturnType, 'dart:core', 'dart:core', 'int');
     expect(inferredType.syntheticParams, hasLength(3));
     checkParamTypeRef(inferredType.syntheticParams[0].type, 2);
     checkParamTypeRef(inferredType.syntheticParams[1].type, 1);
-    checkLinkedTypeRef(inferredType.syntheticParams[2].type, 'dart:core',
-        'dart:core', 'Object');
+    checkLinkedTypeRef(
+        inferredType.syntheticParams[2].type, null, null, '*bottom*');
   }
 
   test_syntheticFunctionType_inGenericClass() {
diff --git a/pkg/analyzer/test/src/summary/test_all.dart b/pkg/analyzer/test/src/summary/test_all.dart
index 08af93d..0943a6e 100644
--- a/pkg/analyzer/test/src/summary/test_all.dart
+++ b/pkg/analyzer/test/src/summary/test_all.dart
@@ -8,10 +8,12 @@
 
 import '../../utils.dart';
 import 'flat_buffers_test.dart' as flat_buffers_test;
+import 'in_summary_source_test.dart' as in_summary_source_test;
 import 'incremental_cache_test.dart' as incremental_cache_test;
 import 'index_unit_test.dart' as index_unit_test;
 import 'name_filter_test.dart' as name_filter_test;
 import 'prelinker_test.dart' as prelinker_test;
+import 'resynthesize_ast_test.dart' as resynthesize_ast_test;
 import 'resynthesize_strong_test.dart' as resynthesize_strong_test;
 import 'resynthesize_test.dart' as resynthesize_test;
 import 'summarize_ast_test.dart' as summarize_ast_test;
@@ -23,10 +25,12 @@
   initializeTestEnvironment();
   group('summary tests', () {
     flat_buffers_test.main();
+    in_summary_source_test.main();
     incremental_cache_test.main();
     index_unit_test.main();
     name_filter_test.main();
     prelinker_test.main();
+    resynthesize_ast_test.main();
     resynthesize_strong_test.main();
     resynthesize_test.main();
     summarize_ast_test.main();
diff --git a/pkg/analyzer/test/src/task/dart_test.dart b/pkg/analyzer/test/src/task/dart_test.dart
index 205dc90..c07689b 100644
--- a/pkg/analyzer/test/src/task/dart_test.dart
+++ b/pkg/analyzer/test/src/task/dart_test.dart
@@ -1076,17 +1076,14 @@
 
 @reflectiveTest
 class BuildTypeProviderTaskTest_noAsync extends _AbstractDartTaskTest {
+  DartSdk createDartSdk() => new MockSdk(dartAsync: false);
+
   void prepareAnalysisContext([AnalysisOptions options]) {
     AnalysisOptionsImpl newOptions = new AnalysisOptionsImpl();
     newOptions.enableAsync = false;
     super.prepareAnalysisContext(newOptions);
   }
 
-  void setUp() {
-    sdk = new MockSdk(dartAsync: false);
-    super.setUp();
-  }
-
   test_perform_noAsync() {
     expect(context, isNotNull);
     computeResult(AnalysisContextTarget.request, TYPE_PROVIDER,
diff --git a/pkg/analyzer/test/src/task/options_test.dart b/pkg/analyzer/test/src/task/options_test.dart
index 03a2579..77e2990 100644
--- a/pkg/analyzer/test/src/task/options_test.dart
+++ b/pkg/analyzer/test/src/task/options_test.dart
@@ -67,16 +67,6 @@
     expect(analysisOptions.enableAsync, false);
   }
 
-  test_configure_enableGenericMethods() {
-    expect(analysisOptions.enableGenericMethods, false);
-    configureContext('''
-analyzer:
-  language:
-    enableGenericMethods: true
-''');
-    expect(analysisOptions.enableGenericMethods, true);
-  }
-
   test_configure_enableConditionalDirectives() {
     expect(analysisOptions.enableConditionalDirectives, false);
     configureContext('''
@@ -87,13 +77,14 @@
     expect(analysisOptions.enableConditionalDirectives, true);
   }
 
-  test_configure_enableSuperMixins() {
+  test_configure_enableGenericMethods() {
+    expect(analysisOptions.enableGenericMethods, false);
     configureContext('''
 analyzer:
   language:
-    enableSuperMixins: true
+    enableGenericMethods: true
 ''');
-    expect(analysisOptions.enableSuperMixins, true);
+    expect(analysisOptions.enableGenericMethods, true);
   }
 
   test_configure_enableStrictCallChecks() {
@@ -105,6 +96,15 @@
     expect(analysisOptions.enableStrictCallChecks, true);
   }
 
+  test_configure_enableSuperMixins() {
+    configureContext('''
+analyzer:
+  language:
+    enableSuperMixins: true
+''');
+    expect(analysisOptions.enableSuperMixins, true);
+  }
+
   test_configure_error_processors() {
     configureContext('''
 analyzer:
diff --git a/pkg/analyzer/test/src/task/strong/checker_test.dart b/pkg/analyzer/test/src/task/strong/checker_test.dart
index 8c4eb3c..cff8782 100644
--- a/pkg/analyzer/test/src/task/strong/checker_test.dart
+++ b/pkg/analyzer/test/src/task/strong/checker_test.dart
@@ -28,16 +28,22 @@
           Comparator<K> _comparator;
           _Predicate _validKey;
 
-          // TODO(rnystrom): Initializing _comparator should have a cast, since
-          // K may not always be Comparable. It doesn't currently get one
-          // because we're using the spec's LUB on function types, which isn't
-          // sound.
+          // The warning on assigning to _comparator is legitimate. Since K has
+          // no bound, all we know is that it's object. _comparator's function
+          // type is effectively:              (Object, Object) -> int
+          // We are assigning it a fn of type: (Comparable, Comparable) -> int
+          // There's no telling if that will work. For example, consider:
+          //
+          //     new SplayTreeMap<Uri>();
+          //
+          // This would end up calling .compareTo() on a Uri, which doesn't
+          // define that since it doesn't implement Comparable.
           SplayTreeMap([int compare(K key1, K key2),
                         bool isValidKey(potentialKey)])
-            : _comparator = (compare == null) ? Comparable.compare : compare,
+            : _comparator = /*warning:DOWN_CAST_COMPOSITE*/(compare == null) ? Comparable.compare : compare,
               _validKey = (isValidKey != null) ? isValidKey : ((v) => true) {
-            _Predicate<Object> v = /*warning:DOWN_CAST_COMPOSITE*/(isValidKey != null)
-                                    ? isValidKey : (/*info:INFERRED_TYPE_CLOSURE*/(_) => true);
+            _Predicate<Object> v = (isValidKey != null)
+                ? isValidKey : (/*info:INFERRED_TYPE_CLOSURE*/(_) => true);
 
             v = (isValidKey != null)
                  ? v : (/*info:INFERRED_TYPE_CLOSURE*/(_) => true);
@@ -56,6 +62,73 @@
       ''');
   });
 
+  test('least upper bounds', () {
+    checkFile('''
+      typedef T Returns<T>();
+
+      // regression test for https://github.com/dart-lang/sdk/issues/26094
+      class A <S extends  Returns<S>, T extends Returns<T>> {
+        int test(bool b) {
+          S s;
+          T t;
+          if (b) {
+            return /*warning:RETURN_OF_INVALID_TYPE*/b ? s : t;
+          } else {
+            return /*warning:RETURN_OF_INVALID_TYPE*/s ?? t;
+          }
+        }
+      }
+
+      class B<S, T extends S> {
+        T t;
+        S s;
+        int test(bool b) {
+          return /*warning:RETURN_OF_INVALID_TYPE*/b ? t : s;
+        }
+      }
+
+      class C {
+        // Check that the least upper bound of two types with the same
+        // class but different type arguments produces the pointwise
+        // least upper bound of the type arguments
+        int test1(bool b) {
+          List<int> li;
+          List<double> ld;
+          return /*warning:RETURN_OF_INVALID_TYPE*/b ? li : ld;
+        }
+        // TODO(leafp): This case isn't handled yet.  This test checks
+        // the case where two related classes are instantiated with related
+        // but different types.
+        Iterable<num> test2(bool b) {
+          List<int> li;
+          Iterable<double> id;
+          int x =
+              /*info:ASSIGNMENT_CAST should be warning:INVALID_ASSIGNMENT*/
+              b ? li : id;
+          return /*warning:DOWN_CAST_COMPOSITE should be pass*/b ? li : id;
+        }
+      }
+      ''');
+  });
+
+  test('setter return types', () {
+    checkFile('''
+      void voidFn() => null;
+      class A {
+        set a(y) => 4;
+        set b(y) => voidFn();
+        void set c(y) => /*warning:RETURN_OF_INVALID_TYPE*/4;
+        void set d(y) => voidFn();
+        /*warning:NON_VOID_RETURN_FOR_SETTER*/int set e(y) => 4;
+        /*warning:NON_VOID_RETURN_FOR_SETTER*/int set f(y) =>
+            /*warning:RETURN_OF_INVALID_TYPE*/voidFn();
+        set g(y) {return /*warning:RETURN_OF_INVALID_TYPE*/4;}
+        void set h(y) {return /*warning:RETURN_OF_INVALID_TYPE*/4;}
+        /*warning:NON_VOID_RETURN_FOR_SETTER*/int set i(y) {return 4;}
+      }
+    ''');
+  });
+
   test('if/for/do/while statements use boolean conversion', () {
     checkFile('''
       main() {
@@ -661,8 +734,24 @@
    ''');
     });
 
-    test('dynamic - known functions', () {
+    test('dynamic functions - closures are not fuzzy', () {
+      // Regression test for
+      // https://github.com/dart-lang/sdk/issues/26118
+      checkFile('''
+        void test1() {
+          void takesF(f(int x)) => null;
+          takesF((dynamic y) => 3);
+        }
 
+        void test2() {
+          int x;
+          int f/*<T>*/(/*=T*/ t, callback(/*=T*/ x)) { return 3; }
+          f(x, (y) => 3);
+        }
+     ''');
+    });
+
+    test('dynamic - known functions', () {
       // Our lattice should look like this:
       //
       //
@@ -674,6 +763,10 @@
       //         \      /
       //         Top -> A
       //
+      // Note that downcasts of known functions are promoted to
+      // static type errors, since they cannot succeed.
+      // This makes some of what look like downcasts turn into
+      // type errors below.
       checkFile('''
         class A {}
 
@@ -688,51 +781,160 @@
         A aa(A x) => x;
         dynamic topTop(dynamic x) => x;
         A topA(dynamic x) => /*info:DYNAMIC_CAST*/x;
-
+        void apply/*<T>*/(/*=T*/ f0, /*=T*/ f1, /*=T*/ f2,
+                          /*=T*/ f3, /*=T*/ f4, /*=T*/ f5) {}
         void main() {
           BotTop botTop;
           BotA botA;
           {
             BotTop f;
-            f = topTop;
-            f = aTop;
             f = topA;
+            f = topTop;
             f = aa;
+            f = aTop;
+            f = botA;
+            f = botTop;
+            apply/*<BotTop>*/(
+                topA,
+                topTop,
+                aa,
+                aTop,
+                botA,
+                botTop
+                              );
+            apply/*<BotTop>*/(
+                (dynamic x) => new A(),
+                (dynamic x) => (x as Object),
+                (A x) => x,
+                (A x) => null,
+                botA,
+                botTop
+                              );
           }
           {
             ATop f;
-            f = topTop;
-            f = aTop;
             f = topA;
+            f = topTop;
             f = aa;
+            f = aTop;
+            f = /*warning:DOWN_CAST_COMPOSITE should be severe:STATIC_TYPE_ERROR*/botA;
+            f = /*warning:DOWN_CAST_COMPOSITE*/botTop;
+            apply/*<ATop>*/(
+                topA,
+                topTop,
+                aa,
+                aTop,
+                /*warning:DOWN_CAST_COMPOSITE should be severe:STATIC_TYPE_ERROR*/botA,
+                /*warning:DOWN_CAST_COMPOSITE*/botTop
+                            );
+            apply/*<ATop>*/(
+                (dynamic x) => new A(),
+                (dynamic x) => (x as Object),
+                (A x) => x,
+                (A x) => null,
+                /*warning:DOWN_CAST_COMPOSITE should be severe:STATIC_TYPE_ERROR*/botA,
+                /*warning:DOWN_CAST_COMPOSITE*/botTop
+                            );
           }
           {
             BotA f;
-            f = /*severe:STATIC_TYPE_ERROR*/topTop;
-            f = /*severe:STATIC_TYPE_ERROR*/aTop;
             f = topA;
+            f = /*severe:STATIC_TYPE_ERROR*/topTop;
             f = aa;
+            f = /*severe:STATIC_TYPE_ERROR*/aTop;
+            f = botA;
+            f = /*warning:DOWN_CAST_COMPOSITE*/botTop;
+            apply/*<BotA>*/(
+                topA,
+                /*severe:STATIC_TYPE_ERROR*/topTop,
+                aa,
+                /*severe:STATIC_TYPE_ERROR*/aTop,
+                botA,
+                /*warning:DOWN_CAST_COMPOSITE*/botTop
+                            );
+            apply/*<BotA>*/(
+                (dynamic x) => new A(),
+                /*severe:STATIC_TYPE_ERROR*/(dynamic x) => (x as Object),
+                (A x) => x,
+                /*severe:STATIC_TYPE_ERROR*/(A x) => (x as Object),
+                botA,
+                /*warning:DOWN_CAST_COMPOSITE*/botTop
+                            );
           }
           {
             AA f;
-            f = /*severe:STATIC_TYPE_ERROR*/topTop;
-            f = /*severe:STATIC_TYPE_ERROR*/aTop;
             f = topA;
+            f = /*severe:STATIC_TYPE_ERROR*/topTop;
             f = aa;
+            f = /*severe:STATIC_TYPE_ERROR*/aTop; // known function
+            f = /*warning:DOWN_CAST_COMPOSITE*/botA;
+            f = /*warning:DOWN_CAST_COMPOSITE*/botTop;
+            apply/*<AA>*/(
+                topA,
+                /*severe:STATIC_TYPE_ERROR*/topTop,
+                aa,
+                /*severe:STATIC_TYPE_ERROR*/aTop, // known function
+                /*warning:DOWN_CAST_COMPOSITE*/botA,
+                /*warning:DOWN_CAST_COMPOSITE*/botTop
+                          );
+            apply/*<AA>*/(
+                (dynamic x) => new A(),
+                /*severe:STATIC_TYPE_ERROR*/(dynamic x) => (x as Object),
+                (A x) => x,
+                /*severe:STATIC_TYPE_ERROR*/(A x) => (x as Object), // known function
+                /*warning:DOWN_CAST_COMPOSITE*/botA,
+                /*warning:DOWN_CAST_COMPOSITE*/botTop
+                          );
           }
           {
             TopTop f;
-            f = topTop;
-            f = /*severe:STATIC_TYPE_ERROR*/aTop;
             f = topA;
+            f = topTop;
             f = /*severe:STATIC_TYPE_ERROR*/aa;
+            f = /*severe:STATIC_TYPE_ERROR*/aTop; // known function
+            f = /*warning:DOWN_CAST_COMPOSITE should be severe:STATIC_TYPE_ERROR*/botA;
+            f = /*warning:DOWN_CAST_COMPOSITE*/botTop;
+            apply/*<TopTop>*/(
+                topA,
+                topTop,
+                /*severe:STATIC_TYPE_ERROR*/aa,
+                /*severe:STATIC_TYPE_ERROR*/aTop, // known function
+                /*warning:DOWN_CAST_COMPOSITE should be severe:STATIC_TYPE_ERROR*/botA,
+                /*warning:DOWN_CAST_COMPOSITE*/botTop
+                              );
+            apply/*<TopTop>*/(
+                (dynamic x) => new A(),
+                (dynamic x) => (x as Object),
+                /*severe:STATIC_TYPE_ERROR*/(A x) => x,
+                /*severe:STATIC_TYPE_ERROR*/(A x) => (x as Object), // known function
+                /*warning:DOWN_CAST_COMPOSITE should be severe:STATIC_TYPE_ERROR*/botA,
+                /*warning:DOWN_CAST_COMPOSITE*/botTop
+                              );
           }
           {
             TopA f;
-            f = /*severe:STATIC_TYPE_ERROR*/topTop;
-            f = /*severe:STATIC_TYPE_ERROR*/aTop;
             f = topA;
-            f = /*severe:STATIC_TYPE_ERROR*/aa;
+            f = /*severe:STATIC_TYPE_ERROR*/topTop; // known function
+            f = /*severe:STATIC_TYPE_ERROR*/aa; // known function
+            f = /*severe:STATIC_TYPE_ERROR*/aTop; // known function
+            f = /*warning:DOWN_CAST_COMPOSITE*/botA;
+            f = /*warning:DOWN_CAST_COMPOSITE*/botTop;
+            apply/*<TopA>*/(
+                topA,
+                /*severe:STATIC_TYPE_ERROR*/topTop, // known function
+                /*severe:STATIC_TYPE_ERROR*/aa, // known function
+                /*severe:STATIC_TYPE_ERROR*/aTop, // known function
+                /*warning:DOWN_CAST_COMPOSITE*/botA,
+                /*warning:DOWN_CAST_COMPOSITE*/botTop
+                            );
+            apply/*<TopA>*/(
+                (dynamic x) => new A(),
+                /*severe:STATIC_TYPE_ERROR*/(dynamic x) => (x as Object), // known function
+                /*severe:STATIC_TYPE_ERROR*/(A x) => x, // known function
+                /*severe:STATIC_TYPE_ERROR*/(A x) => (x as Object), // known function
+                /*warning:DOWN_CAST_COMPOSITE*/botA,
+                /*warning:DOWN_CAST_COMPOSITE*/botTop
+                            );
           }
         }
      ''');
@@ -1325,7 +1527,7 @@
             local = g; // valid
 
             // Non-generic function cannot subtype a generic one.
-            local = /*severe:STATIC_TYPE_ERROR, warning:INVALID_ASSIGNMENT*/(x) => null;
+            local = /*warning:INVALID_ASSIGNMENT*/(x) => null;
             local = /*warning:INVALID_ASSIGNMENT*/nonGenericFn;
           }
           {
@@ -1341,7 +1543,7 @@
             local2 = /*warning:DOWN_CAST_COMPOSITE*/local;
 
             // Non-generic function cannot subtype a generic one.
-            local = /*severe:STATIC_TYPE_ERROR, warning:INVALID_ASSIGNMENT*/(x) => null;
+            local = /*warning:INVALID_ASSIGNMENT*/(x) => null;
             local = /*warning:INVALID_ASSIGNMENT*/nonGenericFn;
           }
         }
diff --git a/pkg/analyzer/test/src/task/strong/strong_test_helper.dart b/pkg/analyzer/test/src/task/strong/strong_test_helper.dart
index e91033e..f17517d 100644
--- a/pkg/analyzer/test/src/task/strong/strong_test_helper.dart
+++ b/pkg/analyzer/test/src/task/strong/strong_test_helper.dart
@@ -113,6 +113,28 @@
   return check();
 }
 
+void initStrongModeTests() {
+  setUp(() {
+    AnalysisEngine.instance.processRequiredPlugins();
+    files = new MemoryResourceProvider();
+    _checkCalled = false;
+  });
+
+  tearDown(() {
+    // This is a sanity check, in case only addFile is called.
+    expect(_checkCalled, true, reason: 'must call check() method in test case');
+    files = null;
+  });
+}
+
+Level _actualErrorLevel(AnalysisError actual) {
+  return const <ErrorSeverity, Level>{
+    ErrorSeverity.ERROR: Level.SEVERE,
+    ErrorSeverity.WARNING: Level.WARNING,
+    ErrorSeverity.INFO: Level.INFO
+  }[actual.errorCode.errorSeverity];
+}
+
 SourceSpanWithContext _createSpanHelper(
     LineInfo lineInfo, int start, Source source, String content,
     {int end}) {
@@ -149,49 +171,6 @@
   }
 }
 
-void initStrongModeTests() {
-  setUp(() {
-    AnalysisEngine.instance.processRequiredPlugins();
-    files = new MemoryResourceProvider();
-    _checkCalled = false;
-  });
-
-  tearDown(() {
-    // This is a sanity check, in case only addFile is called.
-    expect(_checkCalled, true, reason: 'must call check() method in test case');
-    files = null;
-  });
-}
-
-SourceLocation _locationForOffset(LineInfo lineInfo, Uri uri, int offset) {
-  var loc = lineInfo.getLocation(offset);
-  return new SourceLocation(offset,
-      sourceUrl: uri, line: loc.lineNumber - 1, column: loc.columnNumber - 1);
-}
-
-/// Returns all libraries transitively imported or exported from [start].
-List<LibraryElement> _reachableLibraries(LibraryElement start) {
-  var results = <LibraryElement>[];
-  var seen = new Set();
-  void find(LibraryElement lib) {
-    if (seen.contains(lib)) return;
-    seen.add(lib);
-    results.add(lib);
-    lib.importedLibraries.forEach(find);
-    lib.exportedLibraries.forEach(find);
-  }
-  find(start);
-  return results;
-}
-
-Level _actualErrorLevel(AnalysisError actual) {
-  return const <ErrorSeverity, Level>{
-    ErrorSeverity.ERROR: Level.SEVERE,
-    ErrorSeverity.WARNING: Level.WARNING,
-    ErrorSeverity.INFO: Level.INFO
-  }[actual.errorCode.errorSeverity];
-}
-
 void _expectErrors(CompilationUnit unit, List<AnalysisError> actualErrors) {
   var expectedErrors = _findExpectedErrors(unit.beginToken);
 
@@ -267,6 +246,27 @@
   return expectedErrors;
 }
 
+SourceLocation _locationForOffset(LineInfo lineInfo, Uri uri, int offset) {
+  var loc = lineInfo.getLocation(offset);
+  return new SourceLocation(offset,
+      sourceUrl: uri, line: loc.lineNumber - 1, column: loc.columnNumber - 1);
+}
+
+/// Returns all libraries transitively imported or exported from [start].
+List<LibraryElement> _reachableLibraries(LibraryElement start) {
+  var results = <LibraryElement>[];
+  var seen = new Set();
+  void find(LibraryElement lib) {
+    if (seen.contains(lib)) return;
+    seen.add(lib);
+    results.add(lib);
+    lib.importedLibraries.forEach(find);
+    lib.exportedLibraries.forEach(find);
+  }
+  find(start);
+  return results;
+}
+
 void _reportFailure(
     CompilationUnit unit,
     List<_ErrorExpectation> unreported,
diff --git a/pkg/analyzer/tool/summary/build_sdk_summaries.dart b/pkg/analyzer/tool/summary/build_sdk_summaries.dart
index 4f5db1e..01fa8fe 100644
--- a/pkg/analyzer/tool/summary/build_sdk_summaries.dart
+++ b/pkg/analyzer/tool/summary/build_sdk_summaries.dart
@@ -185,9 +185,8 @@
     DirectoryBasedDartSdk sdk =
         new DirectoryBasedDartSdk(new JavaFile(sdkPath));
     sdk.useSummary = false;
+    sdk.analysisOptions = new AnalysisOptionsImpl()..strongMode = strongMode;
     context = sdk.context;
-    context.analysisOptions = new AnalysisOptionsImpl()
-      ..strongMode = strongMode;
     //
     // Prepare 'dart:' URIs to serialize.
     //
@@ -228,7 +227,7 @@
       Source unitSource = unitElement.source;
       CompilationUnit unit =
           context.resolveCompilationUnit2(unitSource, source);
-      indexAssembler.index(unit);
+      indexAssembler.indexUnit(unit);
     }
   }
 }
diff --git a/pkg/analyzer/tool/summary/check_test.dart b/pkg/analyzer/tool/summary/check_test.dart
index 156dc19..98f25b6 100644
--- a/pkg/analyzer/tool/summary/check_test.dart
+++ b/pkg/analyzer/tool/summary/check_test.dart
@@ -18,6 +18,5 @@
 main() {
   String script = Platform.script.toFilePath(windows: Platform.isWindows);
   String pkgPath = normalize(join(dirname(script), '..', '..'));
-  GeneratedContent.checkAll(
-      pkgPath, 'tool/summary/generate.dart', allTargets);
+  GeneratedContent.checkAll(pkgPath, 'tool/summary/generate.dart', allTargets);
 }
diff --git a/pkg/analyzer/tool/summary/generate.dart b/pkg/analyzer/tool/summary/generate.dart
index cfa14a0..51dad39 100644
--- a/pkg/analyzer/tool/summary/generate.dart
+++ b/pkg/analyzer/tool/summary/generate.dart
@@ -283,6 +283,7 @@
             }
             int id;
             bool isDeprecated = false;
+            bool isInformative = false;
             for (Annotation annotation in classMember.metadata) {
               if (annotation.name.name == 'Id') {
                 if (id != null) {
@@ -305,6 +306,8 @@
                   throw new Exception('@deprecated does not take args ($desc)');
                 }
                 isDeprecated = true;
+              } else if (annotation.name.name == 'informative') {
+                isInformative = true;
               }
             }
             if (id == null) {
@@ -314,7 +317,12 @@
             idlModel.FieldType fieldType =
                 new idlModel.FieldType(type.name.name, isList);
             cls.allFields.add(new idlModel.FieldDeclaration(
-                doc, classMember.name.name, fieldType, id, isDeprecated));
+                doc,
+                classMember.name.name,
+                fieldType,
+                id,
+                isDeprecated,
+                isInformative));
           } else if (classMember is ConstructorDeclaration &&
               classMember.name.name == 'fromBuffer') {
             // Ignore `fromBuffer` declarations; they simply forward to the
@@ -589,6 +597,30 @@
         String suffix = i == fields.length - 1 ? ';' : ',';
         out('${prefix}_${field.name} = ${field.name}$suffix');
       }
+      // Generate flushInformative().
+      {
+        out();
+        out('/**');
+        out(' * Flush [informative] data recursively.');
+        out(' */');
+        out('void flushInformative() {');
+        indent(() {
+          for (idlModel.FieldDeclaration field in cls.fields) {
+            idlModel.FieldType fieldType = field.type;
+            String valueName = '_' + field.name;
+            if (field.isInformative) {
+              out('$valueName = null;');
+            } else if (_idl.classes.containsKey(fieldType.typeName)) {
+              if (fieldType.isList) {
+                out('$valueName?.forEach((b) => b.flushInformative());');
+              } else {
+                out('$valueName?.flushInformative();');
+              }
+            }
+          }
+        });
+        out('}');
+      }
       // Generate finish.
       if (cls.isTopLevel) {
         out();
diff --git a/pkg/analyzer/tool/summary/idl_model.dart b/pkg/analyzer/tool/summary/idl_model.dart
index 9ec248f..18b981c 100644
--- a/pkg/analyzer/tool/summary/idl_model.dart
+++ b/pkg/analyzer/tool/summary/idl_model.dart
@@ -25,7 +25,7 @@
 
   /**
    * If [isTopLevel] is `true` and a file identifier was specified for this
-   * class, the file identifier string.  Otheswise `null`.
+   * class, the file identifier string.  Otherwise `null`.
    */
   final String fileIdentifier;
 
@@ -97,8 +97,13 @@
    */
   final bool isDeprecated;
 
-  FieldDeclaration(
-      String documentation, String name, this.type, this.id, this.isDeprecated)
+  /**
+   * Indicates whether the field is informative.
+   */
+  final bool isInformative;
+
+  FieldDeclaration(String documentation, String name, this.type, this.id,
+      this.isDeprecated, this.isInformative)
       : super(documentation, name);
 }
 
diff --git a/pkg/analyzer_cli/lib/src/build_mode.dart b/pkg/analyzer_cli/lib/src/build_mode.dart
new file mode 100644
index 0000000..2256247
--- /dev/null
+++ b/pkg/analyzer_cli/lib/src/build_mode.dart
@@ -0,0 +1,570 @@
+// Copyright (c) 2015, 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 analyzer_cli.src.build_mode;
+
+import 'dart:convert';
+import 'dart:core' hide Resource;
+import 'dart:io' as io;
+
+import 'package:analyzer/dart/ast/ast.dart' show CompilationUnit;
+import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/file_system/physical_file_system.dart';
+import 'package:analyzer/src/generated/engine.dart';
+import 'package:analyzer/src/generated/error.dart';
+import 'package:analyzer/src/generated/java_io.dart';
+import 'package:analyzer/src/generated/sdk_io.dart';
+import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/generated/source_io.dart';
+import 'package:analyzer/src/summary/format.dart';
+import 'package:analyzer/src/summary/idl.dart';
+import 'package:analyzer/src/summary/package_bundle_reader.dart';
+import 'package:analyzer/src/summary/prelink.dart';
+import 'package:analyzer/src/summary/summarize_ast.dart';
+import 'package:analyzer/src/summary/summarize_elements.dart';
+import 'package:analyzer/task/dart.dart';
+import 'package:analyzer_cli/src/analyzer_impl.dart';
+import 'package:analyzer_cli/src/driver.dart';
+import 'package:analyzer_cli/src/error_formatter.dart';
+import 'package:analyzer_cli/src/options.dart';
+
+/**
+ * Analyzer used when the "--build-mode" option is supplied.
+ */
+class BuildMode {
+  final CommandLineOptions options;
+  final AnalysisStats stats;
+
+  final ResourceProvider resourceProvider = PhysicalResourceProvider.INSTANCE;
+  SummaryDataStore summaryDataStore;
+  InternalAnalysisContext context;
+  Map<Uri, JavaFile> uriToFileMap;
+  final List<Source> explicitSources = <Source>[];
+
+  PackageBundleAssembler assembler = new PackageBundleAssembler();
+  final Set<Source> processedSources = new Set<Source>();
+  final Map<Uri, UnlinkedUnit> uriToUnit = <Uri, UnlinkedUnit>{};
+
+  BuildMode(this.options, this.stats);
+
+  /**
+   * Perform package analysis according to the given [options].
+   */
+  ErrorSeverity analyze() {
+    // Write initial progress message.
+    if (!options.machineFormat) {
+      outSink.writeln("Analyzing sources ${options.sourceFiles}...");
+    }
+
+    // Create the URI to file map.
+    uriToFileMap = _createUriToFileMap(options.sourceFiles);
+    if (uriToFileMap == null) {
+      io.exitCode = ErrorSeverity.ERROR.ordinal;
+      return ErrorSeverity.ERROR;
+    }
+
+    // Prepare the analysis context.
+    _createContext();
+
+    // Add sources.
+    ChangeSet changeSet = new ChangeSet();
+    for (Uri uri in uriToFileMap.keys) {
+      JavaFile file = uriToFileMap[uri];
+      if (!file.exists()) {
+        errorSink.writeln('File not found: ${file.getPath()}');
+        io.exitCode = ErrorSeverity.ERROR.ordinal;
+        return ErrorSeverity.ERROR;
+      }
+      Source source = new FileBasedSource(file, uri);
+      explicitSources.add(source);
+      changeSet.addedSource(source);
+    }
+    context.applyChanges(changeSet);
+
+    if (!options.buildSummaryOnly) {
+      // Perform full analysis.
+      while (true) {
+        AnalysisResult analysisResult = context.performAnalysisTask();
+        if (!analysisResult.hasMoreWork) {
+          break;
+        }
+      }
+    }
+
+    // Write summary.
+    if (options.buildSummaryOutput != null) {
+      for (Source source in explicitSources) {
+        if (context.computeKindOf(source) == SourceKind.LIBRARY) {
+          if (options.buildSummaryFallback) {
+            assembler.addFallbackLibrary(source);
+          } else if (options.buildSummaryOnlyAst) {
+            _serializeAstBasedSummary(source);
+          } else {
+            LibraryElement libraryElement =
+                context.computeLibraryElement(source);
+            assembler.serializeLibraryElement(libraryElement);
+          }
+        }
+        if (options.buildSummaryFallback) {
+          assembler.addFallbackUnit(source);
+        }
+      }
+      // Write the whole package bundle.
+      PackageBundleBuilder sdkBundle = assembler.assemble();
+      if (options.buildSummaryExcludeInformative) {
+        sdkBundle.flushInformative();
+        sdkBundle.unlinkedUnitHashes = null;
+      }
+      io.File file = new io.File(options.buildSummaryOutput);
+      file.writeAsBytesSync(sdkBundle.toBuffer(), mode: io.FileMode.WRITE_ONLY);
+    }
+
+    if (options.buildSummaryOnly) {
+      return ErrorSeverity.NONE;
+    } else {
+      // Process errors.
+      _printErrors(outputPath: options.buildAnalysisOutput);
+      return _computeMaxSeverity();
+    }
+  }
+
+  ErrorSeverity _computeMaxSeverity() {
+    ErrorSeverity maxSeverity = ErrorSeverity.NONE;
+    if (!options.buildSuppressExitCode) {
+      for (Source source in explicitSources) {
+        AnalysisErrorInfo errorInfo = context.getErrors(source);
+        for (AnalysisError error in errorInfo.errors) {
+          ProcessedSeverity processedSeverity =
+              AnalyzerImpl.processError(error, options, context);
+          if (processedSeverity != null) {
+            maxSeverity = maxSeverity.max(processedSeverity.severity);
+          }
+        }
+      }
+    }
+    return maxSeverity;
+  }
+
+  void _createContext() {
+    DirectoryBasedDartSdk sdk =
+        new DirectoryBasedDartSdk(new JavaFile(options.dartSdkPath));
+    sdk.analysisOptions =
+        Driver.createAnalysisOptionsForCommandLineOptions(options);
+    sdk.useSummary = true;
+
+    // Read the summaries.
+    summaryDataStore = new SummaryDataStore(options.buildSummaryInputs);
+
+    // In AST mode include SDK bundle to avoid parsing SDK sources.
+    if (options.buildSummaryOnlyAst) {
+      summaryDataStore.addBundle(null, sdk.getSummarySdkBundle());
+    }
+
+    // Create the context.
+    context = AnalysisEngine.instance.createAnalysisContext();
+    context.sourceFactory = new SourceFactory(<UriResolver>[
+      new DartUriResolver(sdk),
+      new InSummaryPackageUriResolver(summaryDataStore),
+      new ExplicitSourceResolver(uriToFileMap)
+    ]);
+
+    // Set context options.
+    Driver.setAnalysisContextOptions(context, options,
+        (AnalysisOptionsImpl contextOptions) {
+      if (options.buildSummaryOnlyDiet) {
+        contextOptions.analyzeFunctionBodies = false;
+      }
+    });
+
+    // Configure using summaries.
+    context.typeProvider = sdk.context.typeProvider;
+    context.resultProvider =
+        new InputPackagesResultProvider(context, summaryDataStore);
+  }
+
+  /**
+   * Print errors for all explicit sources.  If [outputPath] is supplied, output
+   * is sent to a new file at that path.
+   */
+  void _printErrors({String outputPath}) {
+    StringBuffer buffer = new StringBuffer();
+    ErrorFormatter formatter = new ErrorFormatter(
+        buffer,
+        options,
+        stats,
+        (AnalysisError error) =>
+            AnalyzerImpl.processError(error, options, context));
+    for (Source source in explicitSources) {
+      AnalysisErrorInfo errorInfo = context.getErrors(source);
+      formatter.formatErrors([errorInfo]);
+    }
+    if (!options.machineFormat) {
+      stats.print(buffer);
+    }
+    if (outputPath == null) {
+      StringSink sink = options.machineFormat ? errorSink : outSink;
+      sink.write(buffer);
+    } else {
+      new io.File(outputPath).writeAsStringSync(buffer.toString());
+    }
+  }
+
+  /**
+   * Serialize the library with the given [source] into [assembler] using only
+   * its AST, [UnlinkedUnit]s of input packages and ASTs (via [UnlinkedUnit]s)
+   * of package sources.
+   */
+  void _serializeAstBasedSummary(Source source) {
+    Source resolveRelativeUri(String relativeUri) {
+      Source resolvedSource =
+          context.sourceFactory.resolveUri(source, relativeUri);
+      if (resolvedSource == null) {
+        context.sourceFactory.resolveUri(source, relativeUri);
+        throw new StateError('Could not resolve $relativeUri in the context of '
+            '$source (${source.runtimeType})');
+      }
+      return resolvedSource;
+    }
+
+    UnlinkedUnit _getUnlinkedUnit(Source source) {
+      // Maybe an input package contains the source.
+      {
+        String uriStr = source.uri.toString();
+        UnlinkedUnit unlinkedUnit = summaryDataStore.unlinkedMap[uriStr];
+        if (unlinkedUnit != null) {
+          return unlinkedUnit;
+        }
+      }
+      // Parse the source and serialize its AST.
+      return uriToUnit.putIfAbsent(source.uri, () {
+        CompilationUnit unit = context.computeResult(source, PARSED_UNIT);
+        UnlinkedUnitBuilder unlinkedUnit = serializeAstUnlinked(unit);
+        assembler.addUnlinkedUnit(source, unlinkedUnit);
+        return unlinkedUnit;
+      });
+    }
+
+    UnlinkedUnit getPart(String relativeUri) {
+      return _getUnlinkedUnit(resolveRelativeUri(relativeUri));
+    }
+
+    UnlinkedPublicNamespace getImport(String relativeUri) {
+      return getPart(relativeUri).publicNamespace;
+    }
+
+    UnlinkedUnitBuilder definingUnit = _getUnlinkedUnit(source);
+    LinkedLibraryBuilder linkedLibrary =
+        prelink(definingUnit, getPart, getImport);
+    assembler.addLinkedLibrary(source.uri.toString(), linkedLibrary);
+  }
+
+  /**
+   * Convert [sourceEntities] (a list of file specifications of the form
+   * "$uri|$path") to a map from URI to path.  If an error occurs, report the
+   * error and return null.
+   */
+  static Map<Uri, JavaFile> _createUriToFileMap(List<String> sourceEntities) {
+    Map<Uri, JavaFile> uriToFileMap = <Uri, JavaFile>{};
+    for (String sourceFile in sourceEntities) {
+      int pipeIndex = sourceFile.indexOf('|');
+      if (pipeIndex == -1) {
+        // TODO(paulberry): add the ability to guess the URI from the path.
+        errorSink.writeln(
+            'Illegal input file (must be "\$uri|\$path"): $sourceFile');
+        return null;
+      }
+      Uri uri = Uri.parse(sourceFile.substring(0, pipeIndex));
+      String path = sourceFile.substring(pipeIndex + 1);
+      uriToFileMap[uri] = new JavaFile(path);
+    }
+    return uriToFileMap;
+  }
+}
+
+/**
+ * Interface that every worker related data object has.
+ */
+abstract class WorkDataObject {
+  /**
+   * Translate the data in this class into a JSON map.
+   */
+  Map<String, Object> toJson();
+}
+
+/**
+ * Connection between a worker and input / output.
+ */
+abstract class WorkerConnection {
+  /**
+   * Read a new line. Block until a line is read. Return `null` if EOF.
+   */
+  String readLineSync();
+
+  /**
+   * Write the given [json] as a new line to the output.
+   */
+  void writeJson(Map<String, Object> json);
+}
+
+/**
+ * Persistent Bazel worker.
+ */
+class WorkerLoop {
+  static const int EXIT_CODE_OK = 0;
+  static const int EXIT_CODE_ERROR = 15;
+
+  final WorkerConnection connection;
+
+  final StringBuffer errorBuffer = new StringBuffer();
+  final StringBuffer outBuffer = new StringBuffer();
+
+  WorkerLoop(this.connection);
+
+  factory WorkerLoop.std() {
+    WorkerConnection connection = new _StdWorkerConnection();
+    return new WorkerLoop(connection);
+  }
+
+  /**
+   * Performs analysis with given [options].
+   */
+  void analyze(CommandLineOptions options) {
+    new BuildMode(options, new AnalysisStats()).analyze();
+  }
+
+  /**
+   * Perform a single loop step.  Return `true` if should exit the loop.
+   */
+  bool performSingle() {
+    try {
+      WorkRequest request = _readRequest();
+      if (request == null) {
+        return true;
+      }
+      // Prepare options.
+      CommandLineOptions options =
+          CommandLineOptions.parse(request.arguments, (String msg) {
+        throw new ArgumentError(msg);
+      });
+      // Analyze and respond.
+      analyze(options);
+      String msg = _getErrorOutputBuffersText();
+      _writeResponse(new WorkResponse(EXIT_CODE_OK, msg));
+    } catch (e, st) {
+      String msg = _getErrorOutputBuffersText();
+      msg += '$e \n $st';
+      _writeResponse(new WorkResponse(EXIT_CODE_ERROR, msg));
+    }
+    return false;
+  }
+
+  /**
+   * Run the worker loop.
+   */
+  void run() {
+    errorSink = errorBuffer;
+    outSink = outBuffer;
+    exitHandler = (int exitCode) {
+      return throw new StateError('Exit called: $exitCode');
+    };
+    while (true) {
+      errorBuffer.clear();
+      outBuffer.clear();
+      bool shouldExit = performSingle();
+      if (shouldExit) {
+        break;
+      }
+    }
+  }
+
+  String _getErrorOutputBuffersText() {
+    String msg = '';
+    if (errorBuffer.isNotEmpty) {
+      msg += errorBuffer.toString() + '\n';
+    }
+    if (outBuffer.isNotEmpty) {
+      msg += outBuffer.toString() + '\n';
+    }
+    return msg;
+  }
+
+  /**
+   * Read a new [WorkRequest]. Return `null` if EOF.
+   * Throw [ArgumentError] if cannot be parsed.
+   */
+  WorkRequest _readRequest() {
+    String line = connection.readLineSync();
+    if (line == null) {
+      return null;
+    }
+    Object json = JSON.decode(line);
+    if (json is Map) {
+      return new WorkRequest.fromJson(json);
+    } else {
+      throw new ArgumentError('The request line is not a  JSON object: $line');
+    }
+  }
+
+  void _writeResponse(WorkResponse response) {
+    Map<String, Object> json = response.toJson();
+    connection.writeJson(json);
+  }
+}
+
+/**
+ * Input file.
+ */
+class WorkInput implements WorkDataObject {
+  final String path;
+  final List<int> digest;
+
+  WorkInput(this.path, this.digest);
+
+  factory WorkInput.fromJson(Map<String, Object> json) {
+    // Parse path.
+    Object path2 = json['path'];
+    if (path2 == null) {
+      throw new ArgumentError('The field "path" is missing.');
+    }
+    if (path2 is! String) {
+      throw new ArgumentError('The field "path" must be a string.');
+    }
+    // Parse digest.
+    List<int> digest = const <int>[];
+    {
+      Object digestJson = json['digest'];
+      if (digestJson != null) {
+        if (digestJson is List && digestJson.every((e) => e is int)) {
+          digest = digestJson;
+        } else {
+          throw new ArgumentError(
+              'The field "digest" should be a list of int.');
+        }
+      }
+    }
+    // OK
+    return new WorkInput(path2, digest);
+  }
+
+  @override
+  Map<String, Object> toJson() {
+    Map<String, Object> json = <String, Object>{};
+    if (path != null) {
+      json['path'] = path;
+    }
+    if (digest != null) {
+      json['digest'] = digest;
+    }
+    return json;
+  }
+}
+
+/**
+ * Single work unit that Bazel sends to the worker.
+ */
+class WorkRequest implements WorkDataObject {
+  /**
+   * Command line arguments for this request.
+   */
+  final List<String> arguments;
+
+  /**
+   * Input files that the worker is allowed to read during execution of this
+   * request.
+   */
+  final List<WorkInput> inputs;
+
+  WorkRequest(this.arguments, this.inputs);
+
+  factory WorkRequest.fromJson(Map<String, Object> json) {
+    // Parse arguments.
+    List<String> arguments = const <String>[];
+    {
+      Object argumentsJson = json['arguments'];
+      if (argumentsJson != null) {
+        if (argumentsJson is List && argumentsJson.every((e) => e is String)) {
+          arguments = argumentsJson;
+        } else {
+          throw new ArgumentError(
+              'The field "arguments" should be a list of strings.');
+        }
+      }
+    }
+    // Parse inputs.
+    List<WorkInput> inputs = const <WorkInput>[];
+    {
+      Object inputsJson = json['inputs'];
+      if (inputsJson != null) {
+        if (inputsJson is List &&
+            inputsJson.every((e) {
+              return e is Map && e.keys.every((key) => key is String);
+            })) {
+          inputs = inputsJson
+              .map((Map input) => new WorkInput.fromJson(input))
+              .toList();
+        } else {
+          throw new ArgumentError(
+              'The field "inputs" should be a list of objects.');
+        }
+      }
+    }
+    // No inputs.
+    if (arguments.isEmpty && inputs.isEmpty) {
+      throw new ArgumentError('Both "arguments" and "inputs" cannot be empty.');
+    }
+    // OK
+    return new WorkRequest(arguments, inputs);
+  }
+
+  @override
+  Map<String, Object> toJson() {
+    Map<String, Object> json = <String, Object>{};
+    if (arguments != null) {
+      json['arguments'] = arguments;
+    }
+    if (inputs != null) {
+      json['inputs'] = inputs.map((input) => input.toJson()).toList();
+    }
+    return json;
+  }
+}
+
+/**
+ * Result that the worker sends back to Bazel when it finished its work on a
+ * [WorkRequest] message.
+ */
+class WorkResponse implements WorkDataObject {
+  final int exitCode;
+  final String output;
+
+  WorkResponse(this.exitCode, this.output);
+
+  @override
+  Map<String, Object> toJson() {
+    Map<String, Object> json = <String, Object>{};
+    if (exitCode != null) {
+      json['exit_code'] = exitCode;
+    }
+    if (output != null) {
+      json['output'] = output;
+    }
+    return json;
+  }
+}
+
+/**
+ * Default implementation of [WorkerConnection] that works with stdio.
+ */
+class _StdWorkerConnection implements WorkerConnection {
+  @override
+  String readLineSync() {
+    return io.stdin.readLineSync();
+  }
+
+  @override
+  void writeJson(Map<String, Object> json) {
+    io.stdout.writeln(JSON.encode(json));
+  }
+}
diff --git a/pkg/analyzer_cli/lib/src/driver.dart b/pkg/analyzer_cli/lib/src/driver.dart
index eb1df03..f3016d5 100644
--- a/pkg/analyzer_cli/lib/src/driver.dart
+++ b/pkg/analyzer_cli/lib/src/driver.dart
@@ -33,9 +33,9 @@
 import 'package:analyzer/src/services/lint.dart';
 import 'package:analyzer/src/task/options.dart';
 import 'package:analyzer_cli/src/analyzer_impl.dart';
+import 'package:analyzer_cli/src/build_mode.dart';
 import 'package:analyzer_cli/src/error_formatter.dart';
 import 'package:analyzer_cli/src/options.dart';
-import 'package:analyzer_cli/src/package_analyzer.dart';
 import 'package:analyzer_cli/src/perf_report.dart';
 import 'package:analyzer_cli/starter.dart';
 import 'package:linter/src/plugin/linter_plugin.dart';
@@ -124,8 +124,8 @@
     _setupEnv(options);
 
     // Do analysis.
-    if (options.packageMode) {
-      ErrorSeverity severity = _analyzePackage(options);
+    if (options.buildMode) {
+      ErrorSeverity severity = _buildModeAnalyze(options);
       // In case of error propagate exit code.
       if (severity == ErrorSeverity.ERROR) {
         exitCode = severity.ordinal;
@@ -241,10 +241,14 @@
     return allResult;
   }
 
-  /// Perform package analysis according to the given [options].
-  ErrorSeverity _analyzePackage(CommandLineOptions options) {
+  /// Perform analysis in build mode according to the given [options].
+  ErrorSeverity _buildModeAnalyze(CommandLineOptions options) {
     return _analyzeAllTag.makeCurrentWhile(() {
-      return new PackageAnalyzer(options, stats).analyze();
+      if (options.buildModePersistentWorker) {
+        new WorkerLoop.std().run();
+      } else {
+        return new BuildMode(options, stats).analyze();
+      }
     });
   }
 
@@ -588,10 +592,26 @@
     // to activate batch mode.
     if (sdk == null) {
       sdk = new DirectoryBasedDartSdk(new JavaFile(options.dartSdkPath));
+      sdk.analysisOptions = createAnalysisOptionsForCommandLineOptions(options);
     }
     _isBatch = options.shouldBatch;
   }
 
+  static AnalysisOptionsImpl createAnalysisOptionsForCommandLineOptions(
+      CommandLineOptions options) {
+    AnalysisOptionsImpl contextOptions = new AnalysisOptionsImpl();
+    contextOptions.hint = !options.disableHints;
+    contextOptions.enableStrictCallChecks = options.enableStrictCallChecks;
+    contextOptions.enableSuperMixins = options.enableSuperMixins;
+    contextOptions.enableConditionalDirectives =
+        options.enableConditionalDirectives;
+    contextOptions.generateImplicitErrors = options.showPackageWarnings;
+    contextOptions.generateSdkErrors = options.showSdkWarnings;
+    contextOptions.lint = options.lints;
+    contextOptions.strongMode = options.strongMode;
+    return contextOptions;
+  }
+
   static void setAnalysisContextOptions(
       AnalysisContext context,
       CommandLineOptions options,
@@ -609,21 +629,12 @@
     }
 
     // Prepare context options.
-    AnalysisOptionsImpl contextOptions = new AnalysisOptionsImpl();
-    contextOptions.hint = !options.disableHints;
-    contextOptions.enableStrictCallChecks = options.enableStrictCallChecks;
-    contextOptions.enableSuperMixins = options.enableSuperMixins;
-    contextOptions.enableConditionalDirectives =
-        options.enableConditionalDirectives;
-    contextOptions.generateImplicitErrors = options.showPackageWarnings;
-    contextOptions.generateSdkErrors = options.showSdkWarnings;
-    contextOptions.lint = options.lints;
-    contextOptions.strongMode = options.strongMode;
+    AnalysisOptionsImpl contextOptions =
+        createAnalysisOptionsForCommandLineOptions(options);
     configureContextOptions(contextOptions);
 
     // Set context options.
     context.analysisOptions = contextOptions;
-    context.sourceFactory.dartSdk.context.analysisOptions = contextOptions;
 
     // Process analysis options file (and notify all interested parties).
     _processAnalysisOptions(context, options);
diff --git a/pkg/analyzer_cli/lib/src/options.dart b/pkg/analyzer_cli/lib/src/options.dart
index 3f100af..4bf126d 100644
--- a/pkg/analyzer_cli/lib/src/options.dart
+++ b/pkg/analyzer_cli/lib/src/options.dart
@@ -33,6 +33,41 @@
   /// The path to an analysis options file
   final String analysisOptionsFile;
 
+  /// The path to output analysis results when in build mode.
+  final String buildAnalysisOutput;
+
+  /// Whether to use build mode.
+  final bool buildMode;
+
+  /// Whether to use build mode as a Bazel persistent worker.
+  final bool buildModePersistentWorker;
+
+  /// List of summary file paths to use in build mode.
+  final List<String> buildSummaryInputs;
+
+  /// Whether to skip analysis when creating summaries in build mode.
+  final bool buildSummaryOnly;
+
+  /// Whether to create summaries using only ASTs, i.e. don't perform
+  /// resolution.
+  final bool buildSummaryOnlyAst;
+
+  /// Whether to use diet parsing, i.e. skip function bodies. We don't need to
+  /// analyze function bodies to use summaries during future compilation steps.
+  final bool buildSummaryOnlyDiet;
+
+  /// Whether to use exclude informative data from created summaries.
+  final bool buildSummaryExcludeInformative;
+
+  /// The path to output the summary when creating summaries in build mode.
+  final String buildSummaryOutput;
+
+  /// Whether to output a summary in "fallback mode".
+  final bool buildSummaryFallback;
+
+  /// Whether to suppress a nonzero exit code in build mode.
+  final bool buildSuppressExitCode;
+
   /// The path to the dart SDK
   String dartSdkPath;
 
@@ -77,24 +112,6 @@
   /// Whether to use machine format for error display
   final bool machineFormat;
 
-  /// Whether to use the whole package analysis mode.
-  final bool packageMode;
-
-  /// The path of the root folder of the package to analyze.
-  final String packageModePath;
-
-  /// The name of the package being analyzed.
-  final String packageName;
-
-  /// Mapping of package names to package summary file paths.
-  final Map<String, String> packageSummaryInputs;
-
-  /// Whether to skip analysis when creating summaries.
-  final bool packageSummaryOnly;
-
-  /// The path to find the package summary.
-  final String packageSummaryOutput;
-
   /// The path to the package root
   final String packageRootPath;
 
@@ -129,7 +146,19 @@
   /// Initialize options from the given parsed [args].
   CommandLineOptions._fromArgs(
       ArgResults args, Map<String, String> definedVariables)
-      : dartSdkPath = args['dart-sdk'],
+      : buildAnalysisOutput = args['build-analysis-output'],
+        buildMode = args['build-mode'],
+        buildModePersistentWorker = args['persistent_worker'],
+        buildSummaryFallback = args['build-summary-fallback'],
+        buildSummaryInputs = args['build-summary-input'],
+        buildSummaryOnly = args['build-summary-only'],
+        buildSummaryOnlyAst = args['build-summary-only-ast'],
+        buildSummaryOnlyDiet = args['build-summary-only-diet'],
+        buildSummaryExcludeInformative =
+            args['build-summary-exclude-informative'],
+        buildSummaryOutput = args['build-summary-output'],
+        buildSuppressExitCode = args['build-suppress-exit-code'],
+        dartSdkPath = args['dart-sdk'],
         definedVariables = definedVariables,
         analysisOptionsFile = args['options'],
         disableHints = args['no-hints'],
@@ -144,12 +173,6 @@
         lints = args['lints'],
         log = args['log'],
         machineFormat = args['machine'] || args['format'] == 'machine',
-        packageMode = args['package-mode'],
-        packageModePath = args['package-mode-path'],
-        packageName = args['package-name'],
-        packageSummaryInputs = _parsePackageSummaryInputs(args),
-        packageSummaryOnly = args['package-summary-only'],
-        packageSummaryOutput = args['package-summary-output'],
         packageConfigPath = args['packages'],
         packageRootPath = args['package-root'],
         perfReport = args['x-perf-report'],
@@ -167,7 +190,7 @@
   /// analyzer options. In case of a format error, calls [printAndFail], which
   /// by default prints an error message to stderr and exits.
   static CommandLineOptions parse(List<String> args,
-      [printAndFail = printAndFail]) {
+      [printAndFail(String msg) = printAndFail]) {
     CommandLineOptions options = _parse(args);
     // Check SDK.
     {
@@ -209,6 +232,16 @@
           "Null aware operators are supported by default.");
     }
 
+    // Build mode.
+    if (options.buildModePersistentWorker && !options.buildMode) {
+      printAndFail('The option --persisten_worker can be used only '
+          'together with --build-mode.');
+    }
+    if (options.buildSummaryOnlyDiet && !options.buildSummaryOnly) {
+      printAndFail('The option --build-summary-only-diet can be used only '
+          'together with --build-summary-only.');
+    }
+
     return options;
   }
 
@@ -304,37 +337,62 @@
           allowMultiple: true,
           splitCommas: false)
       //
-      // Package analysis mode and summary.
+      // Build mode.
       //
-      ..addFlag('package-mode',
-          help: 'Enable the whole package analysis mode. '
-              'Exactly one input path must be specified, which must be a path '
-              'to the folder with a Pub package.',
+      ..addFlag('persistent_worker',
+          help: 'Enable Bazel persistent worker mode.',
           defaultsTo: false,
           negatable: false,
           hide: true)
-      ..addOption('package-mode-path',
-          help: 'The path of the root folder of the package to analyze.',
+      ..addOption('build-analysis-output',
+          help:
+              'Specifies the path to the file where analysis results should be written.',
           hide: true)
-      ..addOption('package-name',
-          help: 'The name of the package to analyze, as it is used by clients.',
+      ..addFlag('build-mode',
+          // TODO(paulberry): add more documentation.
+          help: 'Enable build mode.',
+          defaultsTo: false,
+          negatable: false,
           hide: true)
-      ..addOption('package-summary-input',
-          help: '--package-summary-input=packageName,/path/to/package.sum '
-              'specifies the summary file that contains information about '
-              'every library of the specified package.',
+      ..addOption('build-summary-input',
+          help: 'Path to a summary file that contains information from a '
+              'previous analysis run.  May be specified multiple times.',
           allowMultiple: true,
-          splitCommas: false,
           hide: true)
-      ..addOption('package-summary-output',
+      ..addOption('build-summary-output',
           help: 'Specifies the path to the file where the summary information '
-              'about the package should be written to.',
+              'should be written.',
           hide: true)
-      ..addFlag('package-summary-only',
+      ..addFlag('build-summary-only',
           help: 'Disable analysis (only generate summaries).',
           defaultsTo: false,
           negatable: false,
           hide: true)
+      ..addFlag('build-summary-only-ast',
+          help: 'Generate summaries using ASTs.',
+          defaultsTo: false,
+          negatable: false,
+          hide: true)
+      ..addFlag('build-summary-only-diet',
+          help: 'Diet parse function bodies.',
+          defaultsTo: false,
+          negatable: false,
+          hide: true)
+      ..addFlag('build-summary-exclude-informative',
+          help: 'Exclude @informative information (docs, offsets, etc).',
+          defaultsTo: false,
+          negatable: false,
+          hide: true)
+      ..addFlag('build-summary-fallback',
+          help: 'If outputting a summary, output it in fallback mode.',
+          defaultsTo: false,
+          negatable: false,
+          hide: true)
+      ..addFlag('build-suppress-exit-code',
+          help: 'Exit with code 0 even if errors are found.',
+          defaultsTo: false,
+          negatable: false,
+          hide: true)
       //
       // Hidden flags.
       //
@@ -392,6 +450,17 @@
           args.map((String arg) => arg == '-batch' ? '--batch' : arg).toList();
       Map<String, String> definedVariables = <String, String>{};
       var results = parser.parse(args, definedVariables);
+
+      // Persistent worker.
+      if (args.contains('--persistent_worker')) {
+        if (args.length != 2 || !args.contains('--build-mode')) {
+          printAndFail('The --persistent_worker flag should be used with and '
+              'only with the --build-mode flag.');
+          return null; // Only reachable in testing.
+        }
+        return new CommandLineOptions._fromArgs(results, definedVariables);
+      }
+
       // Help requests.
       if (results['help']) {
         _showUsage(parser);
@@ -406,6 +475,14 @@
           exitHandler(15);
           return null; // Only reachable in testing.
         }
+      } else if (results['persistent_worker']) {
+        if (results.rest.isNotEmpty) {
+          errorSink.writeln(
+              'No source files expected in the persistent worker mode.');
+          _showUsage(parser);
+          exitHandler(15);
+          return null; // Only reachable in testing.
+        }
       } else if (results['version']) {
         outSink.write('$_binaryName version ${_getVersion()}');
         exitHandler(0);
@@ -426,27 +503,6 @@
     }
   }
 
-  /// Parse the `--package-summary-input` arguments into a Map of package
-  /// names to summary paths.
-  static Map<String, String> _parsePackageSummaryInputs(ArgResults args) {
-    Map<String, String> result = <String, String>{};
-    List<String> argList = args['package-summary-input'];
-    for (String arg in argList) {
-      int index = arg.indexOf(',');
-      if (index == -1) {
-        errorSink.writeln(
-            'The syntax is --package-summary-input=packageName,/path/to/pkg.sum');
-        errorSink.writeln('No comma found in: $arg');
-        exitHandler(15);
-        return null; // Only reachable in testing.
-      }
-      String packageName = arg.substring(0, index);
-      String summaryPath = arg.substring(index + 1);
-      result[packageName] = summaryPath;
-    }
-    return result;
-  }
-
   static _showUsage(parser) {
     errorSink
         .writeln('Usage: $_binaryName [options...] <libraries to analyze...>');
diff --git a/pkg/analyzer_cli/lib/src/package_analyzer.dart b/pkg/analyzer_cli/lib/src/package_analyzer.dart
deleted file mode 100644
index fd173a3..0000000
--- a/pkg/analyzer_cli/lib/src/package_analyzer.dart
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright (c) 2015, 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 analyzer_cli.src.package_analyzer;
-
-import 'dart:core' hide Resource;
-import 'dart:io' as io;
-
-import 'package:analyzer/dart/element/element.dart';
-import 'package:analyzer/file_system/file_system.dart';
-import 'package:analyzer/file_system/physical_file_system.dart';
-import 'package:analyzer/source/package_map_resolver.dart';
-import 'package:analyzer/src/generated/engine.dart';
-import 'package:analyzer/src/generated/error.dart';
-import 'package:analyzer/src/generated/java_io.dart';
-import 'package:analyzer/src/generated/sdk_io.dart';
-import 'package:analyzer/src/generated/source.dart';
-import 'package:analyzer/src/generated/source_io.dart';
-import 'package:analyzer/src/summary/format.dart';
-import 'package:analyzer/src/summary/package_bundle_reader.dart';
-import 'package:analyzer/src/summary/summarize_elements.dart';
-import 'package:analyzer_cli/src/analyzer_impl.dart';
-import 'package:analyzer_cli/src/driver.dart';
-import 'package:analyzer_cli/src/error_formatter.dart';
-import 'package:analyzer_cli/src/options.dart';
-import 'package:path/path.dart' as pathos;
-
-/**
- * The hermetic whole package analyzer.
- */
-class PackageAnalyzer {
-  final CommandLineOptions options;
-  final AnalysisStats stats;
-
-  String packagePath;
-  String packageLibPath;
-
-  final ResourceProvider resourceProvider = PhysicalResourceProvider.INSTANCE;
-  InternalAnalysisContext context;
-  final List<Source> explicitSources = <Source>[];
-
-  PackageAnalyzer(this.options, this.stats);
-
-  /**
-   * Perform package analysis according to the given [options].
-   */
-  ErrorSeverity analyze() {
-    packagePath = resourceProvider.pathContext.normalize(resourceProvider
-        .pathContext
-        .join(io.Directory.current.absolute.path, options.packageModePath));
-    packageLibPath = resourceProvider.pathContext.join(packagePath, 'lib');
-    if (packageLibPath == null) {
-      errorSink.writeln('--package-mode-path must be set to the root '
-          'folder of the package to analyze.');
-      io.exitCode = ErrorSeverity.ERROR.ordinal;
-      return ErrorSeverity.ERROR;
-    }
-
-    // Write the progress message.
-    if (!options.machineFormat) {
-      outSink.writeln("Analyzing sources ${options.sourceFiles}...");
-    }
-
-    // Prepare the analysis context.
-    _createContext();
-
-    // Add sources.
-    ChangeSet changeSet = new ChangeSet();
-    for (String path in options.sourceFiles) {
-      if (AnalysisEngine.isDartFileName(path)) {
-        File file = resourceProvider.getFile(path);
-        if (!file.exists) {
-          errorSink.writeln('File not found: $path');
-          io.exitCode = ErrorSeverity.ERROR.ordinal;
-          return ErrorSeverity.ERROR;
-        }
-        Source source = _createSourceInContext(file);
-        explicitSources.add(source);
-        changeSet.addedSource(source);
-      }
-    }
-    context.applyChanges(changeSet);
-
-    if (!options.packageSummaryOnly) {
-      // Perform full analysis.
-      while (true) {
-        AnalysisResult analysisResult = context.performAnalysisTask();
-        if (!analysisResult.hasMoreWork) {
-          break;
-        }
-      }
-    }
-
-    // Write summary for Dart libraries.
-    if (options.packageSummaryOutput != null) {
-      PackageBundleAssembler assembler = new PackageBundleAssembler();
-      for (Source source in explicitSources) {
-        if (context.computeKindOf(source) != SourceKind.LIBRARY) {
-          continue;
-        }
-        if (pathos.isWithin(packageLibPath, source.fullName)) {
-          LibraryElement libraryElement = context.computeLibraryElement(source);
-          assembler.serializeLibraryElement(libraryElement);
-        }
-      }
-      // Write the whole package bundle.
-      PackageBundleBuilder sdkBundle = assembler.assemble();
-      io.File file = new io.File(options.packageSummaryOutput);
-      file.writeAsBytesSync(sdkBundle.toBuffer(), mode: io.FileMode.WRITE_ONLY);
-    }
-
-    if (options.packageSummaryOnly) {
-      return ErrorSeverity.NONE;
-    } else {
-      // Process errors.
-      _printErrors();
-      return _computeMaxSeverity();
-    }
-  }
-
-  ErrorSeverity _computeMaxSeverity() {
-    ErrorSeverity maxSeverity = ErrorSeverity.NONE;
-    for (Source source in explicitSources) {
-      AnalysisErrorInfo errorInfo = context.getErrors(source);
-      for (AnalysisError error in errorInfo.errors) {
-        ProcessedSeverity processedSeverity =
-            AnalyzerImpl.processError(error, options, context);
-        if (processedSeverity != null) {
-          maxSeverity = maxSeverity.max(processedSeverity.severity);
-        }
-      }
-    }
-    return maxSeverity;
-  }
-
-  void _createContext() {
-    DirectoryBasedDartSdk sdk =
-        new DirectoryBasedDartSdk(new JavaFile(options.dartSdkPath));
-
-    // Create the context.
-    context = AnalysisEngine.instance.createAnalysisContext();
-    context.sourceFactory = new SourceFactory(<UriResolver>[
-      new DartUriResolver(sdk),
-      new InSummaryPackageUriResolver(options.packageSummaryInputs),
-      new PackageMapUriResolver(resourceProvider, <String, List<Folder>>{
-        options.packageName: <Folder>[
-          resourceProvider.getFolder(packageLibPath)
-        ],
-      }),
-      new FileUriResolver()
-    ]);
-
-    // Set context options.
-    Driver.setAnalysisContextOptions(
-        context, options, (AnalysisOptionsImpl contextOptions) {});
-
-    // Configure using summaries.
-    sdk.useSummary = true;
-    context.typeProvider = sdk.context.typeProvider;
-    context.resultProvider =
-        new InputPackagesResultProvider(context, options.packageSummaryInputs);
-  }
-
-  /**
-   * Create and return a source representing the given [file].
-   */
-  Source _createSourceInContext(File file) {
-    Source source = file.createSource();
-    if (context == null) {
-      return source;
-    }
-    Uri uri = context.sourceFactory.restoreUri(source);
-    return file.createSource(uri);
-  }
-
-  /**
-   * Print errors for all explicit sources.
-   */
-  void _printErrors() {
-    StringSink sink = options.machineFormat ? errorSink : outSink;
-    ErrorFormatter formatter = new ErrorFormatter(
-        sink,
-        options,
-        stats,
-        (AnalysisError error) =>
-            AnalyzerImpl.processError(error, options, context));
-    for (Source source in explicitSources) {
-      AnalysisErrorInfo errorInfo = context.getErrors(source);
-      formatter.formatErrors([errorInfo]);
-    }
-    stats.print(sink);
-  }
-}
diff --git a/pkg/analyzer_cli/test/all.dart b/pkg/analyzer_cli/test/all.dart
index 1fd1dd7..13f72d1 100644
--- a/pkg/analyzer_cli/test/all.dart
+++ b/pkg/analyzer_cli/test/all.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'boot_loader_test.dart' as boot_loader;
+import 'build_mode_test.dart' as build_mode_test;
 import 'driver_test.dart' as driver;
 import 'error_test.dart' as error;
 import 'options_test.dart' as options;
@@ -16,6 +17,7 @@
 
 main() {
   boot_loader.main();
+  build_mode_test.main();
   driver.main();
   // TODO(pq): fix tests to run safely on the bots
   // https://github.com/dart-lang/sdk/issues/25001
diff --git a/pkg/analyzer_cli/test/build_mode_test.dart b/pkg/analyzer_cli/test/build_mode_test.dart
new file mode 100644
index 0000000..29c4da6
--- /dev/null
+++ b/pkg/analyzer_cli/test/build_mode_test.dart
@@ -0,0 +1,301 @@
+// Copyright (c) 2016, 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 analyzer_cli.test.built_mode;
+
+import 'dart:convert';
+
+import 'package:analyzer_cli/src/build_mode.dart';
+import 'package:analyzer_cli/src/driver.dart';
+import 'package:analyzer_cli/src/options.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+import 'package:typed_mock/typed_mock.dart';
+import 'package:unittest/unittest.dart';
+
+main() {
+  defineReflectiveTests(WorkerLoopTest);
+  defineReflectiveTests(WorkInputTest);
+  defineReflectiveTests(WorkRequestTest);
+}
+
+typedef void _TestWorkerLoopAnalyze(CommandLineOptions options);
+
+@reflectiveTest
+class WorkerLoopTest {
+  final _TestWorkerConnection connection = new _TestWorkerConnection();
+
+  void setUp() {}
+
+  test_run() {
+    _setInputLine(JSON.encode({
+      'arguments': [
+        '--build-summary-input=/tmp/1.sum',
+        '--build-summary-input=/tmp/2.sum',
+        'package:foo/foo.dart|/inputs/foo/lib/foo.dart',
+        'package:foo/bar.dart|/inputs/foo/lib/bar.dart'
+      ],
+    }));
+    new _TestWorkerLoop(connection, (CommandLineOptions options) {
+      expect(options.buildSummaryInputs,
+          unorderedEquals(['/tmp/1.sum', '/tmp/2.sum']));
+      expect(
+          options.sourceFiles,
+          unorderedEquals([
+            'package:foo/foo.dart|/inputs/foo/lib/foo.dart',
+            'package:foo/bar.dart|/inputs/foo/lib/bar.dart'
+          ]));
+      outSink.writeln('outSink a');
+      errorSink.writeln('errorSink a');
+      outSink.writeln('outSink b');
+      errorSink.writeln('errorSink b');
+    }).run();
+    expect(connection.outputList, hasLength(1));
+    expect(connection.outputList[0], {
+      'exit_code': WorkerLoop.EXIT_CODE_OK,
+      'output': allOf(contains('errorSink a'), contains('errorSink a'),
+          contains('outSink a'), contains('outSink b'))
+    });
+  }
+
+  test_run_invalidOptions() {
+    _setInputLine(JSON.encode({
+      'arguments': ['--unknown-option', '/foo.dart', '/bar.dart',],
+    }));
+    new _TestWorkerLoop(connection).run();
+    expect(connection.outputList, hasLength(1));
+    expect(connection.outputList[0],
+        {'exit_code': WorkerLoop.EXIT_CODE_ERROR, 'output': anything});
+  }
+
+  test_run_invalidRequest_noArgumentsInputs() {
+    _setInputLine('{}');
+    new _TestWorkerLoop(connection).run();
+    expect(connection.outputList, hasLength(1));
+    expect(connection.outputList[0],
+        {'exit_code': WorkerLoop.EXIT_CODE_ERROR, 'output': anything});
+  }
+
+  test_run_invalidRequest_notJson() {
+    _setInputLine('not a JSON string');
+    new _TestWorkerLoop(connection).run();
+    expect(connection.outputList, hasLength(1));
+    expect(connection.outputList[0],
+        {'exit_code': WorkerLoop.EXIT_CODE_ERROR, 'output': anything});
+  }
+
+  test_run_stopAtEOF() {
+    when(connection.readLineSync()).thenReturnList([null]);
+    new _TestWorkerLoop(connection).run();
+  }
+
+  void _setInputLine(String line) {
+    when(connection.readLineSync()).thenReturnList([line, null]);
+  }
+}
+
+@reflectiveTest
+class WorkInputTest {
+  test_fromJson() {
+    WorkInput input = new WorkInput.fromJson({
+      'path': '/my/path',
+      'digest': [1, 2, 3, 4, 5]
+    });
+    expect(input.path, '/my/path');
+    expect(input.digest, <int>[1, 2, 3, 4, 5]);
+  }
+
+  test_fromJson_digest_isMissing() {
+    WorkInput input = new WorkInput.fromJson({'path': '/my/path',});
+    expect(input.path, '/my/path');
+    expect(input.digest, <int>[]);
+  }
+
+  test_fromJson_digest_isNotList() {
+    expect(() {
+      new WorkInput.fromJson({'path': '/my/path', 'digest': 0});
+    }, throwsArgumentError);
+  }
+
+  test_fromJson_digest_isNotListOfInt() {
+    expect(() {
+      new WorkInput.fromJson({
+        'path': '/my/path',
+        'digest': ['a', 'b', 'c']
+      });
+    }, throwsArgumentError);
+  }
+
+  test_fromJson_path_isMissing() {
+    expect(() {
+      new WorkInput.fromJson({
+        'digest': [1, 2, 3, 4, 5]
+      });
+    }, throwsArgumentError);
+  }
+
+  test_fromJson_path_isNotString() {
+    expect(() {
+      new WorkInput.fromJson({
+        'path': 0,
+        'digest': [1, 2, 3, 4, 5]
+      });
+    }, throwsArgumentError);
+  }
+
+  test_toJson() {
+    WorkInput input = new WorkInput('/my/path', <int>[1, 2, 3, 4, 5]);
+    Map<String, Object> json = input.toJson();
+    expect(json, {
+      'path': '/my/path',
+      'digest': [1, 2, 3, 4, 5]
+    });
+  }
+
+  test_toJson_withoutDigest() {
+    WorkInput input = new WorkInput('/my/path', null);
+    Map<String, Object> json = input.toJson();
+    expect(json, {'path': '/my/path'});
+  }
+}
+
+@reflectiveTest
+class WorkRequestTest {
+  test_fromJson() {
+    WorkRequest request = new WorkRequest.fromJson({
+      'arguments': ['--arg1', '--arg2', '--arg3'],
+      'inputs': [
+        {
+          'path': '/my/path1',
+          'digest': [11, 12, 13]
+        },
+        {
+          'path': '/my/path2',
+          'digest': [21, 22, 23]
+        }
+      ]
+    });
+    expect(request.arguments, ['--arg1', '--arg2', '--arg3']);
+    expect(request.inputs, hasLength(2));
+    expect(request.inputs[0].path, '/my/path1');
+    expect(request.inputs[0].digest, <int>[11, 12, 13]);
+    expect(request.inputs[1].path, '/my/path2');
+    expect(request.inputs[1].digest, <int>[21, 22, 23]);
+  }
+
+  test_fromJson_arguments_isMissing() {
+    WorkRequest request = new WorkRequest.fromJson({
+      'inputs': [
+        {
+          'path': '/my/path1',
+          'digest': [11, 12, 13]
+        },
+      ]
+    });
+    expect(request.arguments, isEmpty);
+    expect(request.inputs, hasLength(1));
+    expect(request.inputs[0].path, '/my/path1');
+    expect(request.inputs[0].digest, <int>[11, 12, 13]);
+  }
+
+  test_fromJson_arguments_isNotList() {
+    expect(() {
+      new WorkRequest.fromJson({'arguments': 0, 'inputs': []});
+    }, throwsArgumentError);
+  }
+
+  test_fromJson_arguments_isNotListOfString() {
+    expect(() {
+      new WorkRequest.fromJson({
+        'arguments': [0, 1, 2],
+        'inputs': []
+      });
+    }, throwsArgumentError);
+  }
+
+  test_fromJson_inputs_isMissing() {
+    WorkRequest request = new WorkRequest.fromJson({
+      'arguments': ['--arg1', '--arg2', '--arg3'],
+    });
+    expect(request.arguments, ['--arg1', '--arg2', '--arg3']);
+    expect(request.inputs, hasLength(0));
+  }
+
+  test_fromJson_inputs_isNotList() {
+    expect(() {
+      new WorkRequest.fromJson({
+        'arguments': ['--arg1', '--arg2', '--arg3'],
+        'inputs': 0
+      });
+    }, throwsArgumentError);
+  }
+
+  test_fromJson_inputs_isNotListOfObject() {
+    expect(() {
+      new WorkRequest.fromJson({
+        'arguments': ['--arg1', '--arg2', '--arg3'],
+        'inputs': [0, 1, 2]
+      });
+    }, throwsArgumentError);
+  }
+
+  test_fromJson_noArgumentsInputs() {
+    expect(() {
+      new WorkRequest.fromJson({});
+    }, throwsArgumentError);
+  }
+
+  test_toJson() {
+    WorkRequest request = new WorkRequest(<String>[
+      '--arg1',
+      '--arg2',
+      '--arg3'
+    ], <WorkInput>[
+      new WorkInput('/my/path1', <int>[11, 12, 13]),
+      new WorkInput('/my/path2', <int>[21, 22, 23])
+    ]);
+    Map<String, Object> json = request.toJson();
+    expect(json, {
+      'arguments': ['--arg1', '--arg2', '--arg3'],
+      'inputs': [
+        {
+          'path': '/my/path1',
+          'digest': [11, 12, 13]
+        },
+        {
+          'path': '/my/path2',
+          'digest': [21, 22, 23]
+        }
+      ]
+    });
+  }
+}
+
+/**
+ * [WorkerConnection] mock.
+ */
+class _TestWorkerConnection extends TypedMock implements WorkerConnection {
+  final outputList = <Map<String, Object>>[];
+
+  @override
+  void writeJson(Map<String, Object> json) {
+    outputList.add(json);
+  }
+}
+
+/**
+ * [WorkerLoop] for testing.
+ */
+class _TestWorkerLoop extends WorkerLoop {
+  final _TestWorkerLoopAnalyze _analyze;
+
+  _TestWorkerLoop(WorkerConnection connection, [this._analyze])
+      : super(connection);
+
+  @override
+  void analyze(CommandLineOptions options) {
+    if (_analyze != null) {
+      _analyze(options);
+    }
+  }
+}
diff --git a/pkg/analyzer_cli/test/driver_test.dart b/pkg/analyzer_cli/test/driver_test.dart
index 244788c..efd6362 100644
--- a/pkg/analyzer_cli/test/driver_test.dart
+++ b/pkg/analyzer_cli/test/driver_test.dart
@@ -252,8 +252,7 @@
               outSink.toString(),
               contains(
                   "[error] This function declares a return type of 'int'"));
-          expect(outSink.toString(),
-              contains("1 error and 1 warning found."));
+          expect(outSink.toString(), contains("1 error and 1 warning found."));
         });
 
         test('language', () {
@@ -280,12 +279,54 @@
           // Should not be made fatal by `--fatal-warnings`.
           expect(outSink.toString(),
               contains("[warning] The function 'baz' is not defined"));
-          expect(outSink.toString(),
-              contains("1 error and 1 warning found."));
+          expect(outSink.toString(), contains("1 error and 1 warning found."));
         });
       });
     });
 
+    group('build-mode', () {
+      // Shared driver command.
+      void doDrive(String filePath, {List<String> additionalArgs: const []}) {
+        drive('file:///test_file.dart|$filePath',
+            args: [
+              '--dart-sdk',
+              findSdkDirForSummaries(),
+              '--build-mode',
+              '--machine'
+            ]..addAll(additionalArgs),
+            options: 'data/options_tests_project/.analysis_options');
+      }
+
+      test('no stats', () {
+        doDrive('data/test_file.dart');
+        // Should not print stat summary.
+        expect(outSink.toString(), isEmpty);
+        expect(errorSink.toString(), isEmpty);
+        expect(exitCode, 0);
+      });
+
+      test(
+          'Fails if file not found, even when --build-suppress-exit-code is given',
+          () {
+        doDrive('data/non_existent_file.dart',
+            additionalArgs: ['--build-suppress-exit-code']);
+        expect(exitCode, isNot(0));
+      });
+
+      test('Fails if there are errors', () {
+        doDrive('data/file_with_error.dart');
+        expect(exitCode, isNot(0));
+      });
+
+      test(
+          'Succeeds if there are errors, when --build-suppress-exit-code is given',
+          () {
+        doDrive('data/file_with_error.dart',
+            additionalArgs: ['--build-suppress-exit-code']);
+        expect(exitCode, 0);
+      });
+    });
+
 //TODO(pq): fix to be bot-friendly (sdk#25258).
 //    group('in temp directory', () {
 //      Directory savedCurrentDirectory;
@@ -348,8 +389,6 @@
 //      });
 //    });
   });
-
-
 }
 
 const emptyOptionsFile = 'data/empty_options.yaml';
@@ -360,8 +399,14 @@
 List<ErrorProcessor> get processors =>
     driver.context.getConfigurationData(CONFIGURED_ERROR_PROCESSORS);
 
-ErrorProcessor processorFor(AnalysisError error) =>
-    processors.firstWhere((p) => p.appliesTo(error));
+/// Convert a file specification from a relative path to an absolute path.
+/// Handles the case where the file specification is of the form "$uri|$path".
+String adjustFileSpec(String fileSpec) {
+  int uriPrefixLength = fileSpec.indexOf('|') + 1;
+  String uriPrefix = fileSpec.substring(0, uriPrefixLength);
+  String relativePath = fileSpec.substring(uriPrefixLength);
+  return '$uriPrefix${path.join(testDirectory, relativePath)}';
+}
 
 /// Start a driver for the given [source], optionally providing additional
 /// [args] and an [options] file path.  The value of [options] defaults to
@@ -373,14 +418,60 @@
   var cmd = [
     '--options',
     path.join(testDirectory, options),
-    path.join(testDirectory, source)
+    adjustFileSpec(source)
   ]..addAll(args);
   driver.start(cmd);
 }
 
+/// Try to find a appropriate directory to pass to "--dart-sdk" that will
+/// allow summaries to be found.
+String findSdkDirForSummaries() {
+  Set<String> triedDirectories = new Set<String>();
+  bool isSuitable(String sdkDir) {
+    triedDirectories.add(sdkDir);
+    return new File(path.join(sdkDir, 'lib', '_internal', 'spec.sum'))
+        .existsSync();
+  }
+  // Usually the sdk directory is the parent of the parent of the "dart"
+  // executable.
+  Directory executableParent = new File(Platform.executable).parent;
+  Directory executableGrandparent = executableParent.parent;
+  if (isSuitable(executableGrandparent.path)) {
+    return executableGrandparent.path;
+  }
+  // During buildbot execution, the sdk directory is simply the parent of the
+  // "dart" executable.
+  if (isSuitable(executableParent.path)) {
+    return executableParent.path;
+  }
+  // If neither of those are suitable, assume we are running locally within the
+  // SDK project (e.g. within an IDE).  Find the build output directory and
+  // search all built configurations.
+  Directory sdkRootDir =
+      new File(Platform.script.toFilePath()).parent.parent.parent.parent;
+  for (String outDirName in ['out', 'xcodebuild']) {
+    Directory outDir = new Directory(path.join(sdkRootDir.path, outDirName));
+    if (outDir.existsSync()) {
+      for (FileSystemEntity subdir in outDir.listSync()) {
+        if (subdir is Directory) {
+          String candidateSdkDir = path.join(subdir.path, 'dart-sdk');
+          if (isSuitable(candidateSdkDir)) {
+            return candidateSdkDir;
+          }
+        }
+      }
+    }
+  }
+  throw new Exception('Could not find an SDK directory containing summaries.'
+      '  Tried: ${triedDirectories.toList()}');
+}
+
 Map<String, YamlNode> parseOptions(String src) =>
     new AnalysisOptionsProvider().getOptionsFromString(src);
 
+ErrorProcessor processorFor(AnalysisError error) =>
+    processors.firstWhere((p) => p.appliesTo(error));
+
 class TestPlugin extends Plugin {
   TestProcessor processor;
   TestPlugin(this.processor);
diff --git a/pkg/analyzer_cli/test/options_test.dart b/pkg/analyzer_cli/test/options_test.dart
index 39e863a..63354da 100644
--- a/pkg/analyzer_cli/test/options_test.dart
+++ b/pkg/analyzer_cli/test/options_test.dart
@@ -19,6 +19,13 @@
         CommandLineOptions options =
             CommandLineOptions.parse(['--dart-sdk', '.', 'foo.dart']);
         expect(options, isNotNull);
+        expect(options.buildMode, isFalse);
+        expect(options.buildAnalysisOutput, isNull);
+        expect(options.buildSummaryFallback, isFalse);
+        expect(options.buildSummaryInputs, isEmpty);
+        expect(options.buildSummaryOnly, isFalse);
+        expect(options.buildSummaryOutput, isNull);
+        expect(options.buildSuppressExitCode, isFalse);
         expect(options.dartSdkPath, isNotNull);
         expect(options.disableHints, isFalse);
         expect(options.lints, isFalse);
@@ -31,9 +38,7 @@
         expect(options.ignoreUnrecognizedFlags, isFalse);
         expect(options.log, isFalse);
         expect(options.machineFormat, isFalse);
-        expect(options.packageMode, isFalse);
         expect(options.packageRootPath, isNull);
-        expect(options.packageSummaryInputs, isEmpty);
         expect(options.shouldBatch, isFalse);
         expect(options.showPackageWarnings, isFalse);
         expect(options.showSdkWarnings, isFalse);
@@ -231,45 +236,84 @@
 class CommandLineOptionsTest extends AbstractStatusTest {
   CommandLineOptions options;
 
-  test_packageMode() {
-    _parse(['--package-mode', '/path/to/pkg']);
-    expect(options.packageMode, isTrue);
-    print(options.packageSummaryInputs);
+  test_buildAnalysisOutput() {
+    _parse([
+      '--build-mode',
+      '--build-analysis-output=//path/to/output.analysis',
+      'package:p/foo.dart|/path/to/p/lib/foo.dart'
+    ]);
+    expect(options.buildMode, isTrue);
+    expect(options.buildAnalysisOutput, '//path/to/output.analysis');
   }
 
-  test_packageSummaryInput() {
-    _parse([
-      '--package-mode',
-      '--package-summary-input=aaa,/path/to/aaa.sum',
-      '--package-summary-input=long.package.bbb,/path/to/bbb.sum',
-      '/path/to/pkg'
-    ]);
-    expect(options.packageMode, isTrue);
-    Map<String, String> map = options.packageSummaryInputs;
-    expect(map, hasLength(2));
-    expect(map, containsPair('aaa', '/path/to/aaa.sum'));
-    expect(map, containsPair('long.package.bbb', '/path/to/bbb.sum'));
+  test_buildMode() {
+    _parse(['--build-mode', 'package:p/foo.dart|/path/to/p/lib/foo.dart']);
+    expect(options.buildMode, isTrue);
   }
 
-  test_packageSummaryInput_noComma() {
+  test_buildSummaryFallback() {
     _parse([
-      '--package-mode',
-      '--package-summary-input=noCommaInMapping',
-      '/path/to/pkg'
+      '--build-mode',
+      '--build-summary-output=//path/to/output.sum',
+      '--build-summary-fallback',
+      'package:p/foo.dart|/path/to/p/lib/foo.dart'
     ]);
-    expect(lastExitHandlerCode, 15);
-    expect(errorStringBuffer.toString(), contains('--package-summary-input'));
-    expect(errorStringBuffer.toString(), contains('noCommaInMapping'));
+    expect(options.buildMode, isTrue);
+    expect(options.buildSummaryFallback, isTrue);
   }
 
-  test_packageSummaryOutput() {
+  test_buildSummaryInputs_commaSeparated() {
     _parse([
-      '--package-mode',
-      '--package-summary-output=/path/to/output.sum',
-      '/path/to/pkg'
+      '--build-mode',
+      '--build-summary-input=/path/to/aaa.sum,/path/to/bbb.sum',
+      'package:p/foo.dart|/path/to/p/lib/foo.dart'
     ]);
-    expect(options.packageMode, isTrue);
-    expect(options.packageSummaryOutput, '/path/to/output.sum');
+    expect(options.buildMode, isTrue);
+    expect(
+        options.buildSummaryInputs, ['/path/to/aaa.sum', '/path/to/bbb.sum']);
+  }
+
+  test_buildSummaryInputs_separateFlags() {
+    _parse([
+      '--build-mode',
+      '--build-summary-input=/path/to/aaa.sum',
+      '--build-summary-input=/path/to/bbb.sum',
+      'package:p/foo.dart|/path/to/p/lib/foo.dart'
+    ]);
+    expect(options.buildMode, isTrue);
+    expect(
+        options.buildSummaryInputs, ['/path/to/aaa.sum', '/path/to/bbb.sum']);
+  }
+
+  test_buildSummaryOnly() {
+    _parse([
+      '--build-mode',
+      '--build-summary-output=/path/to/aaa.sum',
+      '--build-summary-only',
+      'package:p/foo.dart|/path/to/p/lib/foo.dart'
+    ]);
+    expect(options.buildMode, isTrue);
+    expect(options.buildSummaryOnly, isTrue);
+  }
+
+  test_buildSummaryOutput() {
+    _parse([
+      '--build-mode',
+      '--build-summary-output=//path/to/output.sum',
+      'package:p/foo.dart|/path/to/p/lib/foo.dart'
+    ]);
+    expect(options.buildMode, isTrue);
+    expect(options.buildSummaryOutput, '//path/to/output.sum');
+  }
+
+  test_buildSuppressExitCode() {
+    _parse([
+      '--build-mode',
+      '--build-suppress-exit-code',
+      'package:p/foo.dart|/path/to/p/lib/foo.dart'
+    ]);
+    expect(options.buildMode, isTrue);
+    expect(options.buildSuppressExitCode, isTrue);
   }
 
   void _parse(List<String> args) {
diff --git a/pkg/analyzer_cli/test/package_prefix_test.dart b/pkg/analyzer_cli/test/package_prefix_test.dart
index 1ba203f..22d71e1 100644
--- a/pkg/analyzer_cli/test/package_prefix_test.dart
+++ b/pkg/analyzer_cli/test/package_prefix_test.dart
@@ -2,6 +2,7 @@
 
 import 'package:analyzer_cli/src/driver.dart' show Driver, outSink, errorSink;
 import 'package:analyzer_cli/src/options.dart' show ExitHandler, exitHandler;
+import 'package:path/path.dart';
 import 'package:unittest/unittest.dart';
 
 import 'utils.dart' show testDirectory;
@@ -22,14 +23,14 @@
     test('shows only the hint whose package matches the prefix', () {
       runner.run([
         "--packages",
-        "$testDirectory/data/package_prefix/packagelist",
+        join(testDirectory, 'data', 'package_prefix', 'packagelist'),
         "--x-package-warnings-prefix=f",
-        "$testDirectory/data/package_prefix/main.dart"
+        join(testDirectory, 'data', 'package_prefix', 'main.dart')
       ]);
-      print("ran it");
       expect(runner.stdout, contains('1 hint found'));
       expect(runner.stdout, contains('Unused import'));
-      expect(runner.stdout, contains('package_prefix/pkg/foo/foo.dart'));
+      expect(runner.stdout,
+          contains(join('package_prefix', 'pkg', 'foo', 'foo.dart')));
       expect(runner.stdout, isNot(contains('bar.dart')));
     });
   });
@@ -54,6 +55,9 @@
     exitHandler = (_) {};
   }
 
+  String get stderr => _stderr.toString();
+
+  String get stdout => _stdout.toString();
   void run(List<String> args) {
     new Driver().start(args);
     if (stderr.isNotEmpty) {
@@ -61,9 +65,6 @@
     }
   }
 
-  String get stdout => _stdout.toString();
-  String get stderr => _stderr.toString();
-
   void tearDown() {
     outSink = _savedOutSink;
     errorSink = _savedErrorSink;
diff --git a/pkg/compiler/lib/src/apiimpl.dart b/pkg/compiler/lib/src/apiimpl.dart
index 42eda64..9e28d01 100644
--- a/pkg/compiler/lib/src/apiimpl.dart
+++ b/pkg/compiler/lib/src/apiimpl.dart
@@ -26,18 +26,11 @@
 import 'diagnostics/messages.dart' show
     Message;
 import 'elements/elements.dart' as elements;
+import 'environment.dart';
 import 'io/source_file.dart';
 import 'platform_configuration.dart' as platform_configuration;
 import 'script.dart';
 
-/// For every 'dart:' library, a corresponding environment variable is set
-/// to "true". The environment variable's name is the concatenation of
-/// this prefix and the name (without the 'dart:'.
-///
-/// For example 'dart:html' has the environment variable 'dart.library.html' set
-/// to "true".
-const String dartLibraryEnvironmentPrefix = 'dart.library.';
-
 
 /// Implements the [Compiler] using a [api.CompilerInput] for supplying the
 /// sources.
@@ -60,7 +53,10 @@
 
   CompilerImpl(this.provider, api.CompilerOutput outputProvider,
       this.handler, api.CompilerOptions options)
-      : super(options: options, outputProvider: outputProvider) {
+      : super(options: options, outputProvider: outputProvider,
+          environment: new _Environment(options.environment)) {
+    _Environment env = environment;
+    env.compiler = this;
     tasks.addAll([
         userHandlerTask = new GenericTask('Diagnostic handler', this),
         userProviderTask = new GenericTask('Input provider', this),
@@ -87,7 +83,7 @@
   /**
    * Reads the script designated by [readableUri].
    */
-  Future<Script> readScript(Spannable node, Uri readableUri) {
+  Future<Script> readScript(Uri readableUri, [Spannable node]) {
     if (!readableUri.isAbsolute) {
       if (node == null) node = NO_LOCATION_SPANNABLE;
       reporter.internalError(node,
@@ -115,7 +111,7 @@
     }
 
     Uri resourceUri = translateUri(node, readableUri);
-    if (resourceUri == null) return synthesizeScript(node, readableUri);
+    if (resourceUri == null) return _synthesizeScript(readableUri);
     if (resourceUri.scheme == 'dart-ext') {
       if (!options.allowNativeExtensions) {
         reporter.withCurrentElement(element, () {
@@ -123,7 +119,7 @@
               node, MessageKind.DART_EXT_NOT_SUPPORTED);
         });
       }
-      return synthesizeScript(node, readableUri);
+      return _synthesizeScript(readableUri);
     }
 
     // TODO(johnniwinther): Wrap the result from [provider] in a specialized
@@ -147,18 +143,12 @@
       return new Script(readableUri, resourceUri, sourceFile);
     }).catchError((error) {
       reportReadError(error);
-      return synthesizeScript(node, readableUri);
+      return _synthesizeScript(readableUri);
     });
   }
 
-  Future<Script> synthesizeScript(Spannable node, Uri readableUri) {
-    return new Future.value(
-        new Script(
-            readableUri, readableUri,
-            new StringSourceFile.fromUri(
-                readableUri,
-                "// Synthetic source file generated for '$readableUri'."),
-            isSynthesized: true));
+  Future<Script> _synthesizeScript(Uri readableUri) {
+    return new Future.value(new Script.synthetic(readableUri));
   }
 
   /**
@@ -166,12 +156,8 @@
    *
    * See [LibraryLoader] for terminology on URIs.
    */
-  Uri translateUri(Spannable node, Uri readableUri) {
-    switch (readableUri.scheme) {
-      case 'package': return translatePackageUri(node, readableUri);
-      default: return readableUri;
-    }
-  }
+  Uri translateUri(Spannable node, Uri uri) =>
+      uri.scheme == 'package' ? translatePackageUri(node, uri) : uri;
 
   /// Translates "resolvedUri" with scheme "dart" to a [uri] resolved relative
   /// to `options.platformConfigUri` according to the information in the file at
@@ -380,59 +366,18 @@
 
   void callUserHandler(Message message, Uri uri, int begin, int end,
                        String text, api.Diagnostic kind) {
-    try {
-      userHandlerTask.measure(() {
-        handler.report(message, uri, begin, end, text, kind);
-      });
-    } catch (ex, s) {
-      diagnoseCrashInUserCode(
-          'Uncaught exception in diagnostic handler', ex, s);
-      rethrow;
-    }
+    userHandlerTask.measure(() {
+      handler.report(message, uri, begin, end, text, kind);
+    });
   }
 
   Future callUserProvider(Uri uri) {
-    try {
-      return userProviderTask.measure(() => provider.readFromUri(uri));
-    } catch (ex, s) {
-      diagnoseCrashInUserCode('Uncaught exception in input provider', ex, s);
-      rethrow;
-    }
+    return userProviderTask.measure(() => provider.readFromUri(uri));
   }
 
   Future<Packages> callUserPackagesDiscovery(Uri uri) {
-    try {
-      return userPackagesDiscoveryTask.measure(
-                 () => options.packagesDiscoveryProvider(uri));
-    } catch (ex, s) {
-      diagnoseCrashInUserCode('Uncaught exception in package discovery', ex, s);
-      rethrow;
-    }
-  }
-
-  fromEnvironment(String name) {
-    assert(invariant(NO_LOCATION_SPANNABLE,
-        sdkLibraries != null, message: "setupSdk() has not been run"));
-
-    var result = options.environment[name];
-    if (result != null || options.environment.containsKey(name)) return result;
-    if (!name.startsWith(dartLibraryEnvironmentPrefix)) return null;
-
-    String libraryName = name.substring(dartLibraryEnvironmentPrefix.length);
-
-    // Private libraries are not exposed to the users.
-    if (libraryName.startsWith("_")) return null;
-
-    if (sdkLibraries.containsKey(libraryName)) {
-      // Dart2js always "supports" importing 'dart:mirrors' but will abort
-      // the compilation at a later point if the backend doesn't support
-      // mirrors. In this case 'mirrors' should not be in the environment.
-      if (libraryName == 'mirrors') {
-        return backend.supportsReflection ? "true" : null;
-      }
-      return "true";
-    }
-    return null;
+    return userPackagesDiscoveryTask.measure(
+        () => options.packagesDiscoveryProvider(uri));
   }
 
   Uri lookupLibraryUri(String libraryName) {
@@ -445,3 +390,47 @@
     return backend.resolvePatchUri(libraryName, options.platformConfigUri);
   }
 }
+
+class _Environment implements Environment {
+  final Map<String, String> definitions;
+
+  // TODO(sigmund): break the circularity here: Compiler needs an environment to
+  // intialize the library loader, but the environment here needs to know about
+  // how the sdk is set up and about whether the backend supports mirrors.
+  CompilerImpl compiler;
+
+  _Environment(this.definitions);
+
+  String valueOf(String name) {
+    assert(invariant(NO_LOCATION_SPANNABLE,
+        compiler.sdkLibraries != null, message: "setupSdk() has not been run"));
+
+    var result = definitions[name];
+    if (result != null || definitions.containsKey(name)) return result;
+    if (!name.startsWith(_dartLibraryEnvironmentPrefix)) return null;
+
+    String libraryName = name.substring(_dartLibraryEnvironmentPrefix.length);
+
+    // Private libraries are not exposed to the users.
+    if (libraryName.startsWith("_")) return null;
+
+    if (compiler.sdkLibraries.containsKey(libraryName)) {
+      // Dart2js always "supports" importing 'dart:mirrors' but will abort
+      // the compilation at a later point if the backend doesn't support
+      // mirrors. In this case 'mirrors' should not be in the environment.
+      if (libraryName == 'mirrors') {
+        return compiler.backend.supportsReflection ? "true" : null;
+      }
+      return "true";
+    }
+    return null;
+  }
+}
+
+/// For every 'dart:' library, a corresponding environment variable is set
+/// to "true". The environment variable's name is the concatenation of
+/// this prefix and the name (without the 'dart:'.
+///
+/// For example 'dart:html' has the environment variable 'dart.library.html' set
+/// to "true".
+const String _dartLibraryEnvironmentPrefix = 'dart.library.';
diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart
index 3152635..b49fdd0 100644
--- a/pkg/compiler/lib/src/compiler.dart
+++ b/pkg/compiler/lib/src/compiler.dart
@@ -73,6 +73,7 @@
     EnqueueTask,
     ResolutionEnqueuer,
     QueueFilter;
+import 'environment.dart';
 import 'io/source_information.dart' show
     SourceInformation;
 import 'js_backend/backend_helpers.dart' as js_backend show
@@ -80,9 +81,13 @@
 import 'js_backend/js_backend.dart' as js_backend show
     JavaScriptBackend;
 import 'library_loader.dart' show
+    ElementScanner,
     LibraryLoader,
     LibraryLoaderTask,
-    LoadedLibraries;
+    LoadedLibraries,
+    LibraryLoaderListener,
+    ResolvedUriTranslator,
+    ScriptLoader;
 import 'mirrors_used.dart' show
     MirrorUsageAnalyzerTask;
 import 'common/names.dart' show
@@ -146,7 +151,7 @@
 import 'world.dart' show
     World;
 
-abstract class Compiler {
+abstract class Compiler implements LibraryLoaderListener {
 
   final Stopwatch totalCompileTime = new Stopwatch();
   int nextFreeClassId = 0;
@@ -280,7 +285,11 @@
   /// Tracks elements with compile-time errors.
   final Set<Element> elementsWithCompileTimeErrors = new Set<Element>();
 
-  fromEnvironment(String name) => null;
+  final Environment environment;
+  // TODO(sigmund): delete once we migrate the rest of the compiler to use
+  // `environment` directly.
+  @deprecated
+  fromEnvironment(String name) => environment.valueOf(name);
 
   Element get currentElement => _reporter.currentElement;
 
@@ -348,7 +357,8 @@
   }
 
   Compiler({api.CompilerOptions options,
-            api.CompilerOutput outputProvider})
+            api.CompilerOutput outputProvider,
+            this.environment: const _EmptyEnvironment()})
       : this.options = options,
         this.cacheStrategy = new CacheStrategy(options.hasIncrementalSupport),
         this.userOutputProvider = outputProvider == null
@@ -389,16 +399,22 @@
     }
 
     tasks = [
-      libraryLoader = new LibraryLoaderTask(this),
-      serialization = new SerializationTask(this),
-      scanner = new ScannerTask(this),
       dietParser = new DietParserTask(
           this, enableConditionalDirectives: options.enableConditionalDirectives),
-      parser = new ParserTask(
-          this, enableConditionalDirectives: options.enableConditionalDirectives),
+      scanner = createScannerTask(),
+      serialization = new SerializationTask(this),
+      libraryLoader = new LibraryLoaderTask(this,
+          new _ResolvedUriTranslator(this),
+          new _ScriptLoader(this),
+          new _ElementScanner(scanner),
+          this.serialization,
+          this,
+          environment),
+      parser = new ParserTask(this,
+          enableConditionalDirectives: options.enableConditionalDirectives),
       patchParser = new PatchParserTask(
           this, enableConditionalDirectives: options.enableConditionalDirectives),
-      resolver = new ResolverTask(this, backend.constantCompilerTask),
+      resolver = createResolverTask(),
       closureToClassMapper = new closureMapping.ClosureTask(this),
       checker = new TypeCheckerTask(this),
       typesTask = new ti.TypesTask(this),
@@ -413,6 +429,18 @@
     tasks.addAll(backend.tasks);
   }
 
+  /// Creates the scanner task.
+  ///
+  /// Override this to mock the scanner for testing.
+  ScannerTask createScannerTask() => new ScannerTask(this);
+
+  /// Creates the resolver task.
+  ///
+  /// Override this to mock the resolver for testing.
+  ResolverTask createResolverTask() {
+    return new ResolverTask(this, backend.constantCompilerTask);
+  }
+
   Universe get resolverWorld => enqueuer.resolution.universe;
   Universe get codegenWorld => enqueuer.codegen.universe;
 
@@ -1151,6 +1179,7 @@
     }
   }
 
+  // TODO(sigmund): move this dart doc somewhere else too.
   /**
    * Translates the [resolvedUri] into a readable URI.
    *
@@ -1175,18 +1204,11 @@
    *
    * See [LibraryLoader] for terminology on URIs.
    */
-  Future<Script> readScript(Spannable node, Uri readableUri) {
+  Future<Script> readScript(Uri readableUri, [Spannable node]) {
     unimplemented(node, 'Compiler.readScript');
     return null;
   }
 
-  /// Compatible with [readScript] and used by [LibraryLoader] to create
-  /// synthetic scripts to recover from read errors and bad URIs.
-  Future<Script> synthesizeScript(Spannable node, Uri readableUri) {
-    unimplemented(node, 'Compiler.synthesizeScript');
-    return null;
-  }
-
   Element lookupElementIn(ScopeContainerElement container, String name) {
     Element element = container.localLookup(name);
     if (element == null) {
@@ -1321,10 +1343,6 @@
     return libraryUri;
   }
 
-  void diagnoseCrashInUserCode(String message, exception, stackTrace) {
-    // Overridden by Compiler in apiimpl.dart.
-  }
-
   void forgetElement(Element element) {
     enqueuer.forgetElement(element);
     if (element is MemberElement) {
@@ -2094,3 +2112,35 @@
     return _otherDependencies != null ? _otherDependencies : const <Element>[];
   }
 }
+
+// TODO(sigmund): in the future, each of these classes should be self contained
+// and not use references to `compiler`.
+class _ResolvedUriTranslator implements ResolvedUriTranslator {
+  Compiler compiler;
+  _ResolvedUriTranslator(this.compiler);
+
+  Uri translate(LibraryElement importingLibrary, Uri resolvedUri,
+      [Spannable spannable]) =>
+    compiler.translateResolvedUri(importingLibrary, resolvedUri, spannable);
+}
+
+class _ScriptLoader implements ScriptLoader {
+  Compiler compiler;
+  _ScriptLoader(this.compiler);
+
+  Future<Script> readScript(Uri uri, [Spannable spannable]) =>
+      compiler.readScript(uri, spannable);
+}
+
+class _ElementScanner implements ElementScanner {
+  ScannerTask scanner;
+  _ElementScanner(this.scanner);
+  void scanLibrary(LibraryElement library) => scanner.scanLibrary(library);
+  void scanUnit(CompilationUnitElement unit) => scanner.scan(unit);
+}
+
+class _EmptyEnvironment implements Environment {
+  const _EmptyEnvironment();
+
+  String valueOf(String key) => null;
+}
diff --git a/pkg/compiler/lib/src/dart_types.dart b/pkg/compiler/lib/src/dart_types.dart
index 23080fc..8df9c18 100644
--- a/pkg/compiler/lib/src/dart_types.dart
+++ b/pkg/compiler/lib/src/dart_types.dart
@@ -352,6 +352,8 @@
               this.typeArguments,
               {bool checkTypeArgumentCount: true})
       : this.element = element {
+    assert(invariant(CURRENT_ELEMENT_SPANNABLE, element != null,
+        message: "Missing element for generic type."));
     assert(invariant(element, () {
         if (!checkTypeArgumentCount) return true;
         if (element is TypeDeclarationElementX) {
diff --git a/pkg/compiler/lib/src/elements/common.dart b/pkg/compiler/lib/src/elements/common.dart
index 5d5f9e6..6c2e843 100644
--- a/pkg/compiler/lib/src/elements/common.dart
+++ b/pkg/compiler/lib/src/elements/common.dart
@@ -510,3 +510,37 @@
     return true;
   }
 }
+
+abstract class MixinApplicationElementCommon
+    implements MixinApplicationElement {
+  Link<ConstructorElement> get constructors {
+    throw new UnsupportedError('Unimplemented $this.constructors');
+  }
+
+  FunctionElement _lookupLocalConstructor(String name) {
+    for (Link<Element> link = constructors;
+         !link.isEmpty;
+         link = link.tail) {
+      if (link.head.name == name) return link.head;
+    }
+    return null;
+  }
+
+  @override
+  Element localLookup(String name) {
+    Element constructor = _lookupLocalConstructor(name);
+    if (constructor != null) return constructor;
+    if (mixin == null) return null;
+    Element mixedInElement = mixin.localLookup(name);
+    if (mixedInElement == null) return null;
+    return mixedInElement.isInstanceMember ? mixedInElement : null;
+  }
+
+  @override
+  void forEachLocalMember(void f(Element member)) {
+    constructors.forEach(f);
+    if (mixin != null) mixin.forEachLocalMember((Element mixedInElement) {
+      if (mixedInElement.isInstanceMember) f(mixedInElement);
+    });
+  }
+}
\ No newline at end of file
diff --git a/pkg/compiler/lib/src/elements/elements.dart b/pkg/compiler/lib/src/elements/elements.dart
index 469081c..2e70d1f31 100644
--- a/pkg/compiler/lib/src/elements/elements.dart
+++ b/pkg/compiler/lib/src/elements/elements.dart
@@ -1505,8 +1505,6 @@
 abstract class MixinApplicationElement extends ClassElement {
   ClassElement get mixin;
   InterfaceType get mixinType;
-  void set mixinType(InterfaceType value);
-  void addConstructor(FunctionElement constructor);
 }
 
 /// Enum declaration.
diff --git a/pkg/compiler/lib/src/elements/modelx.dart b/pkg/compiler/lib/src/elements/modelx.dart
index cfc0dcb..214b25d 100644
--- a/pkg/compiler/lib/src/elements/modelx.dart
+++ b/pkg/compiler/lib/src/elements/modelx.dart
@@ -2881,8 +2881,8 @@
 }
 
 abstract class MixinApplicationElementX extends BaseClassElementX
+    with MixinApplicationElementCommon
     implements MixinApplicationElement {
-
   Link<ConstructorElement> constructors = new Link<ConstructorElement>();
 
   InterfaceType mixinType;
@@ -2906,31 +2906,6 @@
 
   Node parseNode(Parsing parsing) => node;
 
-  FunctionElement lookupLocalConstructor(String name) {
-    for (Link<Element> link = constructors;
-         !link.isEmpty;
-         link = link.tail) {
-      if (link.head.name == name) return link.head;
-    }
-    return null;
-  }
-
-  Element localLookup(String name) {
-    Element constructor = lookupLocalConstructor(name);
-    if (constructor != null) return constructor;
-    if (mixin == null) return null;
-    Element mixedInElement = mixin.localLookup(name);
-    if (mixedInElement == null) return null;
-    return mixedInElement.isInstanceMember ? mixedInElement : null;
-  }
-
-  void forEachLocalMember(void f(Element member)) {
-    constructors.forEach(f);
-    if (mixin != null) mixin.forEachLocalMember((Element mixedInElement) {
-      if (mixedInElement.isInstanceMember) f(mixedInElement);
-    });
-  }
-
   void addMember(Element element, DiagnosticReporter reporter) {
     throw new UnsupportedError("Cannot add member to $this.");
   }
diff --git a/pkg/compiler/lib/src/environment.dart b/pkg/compiler/lib/src/environment.dart
new file mode 100644
index 0000000..29c9861
--- /dev/null
+++ b/pkg/compiler/lib/src/environment.dart
@@ -0,0 +1,16 @@
+// Copyright (c) 2016, 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.
+
+/// Collects definitions provided to the compiler via the `-D` flag.
+///
+/// Environment variables can be used in the user code in two ways. From
+/// conditional imports, and from `const String.fromEnvironment` and
+/// other similar constructors.
+abstract class Environment {
+  /// Return the string value of the given key.
+  ///
+  /// Note that `bool.fromEnvironment` and `int.fromEnvironment` are also
+  /// implemented in terms of `String.fromEnvironment`.
+  String valueOf(String key);
+}
diff --git a/pkg/compiler/lib/src/library_loader.dart b/pkg/compiler/lib/src/library_loader.dart
index 68f6008..e6eaf88 100644
--- a/pkg/compiler/lib/src/library_loader.dart
+++ b/pkg/compiler/lib/src/library_loader.dart
@@ -30,8 +30,9 @@
     LibraryDependencyElementX,
     PrefixElementX,
     SyntheticImportElement;
-
+import 'environment.dart';
 import 'script.dart';
+import 'serialization/serialization.dart' show LibraryDeserializer;
 import 'tree/tree.dart';
 import 'util/util.dart' show
     Link,
@@ -105,9 +106,9 @@
  * resolved into a readable URI using the library root URI provided from the
  * command line and the list of platform libraries found in
  * 'sdk/lib/_internal/sdk_library_metadata/lib/libraries.dart'. This is done
- * through the [Compiler.translateResolvedUri] method which checks whether a
- * library by that name exists and in case of internal libraries whether access
- * is granted.
+ * through a [ResolvedUriTranslator] provided from the compiler. The translator
+ * checks whether a library by that name exists and in case of internal
+ * libraries whether access is granted.
  *
  * ## Resource URI ##
  *
@@ -132,7 +133,13 @@
  *
  */
 abstract class LibraryLoaderTask implements CompilerTask {
-  factory LibraryLoaderTask(Compiler compiler) = _LibraryLoaderTask;
+  factory LibraryLoaderTask(Compiler compiler,
+      ResolvedUriTranslator uriTranslator,
+      ScriptLoader scriptLoader,
+      ElementScanner scriptScanner,
+      LibraryDeserializer deserializer,
+      LibraryLoaderListener listener,
+      Environment environment) = _LibraryLoaderTask;
 
   /// Returns all libraries that have been loaded.
   Iterable<LibraryElement> get libraries;
@@ -259,13 +266,38 @@
   bool exclude(Element element) => excludedNames.contains(element.name);
 }
 
-/**
- * Implementation class for [LibraryLoader]. The distinction between
- * [LibraryLoader] and [LibraryLoaderTask] is made to hide internal members from
- * the [LibraryLoader] interface.
- */
+/// Implementation class for [LibraryLoaderTask]. The distinction between
+/// [LibraryLoaderTask] and [_LibraryLoaderTask] is made to hide internal
+/// members from the [LibraryLoaderTask] interface.
 class _LibraryLoaderTask extends CompilerTask implements LibraryLoaderTask {
-  _LibraryLoaderTask(Compiler compiler) : super(compiler);
+  /// Translates internal uris (like dart:core) to a disk location.
+  final ResolvedUriTranslator uriTranslator;
+
+  /// Loads the contents of a script file (a .dart file). Used when loading
+  /// libraries from source.
+  final ScriptLoader scriptLoader;
+
+  /// Provides a diet element model from a script file containing information
+  /// about imports and exports. Used when loading libraries from source.
+  final ElementScanner scanner;
+
+  /// Provides a diet element model for a library. Used when loading libraries
+  /// from a serialized form.
+  final LibraryDeserializer deserializer;
+
+  /// Hooks to inform others about progress done by this loader.
+  // TODO(sigmund): move away from this.
+  final LibraryLoaderListener listener;
+
+  /// Definitions provided via the `-D` command line flags. Used to resolve
+  /// conditional imports.
+  final Environment environment;
+
+  _LibraryLoaderTask(
+      Compiler compiler, this.uriTranslator, this.scriptLoader,
+      this.scanner, this.deserializer, this.listener, this.environment)
+      // TODO(sigmund): make measurements separate from compiler
+      : super(compiler);
 
   String get name => 'LibraryLoader';
 
@@ -290,6 +322,7 @@
 
       Iterable<LibraryElement> reusedLibraries = null;
       if (reuseLibrary != null) {
+        // TODO(sigmund): make measurements separate from compiler
         reusedLibraries = compiler.reuseLibraryTask.measure(() {
           // Call [toList] to force eager calls to [reuseLibrary].
           return libraryCanonicalUriMap.values.where(reuseLibrary).toList();
@@ -316,18 +349,9 @@
     return measure(() {
       assert(currentHandler == null);
 
-      Future<LibraryElement> wrapper(LibraryElement library) {
-        try {
-          return reuseLibrary(library).then(
-              (bool reuse) => reuse ? library : null);
-        } catch (exception, trace) {
-          compiler.diagnoseCrashInUserCode(
-              'Uncaught exception in reuseLibrary', exception, trace);
-          rethrow;
-        }
-      }
-
+      wrapper(lib) => reuseLibrary(lib).then((reuse) => reuse ? lib : null);
       List<Future<LibraryElement>> reusedLibrariesFuture =
+          // TODO(sigmund): make measurements separate from compiler
           compiler.reuseLibraryTask.measure(
               () => libraryCanonicalUriMap.values.map(wrapper).toList());
 
@@ -351,8 +375,7 @@
     }
   }
 
-  Future<LibraryElement> loadLibrary(
-      Uri resolvedUri,
+  Future<LibraryElement> loadLibrary(Uri resolvedUri,
       {bool skipFileWithPartOfTag: false}) {
     return measure(() {
       assert(currentHandler == null);
@@ -375,7 +398,7 @@
                 currentHandler.nodeMap,
                 this);
             currentHandler = null;
-            return compiler.onLibrariesLoaded(loadedLibraries)
+            return listener.onLibrariesLoaded(loadedLibraries)
                 .then((_) => library);
           });
         });
@@ -409,7 +432,7 @@
               String value = conditionalUri.value == null
                   ? "true"
                   : conditionalUri.value.dartString.slowToString();
-              String actual = compiler.fromEnvironment(key);
+              String actual = environment.valueOf(key);
               if (value == actual) {
                 uriNode = conditionalUri.uri;
                 break;
@@ -472,7 +495,7 @@
         }
       });
     }).then((_) {
-      return compiler.onLibraryScanned(library, handler);
+      return listener.onLibraryScanned(library, handler);
     }).then((_) {
       return reporter.withCurrentElement(library, () {
         checkDuplicatedLibraryName(library);
@@ -549,23 +572,13 @@
    */
   Future scanPart(Part part, Uri resolvedUri, LibraryElement library) {
     if (!resolvedUri.isAbsolute) throw new ArgumentError(resolvedUri);
-    Uri readableUri = compiler.translateResolvedUri(library, resolvedUri, part);
+    Uri readableUri = uriTranslator.translate(library, resolvedUri, part);
     if (readableUri == null) return new Future.value();
     return reporter.withCurrentElement(library, () {
-      return compiler.readScript(part, readableUri).
-          then((Script sourceScript) {
-            if (sourceScript == null) return;
-
-            CompilationUnitElementX unit =
-                new CompilationUnitElementX(sourceScript, library);
-            reporter.withCurrentElement(unit, () {
-              compiler.scanner.scan(unit);
-              if (unit.partTag == null && !sourceScript.isSynthesized) {
-                reporter.reportErrorMessage(
-                    unit, MessageKind.MISSING_PART_OF_TAG);
-              }
-            });
-          });
+      return scriptLoader.readScript(readableUri, part).then((Script script) {
+        if (script == null) return;
+        createUnitSync(script, library);
+      });
     });
   }
 
@@ -601,7 +614,7 @@
       LibraryElement library) {
     libraryCanonicalUriMap[library.canonicalUri] = library;
     handler.registerNewLibrary(library);
-    return compiler.onLibraryScanned(library, handler).then((_) {
+    return listener.onLibraryScanned(library, handler).then((_) {
       return Future.forEach(library.imports, (ImportElement import) {
         return createLibrary(handler, library, import.uri);
       }).then((_) {
@@ -612,6 +625,15 @@
     });
   }
 
+  Future<Script> _readScript(Spannable spannable,
+      Uri readableUri, Uri resolvedUri) {
+    if (readableUri == null) {
+      return new Future.value(new Script.synthetic(resolvedUri));
+    } else {
+      return scriptLoader.readScript(readableUri, spannable);
+    }
+  }
+
   /**
    * Create (or reuse) a library element for the library specified by the
    * [resolvedUri].
@@ -625,29 +647,24 @@
       {Spannable node,
        bool skipFileWithPartOfTag: false}) {
     Uri readableUri =
-        compiler.translateResolvedUri(importingLibrary, resolvedUri, node);
+        uriTranslator.translate(importingLibrary, resolvedUri, node);
     LibraryElement library = libraryCanonicalUriMap[resolvedUri];
     if (library != null) {
       return new Future.value(library);
     }
-    library = compiler.serialization.readLibrary(resolvedUri);
+    library = deserializer.readLibrary(resolvedUri);
     if (library != null) {
       return loadDeserializedLibrary(handler, library);
     }
-    var readScript = compiler.readScript;
-    if (readableUri == null) {
-      readableUri = resolvedUri;
-      readScript = compiler.synthesizeScript;
-    }
     return reporter.withCurrentElement(importingLibrary, () {
-      return readScript(node, readableUri).then((Script script) {
+      return _readScript(node, readableUri, resolvedUri).then((Script script) {
         if (script == null) return null;
         LibraryElement element =
             createLibrarySync(handler, script, resolvedUri);
         CompilationUnitElementX compilationUnit = element.entryCompilationUnit;
         if (compilationUnit.partTag != null) {
           if (skipFileWithPartOfTag) {
-            // TODO(johnniwinther): Avoid calling [Compiler.onLibraryCreated]
+            // TODO(johnniwinther): Avoid calling [listener.onLibraryCreated]
             // for this library.
             libraryCanonicalUriMap.remove(resolvedUri);
             return null;
@@ -681,20 +698,29 @@
     });
   }
 
-  LibraryElement createLibrarySync(
-      LibraryDependencyHandler handler,
-      Script script,
-      Uri resolvedUri) {
+  LibraryElement createLibrarySync(LibraryDependencyHandler handler,
+      Script script, Uri resolvedUri) {
     LibraryElement element = new LibraryElementX(script, resolvedUri);
     return reporter.withCurrentElement(element, () {
       if (handler != null) {
         handler.registerNewLibrary(element);
         libraryCanonicalUriMap[resolvedUri] = element;
       }
-      compiler.scanner.scanLibrary(element);
+      scanner.scanLibrary(element);
       return element;
     });
   }
+
+  CompilationUnitElement createUnitSync(Script script, LibraryElement library) {
+    CompilationUnitElementX unit = new CompilationUnitElementX(script, library);
+    reporter.withCurrentElement(unit, () {
+      scanner.scanUnit(unit);
+      if (unit.partTag == null && !script.isSynthesized) {
+        reporter.reportErrorMessage(unit, MessageKind.MISSING_PART_OF_TAG);
+      }
+    });
+    return unit;
+  }
 }
 
 
@@ -1174,8 +1200,6 @@
 
   LibraryDependencyHandler(this.task);
 
-  Compiler get compiler => task.compiler;
-
   DiagnosticReporter get reporter => task.reporter;
 
   /// The libraries created with this handler.
@@ -1268,7 +1292,7 @@
    * Registers [library] for the processing of its import/export scope.
    */
   void registerNewLibrary(LibraryElement library) {
-    compiler.onLibraryCreated(library);
+    task.listener.onLibraryCreated(library);
     _newLibraries.add(library);
     if (!library.exportsHandled) {
       nodeMap[library] = new LibraryDependencyNode(library);
@@ -1420,3 +1444,83 @@
 
   String toString() => 'root=$rootLibrary,libraries=${loadedLibraries.keys}';
 }
+
+/// API used by the library loader to translate internal SDK URIs into file
+/// system readable URIs.
+abstract class ResolvedUriTranslator {
+  // TODO(sigmund): move here the comments from library loader.
+  /// Translate the resolved [uri] in the context of [importingLibrary].
+  ///
+  /// Use [spannable] for error reporting.
+  Uri translate(
+      LibraryElement importingLibrary, Uri uri, [Spannable spannable]);
+}
+
+
+// TODO(sigmund): remove ScriptLoader & ElementScanner. Such abstraction seems
+// rather low-level. It might be more practical to split the library-loading
+// task itself.  The task would continue to do the work of recursively loading
+// dependencies, but it can delegate to a set of subloaders how to do the actual
+// loading. We would then have a list of subloaders that use different
+// implementations: in-memory cache, deserialization, scanning from files.
+//
+// For example, the API might look like this:
+//
+// /// APIs to create [LibraryElement] and [CompilationUnitElements] given it's
+// /// URI.
+// abstract class SubLoader {
+//   /// Return the library corresponding to the script at [uri].
+//   ///
+//   /// Use [spannable] for error reporting.
+//   Future<LibraryElement> createLibrary(Uri uri, [Spannable spannable]);
+//
+//   /// Return the compilation unit at [uri] that is a part of [library].
+//   Future<CompilationUnitElement> createUnit(Uri uri, LibraryElement library,
+//       [Spannable spannable]);
+// }
+//
+// /// A [SubLoader] that parses a serialized form of the element model to
+// /// produce the results.
+// class DeserializingUnitElementCreator implements SubLoader {
+// ...
+// }
+//
+// /// A [SubLoader] that finds the script sources and does a diet parse
+// /// on them to produces the results.
+// class ScanningUnitElementCreator implements SubLoader {
+// ...
+// }
+//
+// Each subloader would internally create what they need (a scanner, a
+// deserializer), and we wouldn't need to create abstractions to pass in
+// something that is only used by the loader.
+
+/// API used by the library loader to request scripts from the compiler system.
+abstract class ScriptLoader {
+  /// Load script from a readable [uri], report any errors using the location of
+  /// the given [spannable].
+  Future<Script> readScript(Uri uri, [Spannable spannable]);
+}
+
+/// API used by the library loader to synchronously scan a library or
+/// compilation unit and ensure that their library tags are computed.
+abstract class ElementScanner {
+  void scanLibrary(LibraryElement library);
+  void scanUnit(CompilationUnitElement unit);
+}
+
+
+/// TODO(sigmund): remove this abstraction. Ideally the loader can produce the
+/// LoadedLibraries results once, and the compiler and choose what to do with
+/// it instead.
+abstract class LibraryLoaderListener {
+  /// Called after a request to load a library. The [results] will include all
+  /// transitive libraries loaded as a result of the initial request.
+  Future onLibrariesLoaded(LoadedLibraries results);
+
+  /// Called whenever a library element is created.
+  void onLibraryCreated(LibraryElement library);
+
+  /// Called whenever a library is scanned from a script file.
+  Future onLibraryScanned(LibraryElement library, LibraryLoader loader);
+}
diff --git a/pkg/compiler/lib/src/ordered_typeset.dart b/pkg/compiler/lib/src/ordered_typeset.dart
index cd6dd0e..1afc0e0 100644
--- a/pkg/compiler/lib/src/ordered_typeset.dart
+++ b/pkg/compiler/lib/src/ordered_typeset.dart
@@ -5,9 +5,9 @@
 library ordered_typeset;
 
 import 'common.dart';
-import 'compiler.dart' show
-    Compiler;
 import 'dart_types.dart';
+import 'diagnostics/diagnostic_listener.dart' show
+    DiagnosticReporter;
 import 'elements/elements.dart' show
     ClassElement;
 import 'util/util.dart' show
@@ -151,39 +151,92 @@
   LinkBuilder<DartType> allSupertypes = new LinkBuilder<DartType>();
   int maxDepth = -1;
 
+  final DiagnosticReporter reporter;
   final ClassElement cls;
+  InterfaceType _objectType;
 
-  OrderedTypeSetBuilder(this.cls);
+  // TODO(johnniwinther): Provide access to `Object` in deserialization and
+  // make [objectType] mandatory.
+  OrderedTypeSetBuilder(this.cls, {this.reporter, InterfaceType objectType})
+      : this._objectType = objectType;
 
-  void add(Compiler compiler, InterfaceType type) {
-    if (type.element == cls) {
-      if (type.element != compiler.coreClasses.objectClass) {
-        allSupertypes.addLast(compiler.coreTypes.objectType);
+  OrderedTypeSet createOrderedTypeSet(
+      InterfaceType supertype,
+      Link<DartType> interfaces) {
+
+    if (_objectType == null) {
+      // Find `Object` through in hierarchy. This is used for serialization
+      // where it is assumed that the hierarchy is valid.
+      _objectType = supertype;
+      while (!_objectType.isObject) {
+        _objectType = _objectType.element.supertype;
       }
-      DiagnosticReporter reporter = compiler.reporter;
-      _addAtDepth(reporter, type, maxDepth + 1);
-    } else {
-      if (type.element != compiler.coreClasses.objectClass) {
-        allSupertypes.addLast(type);
-      }
-      DiagnosticReporter reporter = compiler.reporter;
-      _addAtDepth(reporter, type, type.element.hierarchyDepth);
+    }
+
+    // TODO(15296): Collapse these iterations to one when the order is not
+    // needed.
+    add(supertype);
+    for (Link<DartType> link = interfaces; !link.isEmpty; link = link.tail) {
+      add(link.head);
+    }
+
+    addAllSupertypes(supertype);
+    for (Link<DartType> link = interfaces; !link.isEmpty; link = link.tail) {
+      addAllSupertypes(link.head);
+    }
+    add(cls.thisType);
+    return toTypeSet();
+  }
+
+  /**
+   * Adds [type] and all supertypes of [type] to [allSupertypes] while
+   * substituting type variables.
+   */
+  void addAllSupertypes(InterfaceType type) {
+    ClassElement classElement = type.element;
+    Link<DartType> supertypes = classElement.allSupertypes;
+    assert(invariant(cls, supertypes != null,
+        message: "Supertypes not computed on $classElement "
+                 "during resolution of $cls"));
+    while (!supertypes.isEmpty) {
+      DartType supertype = supertypes.head;
+      add(supertype.substByContext(type));
+      supertypes = supertypes.tail;
     }
   }
 
-  void _addAtDepth(DiagnosticReporter reporter, InterfaceType type, int depth) {
+  void add(InterfaceType type) {
+    if (type.element == cls) {
+      if (type != _objectType) {
+        allSupertypes.addLast(_objectType);
+      }
+      _addAtDepth(type, maxDepth + 1);
+    } else {
+      if (type != _objectType) {
+        allSupertypes.addLast(type);
+      }
+      _addAtDepth(type, type.element.hierarchyDepth);
+    }
+  }
+
+  void _addAtDepth(InterfaceType type, int depth) {
     LinkEntry<DartType> prev = null;
     LinkEntry<DartType> link = map[depth];
     while (link != null) {
       DartType existingType = link.head;
       if (existingType == type) return;
       if (existingType.element == type.element) {
-        reporter.reportErrorMessage(
-            cls,
-            MessageKind.MULTI_INHERITANCE,
-            {'thisType': cls.thisType,
-             'firstType': existingType,
-             'secondType': type});
+        if (reporter != null) {
+          reporter.reportErrorMessage(
+              cls,
+              MessageKind.MULTI_INHERITANCE,
+              {'thisType': cls.thisType,
+               'firstType': existingType,
+               'secondType': type});
+        } else {
+          assert(invariant(cls, false,
+              message: 'Invalid ordered typeset for $cls'));
+        }
         return;
       }
       prev = link;
diff --git a/pkg/compiler/lib/src/patch_parser.dart b/pkg/compiler/lib/src/patch_parser.dart
index fd747e9..fb2e437 100644
--- a/pkg/compiler/lib/src/patch_parser.dart
+++ b/pkg/compiler/lib/src/patch_parser.dart
@@ -172,7 +172,7 @@
    */
   Future patchLibrary(LibraryLoader loader,
                       Uri patchUri, LibraryElement originLibrary) {
-    return compiler.readScript(originLibrary, patchUri)
+    return compiler.readScript(patchUri, originLibrary)
         .then((Script script) {
       var patchLibrary = new LibraryElementX(script, null, originLibrary);
       return reporter.withCurrentElement(patchLibrary, () {
diff --git a/pkg/compiler/lib/src/resolution/class_hierarchy.dart b/pkg/compiler/lib/src/resolution/class_hierarchy.dart
index f46b9fdc..78e2341 100644
--- a/pkg/compiler/lib/src/resolution/class_hierarchy.dart
+++ b/pkg/compiler/lib/src/resolution/class_hierarchy.dart
@@ -55,7 +55,10 @@
         scope = Scope.buildEnclosingScope(element),
         super(compiler, registry);
 
-  DartType get objectType => compiler.coreTypes.objectType;
+  CoreTypes get coreTypes => compiler.coreTypes;
+
+  DartType get objectType => coreTypes.objectType;
+
 
   void resolveTypeVariableBounds(NodeList node) {
     if (node == null) return;
@@ -245,7 +248,7 @@
     }
 
     InterfaceType enumType = element.computeType(resolution);
-    element.supertype = compiler.coreTypes.objectType;
+    element.supertype = objectType;
     element.interfaces = const Link<DartType>();
     calculateAllSupertypes(element);
 
@@ -579,24 +582,10 @@
     if (cls.allSupertypesAndSelf != null) return;
     final DartType supertype = cls.supertype;
     if (supertype != null) {
-      OrderedTypeSetBuilder allSupertypes = new OrderedTypeSetBuilder(cls);
-      // TODO(15296): Collapse these iterations to one when the order is not
-      // needed.
-      allSupertypes.add(compiler, supertype);
-      for (Link<DartType> interfaces = cls.interfaces;
-           !interfaces.isEmpty;
-           interfaces = interfaces.tail) {
-        allSupertypes.add(compiler, interfaces.head);
-      }
-
-      addAllSupertypes(allSupertypes, supertype);
-      for (Link<DartType> interfaces = cls.interfaces;
-           !interfaces.isEmpty;
-           interfaces = interfaces.tail) {
-        addAllSupertypes(allSupertypes, interfaces.head);
-      }
-      allSupertypes.add(compiler, cls.computeType(resolution));
-      cls.allSupertypesAndSelf = allSupertypes.toTypeSet();
+      cls.allSupertypesAndSelf =
+          new OrderedTypeSetBuilder(
+              cls, reporter: reporter, objectType: coreTypes.objectType)
+              .createOrderedTypeSet(supertype, cls.interfaces);
     } else {
       assert(cls == compiler.coreClasses.objectClass);
       cls.allSupertypesAndSelf =
@@ -604,27 +593,8 @@
     }
   }
 
-  /**
-   * Adds [type] and all supertypes of [type] to [allSupertypes] while
-   * substituting type variables.
-   */
-  void addAllSupertypes(OrderedTypeSetBuilder allSupertypes,
-                        InterfaceType type) {
-    ClassElement classElement = type.element;
-    Link<DartType> supertypes = classElement.allSupertypes;
-    assert(invariant(element, supertypes != null,
-        message: "Supertypes not computed on $classElement "
-                 "during resolution of $element"));
-    while (!supertypes.isEmpty) {
-      DartType supertype = supertypes.head;
-      allSupertypes.add(compiler, supertype.substByContext(type));
-      supertypes = supertypes.tail;
-    }
-  }
-
   isBlackListed(DartType type) {
     LibraryElement lib = element.library;
-    CoreTypes coreTypes = compiler.coreTypes;
     return
       !identical(lib, compiler.coreLibrary) &&
       !compiler.backend.isBackendLibrary(lib) &&
diff --git a/pkg/compiler/lib/src/script.dart b/pkg/compiler/lib/src/script.dart
index 3dce8e1..f8278ab 100644
--- a/pkg/compiler/lib/src/script.dart
+++ b/pkg/compiler/lib/src/script.dart
@@ -27,9 +27,15 @@
   /// This script was synthesized.
   final bool isSynthesized;
 
-  Script(
-      this.readableUri, this.resourceUri, this.file,
-      {this.isSynthesized: false});
+  Script(this.readableUri, this.resourceUri, this.file)
+      : isSynthesized = false;
+
+  Script.synthetic(Uri uri)
+      : readableUri = uri,
+        resourceUri = uri,
+        file = new StringSourceFile.fromUri(uri,
+            "// Synthetic source file generated for '$uri'."),
+        isSynthesized = true;
 
   String get text => (file == null) ? null : file.slowText();
   String get name => (file == null) ? null : file.filename;
diff --git a/pkg/compiler/lib/src/serialization/element_serialization.dart b/pkg/compiler/lib/src/serialization/element_serialization.dart
index 9cea9d2..d9877a4 100644
--- a/pkg/compiler/lib/src/serialization/element_serialization.dart
+++ b/pkg/compiler/lib/src/serialization/element_serialization.dart
@@ -20,6 +20,7 @@
   COMPILATION_UNIT,
   CLASS,
   ENUM,
+  NAMED_MIXIN_APPLICATION,
   GENERATIVE_CONSTRUCTOR,
   FACTORY_CONSTRUCTOR,
   TOPLEVEL_FIELD,
@@ -42,6 +43,10 @@
   IMPORT,
   EXPORT,
   PREFIX,
+  EXTERNAL_LIBRARY,
+  EXTERNAL_LIBRARY_MEMBER,
+  EXTERNAL_STATIC_MEMBER,
+  EXTERNAL_CONSTRUCTOR,
 }
 
 /// Set of serializers used to serialize different kinds of elements by
@@ -252,8 +257,13 @@
       ClassElement cls = element;
       if (cls.isEnumClass) {
         return SerializedElementKind.ENUM;
+      } else if (cls.isMixinApplication) {
+        if (!cls.isUnnamedMixinApplication) {
+          return SerializedElementKind.NAMED_MIXIN_APPLICATION;
+        }
+      } else {
+        return SerializedElementKind.CLASS;
       }
-      return SerializedElementKind.CLASS;
     }
     return null;
   }
@@ -280,26 +290,33 @@
     SerializerUtil.serializePosition(element, encoder);
     encoder.setTypes(Key.TYPE_VARIABLES, element.typeVariables);
     encoder.setBool(Key.IS_ABSTRACT, element.isAbstract);
-    if (element.isUnnamedMixinApplication) {
-      encoder.setBool(Key.IS_UNNAMED_MIXIN_APPLICATION, true);
-    }
-    if (element.supertype != null) {
-      encoder.setType(Key.SUPERTYPE, element.supertype);
-    }
-    // TODO(johnniwinther): Make [OrderedTypeSet] easier to (de)serialize.
-    ObjectEncoder supertypes = encoder.createObject(Key.SUPERTYPES);
-    supertypes.setTypes(Key.TYPES,
-        element.allSupertypesAndSelf.types.toList());
-    supertypes.setTypes(Key.SUPERTYPES,
-        element.allSupertypesAndSelf.supertypes.toList());
-    supertypes.setInts(Key.OFFSETS, element.allSupertypesAndSelf.levelOffsets);
-    encoder.setTypes(Key.INTERFACES, element.interfaces.toList());
     SerializerUtil.serializeMembers(getMembers(element), encoder);
     encoder.setBool(Key.IS_PROXY, element.isProxy);
     if (kind == SerializedElementKind.ENUM) {
       EnumClassElement enumClass = element;
       encoder.setElements(Key.FIELDS, enumClass.enumValues);
     }
+    if (element.isObject) return;
+
+    List<InterfaceType> mixins = <InterfaceType>[];
+    ClassElement superclass = element.superclass;
+    while (superclass.isUnnamedMixinApplication) {
+      MixinApplicationElement mixinElement = superclass;
+      mixins.add(element.thisType.asInstanceOf(mixinElement.mixin));
+      superclass = mixinElement.superclass;
+    }
+    mixins = mixins.reversed.toList();
+    InterfaceType supertype = element.thisType.asInstanceOf(superclass);
+
+
+    encoder.setType(Key.SUPERTYPE, supertype);
+    encoder.setTypes(Key.MIXINS, mixins);
+    encoder.setTypes(Key.INTERFACES, element.interfaces.toList());
+
+    if (element.isMixinApplication) {
+      MixinApplicationElement mixinElement = element;
+      encoder.setType(Key.MIXIN, mixinElement.mixinType);
+    }
   }
 }
 
@@ -324,7 +341,6 @@
     SerializerUtil.serializePosition(element, encoder);
     SerializerUtil.serializeParameters(element, encoder);
     encoder.setBool(Key.IS_CONST, element.isConst);
-    // TODO(johnniwinther): Handle external constructors.
     encoder.setBool(Key.IS_EXTERNAL, element.isExternal);
     if (element.isExternal) return;
     if (element.isConst && !element.isFromEnvironmentConstructor) {
@@ -581,9 +597,9 @@
   /// needs deserialization. The [ObjectDecoder] ensures that any [Element],
   /// [DartType], and [ConstantExpression] that the deserialized [Element]
   /// depends upon are available.
-  static Element deserialize(ObjectDecoder decoder) {
-    SerializedElementKind elementKind =
-        decoder.getEnum(Key.KIND, SerializedElementKind.values);
+  static Element deserialize(
+      ObjectDecoder decoder,
+      SerializedElementKind elementKind) {
     switch (elementKind) {
       case SerializedElementKind.LIBRARY:
         return new LibraryElementZ(decoder);
@@ -593,6 +609,8 @@
         return new ClassElementZ(decoder);
       case SerializedElementKind.ENUM:
         return new EnumClassElementZ(decoder);
+      case SerializedElementKind.NAMED_MIXIN_APPLICATION:
+        return new NamedMixinApplicationElementZ(decoder);
       case SerializedElementKind.TOPLEVEL_FIELD:
         return new TopLevelFieldElementZ(decoder);
       case SerializedElementKind.STATIC_FIELD:
@@ -637,6 +655,11 @@
         return new ExportElementZ(decoder);
       case SerializedElementKind.PREFIX:
         return new PrefixElementZ(decoder);
+      case SerializedElementKind.EXTERNAL_LIBRARY:
+      case SerializedElementKind.EXTERNAL_LIBRARY_MEMBER:
+      case SerializedElementKind.EXTERNAL_STATIC_MEMBER:
+      case SerializedElementKind.EXTERNAL_CONSTRUCTOR:
+        break;
     }
     throw new UnsupportedError("Unexpected element kind '${elementKind}.");
   }
diff --git a/pkg/compiler/lib/src/serialization/impact_serialization.dart b/pkg/compiler/lib/src/serialization/impact_serialization.dart
index 92e68c5..ef86609 100644
--- a/pkg/compiler/lib/src/serialization/impact_serialization.dart
+++ b/pkg/compiler/lib/src/serialization/impact_serialization.dart
@@ -47,6 +47,11 @@
 
   @override
   void visitStaticUse(StaticUse staticUse) {
+    if (staticUse.element.isGenerativeConstructor &&
+        staticUse.element.enclosingClass.isUnnamedMixinApplication) {
+      // TODO(johnniwinther): Handle static use of forwarding constructors.
+      return;
+    }
     ObjectEncoder object = staticUses.createObject();
     object.setEnum(Key.KIND, staticUse.kind);
     object.setElement(Key.ELEMENT, staticUse.element);
diff --git a/pkg/compiler/lib/src/serialization/keys.dart b/pkg/compiler/lib/src/serialization/keys.dart
index c3b0bf8..8882b1d 100644
--- a/pkg/compiler/lib/src/serialization/keys.dart
+++ b/pkg/compiler/lib/src/serialization/keys.dart
@@ -59,13 +59,14 @@
   static const Key LIBRARY_DEPENDENCY = const Key('library-dependency');
   static const Key LIBRARY_NAME = const Key('library-name');
   static const Key MEMBERS = const Key('members');
+  static const Key MIXIN = const Key('mixin');
+  static const Key MIXINS = const Key('mixins');
   static const Key NAME = const Key('name');
   static const Key NAMES = const Key('names');
   static const Key NAMED_ARGUMENTS = const Key('named-arguments');
   static const Key NAMED_PARAMETERS = const Key('named-parameters');
   static const Key NAMED_PARAMETER_TYPES = const Key('named-parameter-types');
   static const Key OFFSET = const Key('offset');
-  static const Key OFFSETS = const Key('offsets');
   static const Key OPERATOR = const Key('operator');
   static const Key OPTIONAL_PARAMETER_TYPES =
       const Key('optional-parameter-types');
diff --git a/pkg/compiler/lib/src/serialization/modelz.dart b/pkg/compiler/lib/src/serialization/modelz.dart
index 9b825ce..4a0d17e 100644
--- a/pkg/compiler/lib/src/serialization/modelz.dart
+++ b/pkg/compiler/lib/src/serialization/modelz.dart
@@ -75,11 +75,6 @@
   Scope buildScope() => _unsupported('analyzableElement');
 
   @override
-  CompilationUnitElement get compilationUnit {
-    return _unsupported('compilationUnit');
-  }
-
-  @override
   ClassElement get enclosingClass => null;
 
   @override
@@ -333,6 +328,11 @@
   LibraryElement get library => _canonicalElement.library;
 
   @override
+  CompilationUnitElement get compilationUnit {
+    return _canonicalElement.compilationUnit;
+  }
+
+  @override
   Element get enclosingElement => _canonicalElement.enclosingElement;
 
   @override
@@ -376,6 +376,9 @@
   LibraryElement get library => this;
 
   @override
+  CompilationUnitElement get compilationUnit => entryCompilationUnit;
+
+  @override
   Uri get canonicalUri {
     if (_canonicalUri == null) {
       _canonicalUri = _decoder.getUri(Key.CANONICAL_URI);
@@ -734,22 +737,7 @@
   }
 }
 
-class ClassElementZ extends DeserializedElementZ
-    with AnalyzableElementMixin,
-         AstElementMixin,
-         ClassElementCommon,
-         class_members.ClassMemberMixin,
-         ContainerMixin,
-         LibraryMemberMixin,
-         TypeDeclarationMixin<InterfaceType>
-    implements ClassElement {
-  bool _isObject;
-  DartType _supertype;
-  OrderedTypeSet _allSupertypesAndSelf;
-  Link<DartType> _interfaces;
-
-  ClassElementZ(ObjectDecoder decoder)
-      : super(decoder);
+abstract class ClassElementMixin implements ElementZ, ClassElement {
 
   InterfaceType _createType(List<DartType> typeArguments) {
     return new InterfaceType(this, typeArguments);
@@ -759,62 +747,9 @@
   ElementKind get kind => ElementKind.CLASS;
 
   @override
-  accept(ElementVisitor visitor, arg) {
-    return visitor.visitClassElement(this, arg);
-  }
-
-  @override
-  DartType get supertype {
-    if (_isObject == null) {
-      _supertype = _decoder.getType(Key.SUPERTYPE, isOptional: true);
-      _isObject = _supertype == null;
-    }
-    return _supertype;
-  }
-
-  @override
-  bool get isAbstract => _decoder.getBool(Key.IS_ABSTRACT);
-
-  @override
-  bool get isObject {
-    return supertype == null;
-  }
-
-  @override
   void addBackendMember(Element element) => _unsupported('addBackendMember');
 
   @override
-  OrderedTypeSet get allSupertypesAndSelf {
-    if (_allSupertypesAndSelf == null) {
-      ObjectDecoder supertypesDeserializer =
-          _decoder.getObject(Key.SUPERTYPES);
-      List<int> offsets = supertypesDeserializer.getInts(Key.OFFSETS);
-      List<Link<DartType>> levels = new List<Link<DartType>>(offsets.length);
-      LinkBuilder<DartType> typesBuilder = new LinkBuilder<DartType>();
-      int offset = 0;
-      int depth = offsets.length - 1;
-      for (DartType type in supertypesDeserializer.getTypes(Key.TYPES)) {
-        Link<DartType> link = typesBuilder.addLast(type);
-        if (offsets[depth] == offset) {
-          levels[depth] = link;
-          depth--;
-        }
-        offset++;
-      }
-      LinkBuilder<DartType> supertypesBuilder = new LinkBuilder<DartType>();
-      for (DartType supertype in
-          supertypesDeserializer.getTypes(Key.SUPERTYPES, isOptional: true)) {
-        supertypesBuilder.addLast(supertype);
-      }
-      Link<DartType> types = typesBuilder.toLink();
-      Link<DartType> supertypes = supertypesBuilder.toLink();
-      _allSupertypesAndSelf = new OrderedTypeSet.internal(
-          levels, types, supertypes);
-    }
-    return _allSupertypesAndSelf;
-  }
-
-  @override
   void forEachBackendMember(void f(Element member)) {
     _unsupported('forEachBackendMember');
   }
@@ -840,27 +775,9 @@
   }
 
   @override
-  Link<DartType> get interfaces {
-    if (_interfaces == null) {
-      _interfaces = toLink(
-          _decoder.getTypes(Key.INTERFACES, isOptional: true));
-    }
-    return _interfaces;
-  }
-
-  @override
   bool get isEnumClass => false;
 
   @override
-  bool get isProxy => _decoder.getBool(Key.IS_PROXY);
-
-  @override
-  bool get isUnnamedMixinApplication {
-    return _decoder.getBool(Key.IS_UNNAMED_MIXIN_APPLICATION,
-        isOptional: true, defaultValue: false);
-  }
-
-  @override
   Element lookupBackendMember(String memberName) {
     return _unsupported('lookupBackendMember');
   }
@@ -884,6 +801,224 @@
   void ensureResolved(Resolution resolution) {
     resolution.registerClass(this);
   }
+
+}
+
+class ClassElementZ extends DeserializedElementZ
+    with AnalyzableElementMixin,
+         AstElementMixin,
+         ClassElementCommon,
+         class_members.ClassMemberMixin,
+         ContainerMixin,
+         LibraryMemberMixin,
+         TypeDeclarationMixin<InterfaceType>,
+         ClassElementMixin
+    implements ClassElement {
+  bool _isObject;
+  DartType _supertype;
+  OrderedTypeSet _allSupertypesAndSelf;
+  Link<DartType> _interfaces;
+
+  ClassElementZ(ObjectDecoder decoder)
+      : super(decoder);
+
+  @override
+  List<DartType> _getTypeVariables() {
+    return _decoder.getTypes(Key.TYPE_VARIABLES, isOptional: true);
+  }
+
+  void _ensureSuperHierarchy() {
+    if (_interfaces == null) {
+      InterfaceType supertype =
+          _decoder.getType(Key.SUPERTYPE, isOptional: true);
+      if (supertype == null) {
+        _isObject = true;
+        _allSupertypesAndSelf = new OrderedTypeSet.singleton(thisType);
+        _interfaces = const Link<DartType>();
+      } else {
+        _isObject = false;
+        _interfaces = toLink(
+            _decoder.getTypes(Key.INTERFACES, isOptional: true));
+        List<InterfaceType> mixins =
+            _decoder.getTypes(Key.MIXINS, isOptional: true);
+        for (InterfaceType mixin in mixins) {
+          MixinApplicationElement mixinElement =
+              new UnnamedMixinApplicationElementZ(this, supertype, mixin);
+          supertype = mixinElement.thisType.subst(
+              typeVariables, mixinElement.typeVariables);
+        }
+        _supertype = supertype;
+        _allSupertypesAndSelf =
+            new OrderedTypeSetBuilder(this)
+              .createOrderedTypeSet(_supertype, _interfaces);
+      }
+    }
+  }
+
+  @override
+  accept(ElementVisitor visitor, arg) {
+    return visitor.visitClassElement(this, arg);
+  }
+
+  @override
+  DartType get supertype {
+    _ensureSuperHierarchy();
+    return _supertype;
+  }
+
+  @override
+  bool get isAbstract => _decoder.getBool(Key.IS_ABSTRACT);
+
+  @override
+  bool get isObject {
+    _ensureSuperHierarchy();
+    return _isObject;
+  }
+
+  @override
+  OrderedTypeSet get allSupertypesAndSelf {
+    _ensureSuperHierarchy();
+    return _allSupertypesAndSelf;
+  }
+
+  @override
+  Link<DartType> get interfaces {
+    _ensureSuperHierarchy();
+    return _interfaces;
+  }
+
+  @override
+  bool get isProxy => _decoder.getBool(Key.IS_PROXY);
+
+  @override
+  bool get isUnnamedMixinApplication => false;
+}
+
+abstract class MixinApplicationElementMixin
+    implements ElementZ, MixinApplicationElement {
+  Link<ConstructorElement> _constructors;
+
+  @override
+  bool get isMixinApplication => false;
+
+  @override
+  ClassElement get mixin => mixinType.element;
+
+  Link<ConstructorElement> get constructors {
+    if (_constructors == null) {
+      LinkBuilder<ConstructorElement> builder =
+          new LinkBuilder<ConstructorElement>();
+      for (ConstructorElement definingConstructor in superclass.constructors) {
+        if (definingConstructor.isGenerativeConstructor &&
+            definingConstructor.memberName.isAccessibleFrom(library)) {
+          builder.addLast(
+              new ForwardingConstructorElementZ(this, definingConstructor));
+        }
+      }
+      _constructors = builder.toLink();
+    }
+    return _constructors;
+  }
+}
+
+
+class NamedMixinApplicationElementZ extends ClassElementZ
+    with MixinApplicationElementCommon,
+         MixinApplicationElementMixin {
+  InterfaceType _mixinType;
+
+  NamedMixinApplicationElementZ(ObjectDecoder decoder)
+      : super(decoder);
+
+  @override
+  InterfaceType get mixinType =>_mixinType ??= _decoder.getType(Key.MIXIN);
+}
+
+
+class UnnamedMixinApplicationElementZ extends ElementZ
+    with ClassElementCommon,
+         ClassElementMixin,
+         class_members.ClassMemberMixin,
+         TypeDeclarationMixin<InterfaceType>,
+         AnalyzableElementMixin,
+         AstElementMixin,
+         MixinApplicationElementCommon,
+         MixinApplicationElementMixin {
+  final String name;
+  final ClassElement _subclass;
+  final InterfaceType supertype;
+  final Link<DartType> interfaces;
+  OrderedTypeSet _allSupertypesAndSelf;
+
+  UnnamedMixinApplicationElementZ(
+      ClassElement subclass,
+      InterfaceType supertype, InterfaceType mixin)
+      : this._subclass = subclass,
+        this.supertype = supertype,
+        this.interfaces = const Link<DartType>().prepend(mixin),
+        this.name = "${supertype.name}+${mixin.name}";
+
+  @override
+  CompilationUnitElement get compilationUnit => _subclass.compilationUnit;
+
+  @override
+  bool get isUnnamedMixinApplication => true;
+
+  @override
+  List<DartType> _getTypeVariables() {
+    // Create synthetic type variables for the mixin application.
+    List<DartType> typeVariables = <DartType>[];
+    int index = 0;
+    for (TypeVariableType type in _subclass.typeVariables) {
+      SyntheticTypeVariableElementZ typeVariableElement =
+          new SyntheticTypeVariableElementZ(this, index, type.name);
+      TypeVariableType typeVariable = new TypeVariableType(typeVariableElement);
+      typeVariables.add(typeVariable);
+      index++;
+    }
+    // Setup bounds on the synthetic type variables.
+    for (TypeVariableType type in _subclass.typeVariables) {
+      TypeVariableType typeVariable = typeVariables[type.element.index];
+      SyntheticTypeVariableElementZ typeVariableElement = typeVariable.element;
+      typeVariableElement._type = typeVariable;
+      typeVariableElement._bound =
+          type.element.bound.subst(typeVariables, _subclass.typeVariables);
+    }
+    return typeVariables;
+  }
+
+  @override
+  accept(ElementVisitor visitor, arg) {
+    return visitor.visitMixinApplicationElement(this, arg);
+  }
+
+  @override
+  OrderedTypeSet get allSupertypesAndSelf {
+    if (_allSupertypesAndSelf == null) {
+      _allSupertypesAndSelf =
+          new OrderedTypeSetBuilder(this)
+            .createOrderedTypeSet(supertype, interfaces);
+    }
+    return _allSupertypesAndSelf;
+  }
+
+  @override
+  Element get enclosingElement => _subclass.enclosingElement;
+
+  @override
+  bool get isObject => false;
+
+  @override
+  bool get isProxy => false;
+
+  @override
+  LibraryElement get library => enclosingElement.library;
+
+  @override
+  InterfaceType get mixinType => interfaces.head;
+
+  @override
+  SourceSpan get sourcePosition => _subclass.sourcePosition;
 }
 
 
@@ -1018,6 +1153,117 @@
       _unsupported('isEffectiveTargetMalformed');
 }
 
+class ForwardingConstructorElementZ extends ElementZ
+    with AnalyzableElementMixin,
+        AstElementMixin
+    implements ConstructorElement {
+  final MixinApplicationElement enclosingClass;
+  final ConstructorElement definingConstructor;
+
+  ForwardingConstructorElementZ(this.enclosingClass, this.definingConstructor);
+
+  @override
+  CompilationUnitElement get compilationUnit => enclosingClass.compilationUnit;
+
+  @override
+  accept(ElementVisitor visitor, arg) {
+    return visitor.visitConstructorElement(this, arg);
+  }
+
+  @override
+  AsyncMarker get asyncMarker => AsyncMarker.SYNC;
+
+  @override
+  InterfaceType computeEffectiveTargetType(InterfaceType newType) {
+    return enclosingClass.thisType;
+  }
+
+  @override
+  DartType computeType(Resolution resolution) => type;
+
+  @override
+  bool get isConst => false;
+
+  @override
+  ConstantConstructor get constantConstructor => null;
+
+  @override
+  ConstructorElement get effectiveTarget => this;
+
+  @override
+  Element get enclosingElement => enclosingClass;
+
+  @override
+  FunctionSignature get functionSignature {
+    return _unsupported('functionSignature');
+  }
+
+  @override
+  bool get hasFunctionSignature  {
+    return _unsupported('hasFunctionSignature');
+  }
+
+  @override
+  ConstructorElement get immediateRedirectionTarget => null;
+
+  @override
+  bool get isCyclicRedirection => false;
+
+  @override
+  bool get isEffectiveTargetMalformed => false;
+
+  @override
+  bool get isExternal => false;
+
+  @override
+  bool get isFromEnvironmentConstructor => false;
+
+  @override
+  bool get isRedirectingFactory => false;
+
+  @override
+  bool get isRedirectingGenerative => false;
+
+  @override
+  ElementKind get kind => ElementKind.GENERATIVE_CONSTRUCTOR;
+
+  @override
+  LibraryElement get library => enclosingClass.library;
+
+  @override
+  MemberElement get memberContext => this;
+
+  @override
+  Name get memberName => definingConstructor.memberName;
+
+  @override
+  String get name => definingConstructor.name;
+
+  @override
+  List<FunctionElement> get nestedClosures => const <FunctionElement>[];
+
+  @override
+  List<ParameterElement> get parameters {
+    // TODO(johnniwinther): We need to create synthetic parameters that
+    // substitute type variables.
+    return definingConstructor.parameters;
+  }
+
+  // TODO: implement redirectionDeferredPrefix
+  @override
+  PrefixElement get redirectionDeferredPrefix => null;
+
+  @override
+  SourceSpan get sourcePosition => enclosingClass.sourcePosition;
+
+  @override
+  FunctionType get type {
+    // TODO(johnniwinther): Ensure that the function type substitutes type
+    // variables correctly.
+    return definingConstructor.type;
+  }
+}
+
 abstract class MemberElementMixin
     implements DeserializedElementZ, MemberElement {
 
@@ -1260,7 +1506,7 @@
 }
 
 abstract class TypeDeclarationMixin<T extends GenericType>
-    implements DeserializedElementZ, TypeDeclarationElement {
+    implements ElementZ, TypeDeclarationElement {
   List<DartType> _typeVariables;
   T _rawType;
   T _thisType;
@@ -1273,10 +1519,11 @@
     return _memberName;
   }
 
+  List<DartType> _getTypeVariables();
+
   void _ensureTypes() {
     if (_typeVariables == null) {
-      _typeVariables = _decoder.getTypes(
-          Key.TYPE_VARIABLES, isOptional: true);
+      _typeVariables = _getTypeVariables();
       _rawType = _createType(new List<DartType>.filled(
           _typeVariables.length, const DynamicType()));
       _thisType = _createType(_typeVariables);
@@ -1327,6 +1574,11 @@
   }
 
   @override
+  List<DartType> _getTypeVariables() {
+    return _decoder.getTypes(Key.TYPE_VARIABLES, isOptional: true);
+  }
+
+  @override
   ElementKind get kind => ElementKind.TYPEDEF;
 
   @override
@@ -1411,6 +1663,68 @@
   LibraryElement get library => typeDeclaration.library;
 }
 
+class SyntheticTypeVariableElementZ extends ElementZ
+    with AnalyzableElementMixin,
+         AstElementMixin
+    implements TypeVariableElement {
+  final TypeDeclarationElement typeDeclaration;
+  final int index;
+  final String name;
+  TypeVariableType _type;
+  DartType _bound;
+  Name _memberName;
+
+  SyntheticTypeVariableElementZ(this.typeDeclaration, this.index, this.name);
+
+  Name get memberName {
+    if (_memberName == null) {
+      _memberName = new Name(name, library);
+    }
+    return _memberName;
+  }
+
+  @override
+  ElementKind get kind => ElementKind.TYPE_VARIABLE;
+
+  @override
+  accept(ElementVisitor visitor, arg) {
+    return visitor.visitTypeVariableElement(this, arg);
+  }
+
+  @override
+  CompilationUnitElement get compilationUnit {
+    return typeDeclaration.compilationUnit;
+  }
+
+  @override
+  TypeVariableType get type {
+    assert(invariant(this, _type != null,
+         message: "Type variable type has not been set on $this."));
+    return _type;
+  }
+
+  @override
+  TypeVariableType computeType(Resolution resolution) => type;
+
+  @override
+  Element get enclosingElement => typeDeclaration;
+
+  @override
+  Element get enclosingClass => typeDeclaration;
+
+  DartType get bound {
+    assert(invariant(this, _bound != null,
+        message: "Type variable bound has not been set on $this."));
+    return _bound;
+  }
+
+  @override
+  LibraryElement get library => typeDeclaration.library;
+
+  @override
+  SourceSpan get sourcePosition => typeDeclaration.sourcePosition;
+}
+
 class ParameterElementZ extends DeserializedElementZ
     with AnalyzableElementMixin,
          AstElementMixin,
diff --git a/pkg/compiler/lib/src/serialization/serialization.dart b/pkg/compiler/lib/src/serialization/serialization.dart
index 0379b6a..a336321 100644
--- a/pkg/compiler/lib/src/serialization/serialization.dart
+++ b/pkg/compiler/lib/src/serialization/serialization.dart
@@ -4,20 +4,19 @@
 
 library dart2js.serialization;
 
-import '../common/backend_api.dart';
 import '../elements/elements.dart';
 import '../constants/expressions.dart';
 import '../dart_types.dart';
-import '../universe/world_impact.dart';
 
 import 'constant_serialization.dart';
 import 'element_serialization.dart';
-import 'impact_serialization.dart';
 import 'json_serializer.dart';
 import 'keys.dart';
 import 'type_serialization.dart';
 import 'values.dart';
 
+export 'task.dart' show LibraryDeserializer;
+
 /// An object that supports the encoding an [ObjectValue] for serialization.
 ///
 /// The [ObjectEncoder] ensures that nominality and circularities of
@@ -91,6 +90,13 @@
     }
   }
 
+  /// Maps the [key] entry to the [value] in the encoded object.
+  void setValue(K key, Value value) {
+    _checkKey(key);
+    _map[key] = value;
+  }
+
+
   /// Maps the [key] entry to the enum [value] in the encoded object.
   void setEnum(K key, var value) {
     _checkKey(key);
@@ -581,6 +587,11 @@
   Map<Key, Value> get map => objectValue.map;
 }
 
+/// Function used to filter which element serialized.
+typedef bool ElementMatcher(Element element);
+
+bool includeAllElements(Element element) => true;
+
 /// Serializer for the transitive closure of a collection of libraries.
 ///
 /// The serializer creates an [ObjectValue] model of the [Element], [DartType]
@@ -607,26 +618,27 @@
 ///       ],
 ///     }
 ///
-// TODO(johnniwinther): Support per-library serialization and dependencies
-// between serialized subcomponent.
+// TODO(johnniwinther): Support dependencies between serialized subcomponent.
 class Serializer {
-  final SerializationEncoder _encoder;
   List<SerializerPlugin> plugins = <SerializerPlugin>[];
 
+  Map<Uri, dynamic> _dependencyMap = <Uri, dynamic>{};
   Map<Element, DataObject> _elementMap = <Element, DataObject>{};
   Map<ConstantExpression, DataObject> _constantMap =
       <ConstantExpression, DataObject>{};
   Map<DartType, DataObject> _typeMap = <DartType, DataObject>{};
   List _pendingList = [];
+  ElementMatcher shouldInclude;
 
-  Serializer(this._encoder);
+  // TODO(johnniwinther): Replace [includeElement] with a general strategy.
+  Serializer({this.shouldInclude: includeAllElements});
 
   /// Add the transitive closure of [library] to this serializer.
   void serialize(LibraryElement library) {
-    // Call [_getElementDataObject] for its side-effect: To create a
+    // Call [_getElementId] for its side-effect: To create a
     // [DataObject] for [library]. If not already created, this will
     // put the serialization of [library] in the work queue.
-    _getElementDataObject(library);
+    _getElementId(library);
   }
 
   void _emptyWorklist() {
@@ -635,41 +647,75 @@
     }
   }
 
-  /// Returns the [DataObject] for [element].
+  /// Returns the id [Value] for [element].
   ///
-  /// If [constant] has no [DataObject], a new [DataObject] is created and
-  /// encoding the [ObjectValue] for [constant] is put into the work queue of
+  /// If [element] has no [DataObject], a new [DataObject] is created and
+  /// encoding the [ObjectValue] for [element] is put into the work queue of
   /// this serializer.
-  DataObject _getElementDataObject(Element element) {
+  Value _getElementId(Element element) {
     if (element == null) {
       throw new ArgumentError('Serializer._getElementDataObject(null)');
     }
     DataObject dataObject = _elementMap[element];
     if (dataObject == null) {
-      // Run through [ELEMENT_SERIALIZERS] sequentially to find the one that
-      // deals with [element].
-      for (ElementSerializer serializer in ELEMENT_SERIALIZERS) {
-        SerializedElementKind kind = serializer.getSerializedKind(element);
-        if (kind != null) {
-          dataObject = new DataObject(
-              new IntValue(_elementMap.length), new EnumValue(kind));
-          _elementMap[element] = dataObject;
-          // Delay the serialization of the element itself to avoid loops, and
-          // to keep the call stack small.
-          _pendingList.add(() {
-            ObjectEncoder encoder = new ObjectEncoder(this, dataObject.map);
-            serializer.serialize(element, encoder, kind);
+      if (!shouldInclude(element)) {
+        if (element.isLibrary) {
+          LibraryElement library = element;
+          _elementMap[element] = dataObject = new DataObject(
+              new IntValue(_elementMap.length),
+              new EnumValue(SerializedElementKind.EXTERNAL_LIBRARY));
+          ObjectEncoder encoder = new ObjectEncoder(this, dataObject.map);
+          encoder.setUri(Key.URI, library.canonicalUri, library.canonicalUri);
+        } else if (element.isStatic) {
+          Value classId =_getElementId(element.enclosingClass);
+          _elementMap[element] = dataObject = new DataObject(
+              new IntValue(_elementMap.length),
+              new EnumValue(SerializedElementKind.EXTERNAL_STATIC_MEMBER));
+          ObjectEncoder encoder = new ObjectEncoder(this, dataObject.map);
+          encoder.setValue(Key.CLASS, classId);
+          encoder.setString(Key.NAME, element.name);
+        } else if (element.isConstructor) {
+          Value classId =_getElementId(element.enclosingClass);
+          _elementMap[element] = dataObject = new DataObject(
+              new IntValue(_elementMap.length),
+              new EnumValue(SerializedElementKind.EXTERNAL_CONSTRUCTOR));
+          ObjectEncoder encoder = new ObjectEncoder(this, dataObject.map);
+          encoder.setValue(Key.CLASS, classId);
+          encoder.setString(Key.NAME, element.name);
+        } else {
+          Value libraryId =_getElementId(element.library);
+          _elementMap[element] = dataObject = new DataObject(
+              new IntValue(_elementMap.length),
+              new EnumValue(SerializedElementKind.EXTERNAL_LIBRARY_MEMBER));
+          ObjectEncoder encoder = new ObjectEncoder(this, dataObject.map);
+          encoder.setValue(Key.LIBRARY, libraryId);
+          encoder.setString(Key.NAME, element.name);
+        }
+      } else {
+        // Run through [ELEMENT_SERIALIZERS] sequentially to find the one that
+        // deals with [element].
+        for (ElementSerializer serializer in ELEMENT_SERIALIZERS) {
+          SerializedElementKind kind = serializer.getSerializedKind(element);
+          if (kind != null) {
+            _elementMap[element] = dataObject = new DataObject(
+                new IntValue(_elementMap.length), new EnumValue(kind));
+            // Delay the serialization of the element itself to avoid loops, and
+            // to keep the call stack small.
+            _pendingList.add(() {
+              ObjectEncoder encoder = new ObjectEncoder(this, dataObject.map);
+              serializer.serialize(element, encoder, kind);
 
-            MapEncoder pluginData;
-            for (SerializerPlugin plugin in plugins) {
-              plugin.onElement(element, (String tag) {
-                if (pluginData == null) {
-                  pluginData = encoder.createMap(Key.DATA);
-                }
-                return pluginData.createObject(tag);
-              });
-            }
-          });
+              MapEncoder pluginData;
+              for (SerializerPlugin plugin in plugins) {
+                plugin.onElement(element, (String tag) {
+                  if (pluginData == null) {
+                    pluginData = encoder.createMap(Key.DATA);
+                  }
+                  return pluginData.createObject(tag);
+                });
+              }
+            });
+          }
         }
       }
     }
@@ -677,7 +723,7 @@
       throw new UnsupportedError(
           'Unsupported element: $element (${element.kind})');
     }
-    return dataObject;
+    return dataObject.id;
   }
 
   /// Creates the [ElementValue] for [element].
@@ -685,15 +731,15 @@
   /// If [element] has not already been serialized, it is added to the work
   /// queue of this serializer.
   ElementValue createElementValue(Element element) {
-    return new ElementValue(element, _getElementDataObject(element).id);
+    return new ElementValue(element, _getElementId(element));
   }
 
-  /// Returns the [DataObject] for [constant].
+  /// Returns the id [Value] for [constant].
   ///
   /// If [constant] has no [DataObject], a new [DataObject] is created and
   /// encoding the [ObjectValue] for [constant] is put into the work queue of
   /// this serializer.
-  DataObject _getConstantDataObject(ConstantExpression constant) {
+  Value _getConstantId(ConstantExpression constant) {
     return _constantMap.putIfAbsent(constant, () {
       DataObject dataObject = new DataObject(
           new IntValue(_constantMap.length), new EnumValue(constant.kind));
@@ -701,7 +747,7 @@
       // keep the call stack small.
       _pendingList.add(() => _encodeConstant(constant, dataObject));
       return dataObject;
-    });
+    }).id;
   }
 
   /// Encodes [constant] into the [ObjectValue] of [dataObject].
@@ -715,23 +761,24 @@
   /// If [constant] has not already been serialized, it is added to the work
   /// queue of this serializer.
   ConstantValue createConstantValue(ConstantExpression constant) {
-    return new ConstantValue(constant, _getConstantDataObject(constant).id);
+    return new ConstantValue(constant, _getConstantId(constant));
   }
 
-  /// Returns the [DataObject] for [type].
+  /// Returns the id [Value] for [type].
   ///
   /// If [type] has no [DataObject], a new [DataObject] is created and
   /// encoding the [ObjectValue] for [type] is put into the work queue of this
   /// serializer.
-  DataObject _getTypeDataObject(DartType type) {
-    return _typeMap.putIfAbsent(type, () {
-      DataObject dataObject = new DataObject(
+  Value _getTypeId(DartType type) {
+    DataObject dataObject = _typeMap[type];
+    if (dataObject == null) {
+      _typeMap[type] = dataObject = new DataObject(
           new IntValue(_typeMap.length), new EnumValue(type.kind));
       // Delay the serialization of the type itself to avoid loops, and to keep
       // the call stack small.
       _pendingList.add(() => _encodeType(type, dataObject));
-      return dataObject;
-    });
+    }
+    return dataObject.id;
   }
 
   /// Encodes [type] into the [ObjectValue] of [dataObject].
@@ -744,7 +791,7 @@
   /// If [type] has not already been serialized, it is added to the work
   /// queue of this serializer.
   TypeValue createTypeValue(DartType type) {
-    return new TypeValue(type, _getTypeDataObject(type).id);
+    return new TypeValue(type, _getTypeId(type));
   }
 
   ObjectValue get objectValue {
@@ -764,8 +811,8 @@
     return new ObjectValue(map);
   }
 
-  String toText() {
-    return _encoder.encode(objectValue);
+  String toText(SerializationEncoder encoder) {
+    return encoder.encode(objectValue);
   }
 
   String prettyPrint() {
@@ -796,10 +843,29 @@
   void onElement(Element element, ObjectDecoder getDecoder(String tag)) {}
 }
 
+/// Context for parallel deserialization.
+class DeserializationContext {
+  Map<Uri, LibraryElement> _uriMap = <Uri, LibraryElement>{};
+  List<Deserializer> deserializers = <Deserializer>[];
+
+  LibraryElement lookupLibrary(Uri uri) {
+    return _uriMap.putIfAbsent(uri, () {
+      for (Deserializer deserializer in deserializers) {
+        LibraryElement library = deserializer.lookupLibrary(uri);
+        if (library != null) {
+          return library;
+        }
+      }
+      return null;
+    });
+  }
+}
+
 /// Deserializer for a closed collection of libraries.
 // TODO(johnniwinther): Support per-library deserialization and dependencies
 // between deserialized subcomponent.
 class Deserializer {
+  final DeserializationContext context;
   final SerializationDecoder decoder;
   List<DeserializerPlugin> plugins = <DeserializerPlugin>[];
   ObjectDecoder _headerObject;
@@ -810,8 +876,9 @@
   Map<int, DartType> _typeMap = {};
   Map<int, ConstantExpression> _constantMap = {};
 
-  Deserializer.fromText(String text, this.decoder) {
+  Deserializer.fromText(this.context, String text, this.decoder) {
     _headerObject = new ObjectDecoder(this, decoder.decode(text));
+    context.deserializers.add(this);
   }
 
   /// Returns the [ListDecoder] for the [Element]s in this deserializer.
@@ -863,7 +930,38 @@
     Element element = _elementMap[id];
     if (element == null) {
       ObjectDecoder decoder = elements.getObject(id);
-      element = ElementDeserializer.deserialize(decoder);
+      SerializedElementKind elementKind =
+          decoder.getEnum(Key.KIND, SerializedElementKind.values);
+      if (elementKind == SerializedElementKind.EXTERNAL_LIBRARY) {
+        Uri uri = decoder.getUri(Key.URI);
+        element = context.lookupLibrary(uri);
+        if (element == null) {
+          throw new StateError("Missing library for $uri.");
+        }
+      } else if (elementKind == SerializedElementKind.EXTERNAL_LIBRARY_MEMBER) {
+        LibraryElement library = decoder.getElement(Key.LIBRARY);
+        String name = decoder.getString(Key.NAME);
+        element = library.find(name);
+        if (element == null) {
+          throw new StateError("Missing library member for $name in $library.");
+        }
+      } else if (elementKind == SerializedElementKind.EXTERNAL_STATIC_MEMBER) {
+        ClassElement cls = decoder.getElement(Key.CLASS);
+        String name = decoder.getString(Key.NAME);
+        element = cls.lookupLocalMember(name);
+        if (element == null) {
+          throw new StateError("Missing static member for $name in $cls.");
+        }
+      } else if (elementKind == SerializedElementKind.EXTERNAL_CONSTRUCTOR) {
+        ClassElement cls = decoder.getElement(Key.CLASS);
+        String name = decoder.getString(Key.NAME);
+        element = cls.lookupConstructor(name);
+        if (element == null) {
+          throw new StateError("Missing constructor for $name in $cls.");
+        }
+      } else {
+        element = ElementDeserializer.deserialize(decoder, elementKind);
+      }
       _elementMap[id] = element;
 
       MapDecoder pluginData = decoder.getMap(Key.DATA, isOptional: true);
diff --git a/pkg/compiler/lib/src/serialization/task.dart b/pkg/compiler/lib/src/serialization/task.dart
index fc1dfae..95059fa 100644
--- a/pkg/compiler/lib/src/serialization/task.dart
+++ b/pkg/compiler/lib/src/serialization/task.dart
@@ -18,8 +18,16 @@
 import '../universe/world_impact.dart' show
     WorldImpact;
 
+/// A deserializer that can load a library element by reading it's information
+/// from a serialized form.
+abstract class LibraryDeserializer {
+  /// Loads the [LibraryElement] associated with a library under [uri], or null
+  /// if no serialized information is available for the given library.
+  LibraryElement readLibrary(Uri uri);
+}
+
 /// Task that supports deserialization of elements.
-class SerializationTask extends CompilerTask {
+class SerializationTask extends CompilerTask implements LibraryDeserializer {
   SerializationTask(Compiler compiler) : super(compiler);
 
   DeserializerSystem deserializer;
diff --git a/pkg/fixnum/lib/src/int64.dart b/pkg/fixnum/lib/src/int64.dart
index 769ef21..7770eb1 100644
--- a/pkg/fixnum/lib/src/int64.dart
+++ b/pkg/fixnum/lib/src/int64.dart
@@ -30,7 +30,7 @@
   static const int _MASK = 4194303; // (1 << _BITS) - 1
   static const int _MASK2 = 1048575; // (1 << _BITS2) - 1
   static const int _SIGN_BIT = 19; // _BITS2 - 1
-  static const int _SIGN_BIT_MASK = 524288; // 1 << _SIGN_BIT
+  static const int _SIGN_BIT_MASK = 1 << _SIGN_BIT;
 
   /**
    * The maximum positive value attainable by an [Int64], namely
diff --git a/pkg/fixnum/lib/src/intx.dart b/pkg/fixnum/lib/src/intx.dart
index 7adbf0c..f132aff 100644
--- a/pkg/fixnum/lib/src/intx.dart
+++ b/pkg/fixnum/lib/src/intx.dart
@@ -128,7 +128,7 @@
   IntX abs();
 
   /** Clamps this integer to be in the range [lowerLimit] - [upperLimit]. */
-  IntX clamp(IntX lowerLimit, IntX upperLimit);
+  IntX clamp(lowerLimit, upperLimit);
 
   /**
    * Returns the minimum number of bits required to store this integer.
diff --git a/pkg/fixnum/test/int_32_test.dart b/pkg/fixnum/test/int_32_test.dart
index 9773deb..e5c8c5f 100644
--- a/pkg/fixnum/test/int_32_test.dart
+++ b/pkg/fixnum/test/int_32_test.dart
@@ -56,8 +56,6 @@
     Int32 n2 = new Int32(9876);
     Int32 n3 = new Int32(-1234);
     Int32 n4 = new Int32(-9876);
-    Int32 n5 = new Int32(0x12345678);
-    Int32 n6 = new Int32(0x22222222);
 
     test("+", () {
       expect(n1 + n2, new Int32(11110));
diff --git a/pkg/pkg.status b/pkg/pkg.status
index 351addb..8062b73 100644
--- a/pkg/pkg.status
+++ b/pkg/pkg.status
@@ -44,6 +44,7 @@
 analysis_server/test/search/top_level_declarations_test: Pass, Slow # 19756, 21628
 analysis_server/test/services/index/store/codec_test: Pass, Slow
 analysis_server/test/socket_server_test: Pass, Slow # Issue 19756, 21628
+analyzer/test/context/declared_variables_test: Pass, Slow # Issue 21628
 analyzer/test/dart/element/element_test: Pass, Slow # Issue 24914
 analyzer/test/dart/ast/ast_test: Pass, Slow # Issue 19756, 21628
 analyzer/test/dart/ast/utilities_test: Pass, Slow # Issue 19756, 21628
@@ -52,8 +53,9 @@
 analyzer/test/non_hint_code_test: Pass, Slow # Issue 21628
 analyzer/test/strong_mode_test: Pass, Slow # Issue 21628
 analyzer/test/generated/all_the_rest_test: Pass, Slow # Issue 21628
+analyzer/test/generated/checked_mode_compile_time_error_code_test: Pass, Slow # Issue 21628
 analyzer/test/generated/ast_test: Pass, Slow # Issue 21628
-analyzer/test/generated/compile_time_error_code_test: Pass, Slow
+analyzer/test/generated/checked_mode_compile_time_error_code_test: Pass, Slow # Issue 21628
 analyzer/test/generated/compile_time_error_code_test: Pass, Slow # Issue 21628
 analyzer/test/generated/constant_test: Pass, Slow # Issue 24914
 analyzer/test/generated/declaration_resolver_test: Pass, Slow # Issue 24914
@@ -77,17 +79,22 @@
 analyzer/test/generated/static_type_warning_code_test: Pass, Slow # Issue 21628
 analyzer/test/generated/static_warning_code_test: Pass, Slow # Issue 21628
 analyzer/test/generated/strong_mode_test: Pass, Slow # Issue 21628
+analyzer/test/generated/type_system_test: Pass, Slow # Issue 21628
 analyzer/test/generated/utilities_test: Pass, Slow # Issue 21628
 analyzer/test/src/context/cache_test: Pass, Slow # Issue 21628
 analyzer/test/src/context/context_test: Pass, Timeout # dartbug.com/23658
 analyzer/test/src/dart/ast/utilities_test: Pass, Slow # Issue 24914
+analyzer/test/src/dart/constant/evaluation_test: Pass, Slow # Issue 24914
 analyzer/test/src/dart/element/element_test: Pass, Slow # Issue 24914
+analyzer/test/src/summary/incremental_cache_test: Pass, Slow # Issue 24914
 analyzer/test/src/summary/index_unit_test: Pass, Slow # Issue 24914
 analyzer/test/src/summary/prelinker_test: Pass, Slow # Issue 24914
+analyzer/test/src/summary/resynthesize_ast_test: Pass, Slow
 analyzer/test/src/summary/resynthesize_strong_test: Pass, Slow
 analyzer/test/src/summary/resynthesize_test: Pass, Slow
 analyzer/test/src/summary/summary_sdk_test: Pass, Slow # Issue 24914
 analyzer/test/src/summary/summarize_ast_test: Pass, Slow # Issue 24914
+analyzer/test/src/summary/summarize_ast_strong_test: Pass, Slow # Issue 24914
 analyzer/test/src/summary/summarize_elements_strong_test: Pass, Slow # Issue 24914
 analyzer/test/src/summary/summarize_elements_test: Pass, Slow # Issue 24914
 analyzer/test/src/task/dart_test: Pass, Slow # Issue 21628
@@ -131,7 +138,8 @@
 analysis_server/index/store/codec_test: Pass, Slow # Issue 19756
 
 [ $runtime == jsshell ]
-async/test/stream_zip_test: RuntimeError, OK # Timers are not supported.
+async/test/stream_zip_test: RuntimeError, OK # Issue 26103. Timers are not supported.
+lookup_map/test/lookup_map_test: RuntimeError, OK # Issue 26103. Timers are not supported.
 
 [ $compiler == dart2js && $runtime == drt ]
 async/test/stream_zip_test: RuntimeError, Pass # Issue 18548
diff --git a/runtime/bin/BUILD.gn b/runtime/bin/BUILD.gn
index 7a6c70f..04d7097 100644
--- a/runtime/bin/BUILD.gn
+++ b/runtime/bin/BUILD.gn
@@ -191,11 +191,6 @@
     "builtin_gen_snapshot.cc",
     "builtin.cc",
     "builtin.h",
-    "platform_android.cc",
-    "platform_linux.cc",
-    "platform_macos.cc",
-    "platform_win.cc",
-    "platform.h",
     "vmservice_impl.cc",
     "vmservice_impl.h",
     # Include generated source files.
@@ -231,27 +226,13 @@
 source_set("gen_snapshot_dart_io") {
   configs += ["..:dart_config",]
 
-  # Set custom sources assignment filter. The custom filters does three things:
-  # 1) Filters out unnecessary files pulled in from the gypi files.
-  # 2) Filters out secure socket support.
-  # 3) Enables dart:io by filtering out _unsupported.cc implementations.
+  deps = [
+    "//third_party/zlib",
+  ]
+
   custom_sources_filter = [
-    "*net/nss_memio.cc",
-    "*net/nss_memio.h",
-    "*root_certificates.cc",
-    "*secure_socket_boringssl.cc",
-    "*secure_socket_boringssl.h",
-    "*secure_socket_macos.cc",
-    "*secure_socket_macos.h",
-    "*secure_socket.h",
-    "filter.cc",
-    "*io_service_unsupported.cc",
-    "platform_*.cc",
-    "*io_service.cc",
-    "*io_service.h",
     "*_test.cc",
     "*_test.h",
-    "*dbg*",
     "builtin.cc",
     "builtin_common.cc",
     "builtin_gen_snapshot.cc",
@@ -271,11 +252,6 @@
   sources += [
     "io_natives.cc",
     "io_natives.h",
-    "log_android.cc",
-    "log_linux.cc",
-    "log_macos.cc",
-    "log_win.cc",
-    "log.h",
   ]
 
   include_dirs = [
@@ -289,26 +265,9 @@
 source_set("embedded_dart_io") {
   configs += ["..:dart_config",]
 
-  # Set custom sources assignment filter. The custom filters does three things:
-  # 1) Filters out unnecessary files pulled in from the gypi files.
-  # 2) Filters out secure socket support.
-  # 3) Enables dart:io by filtering out _unsupported.cc implementations.
   custom_sources_filter = [
-    "*net/nss_memio.cc",
-    "*net/nss_memio.h",
-    "*root_certificates.cc",
-    "*secure_socket_boringssl.cc",
-    "*secure_socket_boringssl.h",
-    "*secure_socket_macos.cc",
-    "*secure_socket_macos.h",
-    "*secure_socket.h",
-    "*filter_unsupported.cc",
-    "*io_service_unsupported.cc",
-    "*io_service.cc",
-    "*io_service.h",
     "*_test.cc",
     "*_test.h",
-    "*dbg*",
     "builtin.cc",
     "builtin_gen_snapshot.cc",
   ]
diff --git a/runtime/bin/bin.gypi b/runtime/bin/bin.gypi
index 5bdd606..da8354e 100644
--- a/runtime/bin/bin.gypi
+++ b/runtime/bin/bin.gypi
@@ -145,6 +145,73 @@
         ['exclude', '_test\\.(cc|h)$'],
       ],
       'conditions': [
+        ['dart_io_support==0', {
+          'defines': [
+            'DART_IO_DISABLED',
+          ],
+        }],
+        ['OS=="win"', {
+          'sources/' : [
+            ['exclude', 'fdutils.h'],
+          ],
+          # TODO(antonm): fix the implementation.
+          # Current implementation accepts char* strings
+          # and therefore fails to compile once _UNICODE is
+          # enabled.  That should be addressed using -A
+          # versions of functions and adding necessary conversions.
+          'configurations': {
+            'Common_Base': {
+              'msvs_configuration_attributes': {
+                'CharacterSet': '0',
+              },
+            },
+          },
+        }],
+        ['OS=="linux"', {
+          'link_settings': {
+            'libraries': [
+              '-ldl',
+            ],
+          },
+        }],
+        ['OS=="android"', {
+          'link_settings': {
+            'libraries': [
+              '-ldl',
+            ],
+          },
+        }],
+      ],
+    },
+    # This is the same as libdart_builtin, but the io support libraries are
+    # never disabled, even when dart_io_support==0. This is so that it can
+    # still be usefully linked into gen_snapshot.
+    {
+      'target_name': 'libdart_builtin_no_disable',
+      'type': 'static_library',
+      'toolsets':['host'],
+      'dependencies': [
+        'generate_builtin_cc_file#host',
+        'generate_io_cc_file#host',
+        'generate_io_patch_cc_file#host',
+      ],
+      'include_dirs': [
+        '..',
+      ],
+      'sources': [
+        'log_android.cc',
+        'log_linux.cc',
+        'log_macos.cc',
+        'log_win.cc',
+      ],
+      'includes': [
+        'builtin_impl_sources.gypi',
+        '../platform/platform_sources.gypi',
+      ],
+      'sources/': [
+        ['exclude', '_test\\.(cc|h)$'],
+      ],
+      'conditions': [
         ['OS=="win"', {
           'sources/' : [
             ['exclude', 'fdutils.h'],
@@ -227,10 +294,10 @@
       'conditions': [
         ['OS != "mac" and dart_io_support==1 and dart_io_secure_socket==1', {
           'dependencies': [
-          '../third_party/boringssl/boringssl_dart.gyp:boringssl',
+            '../third_party/boringssl/boringssl_dart.gyp:boringssl',
           ],
         }],
-        ['dart_io_secure_socket==0', {
+        ['dart_io_secure_socket==0 or dart_io_support==0', {
           'defines': [
             'DART_IO_SECURE_SOCKET_DISABLED'
           ],
@@ -300,15 +367,80 @@
           'dependencies': [
             'bin/zlib.gyp:zlib_dart',
           ],
+        }, {  # dart_io_support == 0
+          'defines': [
+            'DART_IO_DISABLED',
+            'DART_IO_SECURE_SOCKET_DISABLED',
+          ],
+        }],
+        ['dart_io_secure_socket==0', {
+          'defines': [
+            'DART_IO_SECURE_SOCKET_DISABLED'
+          ],
         }],
         ['OS != "mac" and dart_io_support==1 and dart_io_secure_socket==1', {
           'dependencies': [
             '../third_party/boringssl/boringssl_dart.gyp:boringssl',
           ],
         }],
-        ['dart_io_secure_socket==0', {
+        ['OS=="win"', {
+          'link_settings': {
+            'libraries': [ '-liphlpapi.lib' ],
+          },
+          # TODO(antonm): fix the implementation.
+          # Current implementation accepts char* strings
+          # and therefore fails to compile once _UNICODE is
+          # enabled.  That should be addressed using -A
+          # versions of functions and adding necessary conversions.
+          'configurations': {
+            'Common_Base': {
+              'msvs_configuration_attributes': {
+                'CharacterSet': '0',
+              },
+            },
+          },
+        }],
+        ['OS=="mac"', {
+          'link_settings': {
+            'libraries': [
+              '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
+              '$(SDKROOT)/System/Library/Frameworks/CoreServices.framework',
+              '$(SDKROOT)/System/Library/Frameworks/Security.framework',
+            ],
+          },
+        }],
+      ],
+    },
+    # This is the same as libdart_io, but the io support libraries are
+    # never disabled, even when dart_io_support==0. This is so that it can
+    # still be usefully linked into gen_snapshot.
+    {
+      'target_name': 'libdart_io_no_disable',
+      'type': 'static_library',
+      'toolsets': ['host'],
+      'include_dirs': [
+        '..',
+        '../../third_party',
+      ],
+      'includes': [
+        'io_impl_sources.gypi',
+      ],
+      'sources': [
+        'io_natives.h',
+        'io_natives.cc',
+      ],
+      'dependencies': [
+        'bin/zlib.gyp:zlib_dart',
+      ],
+      'conditions': [
+        ['dart_io_support==0 or dart_io_secure_socket==0', {
           'defines': [
-            'DART_IO_SECURE_SOCKET_DISABLED'
+            'DART_IO_SECURE_SOCKET_DISABLED',
+          ],
+        }],
+        ['OS != "mac" and dart_io_support==1 and dart_io_secure_socket==1', {
+          'dependencies': [
+            '../third_party/boringssl/boringssl_dart.gyp:boringssl',
           ],
         }],
         ['OS=="win"', {
@@ -377,9 +509,11 @@
       'dependencies': [
         'generate_resources_cc_file#host',
         'generate_observatory_assets_cc_file#host',
-        'libdart_nosnapshot',
-        'libdart_builtin',
-        'libdart_io',
+        'libdart_nosnapshot#host',
+        # If io is disabled for the VM, we still need it for gen snapshot, so
+        # use libdart_builtin and libdart_io that still have io enabled.
+        'libdart_builtin_no_disable#host',
+        'libdart_io_no_disable#host',
       ],
       'include_dirs': [
         '..',
@@ -547,6 +681,7 @@
       'target_name': 'dart_product',
       'type': 'executable',
       'dependencies': [
+        'bin/zlib.gyp:zlib_dart',
         'libdart',
         'libdart_builtin',
         'libdart_io',
@@ -560,13 +695,13 @@
       ],
       'sources': [
         'main.cc',
+        'builtin.h',
         'builtin_common.cc',
         'builtin_natives.cc',
         'builtin_nolib.cc',
-        'builtin.h',
         'io_natives.h',
-        'snapshot_empty.cc',
         'observatory_assets_empty.cc',
+        'snapshot_empty.cc',
       ],
       'conditions': [
         ['OS=="win"', {
@@ -581,13 +716,14 @@
       'target_name': 'dart',
       'type': 'executable',
       'dependencies': [
+        'bin/zlib.gyp:zlib_dart',
+        'build_observatory#host',
+        'generate_observatory_assets_cc_file#host',
+        'generate_resources_cc_file#host',
+        'generate_snapshot_file#host',
         'libdart',
         'libdart_builtin',
         'libdart_io',
-        'build_observatory#host',
-        'generate_snapshot_file#host',
-        'generate_resources_cc_file#host',
-        'generate_observatory_assets_cc_file#host',
       ],
       'include_dirs': [
         '..',
@@ -595,16 +731,16 @@
       ],
       'sources': [
         'main.cc',
+        'builtin.h',
         'builtin_common.cc',
         'builtin_natives.cc',
         'builtin_nolib.cc',
-        'builtin.h',
         'io_natives.h',
         'vmservice_impl.cc',
         'vmservice_impl.h',
-        '<(snapshot_cc_file)',
-        '<(resources_cc_file)',
         '<(observatory_assets_cc_file)',
+        '<(resources_cc_file)',
+        '<(snapshot_cc_file)',
       ],
       'conditions': [
         ['OS=="win"', {
@@ -636,30 +772,29 @@
       'target_name': 'dart_noopt',
       'type': 'executable',
       'dependencies': [
-        'libdart_noopt',
+        'build_observatory#host',
+        'generate_observatory_assets_cc_file#host',
+        'generate_resources_cc_file#host',
+        'generate_snapshot_file#host',
         'libdart_builtin',
         'libdart_io',
-        'build_observatory#host',
-        'generate_snapshot_file#host',
-        'generate_resources_cc_file#host',
-        'generate_observatory_assets_cc_file#host',
+        'libdart_noopt',
       ],
       'include_dirs': [
         '..',
-        '../../third_party/', # Zlib
       ],
       'sources': [
         'main.cc',
+        'builtin.h',
         'builtin_common.cc',
         'builtin_natives.cc',
         'builtin_nolib.cc',
-        'builtin.h',
         'io_natives.h',
         'vmservice_impl.cc',
         'vmservice_impl.h',
-        '<(snapshot_cc_file)',
-        '<(resources_cc_file)',
         '<(observatory_assets_cc_file)',
+        '<(resources_cc_file)',
+        '<(snapshot_cc_file)',
       ],
       'defines': [
         'DART_PRECOMPILER',
@@ -693,12 +828,13 @@
       'target_name': 'dart_precompiled_runtime',
       'type': 'executable',
       'dependencies': [
-        'libdart_precompiled_runtime',
+        'bin/zlib.gyp:zlib_dart',
+        'build_observatory#host',
+        'generate_observatory_assets_cc_file#host',
+        'generate_resources_cc_file#host',
         'libdart_builtin',
         'libdart_io',
-        'build_observatory#host',
-        'generate_resources_cc_file#host',
-        'generate_observatory_assets_cc_file#host',
+        'libdart_precompiled_runtime',
       ],
       'include_dirs': [
         '..',
@@ -706,16 +842,16 @@
       ],
       'sources': [
         'main.cc',
+        'builtin.h',
         'builtin_common.cc',
         'builtin_natives.cc',
         'builtin_nolib.cc',
-        'builtin.h',
         'io_natives.h',
+        'snapshot_empty.cc',
         'vmservice_impl.cc',
         'vmservice_impl.h',
-        'snapshot_empty.cc',
-        '<(resources_cc_file)',
         '<(observatory_assets_cc_file)',
+        '<(resources_cc_file)',
       ],
       'defines': [
         'DART_PRECOMPILED_RUNTIME',
@@ -742,22 +878,23 @@
       'type': 'executable',
       'toolsets':['host'],
       'dependencies': [
-        'libdart_nosnapshot',
+        'generate_resources_cc_file#host',
         'libdart_builtin',
         'libdart_io',
-        'generate_resources_cc_file#host',
+        'libdart_nosnapshot',
       ],
       'include_dirs': [
         '..',
-        '../../third_party/', # Zlib
       ],
       'sources': [
         'main.cc',
-        'builtin_common.cc',
-        'builtin_natives.cc',
         'builtin.cc',
         'builtin.h',
+        'builtin_common.cc',
+        'builtin_natives.cc',
         'io_natives.h',
+        'observatory_assets_empty.cc',
+        'snapshot_empty.cc',
         'vmservice_impl.cc',
         'vmservice_impl.h',
         # Include generated source files.
@@ -765,8 +902,6 @@
         '<(io_cc_file)',
         '<(io_patch_cc_file)',
         '<(resources_cc_file)',
-        'observatory_assets_empty.cc',
-        'snapshot_empty.cc',
       ],
       'defines': [
         'DART_NO_SNAPSHOT',
diff --git a/runtime/bin/builtin_impl_sources.gypi b/runtime/bin/builtin_impl_sources.gypi
index 054ec9b..eb90ddf 100644
--- a/runtime/bin/builtin_impl_sources.gypi
+++ b/runtime/bin/builtin_impl_sources.gypi
@@ -21,6 +21,7 @@
     'directory_android.cc',
     'directory_linux.cc',
     'directory_macos.cc',
+    'directory_unsupported.cc',
     'directory_win.cc',
     'eventhandler_test.cc',
     'extensions.h',
@@ -29,17 +30,19 @@
     'extensions_linux.cc',
     'extensions_macos.cc',
     'extensions_win.cc',
+    'fdutils.h',
+    'fdutils_android.cc',
+    'fdutils_linux.cc',
+    'fdutils_macos.cc',
     'file.cc',
     'file.h',
     'file_android.cc',
     'file_linux.cc',
     'file_macos.cc',
-    'file_win.cc',
+    'file_support.cc',
+    'file_unsupported.cc',
     'file_test.cc',
-    'fdutils.h',
-    'fdutils_android.cc',
-    'fdutils_linux.cc',
-    'fdutils_macos.cc',
+    'file_win.cc',
     'hashmap_test.cc',
     'io_buffer.cc',
     'io_buffer.h',
diff --git a/runtime/bin/dartutils.cc b/runtime/bin/dartutils.cc
index 09258f7..9a2f9ec 100644
--- a/runtime/bin/dartutils.cc
+++ b/runtime/bin/dartutils.cc
@@ -4,22 +4,21 @@
 
 #include "bin/dartutils.h"
 
-#include "include/dart_api.h"
-#include "include/dart_tools_api.h"
-#include "include/dart_native_api.h"
-
-#include "platform/assert.h"
-#include "platform/globals.h"
-
 #include "bin/crypto.h"
 #include "bin/directory.h"
 #include "bin/extensions.h"
 #include "bin/file.h"
 #include "bin/io_buffer.h"
 #include "bin/platform.h"
-#include "bin/socket.h"
 #include "bin/utils.h"
 
+#include "include/dart_api.h"
+#include "include/dart_native_api.h"
+#include "include/dart_tools_api.h"
+
+#include "platform/assert.h"
+#include "platform/globals.h"
+
 // Return the error from the containing function if handle is in error handle.
 #define RETURN_IF_ERROR(handle)                                                \
   {                                                                            \
diff --git a/runtime/bin/dartutils.h b/runtime/bin/dartutils.h
index adc7d3f..f9a6d50 100644
--- a/runtime/bin/dartutils.h
+++ b/runtime/bin/dartutils.h
@@ -5,14 +5,12 @@
 #ifndef BIN_DARTUTILS_H_
 #define BIN_DARTUTILS_H_
 
+#include "bin/isolate_data.h"
 #include "include/dart_api.h"
 #include "include/dart_native_api.h"
-
 #include "platform/assert.h"
 #include "platform/globals.h"
 
-#include "bin/isolate_data.h"
-
 namespace dart {
 namespace bin {
 
diff --git a/runtime/bin/directory.cc b/runtime/bin/directory.cc
index c2f3dc8..982a4be 100644
--- a/runtime/bin/directory.cc
+++ b/runtime/bin/directory.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "bin/directory.h"
 
 #include "bin/dartutils.h"
@@ -422,3 +424,5 @@
 
 }  // namespace bin
 }  // namespace dart
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/directory_unsupported.cc b/runtime/bin/directory_unsupported.cc
new file mode 100644
index 0000000..7e82bdd
--- /dev/null
+++ b/runtime/bin/directory_unsupported.cc
@@ -0,0 +1,70 @@
+// Copyright (c) 2016, 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.
+
+#if defined(DART_IO_DISABLED)
+
+#include "bin/builtin.h"
+#include "bin/dartutils.h"
+#include "include/dart_api.h"
+
+namespace dart {
+namespace bin {
+
+void FUNCTION_NAME(Directory_Current)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Directory is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Directory_SetCurrent)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Directory is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Directory_Exists)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Directory is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Directory_Create)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Directory is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Directory_SystemTemp)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Directory is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Directory_CreateTemp)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Directory is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Directory_Delete)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Directory is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Directory_Rename)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Directory is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Directory_List)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Directory is not supported on this platform"));
+}
+
+}  // namespace bin
+}  // namespace dart
+
+#endif  // defined(DART_IO_DISABLED)
diff --git a/runtime/bin/eventhandler.cc b/runtime/bin/eventhandler.cc
index 704cc85..8ce45b2 100644
--- a/runtime/bin/eventhandler.cc
+++ b/runtime/bin/eventhandler.cc
@@ -2,8 +2,12 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-#include "bin/dartutils.h"
+#if !defined(DART_IO_DISABLED)
+
 #include "bin/eventhandler.h"
+
+#include "bin/builtin.h"
+#include "bin/dartutils.h"
 #include "bin/lockers.h"
 #include "bin/socket.h"
 #include "bin/thread.h"
@@ -142,3 +146,5 @@
 
 }  // namespace bin
 }  // namespace dart
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/eventhandler_android.cc b/runtime/bin/eventhandler_android.cc
index 5daeb78..1b7bbdb 100644
--- a/runtime/bin/eventhandler_android.cc
+++ b/runtime/bin/eventhandler_android.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_ANDROID)
 
@@ -433,3 +435,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_ANDROID)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/eventhandler_linux.cc b/runtime/bin/eventhandler_linux.cc
index 6b69ffc..59cbdcd 100644
--- a/runtime/bin/eventhandler_linux.cc
+++ b/runtime/bin/eventhandler_linux.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_LINUX)
 
@@ -437,3 +439,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_LINUX)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/eventhandler_macos.cc b/runtime/bin/eventhandler_macos.cc
index 8d4c683..c2b7833 100644
--- a/runtime/bin/eventhandler_macos.cc
+++ b/runtime/bin/eventhandler_macos.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_MACOS)
 
@@ -509,3 +511,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_MACOS)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/eventhandler_unsupported.cc b/runtime/bin/eventhandler_unsupported.cc
new file mode 100644
index 0000000..c79ad24
--- /dev/null
+++ b/runtime/bin/eventhandler_unsupported.cc
@@ -0,0 +1,39 @@
+// Copyright (c) 2016, 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.
+
+#if defined(DART_IO_DISABLED)
+
+#include "bin/eventhandler.h"
+
+#include "bin/builtin.h"
+#include "bin/dartutils.h"
+#include "include/dart_api.h"
+
+namespace dart {
+namespace bin {
+
+void EventHandler::Start() {
+}
+
+
+void EventHandler::Stop() {
+}
+
+
+void FUNCTION_NAME(EventHandler_SendData)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "EventHandler is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(EventHandler_TimerMillisecondClock)(
+    Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "EventHandler is not supported on this platform"));
+}
+
+}  // namespace bin
+}  // namespace dart
+
+#endif  // defined(DART_IO_DISABLED)
diff --git a/runtime/bin/eventhandler_win.cc b/runtime/bin/eventhandler_win.cc
index 2698253..dfd4985 100644
--- a/runtime/bin/eventhandler_win.cc
+++ b/runtime/bin/eventhandler_win.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_WINDOWS)
 
@@ -1505,3 +1507,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_WINDOWS)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/file.cc b/runtime/bin/file.cc
index 7d9ea28..e730b172 100644
--- a/runtime/bin/file.cc
+++ b/runtime/bin/file.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "bin/file.h"
 
 #include "bin/builtin.h"
@@ -18,32 +20,6 @@
 
 static const int kMSPerSecond = 1000;
 
-// Are we capturing output from stdout for the VM service?
-static bool capture_stdout = false;
-
-// Are we capturing output from stderr for the VM service?
-static bool capture_stderr = false;
-
-void SetCaptureStdout(bool value) {
-  capture_stdout = value;
-}
-
-
-void SetCaptureStderr(bool value) {
-  capture_stderr = value;
-}
-
-
-bool ShouldCaptureStdout() {
-  return capture_stdout;
-}
-
-
-bool ShouldCaptureStderr() {
-  return capture_stderr;
-}
-
-
 // The file pointer has been passed into Dart as an intptr_t and it is safe
 // to pull it out of Dart as a 64-bit integer, cast it to an intptr_t and
 // from there to a File pointer.
@@ -53,70 +29,6 @@
 }
 
 
-bool File::ReadFully(void* buffer, int64_t num_bytes) {
-  int64_t remaining = num_bytes;
-  char* current_buffer = reinterpret_cast<char*>(buffer);
-  while (remaining > 0) {
-    int64_t bytes_read = Read(current_buffer, remaining);
-    if (bytes_read <= 0) {
-      return false;
-    }
-    remaining -= bytes_read;  // Reduce the number of remaining bytes.
-    current_buffer += bytes_read;  // Move the buffer forward.
-  }
-  return true;
-}
-
-
-bool File::WriteFully(const void* buffer, int64_t num_bytes) {
-  int64_t remaining = num_bytes;
-  const char* current_buffer = reinterpret_cast<const char*>(buffer);
-  while (remaining > 0) {
-    int64_t bytes_written = Write(current_buffer, remaining);
-    if (bytes_written < 0) {
-      return false;
-    }
-    remaining -= bytes_written;  // Reduce the number of remaining bytes.
-    current_buffer += bytes_written;  // Move the buffer forward.
-  }
-  if (capture_stdout || capture_stderr) {
-    intptr_t fd = GetFD();
-    if ((fd == STDOUT_FILENO) && capture_stdout) {
-      Dart_ServiceSendDataEvent("Stdout", "WriteEvent",
-                                reinterpret_cast<const uint8_t*>(buffer),
-                                num_bytes);
-    } else if ((fd == STDERR_FILENO) && capture_stderr) {
-      Dart_ServiceSendDataEvent("Stderr", "WriteEvent",
-                                reinterpret_cast<const uint8_t*>(buffer),
-                                num_bytes);
-    }
-  }
-  return true;
-}
-
-
-File::FileOpenMode File::DartModeToFileMode(DartFileOpenMode mode) {
-  ASSERT((mode == File::kDartRead) ||
-         (mode == File::kDartWrite) ||
-         (mode == File::kDartAppend) ||
-         (mode == File::kDartWriteOnly) ||
-         (mode == File::kDartWriteOnlyAppend));
-  if (mode == File::kDartWrite) {
-    return File::kWriteTruncate;
-  }
-  if (mode == File::kDartAppend) {
-    return File::kWrite;
-  }
-  if (mode == File::kDartWriteOnly) {
-    return File::kWriteOnlyTruncate;
-  }
-  if (mode == File::kDartWriteOnlyAppend) {
-    return File::kWriteOnly;
-  }
-  return File::kRead;
-}
-
-
 void FUNCTION_NAME(File_Open)(Dart_NativeArguments args) {
   const char* filename =
       DartUtils::GetStringValue(Dart_GetNativeArgument(args, 0));
@@ -1250,3 +1162,5 @@
 
 }  // namespace bin
 }  // namespace dart
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/file_support.cc b/runtime/bin/file_support.cc
new file mode 100644
index 0000000..0ad5edc
--- /dev/null
+++ b/runtime/bin/file_support.cc
@@ -0,0 +1,109 @@
+// Copyright (c) 2016, 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.
+
+#include "bin/file.h"
+
+#include "bin/builtin.h"
+#include "bin/dartutils.h"
+#include "bin/embedded_dart_io.h"
+#include "bin/io_buffer.h"
+#include "bin/utils.h"
+
+#include "include/dart_api.h"
+#include "include/dart_tools_api.h"
+
+namespace dart {
+namespace bin {
+
+// Are we capturing output from stdout for the VM service?
+static bool capture_stdout = false;
+
+// Are we capturing output from stderr for the VM service?
+static bool capture_stderr = false;
+
+void SetCaptureStdout(bool value) {
+  capture_stdout = value;
+}
+
+
+void SetCaptureStderr(bool value) {
+  capture_stderr = value;
+}
+
+
+bool ShouldCaptureStdout() {
+  return capture_stdout;
+}
+
+
+bool ShouldCaptureStderr() {
+  return capture_stderr;
+}
+
+
+bool File::ReadFully(void* buffer, int64_t num_bytes) {
+  int64_t remaining = num_bytes;
+  char* current_buffer = reinterpret_cast<char*>(buffer);
+  while (remaining > 0) {
+    int64_t bytes_read = Read(current_buffer, remaining);
+    if (bytes_read <= 0) {
+      return false;
+    }
+    remaining -= bytes_read;  // Reduce the number of remaining bytes.
+    current_buffer += bytes_read;  // Move the buffer forward.
+  }
+  return true;
+}
+
+
+bool File::WriteFully(const void* buffer, int64_t num_bytes) {
+  int64_t remaining = num_bytes;
+  const char* current_buffer = reinterpret_cast<const char*>(buffer);
+  while (remaining > 0) {
+    int64_t bytes_written = Write(current_buffer, remaining);
+    if (bytes_written < 0) {
+      return false;
+    }
+    remaining -= bytes_written;  // Reduce the number of remaining bytes.
+    current_buffer += bytes_written;  // Move the buffer forward.
+  }
+  if (capture_stdout || capture_stderr) {
+    intptr_t fd = GetFD();
+    if ((fd == STDOUT_FILENO) && capture_stdout) {
+      Dart_ServiceSendDataEvent("Stdout", "WriteEvent",
+                                reinterpret_cast<const uint8_t*>(buffer),
+                                num_bytes);
+    } else if ((fd == STDERR_FILENO) && capture_stderr) {
+      Dart_ServiceSendDataEvent("Stderr", "WriteEvent",
+                                reinterpret_cast<const uint8_t*>(buffer),
+                                num_bytes);
+    }
+  }
+  return true;
+}
+
+
+File::FileOpenMode File::DartModeToFileMode(DartFileOpenMode mode) {
+  ASSERT((mode == File::kDartRead) ||
+         (mode == File::kDartWrite) ||
+         (mode == File::kDartAppend) ||
+         (mode == File::kDartWriteOnly) ||
+         (mode == File::kDartWriteOnlyAppend));
+  if (mode == File::kDartWrite) {
+    return File::kWriteTruncate;
+  }
+  if (mode == File::kDartAppend) {
+    return File::kWrite;
+  }
+  if (mode == File::kDartWriteOnly) {
+    return File::kWriteOnlyTruncate;
+  }
+  if (mode == File::kDartWriteOnlyAppend) {
+    return File::kWriteOnly;
+  }
+  return File::kRead;
+}
+
+}  // namespace bin
+}  // namespace dart
diff --git a/runtime/bin/file_system_watcher.cc b/runtime/bin/file_system_watcher.cc
index 5d8c0b8..317f59f 100644
--- a/runtime/bin/file_system_watcher.cc
+++ b/runtime/bin/file_system_watcher.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "bin/file_system_watcher.h"
 
 #include "bin/builtin.h"
@@ -73,3 +75,5 @@
 
 }  // namespace bin
 }  // namespace dart
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/file_system_watcher.h b/runtime/bin/file_system_watcher.h
index 7e142d8..5026da7 100644
--- a/runtime/bin/file_system_watcher.h
+++ b/runtime/bin/file_system_watcher.h
@@ -5,6 +5,10 @@
 #ifndef BIN_FILE_SYSTEM_WATCHER_H_
 #define BIN_FILE_SYSTEM_WATCHER_H_
 
+#if defined(DART_IO_DISABLED)
+#error "file_system_watcher.h can only be included on builds with IO enabled"
+#endif
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/runtime/bin/file_system_watcher_android.cc b/runtime/bin/file_system_watcher_android.cc
index ccf54da..4c0380e 100644
--- a/runtime/bin/file_system_watcher_android.cc
+++ b/runtime/bin/file_system_watcher_android.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_ANDROID)
 
@@ -144,3 +146,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_ANDROID)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/file_system_watcher_linux.cc b/runtime/bin/file_system_watcher_linux.cc
index e692f0d..ef4eaef 100644
--- a/runtime/bin/file_system_watcher_linux.cc
+++ b/runtime/bin/file_system_watcher_linux.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_LINUX)
 
@@ -145,3 +147,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_LINUX)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/file_system_watcher_macos.cc b/runtime/bin/file_system_watcher_macos.cc
index ff64288..7bc0e0c 100644
--- a/runtime/bin/file_system_watcher_macos.cc
+++ b/runtime/bin/file_system_watcher_macos.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_MACOS)
 
@@ -458,3 +460,5 @@
 
 #endif  // !TARGET_OS_IOS
 #endif  // defined(TARGET_OS_MACOS)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/file_system_watcher_unsupported.cc b/runtime/bin/file_system_watcher_unsupported.cc
new file mode 100644
index 0000000..7803215
--- /dev/null
+++ b/runtime/bin/file_system_watcher_unsupported.cc
@@ -0,0 +1,58 @@
+// Copyright (c) 2016, 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.
+
+#if defined(DART_IO_DISABLED)
+
+#include "bin/builtin.h"
+#include "bin/dartutils.h"
+#include "include/dart_api.h"
+
+namespace dart {
+namespace bin {
+
+void FUNCTION_NAME(FileSystemWatcher_IsSupported)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "FileSystemWatcher is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(FileSystemWatcher_InitWatcher)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "FileSystemWatcher is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(FileSystemWatcher_CloseWatcher)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "FileSystemWatcher is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(FileSystemWatcher_WatchPath)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "FileSystemWatcher is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(FileSystemWatcher_UnwatchPath)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "FileSystemWatcher is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(FileSystemWatcher_ReadEvents)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "FileSystemWatcher is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(FileSystemWatcher_GetSocketId)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "FileSystemWatcher is not supported on this platform"));
+}
+
+}  // namespace bin
+}  // namespace dart
+
+#endif  // defined(DART_IO_DISABLED)
diff --git a/runtime/bin/file_system_watcher_win.cc b/runtime/bin/file_system_watcher_win.cc
index e6b091a..698b049 100644
--- a/runtime/bin/file_system_watcher_win.cc
+++ b/runtime/bin/file_system_watcher_win.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_WINDOWS)
 
@@ -139,3 +141,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_WINDOWS)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/file_unsupported.cc b/runtime/bin/file_unsupported.cc
new file mode 100644
index 0000000..2655f77
--- /dev/null
+++ b/runtime/bin/file_unsupported.cc
@@ -0,0 +1,202 @@
+// Copyright (c) 2016, 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.
+
+#if defined(DART_IO_DISABLED)
+
+#include "bin/builtin.h"
+#include "bin/dartutils.h"
+#include "include/dart_api.h"
+
+namespace dart {
+namespace bin {
+
+void FUNCTION_NAME(File_Open)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_Exists)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_Close)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_GetFD)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_ReadByte)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_WriteByte)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_Read)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_ReadInto)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_WriteFrom)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_Position)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_SetPosition)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_Truncate)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_Length)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_LengthFromPath)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_LastModified)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_Flush)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_Lock)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_Create)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_CreateLink)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_LinkTarget)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_Delete)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_DeleteLink)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_Rename)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_RenameLink)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_Copy)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_ResolveSymbolicLinks)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_OpenStdio)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_GetStdioHandleType)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_GetType)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_Stat)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(File_AreIdentical)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "File is not supported on this platform"));
+}
+
+}  // namespace bin
+}  // namespace dart
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/filter.cc b/runtime/bin/filter.cc
index fb6c74b..60887ef 100644
--- a/runtime/bin/filter.cc
+++ b/runtime/bin/filter.cc
@@ -2,8 +2,11 @@
 // 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.
 
-#include "bin/dartutils.h"
+#if !defined(DART_IO_DISABLED)
+
 #include "bin/filter.h"
+
+#include "bin/dartutils.h"
 #include "bin/io_buffer.h"
 
 #include "include/dart_api.h"
@@ -465,3 +468,5 @@
 
 }  // namespace bin
 }  // namespace dart
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/filter.h b/runtime/bin/filter.h
index 889326f..28c229f 100644
--- a/runtime/bin/filter.h
+++ b/runtime/bin/filter.h
@@ -5,6 +5,10 @@
 #ifndef BIN_FILTER_H_
 #define BIN_FILTER_H_
 
+#if defined(DART_IO_DISABLED)
+#error "filter.h can only be included on builds with IO enabled"
+#endif
+
 #include "bin/builtin.h"
 #include "bin/utils.h"
 
diff --git a/runtime/bin/filter_unsupported.cc b/runtime/bin/filter_unsupported.cc
index 442b9e6..37d7b6f 100644
--- a/runtime/bin/filter_unsupported.cc
+++ b/runtime/bin/filter_unsupported.cc
@@ -2,9 +2,10 @@
 // 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.
 
+#if defined(DART_IO_DISABLED)
+
 #include "bin/builtin.h"
 #include "bin/dartutils.h"
-
 #include "include/dart_api.h"
 
 namespace dart {
@@ -17,15 +18,23 @@
 
 
 void FUNCTION_NAME(Filter_CreateZLibDeflate)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "ZLibInflater and Deflater not supported on this platform"));
 }
 
 
 void FUNCTION_NAME(Filter_Process)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "ZLibInflater and Deflater not supported on this platform"));
 }
 
 
 void FUNCTION_NAME(Filter_Processed)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "ZLibInflater and Deflater not supported on this platform"));
 }
 
 }  // namespace bin
 }  // namespace dart
+
+#endif  // defined(DART_IO_DISABLED)
diff --git a/runtime/bin/io_impl_sources.gypi b/runtime/bin/io_impl_sources.gypi
index 9f1fe1b..af5c712 100644
--- a/runtime/bin/io_impl_sources.gypi
+++ b/runtime/bin/io_impl_sources.gypi
@@ -14,6 +14,7 @@
     'eventhandler_linux.h',
     'eventhandler_macos.cc',
     'eventhandler_macos.h',
+    'eventhandler_unsupported.cc',
     'eventhandler_win.cc',
     'eventhandler_win.h',
     'file_system_watcher.cc',
@@ -21,6 +22,7 @@
     'file_system_watcher_android.cc',
     'file_system_watcher_linux.cc',
     'file_system_watcher_macos.cc',
+    'file_system_watcher_unsupported.cc',
     'file_system_watcher_win.cc',
     'filter.cc',
     'filter.h',
@@ -35,14 +37,17 @@
     'platform_android.cc',
     'platform_linux.cc',
     'platform_macos.cc',
+    'platform_unsupported.cc',
     'platform_win.cc',
     'process.cc',
     'process.h',
     'process_android.cc',
     'process_linux.cc',
     'process_macos.cc',
+    'process_unsupported.cc',
     'process_win.cc',
     '../../third_party/root_certificates/root_certificates.cc',
+    'root_certificates_unsupported.cc',
     'secure_socket.h',
     'secure_socket_boringssl.cc',
     'secure_socket_boringssl.h',
@@ -57,6 +62,7 @@
     'socket_linux.h',
     'socket_macos.cc',
     'socket_macos.h',
+    'socket_unsupported.cc',
     'socket_win.cc',
     'socket_win.h',
     'stdio.cc',
@@ -64,58 +70,7 @@
     'stdio_android.cc',
     'stdio_linux.cc',
     'stdio_macos.cc',
+    'stdio_unsupported.cc',
     'stdio_win.cc',
   ],
-  'conditions': [
-    ['dart_io_support==1', {
-      'conditions': [
-        ['dart_io_secure_socket==1', {
-          'sources!' : [
-            'io_service_no_ssl.cc',
-            'io_service_no_ssl.h',
-            'secure_socket_unsupported.cc',
-          ],
-          'conditions': [
-            ['OS=="mac"', {
-              # On Mac, we use the system keystore, so do not compile in the
-              # root certs.
-              'sources!': [
-                '../../third_party/root_certificates/root_certificates.cc',
-              ],
-            }],
-          ],
-        }, {  # else dart_io_secure_socket == 0
-          'sources!' : [
-            '../../third_party/root_certificates/root_certificates.cc',
-            'io_service.cc',
-            'io_service.h',
-            'secure_socket.h',
-            'secure_socket_boringssl.cc',
-            'secure_socket_boringssl.h',
-            'secure_socket_macos.cc',
-            'secure_socket_macos.h',
-          ],
-        }],
-      ],
-      'sources!' : [
-        'filter_unsupported.cc',
-        'io_service_unsupported.cc',
-      ],
-    },{  # else dart_io_support == 0
-      'sources!' : [
-        'filter.cc',
-        'filter.h',
-        'io_service.cc',
-        'io_service.h',
-        'io_service_no_ssl.cc',
-        'io_service_no_ssl.h',
-        '../../third_party/root_certificates/root_certificates.cc',
-        'secure_socket.h',
-        'secure_socket_boringssl.cc',
-        'secure_socket_boringssl.h',
-        'secure_socket_macos.cc',
-        'secure_socket_macos.h',
-      ],
-    }],
-  ],
 }
diff --git a/runtime/bin/io_service.cc b/runtime/bin/io_service.cc
index 004e3d2..491fa29 100644
--- a/runtime/bin/io_service.cc
+++ b/runtime/bin/io_service.cc
@@ -2,11 +2,14 @@
 // 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.
 
+#if !defined(DART_IO_DISABLED) && !defined(DART_IO_SECURE_SOCKET_DISABLED)
+
+#include "bin/io_service.h"
+
 #include "bin/dartutils.h"
 #include "bin/directory.h"
 #include "bin/file.h"
 #include "bin/io_buffer.h"
-#include "bin/io_service.h"
 #include "bin/secure_socket.h"
 #include "bin/socket.h"
 #include "bin/utils.h"
@@ -72,3 +75,6 @@
 
 }  // namespace bin
 }  // namespace dart
+
+#endif  // !defined(DART_IO_DISABLED) &&
+        // !defined(DART_IO_SECURE_SOCKET_DISABLED)
diff --git a/runtime/bin/io_service.h b/runtime/bin/io_service.h
index c165e90..209561a 100644
--- a/runtime/bin/io_service.h
+++ b/runtime/bin/io_service.h
@@ -5,6 +5,10 @@
 #ifndef BIN_IO_SERVICE_H_
 #define BIN_IO_SERVICE_H_
 
+#if defined(DART_IO_DISABLED) || defined(DART_IO_SECURE_SOCKET_DISABLED)
+#error "io_service.h can only be included on builds with IO and SSL enabled"
+#endif
+
 #include "bin/builtin.h"
 #include "bin/utils.h"
 
diff --git a/runtime/bin/io_service_no_ssl.cc b/runtime/bin/io_service_no_ssl.cc
index 5c70fe4..ece9ab8 100644
--- a/runtime/bin/io_service_no_ssl.cc
+++ b/runtime/bin/io_service_no_ssl.cc
@@ -2,11 +2,14 @@
 // 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.
 
+#if !defined(DART_IO_DISABLED) && defined(DART_IO_SECURE_SOCKET_DISABLED)
+
+#include "bin/io_service_no_ssl.h"
+
 #include "bin/dartutils.h"
 #include "bin/directory.h"
 #include "bin/file.h"
 #include "bin/io_buffer.h"
-#include "bin/io_service_no_ssl.h"
 #include "bin/socket.h"
 #include "bin/utils.h"
 
@@ -71,3 +74,5 @@
 
 }  // namespace bin
 }  // namespace dart
+
+#endif  // !defined(DART_IO_DISABLED) && defined(DART_IO_SECURE_SOCKET_DISABLED)
diff --git a/runtime/bin/io_service_no_ssl.h b/runtime/bin/io_service_no_ssl.h
index db2af1c..b8cb545 100644
--- a/runtime/bin/io_service_no_ssl.h
+++ b/runtime/bin/io_service_no_ssl.h
@@ -5,6 +5,10 @@
 #ifndef BIN_IO_SERVICE_NO_SSL_H_
 #define BIN_IO_SERVICE_NO_SSL_H_
 
+#if defined(DART_IO_DISABLED) || !defined(DART_IO_SECURE_SOCKET_DISABLED)
+#error "io_service_no_ssl.h can only be included on builds with IO enabled"
+#endif
+
 #include "bin/builtin.h"
 #include "bin/utils.h"
 
diff --git a/runtime/bin/io_service_unsupported.cc b/runtime/bin/io_service_unsupported.cc
index 29a8730..b8211e7 100644
--- a/runtime/bin/io_service_unsupported.cc
+++ b/runtime/bin/io_service_unsupported.cc
@@ -2,9 +2,10 @@
 // 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.
 
+#if defined(DART_IO_DISABLED)
+
 #include "bin/builtin.h"
 #include "bin/dartutils.h"
-
 #include "include/dart_api.h"
 
 namespace dart {
@@ -18,3 +19,4 @@
 }  // namespace bin
 }  // namespace dart
 
+#endif  // defined(DART_IO_DISABLED)
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index 0eafb9c..8d58c70 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -26,7 +26,9 @@
 #include "platform/globals.h"
 #include "platform/hashmap.h"
 #include "platform/text_buffer.h"
+#if !defined(DART_PRECOMPILER)
 #include "zlib/zlib.h"
+#endif
 
 namespace dart {
 namespace bin {
@@ -743,31 +745,31 @@
                                                 char** error,
                                                 int* exit_code) {
   ASSERT(script_uri != NULL);
-#if defined(DART_PRODUCT_BINARY)
-  if (strcmp(script_uri, DART_VM_SERVICE_ISOLATE_NAME) == 0) {
-    // No service isolate support.
-    return NULL;
-  }
-#endif  // defined(DART_PRODUCT_BINARY)
 
-  if (run_full_snapshot &&
+#if defined(DART_PRODUCT_BINARY)
+  const bool run_service_isolate = false;
+#elif defined(PRODUCT)
+  const bool run_service_isolate = !run_full_snapshot &&
+                                   !run_precompiled_snapshot;
+#else
+  const bool run_service_isolate = !run_full_snapshot;
+#endif
+  if (!run_service_isolate &&
       (strcmp(script_uri, DART_VM_SERVICE_ISOLATE_NAME) == 0)) {
     // We do not create a service isolate when running a full application
-    // snapshot.
+    // snapshot or a precompiled snapshot in product mode.
     return NULL;
   }
+
   IsolateData* isolate_data = new IsolateData(script_uri,
                                               package_root,
                                               packages_config);
-  Dart_Isolate isolate = NULL;
-
-  isolate = Dart_CreateIsolate(script_uri,
-                               main,
-                               isolate_snapshot_buffer,
-                               flags,
-                               isolate_data,
-                               error);
-
+  Dart_Isolate isolate = Dart_CreateIsolate(script_uri,
+                                            main,
+                                            isolate_snapshot_buffer,
+                                            flags,
+                                            isolate_data,
+                                            error);
   if (isolate == NULL) {
     delete isolate_data;
     return NULL;
@@ -812,9 +814,12 @@
   result = DartUtils::PrepareForScriptLoading(false, trace_loading);
   CHECK_RESULT(result);
 
-  if (!run_full_snapshot) {
+  if (!run_precompiled_snapshot && !run_full_snapshot) {
     // Set up the load port provided by the service isolate so that we can
     // load scripts.
+    // With a full snapshot or a precompiled snapshot in product mode, there is
+    // no service isolate. A precompiled snapshot in release or debug mode does
+    // have the service isolate, but it doesn't use it for loading.
     result = DartUtils::SetupServiceLoadPort();
     CHECK_RESULT(result);
   }
@@ -1299,7 +1304,7 @@
         reinterpret_cast<IsolateData*>(Dart_IsolateData(isolate));
     result = Dart_LibraryImportLibrary(
         isolate_data->builtin_lib(), root_lib, Dart_Null());
-#ifndef DART_PRODUCT_BINARY
+#if !defined(DART_PRODUCT_BINARY) && !defined(PRODUCT)
     if (is_noopt || gen_precompiled_snapshot) {
       // Load the embedder's portion of the VM service's Dart code so it will
       // be included in the precompiled snapshot.
@@ -1347,7 +1352,9 @@
         { "dart:io", "_ProcessStartStatus", "set:_errorMessage" },
         { "dart:io", "_SecureFilterImpl", "get:ENCRYPTED_SIZE" },
         { "dart:io", "_SecureFilterImpl", "get:SIZE" },
+#if !defined(PRODUCT)
         { "dart:vmservice_io", "::", "main" },
+#endif  // !PRODUCT
         { NULL, NULL, NULL }  // Must be terminated with NULL entries.
       };
 
diff --git a/runtime/bin/platform.cc b/runtime/bin/platform.cc
index 716ef29..2099ebb 100644
--- a/runtime/bin/platform.cc
+++ b/runtime/bin/platform.cc
@@ -2,21 +2,17 @@
 // 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.
 
-#include "bin/platform.h"
+#if !defined(DART_IO_DISABLED)
 
-#include "include/dart_api.h"
+#include "bin/platform.h"
 
 #include "bin/file.h"
 #include "bin/utils.h"
+#include "include/dart_api.h"
 
 namespace dart {
 namespace bin {
 
-const char* Platform::executable_name_ = NULL;
-char* Platform::resolved_executable_name_ = NULL;
-int Platform::script_index_ = 1;
-char** Platform::argv_ = NULL;
-
 void FUNCTION_NAME(Platform_NumberOfProcessors)(Dart_NativeArguments args) {
   Dart_SetReturnValue(args, Dart_NewInteger(Platform::NumberOfProcessors()));
 }
@@ -125,3 +121,5 @@
 
 }  // namespace bin
 }  // namespace dart
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/platform_android.cc b/runtime/bin/platform_android.cc
index de60960..1f29b21 100644
--- a/runtime/bin/platform_android.cc
+++ b/runtime/bin/platform_android.cc
@@ -5,7 +5,6 @@
 #include "platform/globals.h"
 #if defined(TARGET_OS_ANDROID)
 
-#include "bin/file.h"
 #include "bin/platform.h"
 
 #include <signal.h>  // NOLINT
@@ -13,10 +12,16 @@
 #include <unistd.h>  // NOLINT
 
 #include "bin/fdutils.h"
+#include "bin/file.h"
 
 namespace dart {
 namespace bin {
 
+const char* Platform::executable_name_ = NULL;
+char* Platform::resolved_executable_name_ = NULL;
+int Platform::script_index_ = 1;
+char** Platform::argv_ = NULL;
+
 bool Platform::Initialize() {
   // Turn off the signal handler for SIGPIPE as it causes the process
   // to terminate on writing to a closed pipe. Without the signal
diff --git a/runtime/bin/platform_linux.cc b/runtime/bin/platform_linux.cc
index c6dc3cc..054ff6d 100644
--- a/runtime/bin/platform_linux.cc
+++ b/runtime/bin/platform_linux.cc
@@ -5,7 +5,6 @@
 #include "platform/globals.h"
 #if defined(TARGET_OS_LINUX)
 
-#include "bin/file.h"
 #include "bin/platform.h"
 
 #include <signal.h>  // NOLINT
@@ -13,10 +12,16 @@
 #include <unistd.h>  // NOLINT
 
 #include "bin/fdutils.h"
+#include "bin/file.h"
 
 namespace dart {
 namespace bin {
 
+const char* Platform::executable_name_ = NULL;
+char* Platform::resolved_executable_name_ = NULL;
+int Platform::script_index_ = 1;
+char** Platform::argv_ = NULL;
+
 bool Platform::Initialize() {
   // Turn off the signal handler for SIGPIPE as it causes the process
   // to terminate on writing to a closed pipe. Without the signal
diff --git a/runtime/bin/platform_macos.cc b/runtime/bin/platform_macos.cc
index e21ff13..2641ac1 100644
--- a/runtime/bin/platform_macos.cc
+++ b/runtime/bin/platform_macos.cc
@@ -5,6 +5,8 @@
 #include "platform/globals.h"
 #if defined(TARGET_OS_MACOS)
 
+#include "bin/platform.h"
+
 #if !TARGET_OS_IOS
 #include <crt_externs.h>  // NOLINT
 #endif  // !TARGET_OS_IOS
@@ -17,11 +19,15 @@
 
 #include "bin/fdutils.h"
 #include "bin/file.h"
-#include "bin/platform.h"
 
 namespace dart {
 namespace bin {
 
+const char* Platform::executable_name_ = NULL;
+char* Platform::resolved_executable_name_ = NULL;
+int Platform::script_index_ = 1;
+char** Platform::argv_ = NULL;
+
 bool Platform::Initialize() {
   // Turn off the signal handler for SIGPIPE as it causes the process
   // to terminate on writing to a closed pipe. Without the signal
diff --git a/runtime/bin/platform_unsupported.cc b/runtime/bin/platform_unsupported.cc
new file mode 100644
index 0000000..83893fb
--- /dev/null
+++ b/runtime/bin/platform_unsupported.cc
@@ -0,0 +1,70 @@
+// Copyright (c) 2016, 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.
+
+#if defined(DART_IO_DISABLED)
+
+#include "bin/builtin.h"
+#include "bin/dartutils.h"
+#include "include/dart_api.h"
+
+namespace dart {
+namespace bin {
+
+void FUNCTION_NAME(Platform_NumberOfProcessors)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Platform is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Platform_OperatingSystem)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Platform is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Platform_PathSeparator)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Platform is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Platform_LocalHostname)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Platform is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Platform_ExecutableName)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Platform is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Platform_ResolvedExecutableName)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Platform is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Platform_ExecutableArguments)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Platform is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Platform_Environment)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Platform is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Platform_GetVersion)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Platform is not supported on this platform"));
+}
+
+}  // namespace bin
+}  // namespace dart
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/platform_win.cc b/runtime/bin/platform_win.cc
index 78f6cdc..1eb9d3b 100644
--- a/runtime/bin/platform_win.cc
+++ b/runtime/bin/platform_win.cc
@@ -5,10 +5,13 @@
 #include "platform/globals.h"
 #if defined(TARGET_OS_WINDOWS)
 
+#include "bin/platform.h"
+
 #include "bin/file.h"
 #include "bin/log.h"
-#include "bin/platform.h"
+#if !defined(DART_IO_DISABLED) && !defined(PLATFORM_DISABLE_SOCKET)
 #include "bin/socket.h"
+#endif
 #include "bin/utils.h"
 #include "bin/utils_win.h"
 
@@ -19,6 +22,11 @@
 
 namespace bin {
 
+const char* Platform::executable_name_ = NULL;
+char* Platform::resolved_executable_name_ = NULL;
+int Platform::script_index_ = 1;
+char** Platform::argv_ = NULL;
+
 bool Platform::Initialize() {
   // Nothing to do on Windows.
   return true;
@@ -43,7 +51,7 @@
 
 
 bool Platform::LocalHostname(char *buffer, intptr_t buffer_length) {
-#if defined(PLATFORM_DISABLE_SOCKET)
+#if defined(DART_IO_DISABLED) || defined(PLATFORM_DISABLE_SOCKET)
   return false;
 #else
   if (!Socket::Initialize()) {
diff --git a/runtime/bin/process.cc b/runtime/bin/process.cc
index 3896505..672b3e3 100644
--- a/runtime/bin/process.cc
+++ b/runtime/bin/process.cc
@@ -2,11 +2,14 @@
 // 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.
 
+#if !defined(DART_IO_DISABLED)
+
+#include "bin/process.h"
+
 #include "bin/dartutils.h"
 #include "bin/io_buffer.h"
 #include "bin/log.h"
 #include "bin/platform.h"
-#include "bin/process.h"
 #include "bin/socket.h"
 #include "bin/utils.h"
 
@@ -17,9 +20,6 @@
 
 static const int kProcessIdNativeField = 0;
 
-int Process::global_exit_code_ = 0;
-Mutex* Process::global_exit_code_mutex_ = new Mutex();
-
 // Extract an array of C strings from a list of Dart strings.
 static char** ExtractCStringList(Dart_Handle strings,
                                  Dart_Handle status_handle,
@@ -367,3 +367,5 @@
 
 }  // namespace bin
 }  // namespace dart
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/process_android.cc b/runtime/bin/process_android.cc
index 5e53dbe..00d6ca2 100644
--- a/runtime/bin/process_android.cc
+++ b/runtime/bin/process_android.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_ANDROID)
 
@@ -30,6 +32,9 @@
 namespace dart {
 namespace bin {
 
+int Process::global_exit_code_ = 0;
+Mutex* Process::global_exit_code_mutex_ = new Mutex();
+
 // ProcessInfo is used to map a process id to the file descriptor for
 // the pipe used to communicate the exit code of the process to Dart.
 // ProcessInfo objects are kept in the static singly-linked
@@ -1037,3 +1042,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_ANDROID)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/process_linux.cc b/runtime/bin/process_linux.cc
index b657235..e533cc5 100644
--- a/runtime/bin/process_linux.cc
+++ b/runtime/bin/process_linux.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_LINUX)
 
@@ -21,6 +23,7 @@
 #include "bin/lockers.h"
 #include "bin/log.h"
 #include "bin/thread.h"
+
 #include "platform/signal_blocker.h"
 #include "platform/utils.h"
 
@@ -29,6 +32,9 @@
 namespace dart {
 namespace bin {
 
+int Process::global_exit_code_ = 0;
+Mutex* Process::global_exit_code_mutex_ = new Mutex();
+
 // ProcessInfo is used to map a process id to the file descriptor for
 // the pipe used to communicate the exit code of the process to Dart.
 // ProcessInfo objects are kept in the static singly-linked
@@ -1032,3 +1038,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_LINUX)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/process_macos.cc b/runtime/bin/process_macos.cc
index 00b2d8e..b3b5662 100644
--- a/runtime/bin/process_macos.cc
+++ b/runtime/bin/process_macos.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_MACOS)
 
@@ -31,6 +33,9 @@
 namespace dart {
 namespace bin {
 
+int Process::global_exit_code_ = 0;
+Mutex* Process::global_exit_code_mutex_ = new Mutex();
+
 // ProcessInfo is used to map a process id to the file descriptor for
 // the pipe used to communicate the exit code of the process to Dart.
 // ProcessInfo objects are kept in the static singly-linked
@@ -1104,3 +1109,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_MACOS)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/process_unsupported.cc b/runtime/bin/process_unsupported.cc
new file mode 100644
index 0000000..64bed26
--- /dev/null
+++ b/runtime/bin/process_unsupported.cc
@@ -0,0 +1,97 @@
+// Copyright (c) 2016, 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.
+
+#if defined(DART_IO_DISABLED)
+
+#include "bin/process.h"
+
+#include "bin/builtin.h"
+#include "bin/dartutils.h"
+#include "include/dart_api.h"
+
+namespace dart {
+namespace bin {
+
+int Process::global_exit_code_ = 0;
+Mutex* Process::global_exit_code_mutex_ = new Mutex();
+
+void Process::TerminateExitCodeHandler() {
+}
+
+
+void FUNCTION_NAME(Process_Start)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Process is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Process_Wait)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Process is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Process_KillPid)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Process is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Process_Exit)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Process is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Process_SetExitCode)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Process is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Process_GetExitCode)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Process is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Process_Sleep)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Process is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Process_Pid)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Process is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Process_SetSignalHandler)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Process is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(Process_ClearSignalHandler)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Process is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(SystemEncodingToString)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Process is not supported on this platform"));
+}
+
+
+void FUNCTION_NAME(StringToSystemEncoding)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewInternalError(
+        "Process is not supported on this platform"));
+}
+
+}  // namespace bin
+}  // namespace dart
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/process_win.cc b/runtime/bin/process_win.cc
index 9777c55..b96e67b 100644
--- a/runtime/bin/process_win.cc
+++ b/runtime/bin/process_win.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_WINDOWS)
 
@@ -25,6 +27,8 @@
 static const int kReadHandle = 0;
 static const int kWriteHandle = 1;
 
+int Process::global_exit_code_ = 0;
+Mutex* Process::global_exit_code_mutex_ = new Mutex();
 
 // ProcessInfo is used to map a process id to the process handle,
 // wait handle for registered exit code event and the pipe used to
@@ -1082,3 +1086,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_WINDOWS)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/root_certificates_unsupported.cc b/runtime/bin/root_certificates_unsupported.cc
new file mode 100644
index 0000000..a899e3c
--- /dev/null
+++ b/runtime/bin/root_certificates_unsupported.cc
@@ -0,0 +1,22 @@
+// Copyright (c) 2016, 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.
+
+#if !defined(DART_IO_DISABLED) && !defined(DART_IO_SECURE_SOCKET_DISABLED)
+
+#include "platform/globals.h"
+#if defined(TARGET_OS_MACOS) || defined(TARGET_OS_ANDROID)
+
+namespace dart {
+namespace bin {
+
+const unsigned char* root_certificates_pem = NULL;
+unsigned int root_certificates_pem_length = 0;
+
+}  // namespace bin
+}  // namespace dart
+
+#endif  // defined(TARGET_OS_MACOS) || defined(TARGET_OS_ANDROID)
+
+#endif  // !defined(DART_IO_DISABLED) &&
+        // !defined(DART_IO_SECURE_SOCKET_DISABLED)
diff --git a/runtime/bin/secure_socket.h b/runtime/bin/secure_socket.h
index d9fb968..07ff2b0 100644
--- a/runtime/bin/secure_socket.h
+++ b/runtime/bin/secure_socket.h
@@ -5,7 +5,7 @@
 #ifndef BIN_SECURE_SOCKET_H_
 #define BIN_SECURE_SOCKET_H_
 
-#ifdef DART_IO_SECURE_SOCKET_DISABLED
+#if defined(DART_IO_DISABLED) || defined(DART_IO_SECURE_SOCKET_DISABLED)
 #error "secure_socket.h can only be included on builds with SSL enabled"
 #endif
 
diff --git a/runtime/bin/secure_socket_boringssl.cc b/runtime/bin/secure_socket_boringssl.cc
index 6c4df2b..530c21a 100644
--- a/runtime/bin/secure_socket_boringssl.cc
+++ b/runtime/bin/secure_socket_boringssl.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED) && !defined(DART_IO_SECURE_SOCKET_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_ANDROID) || \
     defined(TARGET_OS_LINUX)   || \
@@ -774,6 +776,18 @@
 void FUNCTION_NAME(SecurityContext_TrustBuiltinRoots)(
     Dart_NativeArguments args) {
   SSL_CTX* context = GetSecurityContext(args);
+#if defined(TARGET_OS_ANDROID)
+  // On Android, we don't compile in the trusted root certificates. Insead,
+  // we use the directory of trusted certificates already present on the device.
+  // This saves ~240KB from the size of the binary. This has the drawback that
+  // SSL_do_handshake will synchronously hit the filesystem looking for root
+  // certs during its trust evaluation. We call SSL_do_handshake directly from
+  // the Dart thread so that Dart code can be invoked from the "bad certificate"
+  // callback called by SSL_do_handshake.
+  const char* android_cacerts = "/system/etc/security/cacerts";
+  int status = SSL_CTX_load_verify_locations(context, NULL, android_cacerts);
+  CheckStatus(status, "TlsException", "Failure trusting builtint roots");
+#else
   X509_STORE* store = SSL_CTX_get_cert_store(context);
   BIO* roots_bio =
       BIO_new_mem_buf(const_cast<unsigned char*>(root_certificates_pem),
@@ -786,6 +800,7 @@
     X509_STORE_add_cert(store, root_cert);
   }
   BIO_free(roots_bio);
+#endif  // defined(TARGET_OS_ANDROID)
 }
 
 
@@ -1667,3 +1682,6 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_LINUX)
+
+#endif  // !defined(DART_IO_DISABLED) &&
+        // !defined(DART_IO_SECURE_SOCKET_DISABLED)
diff --git a/runtime/bin/secure_socket_macos.cc b/runtime/bin/secure_socket_macos.cc
index 53c9ae7..5e6e320 100644
--- a/runtime/bin/secure_socket_macos.cc
+++ b/runtime/bin/secure_socket_macos.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED) && !defined(DART_IO_SECURE_SOCKET_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_MACOS)
 
@@ -54,6 +56,16 @@
 namespace dart {
 namespace bin {
 
+static const int kSSLFilterNativeFieldIndex = 0;
+static const int kSecurityContextNativeFieldIndex = 0;
+static const int kX509NativeFieldIndex = 0;
+
+static const bool SSL_LOG_STATUS = false;
+static const bool SSL_LOG_DATA = false;
+static const bool SSL_LOG_CERTS = false;
+static const int SSL_ERROR_MESSAGE_BUFFER_SIZE = 1000;
+static const intptr_t PEM_BUFSIZE = 1024;
+
 // SSLCertContext wraps the certificates needed for a SecureTransport
 // connection. Fields are protected by the mutex_ field, and may only be set
 // once. This is to allow access by both the Dart thread and the IOService
@@ -181,15 +193,6 @@
   DISALLOW_COPY_AND_ASSIGN(SSLCertContext);
 };
 
-static const int kSSLFilterNativeFieldIndex = 0;
-static const int kSecurityContextNativeFieldIndex = 0;
-static const int kX509NativeFieldIndex = 0;
-
-static const bool SSL_LOG_STATUS = false;
-static const bool SSL_LOG_DATA = false;
-static const bool SSL_LOG_CERTS = false;
-static const int SSL_ERROR_MESSAGE_BUFFER_SIZE = 1000;
-static const intptr_t PEM_BUFSIZE = 1024;
 
 static char* CFStringRefToCString(CFStringRef cfstring) {
   CFIndex len = CFStringGetLength(cfstring);
@@ -1840,30 +1843,6 @@
 }
 
 
-static intptr_t AvailableToRead(intptr_t start, intptr_t end, intptr_t size) {
-  intptr_t data_available = 0;
-  if (end < start) {
-    // Data may be split into two segments.  In this case,
-    // the first is [start, size).
-    intptr_t buffer_end = (start == 0) ? size - 1 : size;
-    intptr_t available = buffer_end - start;
-    start += available;
-    data_available += available;
-    ASSERT(start <= size);
-    if (start == size) {
-      start = 0;
-    }
-  }
-  if (start < end) {
-    intptr_t available = end - start;
-    start += available;
-    data_available += available;
-    ASSERT(start <= end);
-  }
-  return data_available;
-}
-
-
 OSStatus SSLFilter::SSLReadCallback(SSLConnectionRef connection,
                                     void* data, size_t* data_requested) {
   // Copy at most `data_requested` bytes from `buffers_[kReadEncrypted]` into
@@ -1882,11 +1861,6 @@
   intptr_t requested = static_cast<intptr_t>(*data_requested);
   intptr_t data_read = 0;
 
-  if (AvailableToRead(start, end, size) < requested) {
-    *data_requested = 0;
-    return errSSLWouldBlock;
-  }
-
   if (end < start) {
     // Data may be split into two segments.  In this case,
     // the first is [start, size).
@@ -1920,8 +1894,9 @@
   }
 
   filter->SetBufferStart(kReadEncrypted, start);
+  bool short_read = data_read < static_cast<intptr_t>(*data_requested);
   *data_requested = data_read;
-  return noErr;
+  return short_read ? errSSLWouldBlock : noErr;
 }
 
 
@@ -1939,6 +1914,9 @@
         reinterpret_cast<void*>((buffers_[kReadPlaintext] + start)),
         length,
         &bytes);
+    if (SSL_LOG_STATUS) {
+      Log::Print("SSLRead: status = %ld\n", static_cast<intptr_t>(status));
+    }
     if ((status != noErr) && (status != errSSLWouldBlock)) {
       *bytes_processed = 0;
       return status;
@@ -1953,35 +1931,6 @@
 }
 
 
-intptr_t SpaceToWrite(intptr_t start, intptr_t end, intptr_t size) {
-  intptr_t writable_space = 0;
-
-  // is full, neither if statement is executed and nothing happens.
-  if (start <= end) {
-    // If the free space may be split into two segments,
-    // then the first is [end, size), unless start == 0.
-    // Then, since the last free byte is at position start - 2,
-    // the interval is [end, size - 1).
-    intptr_t buffer_end = (start == 0) ? size - 1 : size;
-    intptr_t available = buffer_end - end;
-    end += available;
-    writable_space += available;
-    ASSERT(end <= size);
-    if (end == size) {
-      end = 0;
-    }
-  }
-  if (start > end + 1) {
-    intptr_t available = (start - 1) - end;
-    end += available;
-    writable_space += available;
-    ASSERT(end < start);
-  }
-
-  return writable_space;
-}
-
-
 OSStatus SSLFilter::SSLWriteCallback(SSLConnectionRef connection,
                                      const void* data, size_t* data_provided) {
   // Copy at most `data_provided` bytes from data into
@@ -2000,11 +1949,6 @@
   intptr_t provided = static_cast<intptr_t>(*data_provided);
   intptr_t data_written = 0;
 
-  if (SpaceToWrite(start, end, size) < provided) {
-    *data_provided = 0;
-    return errSSLWouldBlock;
-  }
-
   // is full, neither if statement is executed and nothing happens.
   if (start <= end) {
     // If the free space may be split into two segments,
@@ -2042,7 +1986,7 @@
 
   filter->SetBufferEnd(kWriteEncrypted, end);
   *data_provided = data_written;
-  return noErr;
+  return (data_written == 0) ? errSSLWouldBlock : noErr;
 }
 
 
@@ -2059,11 +2003,18 @@
         reinterpret_cast<void*>(buffers_[kWritePlaintext] + start),
         length,
         &bytes);
+    if (SSL_LOG_STATUS) {
+      Log::Print("SSLWrite: status = %ld\n", static_cast<intptr_t>(status));
+    }
     if ((status != noErr) && (status != errSSLWouldBlock)) {
       *bytes_processed = 0;
       return status;
     }
   }
+  if (SSL_LOG_DATA) {
+    Log::Print("ProcessWritePlaintextBuffer: requested: %ld, written: %ld\n",
+        length, bytes);
+  }
   *bytes_processed = static_cast<intptr_t>(bytes);
   return status;
 }
@@ -2072,3 +2023,6 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_MACOS)
+
+#endif  // !defined(DART_IO_DISABLED) &&
+        // !defined(DART_IO_SECURE_SOCKET_DISABLED)
diff --git a/runtime/bin/secure_socket_unsupported.cc b/runtime/bin/secure_socket_unsupported.cc
index 1cd09d0..dc49825 100644
--- a/runtime/bin/secure_socket_unsupported.cc
+++ b/runtime/bin/secure_socket_unsupported.cc
@@ -2,9 +2,10 @@
 // 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.
 
+#if defined(DART_IO_DISABLED) || defined(DART_IO_SECURE_SOCKET_DISABLED)
+
 #include "bin/builtin.h"
 #include "bin/dartutils.h"
-
 #include "include/dart_api.h"
 
 namespace dart {
@@ -98,72 +99,85 @@
       "Secure Sockets unsupported on this platform"));
 }
 
+
 void FUNCTION_NAME(SecurityContext_Allocate)(Dart_NativeArguments args) {
   Dart_ThrowException(DartUtils::NewDartArgumentError(
       "Secure Sockets unsupported on this platform"));
 }
 
+
 void FUNCTION_NAME(SecurityContext_UsePrivateKeyBytes)(
     Dart_NativeArguments args) {
   Dart_ThrowException(DartUtils::NewDartArgumentError(
       "Secure Sockets unsupported on this platform"));
 }
 
+
 void FUNCTION_NAME(SecurityContext_SetAlpnProtocols)(
     Dart_NativeArguments args) {
   Dart_ThrowException(DartUtils::NewDartArgumentError(
       "Secure Sockets unsupported on this platform"));
 }
 
+
 void FUNCTION_NAME(SecurityContext_SetClientAuthoritiesBytes)(
     Dart_NativeArguments args) {
   Dart_ThrowException(DartUtils::NewDartArgumentError(
       "Secure Sockets unsupported on this platform"));
 }
 
+
 void FUNCTION_NAME(SecurityContext_SetTrustedCertificatesBytes)(
     Dart_NativeArguments args) {
   Dart_ThrowException(DartUtils::NewDartArgumentError(
       "Secure Sockets unsupported on this platform"));
 }
 
+
 void FUNCTION_NAME(SecurityContext_AlpnSupported)(Dart_NativeArguments args) {
   Dart_ThrowException(DartUtils::NewDartArgumentError(
       "Secure Sockets unsupported on this platform"));
 }
 
+
 void FUNCTION_NAME(SecurityContext_TrustBuiltinRoots)(
     Dart_NativeArguments args) {
   Dart_ThrowException(DartUtils::NewDartArgumentError(
       "Secure Sockets unsupported on this platform"));
 }
 
+
 void FUNCTION_NAME(SecurityContext_UseCertificateChainBytes)(
     Dart_NativeArguments args) {
   Dart_ThrowException(DartUtils::NewDartArgumentError(
       "Secure Sockets unsupported on this platform"));
 }
 
+
 void FUNCTION_NAME(X509_Subject)(Dart_NativeArguments args) {
   Dart_ThrowException(DartUtils::NewDartArgumentError(
       "Secure Sockets unsupported on this platform"));
 }
 
+
 void FUNCTION_NAME(X509_Issuer)(Dart_NativeArguments args) {
   Dart_ThrowException(DartUtils::NewDartArgumentError(
       "Secure Sockets unsupported on this platform"));
 }
 
+
 void FUNCTION_NAME(X509_StartValidity)(Dart_NativeArguments args) {
   Dart_ThrowException(DartUtils::NewDartArgumentError(
       "Secure Sockets unsupported on this platform"));
 }
 
+
 void FUNCTION_NAME(X509_EndValidity)(Dart_NativeArguments args) {
   Dart_ThrowException(DartUtils::NewDartArgumentError(
       "Secure Sockets unsupported on this platform"));
 }
 
+
 class SSLFilter {
  public:
   static CObject* ProcessFilterRequest(const CObjectArray& request);
@@ -175,3 +189,5 @@
 
 }  // namespace bin
 }  // namespace dart
+
+#endif  // defined(DART_IO_DISABLED) || defined(DART_IO_SECURE_SOCKET_DISABLED)
diff --git a/runtime/bin/socket.cc b/runtime/bin/socket.cc
index cba96c0..fb9704b 100644
--- a/runtime/bin/socket.cc
+++ b/runtime/bin/socket.cc
@@ -2,19 +2,22 @@
 // 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.
 
+#if !defined(DART_IO_DISABLED)
+
+#include "bin/socket.h"
+
 #include "bin/dartutils.h"
 #include "bin/io_buffer.h"
 #include "bin/isolate_data.h"
 #include "bin/lockers.h"
-#include "bin/socket.h"
 #include "bin/thread.h"
 #include "bin/utils.h"
 
+#include "include/dart_api.h"
+
 #include "platform/globals.h"
 #include "platform/utils.h"
 
-#include "include/dart_api.h"
-
 namespace dart {
 namespace bin {
 
@@ -874,3 +877,5 @@
 
 }  // namespace bin
 }  // namespace dart
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/socket.h b/runtime/bin/socket.h
index b058a51..2cf940c 100644
--- a/runtime/bin/socket.h
+++ b/runtime/bin/socket.h
@@ -5,12 +5,11 @@
 #ifndef BIN_SOCKET_H_
 #define BIN_SOCKET_H_
 
-#include <map>
+#if defined(DART_IO_DISABLED)
+#error "socket.h can only be included on builds with IO enabled"
+#endif
 
 #include "platform/globals.h"
-
-#include "bin/builtin.h"
-#include "bin/dartutils.h"
 // Declare the OS-specific types ahead of defining the generic class.
 #if defined(TARGET_OS_ANDROID)
 #include "bin/socket_android.h"
@@ -23,6 +22,11 @@
 #else
 #error Unknown target os.
 #endif
+
+#include <map>
+
+#include "bin/builtin.h"
+#include "bin/dartutils.h"
 #include "bin/thread.h"
 #include "bin/utils.h"
 
diff --git a/runtime/bin/socket_android.cc b/runtime/bin/socket_android.cc
index 2d43a44..fd96a9a 100644
--- a/runtime/bin/socket_android.cc
+++ b/runtime/bin/socket_android.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_ANDROID)
 
@@ -569,3 +571,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_ANDROID)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/socket_android.h b/runtime/bin/socket_android.h
index 5970477..13ff16e 100644
--- a/runtime/bin/socket_android.h
+++ b/runtime/bin/socket_android.h
@@ -5,6 +5,10 @@
 #ifndef BIN_SOCKET_ANDROID_H_
 #define BIN_SOCKET_ANDROID_H_
 
+#if !defined(BIN_SOCKET_H_)
+#error Do not include socket_android.h directly. Use socket.h.
+#endif
+
 #include <arpa/inet.h>
 #include <netdb.h>
 #include <sys/socket.h>
diff --git a/runtime/bin/socket_linux.cc b/runtime/bin/socket_linux.cc
index b9068d7..1befb69 100644
--- a/runtime/bin/socket_linux.cc
+++ b/runtime/bin/socket_linux.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_LINUX)
 
@@ -585,3 +587,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_LINUX)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/socket_linux.h b/runtime/bin/socket_linux.h
index 4ad0db2..5d073c4 100644
--- a/runtime/bin/socket_linux.h
+++ b/runtime/bin/socket_linux.h
@@ -5,6 +5,10 @@
 #ifndef BIN_SOCKET_LINUX_H_
 #define BIN_SOCKET_LINUX_H_
 
+#if !defined(BIN_SOCKET_H_)
+#error Do not include socket_linux.h directly. Use socket.h.
+#endif
+
 #include <arpa/inet.h>
 #include <netdb.h>
 #include <sys/socket.h>
diff --git a/runtime/bin/socket_macos.cc b/runtime/bin/socket_macos.cc
index 8306b56..624da8e 100644
--- a/runtime/bin/socket_macos.cc
+++ b/runtime/bin/socket_macos.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_MACOS)
 
@@ -623,3 +625,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_MACOS)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/socket_macos.h b/runtime/bin/socket_macos.h
index b77857c..dce6d97 100644
--- a/runtime/bin/socket_macos.h
+++ b/runtime/bin/socket_macos.h
@@ -5,6 +5,10 @@
 #ifndef BIN_SOCKET_MACOS_H_
 #define BIN_SOCKET_MACOS_H_
 
+#if !defined(BIN_SOCKET_H_)
+#error Do not include socket_macos.h directly. Use socket.h.
+#endif
+
 #include <arpa/inet.h>
 #include <netdb.h>
 #include <sys/socket.h>
diff --git a/runtime/bin/socket_unsupported.cc b/runtime/bin/socket_unsupported.cc
new file mode 100644
index 0000000..933df53
--- /dev/null
+++ b/runtime/bin/socket_unsupported.cc
@@ -0,0 +1,148 @@
+// Copyright (c) 2016, 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.
+
+#if defined(DART_IO_DISABLED)
+
+#include "bin/builtin.h"
+#include "bin/dartutils.h"
+#include "include/dart_api.h"
+
+namespace dart {
+namespace bin {
+
+void FUNCTION_NAME(InternetAddress_Parse)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_CreateConnect)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_CreateBindConnect)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_CreateBindDatagram)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_Available)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_Read)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_RecvFrom)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_WriteList)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_SendTo)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_GetPort)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_GetRemotePeer)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_GetError)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_GetType)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_GetStdioHandle)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_GetSocketId)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_SetSocketId)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(ServerSocket_CreateBindListen)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(ServerSocket_Accept)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_GetOption)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_SetOption)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_JoinMulticast)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Socket_LeaveMulticast)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Sockets unsupported on this platform"));
+}
+
+}  // namespace bin
+}  // namespace dart
+
+#endif  // defined(DART_IO_DISABLED)
diff --git a/runtime/bin/socket_win.cc b/runtime/bin/socket_win.cc
index ea306b7..4534c8c 100644
--- a/runtime/bin/socket_win.cc
+++ b/runtime/bin/socket_win.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_WINDOWS)
 
@@ -712,3 +714,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_WINDOWS)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/socket_win.h b/runtime/bin/socket_win.h
index ab32ed3..7b71e38 100644
--- a/runtime/bin/socket_win.h
+++ b/runtime/bin/socket_win.h
@@ -5,6 +5,10 @@
 #ifndef BIN_SOCKET_WIN_H_
 #define BIN_SOCKET_WIN_H_
 
+#if !defined(BIN_SOCKET_H_)
+#error Do not include socket_win.h directly. Use socket.h.
+#endif
+
 #include <iphlpapi.h>
 #include <mswsock.h>
 #include <winsock2.h>
diff --git a/runtime/bin/stdio.cc b/runtime/bin/stdio.cc
index b14fe92..47bd554 100644
--- a/runtime/bin/stdio.cc
+++ b/runtime/bin/stdio.cc
@@ -2,17 +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.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "bin/stdio.h"
 
 #include "bin/builtin.h"
 #include "bin/dartutils.h"
 #include "bin/utils.h"
 
+#include "include/dart_api.h"
+
 #include "platform/globals.h"
 #include "platform/utils.h"
 
-#include "include/dart_api.h"
-
 namespace dart {
 namespace bin {
 
@@ -69,3 +71,5 @@
 
 }  // namespace bin
 }  // namespace dart
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/stdio.h b/runtime/bin/stdio.h
index afe4637..55884df 100644
--- a/runtime/bin/stdio.h
+++ b/runtime/bin/stdio.h
@@ -5,6 +5,10 @@
 #ifndef BIN_STDIO_H_
 #define BIN_STDIO_H_
 
+#if defined(DART_IO_DISABLED)
+#error "stdio.h can only be included on builds with IO enabled"
+#endif
+
 #include "bin/builtin.h"
 #include "bin/utils.h"
 
diff --git a/runtime/bin/stdio_android.cc b/runtime/bin/stdio_android.cc
index 8d2a3c5..019efeb 100644
--- a/runtime/bin/stdio_android.cc
+++ b/runtime/bin/stdio_android.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_ANDROID)
 
@@ -79,3 +81,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_ANDROID)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/stdio_linux.cc b/runtime/bin/stdio_linux.cc
index 8f51e7e..0634fa4 100644
--- a/runtime/bin/stdio_linux.cc
+++ b/runtime/bin/stdio_linux.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_LINUX)
 
@@ -79,3 +81,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_LINUX)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/stdio_macos.cc b/runtime/bin/stdio_macos.cc
index 7dc1141..d22f192 100644
--- a/runtime/bin/stdio_macos.cc
+++ b/runtime/bin/stdio_macos.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_MACOS)
 
@@ -79,3 +81,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_MACOS)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/bin/stdio_unsupported.cc b/runtime/bin/stdio_unsupported.cc
new file mode 100644
index 0000000..1e6c213
--- /dev/null
+++ b/runtime/bin/stdio_unsupported.cc
@@ -0,0 +1,52 @@
+// Copyright (c) 2016, 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.
+
+#if defined(DART_IO_DISABLED)
+
+#include "bin/builtin.h"
+#include "bin/dartutils.h"
+#include "include/dart_api.h"
+
+namespace dart {
+namespace bin {
+
+void FUNCTION_NAME(Stdin_ReadByte)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Stdin unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Stdin_GetEchoMode)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Stdin unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Stdin_SetEchoMode)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Stdin unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Stdin_GetLineMode)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Stdin unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Stdin_SetLineMode)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Stdin unsupported on this platform"));
+}
+
+
+void FUNCTION_NAME(Stdout_GetTerminalSize)(Dart_NativeArguments args) {
+  Dart_ThrowException(DartUtils::NewDartArgumentError(
+      "Stdout unsupported on this platform"));
+}
+
+}  // namespace bin
+}  // namespace dart
+
+#endif  // defined(DART_IO_DISABLED)
diff --git a/runtime/bin/stdio_win.cc b/runtime/bin/stdio_win.cc
index 1cb6a527..d062826 100644
--- a/runtime/bin/stdio_win.cc
+++ b/runtime/bin/stdio_win.cc
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+#if !defined(DART_IO_DISABLED)
+
 #include "platform/globals.h"
 #if defined(TARGET_OS_WINDOWS)
 
@@ -92,3 +94,5 @@
 }  // namespace dart
 
 #endif  // defined(TARGET_OS_WINDOWS)
+
+#endif  // !defined(DART_IO_DISABLED)
diff --git a/runtime/include/dart_api.h b/runtime/include/dart_api.h
index 6665e0a..a67f9e1 100755
--- a/runtime/include/dart_api.h
+++ b/runtime/include/dart_api.h
@@ -54,7 +54,8 @@
 #include <stdbool.h>
 #if __GNUC__ >= 4
 #if defined(DART_SHARED_LIB)
-#define DART_EXPORT DART_EXTERN_C __attribute__ ((visibility("default")))
+#define DART_EXPORT DART_EXTERN_C __attribute__ ((visibility("default"))) \
+    __attribute((used))
 #else
 #define DART_EXPORT DART_EXTERN_C
 #endif
@@ -528,8 +529,8 @@
  *   after the object is garbage collected, unless the handle has been deleted.
  *   A valid callback needs to be specified it cannot be NULL.
  *
- * \return Success if the weak persistent handle was
- *   created. Otherwise, returns an error.
+ * \return The weak persistent handle or NULL. NULL is returned in case of bad
+ *   parameters.
  */
 DART_EXPORT Dart_WeakPersistentHandle Dart_NewWeakPersistentHandle(
     Dart_Handle object,
diff --git a/runtime/lib/compact_hash.dart b/runtime/lib/compact_hash.dart
index 5bcb48e..1c2de88 100644
--- a/runtime/lib/compact_hash.dart
+++ b/runtime/lib/compact_hash.dart
@@ -22,13 +22,18 @@
   int _hashMask = _HashBase._indexSizeToHashMask(_HashBase._INITIAL_INDEX_SIZE);
 
   // Fixed-length list of keys (set) or key/value at even/odd indices (map).
-  List _data = new List(_HashBase._INITIAL_INDEX_SIZE);
+  List _data;
 
   // Length of _data that is used (i.e., keys + values for a map).
   int _usedData = 0;
 
   // Number of deleted keys.
   int _deletedKeys = 0;
+
+  // Note: All fields are initialized in a single constructor so that the VM
+  // recognizes they cannot hold null values. This makes a big (20%) performance
+  // difference on some operations.
+  _HashFieldBase(int dataSize) : this._data = new List(dataSize);
 }
 
 // Base class for VM-internal classes; keep in sync with _HashFieldBase.
@@ -125,7 +130,7 @@
   int get length => (_usedData >> 1) - _deletedKeys;
   bool get isEmpty => length == 0;
   bool get isNotEmpty => !isEmpty;
-  
+
   void _rehash() {
     if ((_deletedKeys << 2) > _usedData) {
       // TODO(koda): Consider shrinking.
@@ -140,12 +145,12 @@
   void clear() {
     if (!isEmpty) {
       // Use _data.length, since _index might be null.
-      _init(_data.length, _hashMask);
+      _init(_data.length, _hashMask, null, 0);
     }
   }
 
   // Allocate new _index and _data, and optionally copy existing contents.
-  void _init(int size, int hashMask, [List oldData, int oldUsed]) {
+  void _init(int size, int hashMask, List oldData, int oldUsed) {
     assert(size & (size - 1) == 0);
     assert(_HashBase._UNUSED_PAIR == 0);
     _index = new Uint32List(size);
@@ -206,7 +211,7 @@
     int pair = _index[i];
     while (pair != _HashBase._UNUSED_PAIR) {
       if (pair == _HashBase._DELETED_PAIR) {
-        if (firstDeleted < 0){
+        if (firstDeleted < 0) {
           firstDeleted = i;
         }
       } else {
@@ -351,6 +356,8 @@
     with MapMixin<K, V>, _LinkedHashMapMixin<K, V>, _HashBase,
          _IdenticalAndIdentityHashCode
     implements LinkedHashMap<K, V> {
+
+  _CompactLinkedIdentityHashMap() : super(_HashBase._INITIAL_INDEX_SIZE);
 }
 
 class _CompactLinkedCustomHashMap<K, V> extends _HashFieldBase
@@ -369,7 +376,8 @@
   V remove(Object o) => _validKey(o) ? super.remove(o) : null;
 
   _CompactLinkedCustomHashMap(this._equality, this._hasher, validKey)
-      : _validKey = (validKey != null) ? validKey : new _TypeTest<K>().test;
+      : _validKey = (validKey != null) ? validKey : new _TypeTest<K>().test,
+        super(_HashBase._INITIAL_INDEX_SIZE);
 }
 
 // Iterates through _data[_offset + _step], _data[_offset + 2*_step], ...
@@ -426,10 +434,8 @@
     with _HashBase, _OperatorEqualsAndHashCode, SetMixin<E>
     implements LinkedHashSet<E> {
 
-  _CompactLinkedHashSet() {
+  _CompactLinkedHashSet() : super(_HashBase._INITIAL_INDEX_SIZE >> 1) {
     assert(_HashBase._UNUSED_PAIR == 0);
-    _index = new Uint32List(_HashBase._INITIAL_INDEX_SIZE);
-    _data = new List(_HashBase._INITIAL_INDEX_SIZE >> 1);
   }
 
   int get length => _usedData - _deletedKeys;
@@ -444,11 +450,11 @@
 
   void clear() {
     if (!isEmpty) {
-      _init(_index.length, _hashMask);
+      _init(_index.length, _hashMask, null, 0);
     }
   }
 
-  void _init(int size, int hashMask, [List oldData, int oldUsed]) {
+  void _init(int size, int hashMask, List oldData, int oldUsed) {
     _index = new Uint32List(size);
     _hashMask = hashMask;
     _data = new List(size >> 1);
@@ -475,7 +481,7 @@
     int pair = _index[i];
     while (pair != _HashBase._UNUSED_PAIR) {
       if (pair == _HashBase._DELETED_PAIR) {
-        if (firstDeleted < 0){
+        if (firstDeleted < 0) {
           firstDeleted = i;
         }
       } else {
diff --git a/runtime/lib/date.cc b/runtime/lib/date.cc
index cf92809..ba9fa95 100644
--- a/runtime/lib/date.cc
+++ b/runtime/lib/date.cc
@@ -12,13 +12,13 @@
 
 namespace dart {
 
-static int32_t kMaxAllowedSeconds = 2100000000;
+static int64_t kMaxAllowedSeconds = kMaxInt32;
 
 DEFINE_NATIVE_ENTRY(DateTime_timeZoneName, 1) {
   GET_NON_NULL_NATIVE_ARGUMENT(
       Integer, dart_seconds, arguments->NativeArgAt(0));
   int64_t seconds = dart_seconds.AsInt64Value();
-  if (seconds < 0 || seconds > kMaxAllowedSeconds) {
+  if (llabs(seconds) > kMaxAllowedSeconds) {
     Exceptions::ThrowArgumentError(dart_seconds);
   }
   const char* name = OS::GetTimeZoneName(seconds);
@@ -30,7 +30,7 @@
   GET_NON_NULL_NATIVE_ARGUMENT(
       Integer, dart_seconds, arguments->NativeArgAt(0));
   int64_t seconds = dart_seconds.AsInt64Value();
-  if (seconds < 0 || seconds > kMaxAllowedSeconds) {
+  if (llabs(seconds) > kMaxAllowedSeconds) {
     Exceptions::ThrowArgumentError(dart_seconds);
   }
   int offset = OS::GetTimeZoneOffsetInSeconds(seconds);
diff --git a/runtime/lib/date_patch.dart b/runtime/lib/date_patch.dart
index 4697901..1ecf812 100644
--- a/runtime/lib/date_patch.dart
+++ b/runtime/lib/date_patch.dart
@@ -284,14 +284,24 @@
     }
 
     if (!isUtc) {
-      // Note that we need to remove the local timezone adjustement before
+      // Note that we need to remove the local timezone adjustment before
       // asking for the correct zone offset.
       int adjustment = _localTimeZoneAdjustmentInSeconds() *
           Duration.MICROSECONDS_PER_SECOND;
+      // The adjustment is independent of the actual date and of the daylight
+      // saving time. It is positive east of the Prime Meridian and negative
+      // west of it, e.g. -28800 sec for America/Los_Angeles timezone.
 
       int zoneOffset =
           _timeZoneOffsetInSeconds(microsecondsSinceEpoch - adjustment);
+      // The zoneOffset depends on the actual date and reflects any daylight
+      // saving time and/or historical deviation relative to UTC time.
+      // It is positive east of the Prime Meridian and negative west of it,
+      // e.g. -25200 sec for America/Los_Angeles timezone during DST.
       microsecondsSinceEpoch -= zoneOffset * Duration.MICROSECONDS_PER_SECOND;
+      // The resulting microsecondsSinceEpoch value is therefore the calculated
+      // UTC value decreased by a (positive if east of GMT) timezone adjustment
+      // and decreased by typically one hour if DST is in effect.
     }
     if (microsecondsSinceEpoch.abs() >
         _MAX_MILLISECONDS_SINCE_EPOCH * Duration.MICROSECONDS_PER_MILLISECOND) {
@@ -314,7 +324,8 @@
    * Adapted from V8's date implementation. See ECMA 262 - 15.9.1.9.
    */
   static int _equivalentYear(int year) {
-    // Returns the week day (in range 0 - 6).
+    // Returns year y so that _weekDay(y) == _weekDay(year).
+    // _weekDay returns the week day (in range 0 - 6).
     // 1/1/1956 was a Sunday (i.e. weekday 0). 1956 was a leap-year.
     // 1/1/1967 was a Sunday (i.e. weekday 0).
     // Without leap years a subsequent year has a week day + 1 (for example
@@ -352,22 +363,24 @@
   }
 
   /**
-   * Returns a date in seconds that is equivalent to the current date. An
-   * equivalent date has the same fields (`month`, `day`, etc.) as the
-   * [this], but the `year` is in the range [1970..2037].
+   * Returns a date in seconds that is equivalent to the given
+   * date in microseconds [microsecondsSinceEpoch]. An equivalent
+   * date has the same fields (`month`, `day`, etc.) as the given
+   * date, but the `year` is in the range [1901..2038].
    *
    * * The time since the beginning of the year is the same.
-   * * If [this] is in a leap year then the returned seconds are in a leap
-   *   year, too.
-   * * The week day of [this] is the same as the one for the returned date.
+   * * If the given date is in a leap year then the returned
+   *   seconds are in a leap year, too.
+   * * The week day of given date is the same as the one for the
+   *   returned date.
    */
   static int _equivalentSeconds(int microsecondsSinceEpoch) {
-    const int CUT_OFF_SECONDS = 2100000000;
+    const int CUT_OFF_SECONDS = 0x7FFFFFFF;
 
     int secondsSinceEpoch = _flooredDivision(microsecondsSinceEpoch,
                                              Duration.MICROSECONDS_PER_SECOND);
 
-    if (secondsSinceEpoch < 0 || secondsSinceEpoch >= CUT_OFF_SECONDS) {
+    if (secondsSinceEpoch.abs() > CUT_OFF_SECONDS) {
       int year = _yearsFromSecondsSinceEpoch(secondsSinceEpoch);
       int days = _dayFromYear(year);
       int equivalentYear = _equivalentYear(year);
diff --git a/runtime/lib/mirrors.cc b/runtime/lib/mirrors.cc
index d24f75c..5127dce 100644
--- a/runtime/lib/mirrors.cc
+++ b/runtime/lib/mirrors.cc
@@ -333,12 +333,6 @@
     return CreateTypedefMirror(cls, type, is_declaration, owner_mirror);
   }
 
-  const Error& error = Error::Handle(cls.EnsureIsFinalized(Thread::Current()));
-  if (!error.IsNull()) {
-    Exceptions::PropagateError(error);
-    UNREACHABLE();
-  }
-
   const Array& args = Array::Handle(Array::New(9));
   args.SetAt(0, MirrorReference::Handle(MirrorReference::New(cls)));
   args.SetAt(1, type);
@@ -1471,6 +1465,12 @@
   GET_NON_NULL_NATIVE_ARGUMENT(Array, args, arguments->NativeArgAt(3));
   GET_NON_NULL_NATIVE_ARGUMENT(Array, arg_names, arguments->NativeArgAt(4));
 
+  const Error& error = Error::Handle(zone, klass.EnsureIsFinalized(thread));
+  if (!error.IsNull()) {
+    Exceptions::PropagateError(error);
+    UNREACHABLE();
+  }
+
   Function& function = Function::Handle(
       klass.LookupStaticFunction(function_name));
 
@@ -1543,6 +1543,11 @@
   // with its cousins.
   GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(1));
   const Class& klass = Class::Handle(ref.GetClassReferent());
+  const Error& error = Error::Handle(zone, klass.EnsureIsFinalized(thread));
+  if (!error.IsNull()) {
+    Exceptions::PropagateError(error);
+    UNREACHABLE();
+  }
   GET_NON_NULL_NATIVE_ARGUMENT(String, getter_name, arguments->NativeArgAt(2));
   return InvokeClassGetter(klass, getter_name, true);
 }
@@ -1557,6 +1562,12 @@
   GET_NON_NULL_NATIVE_ARGUMENT(String, setter_name, arguments->NativeArgAt(2));
   GET_NATIVE_ARGUMENT(Instance, value, arguments->NativeArgAt(3));
 
+  const Error& error = Error::Handle(zone, klass.EnsureIsFinalized(thread));
+  if (!error.IsNull()) {
+    Exceptions::PropagateError(error);
+    UNREACHABLE();
+  }
+
   // Check for real fields and user-defined setters.
   const Field& field = Field::Handle(klass.LookupStaticField(setter_name));
   Function& setter = Function::Handle();
@@ -1616,6 +1627,12 @@
   GET_NON_NULL_NATIVE_ARGUMENT(Array, explicit_args, arguments->NativeArgAt(3));
   GET_NON_NULL_NATIVE_ARGUMENT(Array, arg_names, arguments->NativeArgAt(4));
 
+  const Error& error = Error::Handle(zone, klass.EnsureIsFinalized(thread));
+  if (!error.IsNull()) {
+    Exceptions::PropagateError(error);
+    UNREACHABLE();
+  }
+
   // By convention, the static function implementing a named constructor 'C'
   // for class 'A' is labeled 'A.C', and the static function implementing the
   // unnamed constructor for class 'A' is labeled 'A.'.
diff --git a/runtime/observatory/lib/app.dart b/runtime/observatory/lib/app.dart
index a0e52bb..15e802d 100644
--- a/runtime/observatory/lib/app.dart
+++ b/runtime/observatory/lib/app.dart
@@ -7,6 +7,7 @@
 import 'dart:async';
 import 'dart:convert';
 import 'dart:html';
+import 'dart:math' as math;
 
 import 'package:logging/logging.dart';
 import 'package:observatory/service_html.dart';
diff --git a/runtime/observatory/lib/src/app/view_model.dart b/runtime/observatory/lib/src/app/view_model.dart
index 94edb49..6562e1f 100644
--- a/runtime/observatory/lib/src/app/view_model.dart
+++ b/runtime/observatory/lib/src/app/view_model.dart
@@ -4,6 +4,384 @@
 
 part of app;
 
+abstract class VirtualTreeRow {
+  // Number of ems each subtree is indented.
+  static const subtreeIndent = 1.05;
+
+  static const redColor = '#F44336';
+  static const blueColor = '#3F51B5';
+  static const purpleColor = '#673AB7';
+  static const greenColor = '#4CAF50';
+  static const orangeColor = '#FF9800';
+  static const lightGrayColor = '#FAFAFA';
+
+  List backgroundColors = const [
+    purpleColor,
+    redColor,
+    greenColor,
+    blueColor,
+    orangeColor,
+  ];
+
+  final VirtualTree tree;
+  final List<VirtualTreeRow> children = [];
+  final List<StreamSubscription> _listeners = [];
+  final int depth;
+  bool _expanded = false;
+
+  VirtualTreeRow(this.tree, this.depth);
+
+  bool get expanded => _expanded;
+
+  set expanded(bool expanded) {
+    var changed = _expanded != expanded;
+    _expanded = expanded;
+    if (!changed) {
+      return;
+    }
+    if (_expanded) {
+      _expand();
+    } else {
+      _collapse();
+    }
+  }
+
+  Element makeColorBar() {
+    var element = new SpanElement();
+    element.style.paddingLeft = '2px';
+    element.style.paddingRight = '2px';
+    element.style.flexBasis = '2px';
+    element.style.height = '${tree.rowHeight}px';
+    element.style.minHeight = '${tree.rowHeight}px';
+    if (depth > 0) {
+      var colorIndex = (depth - 1) % backgroundColors.length;
+      element.style.backgroundColor = backgroundColors[colorIndex];
+    }
+    return element;
+  }
+
+  Element makeExpander() {
+    SpanElement element = new SpanElement();
+    element.style.flexBasis = '2em';
+    if (!hasChildren()) {
+      element.style.visibility = 'hidden';
+    } else {
+      element.style.visibility = 'visible';
+      element.children.add(expanded ?
+          new Element.tag('icon-expand-more') :
+          new Element.tag('icon-chevron-right'));
+    }
+    _listeners.add(element.onClick.listen((e) {
+      e.stopPropagation();
+      toggle();
+    }));
+    return element;
+  }
+
+  Element makeIndenter({colored: true}) {
+    SpanElement element = new SpanElement();
+    element.style.paddingLeft = '${subtreeIndent * depth}em';
+    element.style.flexBasis = '${subtreeIndent * depth}em';
+    element.style.height = '${tree.rowHeight}px';
+    element.style.minHeight = '${tree.rowHeight}px';
+    if (colored) {
+      if (depth > 0) {
+        var colorIndex = (depth - 1) % backgroundColors.length;
+        element.style.backgroundColor = backgroundColors[colorIndex];
+      }
+    }
+    return element;
+  }
+
+  Element makeText(String text, {String toolTip, String flexBasis: '7em'}) {
+    SpanElement element = new SpanElement();
+    element.text = text;
+    if (toolTip != null) {
+      element.title = toolTip;
+    }
+    if (flexBasis != null) {
+      element.style.flexBasis = flexBasis;
+    }
+    return element;
+  }
+
+  Element makeGap({double ems: 0.5}) {
+    SpanElement element = new SpanElement();
+    var flexBasis = '${ems}em';
+    element.style.flexBasis = flexBasis;
+    return element;
+  }
+
+  void _cleanupListeners() {
+    for (var listener in _listeners) {
+      listener.cancel();
+    }
+    _listeners.clear();
+  }
+
+  void _expand() {
+    onShow();
+    tree._onExpand(this);
+    if (children.length == 1) {
+      children[0]._expand();
+    }
+    _expanded = true;
+  }
+
+  void _collapse() {
+    _expanded = false;
+    for (var i = 0; i < children.length; i++) {
+      if (children[i].expanded) {
+        children[i]._collapse();
+      }
+    }
+    tree._onCollapse(this);
+  }
+
+  void toggle() {
+    expanded = !expanded;
+  }
+
+  void _render(DivElement rowDiv) {
+    rowDiv.style.display = 'flex';
+    rowDiv.style.alignItems = 'center';
+    _cleanupListeners();
+    onShow();
+    onRender(rowDiv);
+  }
+
+  /// Called when you should render into [rowDiv].
+  void onRender(DivElement rowDiv);
+
+  // Called when this row is visible.
+  void onShow();
+
+  // Return the number of children this node has.
+  int get childCount => 0;
+
+  // Return true if this node can be expanded.
+  bool hasChildren() => childCount > 0;
+
+  // Called when this row is not visible.
+  void onHide() {
+    _cleanupListeners();
+  }
+}
+
+class VirtualTree {
+  final int rowHeight;
+  final List<VirtualTreeRow> rows = [];
+  final DivElement root;
+  final Stopwatch _clock = new Stopwatch();
+
+  DivElement _treeHeightElement;
+  DivElement _tree;
+
+  StreamSubscription _scrollSubscription;
+  StreamSubscription _resizeSubscription;
+
+  // Height of [root] in pixels.
+  int viewHeight;
+
+  // Number of pixels view can be scrolled before a redraw occurs.
+  int redrawThresholdPixels;
+
+  // Number of rows visible at any given time.
+  int numVisibleRows;
+  // Number of rows above the current view that are in the dom.
+  int extraRowsAbove;
+  // Number of rows below the current view that are in the dom.
+  int extraRowsBelow;
+
+  // The scroll top of the last scroll event.
+  int lastPaintScrollTop;
+
+  // The starting row of the last paint.
+  int lastPaintStartingRow = 0;
+
+  bool paintScheduled = false;
+
+  bool scrolled = false;
+
+  static const scrollStopThresholdMilliseconds = 100;
+
+  VirtualTree(this.rowHeight, this.root) {
+    _clock.start();
+    _install();
+    _resize();
+    _schedulePaint(0);
+  }
+
+  void uninstall() => _uninstall();
+
+  void refresh() {
+    _resize();
+    _schedulePaint(lastPaintStartingRow);
+  }
+
+  // Clear the tree.
+  void clear() {
+    rows.clear();
+    _resize();
+  }
+
+  void _onExpand(VirtualTreeRow parent) {
+    int index = rows.indexOf(parent);
+    if (index == -1) {
+      return;
+    }
+    rows.insertAll(index + 1, parent.children);
+    refresh();
+  }
+
+  void _onCollapse(VirtualTreeRow parent) {
+    int index = rows.indexOf(parent);
+    if (index == -1) {
+      return;
+    }
+    int start = index + 1;
+    int end = start + parent.children.length;
+    rows.removeRange(start, end);
+    refresh();
+  }
+
+  void _resize() {
+    if (viewHeight != root.offsetHeight) {
+      viewHeight = root.offsetHeight;
+      numVisibleRows = (viewHeight ~/ rowHeight) + 1;
+      extraRowsAbove = numVisibleRows ~/ 2;
+      extraRowsBelow = numVisibleRows - extraRowsAbove;
+      redrawThresholdPixels =
+          math.min(extraRowsAbove, extraRowsBelow) * rowHeight;
+    }
+    _treeHeightElement.style.height = '${_treeHeight()}px';
+  }
+
+  int _treeHeight() {
+    return rows.length * rowHeight;
+  }
+
+  int _pixelsFromLastScroll(int currentScrollTop) {
+    if (lastPaintScrollTop == null) {
+      return currentScrollTop;
+    }
+
+    return (currentScrollTop - lastPaintScrollTop).abs();
+  }
+
+  int _pixelToRow(int pixelY) {
+    int result = pixelY ~/ rowHeight;
+    return result;
+  }
+
+  void _install() {
+    // This element controls the height of the tree's scrollable region.
+    // It is one pixel wide and the height is set to rowHeight * numRows.
+    _treeHeightElement = new DivElement();
+    _treeHeightElement.style.position = 'absolute';
+    _treeHeightElement.style.top = '0';
+    _treeHeightElement.style.left = '0';
+    _treeHeightElement.style.width = '1px';
+
+    // This element holds the visible tree rows and the height controlling
+    // element. It takes the full width and height of its parent element.
+    _tree = new DivElement();
+    _tree.children.add(_treeHeightElement);
+    _tree.style.width = '100%';
+    _tree.style.height = '100%';
+    _tree.style.position = 'relative';
+    _tree.style.overflow = 'auto';
+
+    // Listen for scroll events on the tree.
+    _scrollSubscription = _tree.onScroll.listen(_onScroll);
+
+    root.children.add(_tree);
+
+    // Listen for resize events.
+    _resizeSubscription = window.onResize.listen((_) {
+      _resize();
+      _schedulePaint(lastPaintStartingRow);
+    });
+  }
+
+  void _uninstall() {
+    root.children.clear();
+    _scrollSubscription?.cancel();
+    _scrollSubscription = null;
+    _resizeSubscription?.cancel();
+    _resizeSubscription = null;
+  }
+
+  void _onScroll(Event scrollEvent) {
+    Element target = scrollEvent.target;
+    int scrollTop = target.scrollTop;
+    if (_pixelsFromLastScroll(scrollTop) > redrawThresholdPixels) {
+      _schedulePaint(lastPaintStartingRow);
+      scrolled = true;
+    }
+    scrollEvent.preventDefault();
+  }
+
+  void _schedulePaint(int startingRow) {
+    if (paintScheduled) {
+      return;
+    }
+    paintScheduled = true;
+    window.requestAnimationFrame(
+        (timestamp) => _onRenderFrame(timestamp, startingRow));
+  }
+
+  void _onRenderFrame(int timestamp, int startingRow) {
+    paintScheduled = false;
+    _paint(startingRow);
+  }
+
+  void _paint(int startingRow) {
+    if (scrolled) {
+      startingRow = math.max(_pixelToRow(_tree.scrollTop), 0);
+      scrolled = false;
+    }
+    lastPaintScrollTop = _tree.scrollTop;
+    lastPaintStartingRow = startingRow;
+
+    int endingRow =
+        math.min(rows.length, startingRow + numVisibleRows + extraRowsBelow);
+
+    startingRow =
+        math.max(0, startingRow - extraRowsAbove);
+
+    print('PAINT $startingRow $endingRow');
+
+    for (int i = startingRow; i < endingRow; i++) {
+      // We add 1 because _tree.children[0] contains the height control element.
+      int cacheIndex = (i - startingRow) + 1;
+      DivElement row;
+      if (cacheIndex < _tree.children.length) {
+        // re-use existing row.
+        row = _tree.children[cacheIndex];
+        row.children.clear();
+      } else {
+        // Allocate a new row.
+        row = new DivElement();
+        row.style.position = 'absolute';
+        row.style.height = '${rowHeight}px';
+        row.style.maxHeight = '${rowHeight}px';
+        row.style.margin = '0';
+        row.style.width = '100%';
+        row.style.left = '0';
+        _tree.children.add(row);
+      }
+      row.style.top = '${(i * rowHeight)}px';
+      // Render the row.
+      rows[i]._render(row);
+    }
+    int necessaryChildren = (endingRow - startingRow) + 1;
+    while (_tree.children.length > necessaryChildren) {
+      _tree.children.removeLast();
+    }
+  }
+}
+
 abstract class TableTreeRow extends Observable {
   static const arrowRight = '\u2192';
   static const arrowDownRight = '\u21b3';
diff --git a/runtime/observatory/lib/src/elements/code_view.dart b/runtime/observatory/lib/src/elements/code_view.dart
index 9234164..d8fa1c7 100644
--- a/runtime/observatory/lib/src/elements/code_view.dart
+++ b/runtime/observatory/lib/src/elements/code_view.dart
@@ -210,7 +210,7 @@
       if (content is ServiceObject) {
         ServiceRefElement element = new Element.tag('any-service-ref');
         element.ref = content;
-        cell.append(element);
+        cell.children = [element];
       } else if (content != null) {
         cell.text = content.toString();
       }
diff --git a/runtime/observatory/lib/src/elements/cpu_profile.dart b/runtime/observatory/lib/src/elements/cpu_profile.dart
index c026d7c..6f74bbc 100644
--- a/runtime/observatory/lib/src/elements/cpu_profile.dart
+++ b/runtime/observatory/lib/src/elements/cpu_profile.dart
@@ -569,6 +569,109 @@
   @observable String directionSelector = 'Up';
 }
 
+class FunctionCallTreeNodeRow extends VirtualTreeRow {
+  final CpuProfile profile;
+  final FunctionCallTreeNode node;
+  final String selfPercent;
+  final String totalPercent;
+  final String percent;
+
+  FunctionCallTreeNodeRow(VirtualTree tree,
+                          int depth,
+                          this.profile,
+                          FunctionCallTreeNode node)
+      : node = node,
+        selfPercent = Utils.formatPercentNormalized(node.profileFunction.normalizedExclusiveTicks),
+        totalPercent = Utils.formatPercentNormalized(node.profileFunction.normalizedInclusiveTicks),
+        percent = Utils.formatPercentNormalized(node.percentage),
+        super(tree, depth) {
+  }
+
+  void onRender(DivElement rowDiv) {
+    rowDiv.children.add(
+        makeText(totalPercent, toolTip: 'global % on stack'));
+    rowDiv.children.add(makeGap());
+    rowDiv.children.add(
+        makeText(selfPercent, toolTip: 'global % executing'));
+    rowDiv.children.add(makeGap());
+    rowDiv.children.add(makeIndenter(colored: false));
+    rowDiv.children.add(makeColorBar());
+    rowDiv.children.add(makeGap(ems: 1.0));
+    rowDiv.children.add(makeExpander());
+    rowDiv.children.add(
+        makeText(percent, toolTip: 'tree node %', flexBasis: null));
+    rowDiv.children.add(makeGap(ems: 0.5));
+    functionRef.ref = node.profileFunction.function;
+    rowDiv.children.add(functionRef);
+  }
+
+  var functionRef = new Element.tag('function-ref');
+
+  int get childCount => node.children.length;
+
+  void onShow() {
+    if (children.length > 0) {
+      return;
+    }
+    for (var childNode in node.children) {
+      var row = new FunctionCallTreeNodeRow(tree, depth + 1, profile, childNode);
+      children.add(row);
+    }
+  }
+}
+
+
+class CodeCallTreeNodeRow extends VirtualTreeRow {
+  final CpuProfile profile;
+  final CodeCallTreeNode node;
+  final String selfPercent;
+  final String totalPercent;
+  final String percent;
+
+  CodeCallTreeNodeRow(VirtualTree tree,
+                      int depth,
+                      this.profile,
+                      CodeCallTreeNode node)
+      : node = node,
+        selfPercent = Utils.formatPercentNormalized(node.profileCode.normalizedExclusiveTicks),
+        totalPercent = Utils.formatPercentNormalized(node.profileCode.normalizedInclusiveTicks),
+        percent = Utils.formatPercentNormalized(node.percentage),
+        super(tree, depth) {
+  }
+
+  void onRender(DivElement rowDiv) {
+    rowDiv.children.add(
+        makeText(totalPercent, toolTip: 'global % on stack'));
+    rowDiv.children.add(makeGap());
+    rowDiv.children.add(
+        makeText(selfPercent, toolTip: 'global % executing'));
+    rowDiv.children.add(makeGap());
+    rowDiv.children.add(makeIndenter(colored: false));
+    rowDiv.children.add(makeColorBar());
+    rowDiv.children.add(makeGap(ems: 1.0));
+    rowDiv.children.add(makeExpander());
+    rowDiv.children.add(
+        makeText(percent, toolTip: 'tree node %', flexBasis: null));
+    rowDiv.children.add(makeGap(ems: 0.5));
+    codeRef.ref = node.profileCode.code;
+    rowDiv.children.add(codeRef);
+  }
+
+  var codeRef = new Element.tag('code-ref');
+
+  int get childCount => node.children.length;
+
+  void onShow() {
+    if (children.length > 0) {
+      return;
+    }
+    for (var childNode in node.children) {
+      var row = new CodeCallTreeNodeRow(tree, depth + 1, profile, childNode);
+      children.add(row);
+    }
+  }
+}
+
 /// Displays a CpuProfile
 @CustomTag('cpu-profile')
 class CpuProfileElement extends ObservatoryElement {
@@ -587,10 +690,32 @@
         shadowRoot.querySelector('#stackTraceTreeConfig');
     assert(stackTraceTreeConfigElement != null);
     stackTraceTreeConfigElement.onTreeConfigChange = onTreeConfigChange;
-    cpuProfileTreeElement = shadowRoot.querySelector('#cpuProfileTree');
-    assert(cpuProfileTreeElement != null);
-    cpuProfileTreeElement.profile = sampleBufferControlElement.profile;
+    cpuProfileVirtualTreeElement = shadowRoot.querySelector('#cpuProfileVirtualTree');
+    assert(cpuProfileVirtualTreeElement != null);
+    cpuProfileVirtualTreeElement.profile = sampleBufferControlElement.profile;
+    _resizeSubscription = window.onResize.listen((_) => _updateSize());
     _updateTask.queue();
+    _updateSize();
+  }
+
+  detached() {
+    super.detached();
+    if (_resizeSubscription != null) {
+      _resizeSubscription.cancel();
+    }
+  }
+
+  _updateSize() {
+    var applySize = (e) {
+      Rectangle rect = e.getBoundingClientRect();
+      final totalHeight = window.innerHeight;
+      final top = rect.top;
+      final bottomMargin = 200;
+      final mainHeight = totalHeight - top - bottomMargin;
+      e.style.setProperty('height', '${mainHeight}px');
+    };
+    HtmlElement e2 = $['cpuProfileVirtualTree'];
+    applySize(e2);
   }
 
   isolateChanged(oldValue) {
@@ -616,8 +741,8 @@
     if (modeSelector == 'Code') {
       mode = ProfileTreeMode.Code;
     }
-    cpuProfileTreeElement.direction = direction;
-    cpuProfileTreeElement.mode = mode;
+    cpuProfileVirtualTreeElement.direction = direction;
+    cpuProfileVirtualTreeElement.mode = mode;
     _renderTask.queue();
   }
 
@@ -633,16 +758,17 @@
   }
 
   render() {
-    cpuProfileTreeElement.render();
+    cpuProfileVirtualTreeElement.render();
   }
 
   @published Isolate isolate;
 
+  StreamSubscription _resizeSubscription;
   Task _updateTask;
   Task _renderTask;
   SampleBufferControlElement sampleBufferControlElement;
   StackTraceTreeConfigElement stackTraceTreeConfigElement;
-  CpuProfileTreeElement cpuProfileTreeElement;
+  CpuProfileVirtualTreeElement cpuProfileVirtualTreeElement;
 }
 
 class NameSortedTable extends SortedTable {
@@ -1140,6 +1266,85 @@
   Function,
 }
 
+@CustomTag('cpu-profile-virtual-tree')
+class CpuProfileVirtualTreeElement extends ObservatoryElement {
+  ProfileTreeDirection direction = ProfileTreeDirection.Exclusive;
+  ProfileTreeMode mode = ProfileTreeMode.Function;
+  CpuProfile profile;
+  VirtualTree virtualTree;
+  FunctionCallTreeNodeFilter functionFilter;
+  @observable bool show = true;
+
+  CpuProfileVirtualTreeElement.created() : super.created();
+
+  void render() {
+    _updateView();
+  }
+
+  showChanged(oldValue) {
+    var treeTable = shadowRoot.querySelector('#treeTable');
+    assert(treeTable != null);
+    treeTable.style.display = show ? 'table' : 'none';
+  }
+
+  void _updateView() {
+    virtualTree?.clear();
+    virtualTree?.uninstall();
+    virtualTree = null;
+    bool exclusive = direction == ProfileTreeDirection.Exclusive;
+    if (mode == ProfileTreeMode.Code) {
+      _buildCodeTree(exclusive);
+    } else {
+      assert(mode == ProfileTreeMode.Function);
+      _buildFunctionTree(exclusive);
+    }
+    virtualTree?.refresh();
+  }
+
+  void _buildFunctionTree(bool exclusive) {
+    var treeBody = shadowRoot.querySelector('#tree');
+    assert(treeBody != null);
+    virtualTree = new VirtualTree(32, treeBody);
+    if (profile == null) {
+      return;
+    }
+    var tree = profile.loadFunctionTree(exclusive ? 'exclusive' : 'inclusive');
+    if (tree == null) {
+      return;
+    }
+    if (functionFilter != null) {
+      tree = tree.filtered(functionFilter);
+    }
+    for (var child in tree.root.children) {
+      virtualTree.rows.add(
+          new FunctionCallTreeNodeRow(virtualTree, 0, profile, child));
+    }
+    if (virtualTree.rows.length == 1) {
+      virtualTree.rows[0].expanded = true;
+    }
+  }
+
+  void _buildCodeTree(bool exclusive) {
+    var treeBody = shadowRoot.querySelector('#tree');
+    assert(treeBody != null);
+    virtualTree = new VirtualTree(32, treeBody);
+    if (profile == null) {
+      return;
+    }
+    var tree = profile.loadCodeTree(exclusive ? 'exclusive' : 'inclusive');
+    if (tree == null) {
+      return;
+    }
+    for (var child in tree.root.children) {
+      virtualTree.rows.add(
+          new CodeCallTreeNodeRow(virtualTree, 0, profile, child));
+    }
+    if (virtualTree.rows.length == 1) {
+      virtualTree.rows[0].expanded = true;
+    }
+  }
+}
+
 @CustomTag('cpu-profile-tree')
 class CpuProfileTreeElement extends ObservatoryElement {
   ProfileTreeDirection direction = ProfileTreeDirection.Exclusive;
diff --git a/runtime/observatory/lib/src/elements/cpu_profile.html b/runtime/observatory/lib/src/elements/cpu_profile.html
index d76cb19..68eb99a 100644
--- a/runtime/observatory/lib/src/elements/cpu_profile.html
+++ b/runtime/observatory/lib/src/elements/cpu_profile.html
@@ -237,6 +237,20 @@
   </template>
 </polymer-element>
 
+<polymer-element name="cpu-profile-virtual-tree" extends="observatory-element">
+  <template>
+    <link rel="stylesheet" href="css/shared.css">
+    <style>
+    .full {
+      height: 50%;
+      width: 100%;
+    }
+    </style>
+    <div id="tree" class="full"></div>
+  </template>
+</polymer-element>
+
+
 <polymer-element name="cpu-profile-table" extends="observatory-element">
   <template>
     <link rel="stylesheet" href="css/shared.css">
@@ -472,12 +486,7 @@
     <br>
     <stack-trace-tree-config id="stackTraceTreeConfig"></stack-trace-tree-config>
     <br>
-    <div class="content-centered-big">
-      <div class="tableWell shadow">
-        <cpu-profile-tree id="cpuProfileTree"></cpu-profile-tree>
-      </div>
-    </div>
-    <view-footer></view-footer>
+    <cpu-profile-virtual-tree class="shadow" id="cpuProfileVirtualTree"></cpu-profile-virtual-tree>
   </template>
 </polymer-element>
 
diff --git a/runtime/observatory/lib/src/elements/nav_bar.html b/runtime/observatory/lib/src/elements/nav_bar.html
index 4299d0c..983f8af 100644
--- a/runtime/observatory/lib/src/elements/nav_bar.html
+++ b/runtime/observatory/lib/src/elements/nav_bar.html
@@ -386,7 +386,7 @@
         margin-top: 10px;
         margin-right: 10px;
         padding-right: 25px;
-        width: 250px;
+        width: 500px;
         color: #ddd;
         background: rgba(0,0,0,.6);
         border: solid 2px white;
@@ -428,6 +428,9 @@
       a.boxclose:hover {
         background: rgba(255,255,255,0.5);
       }
+      .stacktrace {
+        white-space: pre
+      }
     </style>
     <template if="{{ isUnexpectedError }}">
       <!-- TODO(turnidge): Add a file-a-bug link to this notification -->
@@ -436,7 +439,7 @@
         <div class="indent">{{ exception.toString() }}</div><br>
         <template if="{{ stacktrace != null }}">
           Stacktrace:<br><br>
-          <div class="indent">{{ stacktrace.toString() }}</div>
+          <div class="indent stacktrace">{{ stacktrace.toString() }}</div>
           <br>
         </template>
         [<a class="link" on-click="{{ goto }}"
diff --git a/runtime/observatory/tests/service/get_flag_list_rpc_test.dart b/runtime/observatory/tests/service/get_flag_list_rpc_test.dart
index 3b646c7..73218e4 100644
--- a/runtime/observatory/tests/service/get_flag_list_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_flag_list_rpc_test.dart
@@ -31,7 +31,7 @@
   (VM vm) async {
     // Modify a flag.
     var params = {
-      'name' : 'trace_isolates',
+      'name' : 'trace_profiler',
       'value' : '123',
     };
     var result = await vm.invokeRpcNoUpgrade('_setFlag', params);
diff --git a/runtime/vm/BUILD.gn b/runtime/vm/BUILD.gn
index ea968d8..b19dfc8 100644
--- a/runtime/vm/BUILD.gn
+++ b/runtime/vm/BUILD.gn
@@ -100,17 +100,13 @@
   assert(defined(invoker.filename), "Need a filename in $target_name")
   assert(defined(invoker.kind), "Need kind in $target_name")
   assert(defined(invoker.output), "Need output in $target_name")
+  assert(defined(invoker.path), "Need path in $target_name")
   action(target_name) {
     visibility = [ ":*" ]  # Only targets in this file can see this.
     libname = invoker.libname
     filename = invoker.filename
     kind = invoker.kind
-
-    if (kind == "source") {
-      path = "../../sdk/lib/${filename}"
-    } else {
-      path = "../lib"
-    }
+    path = invoker.path
 
     lib_sources_gypi =
         exec_script("../../tools/gypi_to_gn.py",
@@ -155,17 +151,24 @@
   foreach(lib, invoker.sources) {
     libname = lib[0]
     filename = lib[1]
+    do_patch = lib[2]
+    source_path = lib[3]
     generate_library_source("generate_${filename}_cc_file") {
       libname = libname
       filename = filename
       kind = "source"
+      path = source_path
       output = "$target_gen_dir/${filename}_gen.cc"
     }
-    generate_library_source("generate_${filename}_patch_cc_file") {
-      libname = libname
-      filename = filename
-      kind = "patch"
-      output = "$target_gen_dir/${filename}_patch_gen.cc"
+    if (do_patch) {
+      patch_path = lib[4]
+      generate_library_source("generate_${filename}_patch_cc_file") {
+        libname = libname
+        filename = filename
+        kind = "patch"
+        path = patch_path
+        output = "$target_gen_dir/${filename}_patch_gen.cc"
+      }
     }
     lib_sources_gypi =
         exec_script("../../tools/gypi_to_gn.py",
@@ -173,10 +176,12 @@
                     "scope",
                     ["../lib/${filename}_sources.gypi"])
     libsources += rebase_path(lib_sources_gypi.sources, ".", "../lib")
-    liboutputs += ["$target_gen_dir/${filename}_gen.cc",
-                   "$target_gen_dir/${filename}_patch_gen.cc"]
-    libdeps += [":generate_${filename}_cc_file",
-                ":generate_${filename}_patch_cc_file"]
+    liboutputs += ["$target_gen_dir/${filename}_gen.cc"]
+    libdeps += [":generate_${filename}_cc_file"]
+    if (do_patch) {
+      liboutputs += ["$target_gen_dir/${filename}_patch_gen.cc"]
+      libdeps += [":generate_${filename}_patch_cc_file"]
+    }
   }
 
   static_library("libdart_lib_nosnapshot") {
@@ -207,17 +212,17 @@
 
 generate_core_libraries("core_libraries") {
   sources = [
-    ["async", "async"],
-    ["core", "core"],
-    ["collection", "collection"],
-    ["convert", "convert"],
-    ["developer", "developer"],
-    ["_internal", "internal"],
-    ["isolate", "isolate"],
-    ["math", "math"],
-    ["mirrors", "mirrors"],
-    ["profiler", "profiler"],
-    ["typed_data", "typed_data"],
-    ["_vmservice", "vmservice"],
+    ["async", "async", true, "../../sdk/lib/async", "../lib"],
+    ["core", "core", true, "../../sdk/lib/core", "../lib"],
+    ["collection", "collection", true, "../../sdk/lib/collection", "../lib"],
+    ["convert", "convert", true, "../../sdk/lib/convert", "../lib"],
+    ["developer", "developer", true, "../../sdk/lib/developer", "../lib"],
+    ["_internal", "internal", true, "../../sdk/lib/internal", "../lib"],
+    ["isolate", "isolate", true, "../../sdk/lib/isolate", "../lib"],
+    ["math", "math", true, "../../sdk/lib/math", "../lib"],
+    ["mirrors", "mirrors", true, "../../sdk/lib/mirrors", "../lib"],
+    ["profiler", "profiler", false, "../../sdk/lib/profiler"],
+    ["typed_data", "typed_data", false, "../lib"],
+    ["_vmservice", "vmservice", true, "../../sdk/lib/vmservice", "../lib"],
   ]
 }
diff --git a/runtime/vm/aot_optimizer.cc b/runtime/vm/aot_optimizer.cc
index 102cf96..1e72f79 100644
--- a/runtime/vm/aot_optimizer.cc
+++ b/runtime/vm/aot_optimizer.cc
@@ -227,32 +227,6 @@
     }
   }
 
-  // Check if getter or setter in function's class and class is currently leaf.
-  if (FLAG_guess_icdata_cid &&
-      ((call->token_kind() == Token::kGET) ||
-          (call->token_kind() == Token::kSET))) {
-    const Class& owner_class = Class::Handle(Z, function().Owner());
-    if (!owner_class.is_abstract() &&
-        !CHA::HasSubclasses(owner_class) &&
-        !CHA::IsImplemented(owner_class)) {
-      const Array& args_desc_array = Array::Handle(Z,
-          ArgumentsDescriptor::New(call->ArgumentCount(),
-                                   call->argument_names()));
-      ArgumentsDescriptor args_desc(args_desc_array);
-      const Function& function = Function::Handle(Z,
-          Resolver::ResolveDynamicForReceiverClass(owner_class,
-                                                   call->function_name(),
-                                                   args_desc));
-      if (!function.IsNull()) {
-        const ICData& ic_data = ICData::ZoneHandle(Z,
-            ICData::NewFrom(*call->ic_data(), class_ids.length()));
-        ic_data.AddReceiverCheck(owner_class.id(), function);
-        call->set_ic_data(&ic_data);
-        return true;
-      }
-    }
-  }
-
   return false;
 }
 
@@ -2405,6 +2379,25 @@
 }
 
 
+static bool HasLikelySmiOperand(InstanceCallInstr* instr) {
+  // Phis with at least one known smi are // guessed to be likely smi as well.
+  for (intptr_t i = 0; i < instr->ArgumentCount(); ++i) {
+    PhiInstr* phi = instr->ArgumentAt(i)->AsPhi();
+    if (phi != NULL) {
+      for (intptr_t j = 0; j < phi->InputCount(); ++j) {
+        if (phi->InputAt(j)->Type()->ToCid() == kSmiCid) return true;
+      }
+    }
+  }
+  // If all of the inputs are known smis or the result of CheckedSmiOp,
+  // we guess the operand to be likely smi.
+  for (intptr_t i = 0; i < instr->ArgumentCount(); ++i) {
+    if (!instr->ArgumentAt(i)->IsCheckedSmiOp()) return false;
+  }
+  return true;
+}
+
+
 // Tries to optimize instance call by replacing it with a faster instruction
 // (e.g, binary op, field load, ..).
 void AotOptimizer::VisitInstanceCall(InstanceCallInstr* instr) {
@@ -2495,8 +2488,10 @@
     case Token::kBIT_XOR:
     case Token::kBIT_AND:
     case Token::kADD:
-    case Token::kSUB: {
-      if (HasOnlyTwoOf(*instr->ic_data(), kSmiCid)) {
+    case Token::kSUB:
+    case Token::kMUL: {
+      if (HasOnlyTwoOf(*instr->ic_data(), kSmiCid) ||
+          HasLikelySmiOperand(instr)) {
         Definition* left = instr->ArgumentAt(0);
         Definition* right = instr->ArgumentAt(1);
         CheckedSmiOpInstr* smi_op =
@@ -2508,11 +2503,56 @@
         ReplaceCall(instr, smi_op);
         return;
       }
+      break;
     }
     default:
       break;
   }
 
+  // No IC data checks. Try resolve target using the propagated type.
+  // If the propagated type has a method with the target name and there are
+  // no overrides with that name according to CHA, call the method directly.
+  const intptr_t receiver_cid =
+      instr->PushArgumentAt(0)->value()->Type()->ToCid();
+  if (receiver_cid != kDynamicCid) {
+    const Class& receiver_class = Class::Handle(Z,
+        isolate()->class_table()->At(receiver_cid));
+
+    const Array& args_desc_array = Array::Handle(Z,
+        ArgumentsDescriptor::New(instr->ArgumentCount(),
+                                 instr->argument_names()));
+    ArgumentsDescriptor args_desc(args_desc_array);
+    const Function& function = Function::Handle(Z,
+        Resolver::ResolveDynamicForReceiverClass(
+            receiver_class,
+            instr->function_name(),
+            args_desc));
+    if (!function.IsNull()) {
+      if (!thread()->cha()->HasOverride(receiver_class,
+                                        instr->function_name())) {
+        if (FLAG_trace_cha) {
+          THR_Print("  **(CHA) Instance call needs no check, "
+              "no overrides of '%s' '%s'\n",
+              instr->function_name().ToCString(), receiver_class.ToCString());
+        }
+
+        // Create fake IC data with the resolved target.
+        const ICData& ic_data = ICData::Handle(
+            ICData::New(flow_graph_->function(),
+                        instr->function_name(),
+                        args_desc_array,
+                        Thread::kNoDeoptId,
+                        /* args_tested = */ 1));
+        ic_data.AddReceiverCheck(receiver_class.id(), function);
+        PolymorphicInstanceCallInstr* call =
+            new(Z) PolymorphicInstanceCallInstr(instr, ic_data,
+                                                /* with_checks = */ false);
+        instr->ReplaceWith(call, current_iterator());
+        return;
+      }
+    }
+  }
+
   // More than one targets. Generate generic polymorphic call without
   // deoptimization.
   if (instr->ic_data()->NumberOfUsedChecks() > 0) {
@@ -2525,49 +2565,6 @@
     instr->ReplaceWith(call, current_iterator());
     return;
   }
-
-  // No IC data checks. Try resolve target using the propagated type.
-  // If the propagated type has a method with the target name and there are
-  // no overrides with that name according to CHA, call the method directly.
-  const intptr_t receiver_cid =
-      instr->PushArgumentAt(0)->value()->Type()->ToCid();
-  if (receiver_cid == kDynamicCid) return;
-  const Class& receiver_class = Class::Handle(Z,
-      isolate()->class_table()->At(receiver_cid));
-
-  const Array& args_desc_array = Array::Handle(Z,
-      ArgumentsDescriptor::New(instr->ArgumentCount(),
-                               instr->argument_names()));
-  ArgumentsDescriptor args_desc(args_desc_array);
-  const Function& function = Function::Handle(Z,
-      Resolver::ResolveDynamicForReceiverClass(
-          receiver_class,
-          instr->function_name(),
-          args_desc));
-  if (function.IsNull()) {
-    return;
-  }
-  if (!thread()->cha()->HasOverride(receiver_class, instr->function_name())) {
-    if (FLAG_trace_cha) {
-      THR_Print("  **(CHA) Instance call needs no check, "
-          "no overrides of '%s' '%s'\n",
-          instr->function_name().ToCString(), receiver_class.ToCString());
-    }
-    thread()->cha()->AddToLeafClasses(receiver_class);
-
-    // Create fake IC data with the resolved target.
-    const ICData& ic_data = ICData::Handle(
-        ICData::New(flow_graph_->function(),
-                    instr->function_name(),
-                    args_desc_array,
-                    Thread::kNoDeoptId,
-                    /* args_tested = */ 1));
-    ic_data.AddReceiverCheck(receiver_class.id(), function);
-    PolymorphicInstanceCallInstr* call =
-        new(Z) PolymorphicInstanceCallInstr(instr, ic_data,
-                                            /* with_checks = */ false);
-    instr->ReplaceWith(call, current_iterator());
-  }
 }
 
 
diff --git a/runtime/vm/atomic.h b/runtime/vm/atomic.h
index bd489d0..fc6257e 100644
--- a/runtime/vm/atomic.h
+++ b/runtime/vm/atomic.h
@@ -53,6 +53,12 @@
   static uword LoadRelaxed(uword* ptr) {
     return *static_cast<volatile uword*>(ptr);
   }
+
+  // Performs a load of a word from 'ptr', but without any guarantees about
+  // memory order (i.e., no load barriers/fences).
+  static intptr_t LoadRelaxedIntPtr(intptr_t* ptr) {
+    return *static_cast<volatile intptr_t*>(ptr);
+  }
 };
 
 
diff --git a/runtime/vm/code_generator.cc b/runtime/vm/code_generator.cc
index bb7d5e0..11b7f8c 100644
--- a/runtime/vm/code_generator.cc
+++ b/runtime/vm/code_generator.cc
@@ -1793,6 +1793,17 @@
 // materialization phase.
 DEFINE_RUNTIME_ENTRY(DeoptimizeMaterialize, 0) {
 #if !defined(DART_PRECOMPILED_RUNTIME)
+#if defined(DEBUG)
+  {
+    // We may rendezvous for a safepoint at entry or GC from the allocations
+    // below. Check the stack is walkable.
+    StackFrameIterator frames_iterator(StackFrameIterator::kValidateFrames);
+    StackFrame* frame = frames_iterator.NextFrame();
+    while (frame != NULL) {
+      frame = frames_iterator.NextFrame();
+    }
+  }
+#endif
   DeoptContext* deopt_context = isolate->deopt_context();
   intptr_t deopt_arg_count = deopt_context->MaterializeDeferredObjects();
   isolate->set_deopt_context(NULL);
diff --git a/runtime/vm/compiler.cc b/runtime/vm/compiler.cc
index d7a889c..bf5eac5 100644
--- a/runtime/vm/compiler.cc
+++ b/runtime/vm/compiler.cc
@@ -378,10 +378,9 @@
         optimized_(optimized),
         osr_id_(osr_id),
         thread_(Thread::Current()),
-        cha_invalidation_gen_at_start_(isolate()->cha_invalidation_gen()),
         field_invalidation_gen_at_start_(isolate()->field_invalidation_gen()),
-        prefix_invalidation_gen_at_start_(
-            isolate()->prefix_invalidation_gen()) {
+        loading_invalidation_gen_at_start_(
+            isolate()->loading_invalidation_gen()) {
   }
 
   bool Compile(CompilationPipeline* pipeline);
@@ -392,14 +391,11 @@
   intptr_t osr_id() const { return osr_id_; }
   Thread* thread() const { return thread_; }
   Isolate* isolate() const { return thread_->isolate(); }
-  uint32_t cha_invalidation_gen_at_start() const {
-    return cha_invalidation_gen_at_start_;
-  }
-  uint32_t field_invalidation_gen_at_start() const {
+  intptr_t field_invalidation_gen_at_start() const {
     return field_invalidation_gen_at_start_;
   }
-  uint32_t prefix_invalidation_gen_at_start() const {
-    return prefix_invalidation_gen_at_start_;
+  intptr_t loading_invalidation_gen_at_start() const {
+    return loading_invalidation_gen_at_start_;
   }
   void FinalizeCompilation(Assembler* assembler,
                            FlowGraphCompiler* graph_compiler,
@@ -409,9 +405,8 @@
   const bool optimized_;
   const intptr_t osr_id_;
   Thread* const thread_;
-  const uint32_t cha_invalidation_gen_at_start_;
-  const uint32_t field_invalidation_gen_at_start_;
-  const uint32_t prefix_invalidation_gen_at_start_;
+  const intptr_t field_invalidation_gen_at_start_;
+  const intptr_t loading_invalidation_gen_at_start_;
 
   DISALLOW_COPY_AND_ASSIGN(CompileParsedFunctionHelper);
 };
@@ -501,15 +496,6 @@
       const bool trace_compiler =
           FLAG_trace_compiler || FLAG_trace_optimizing_compiler;
       bool code_is_valid = true;
-      if (!thread()->cha()->leaf_classes().is_empty()) {
-        if (cha_invalidation_gen_at_start() !=
-            isolate()->cha_invalidation_gen()) {
-          code_is_valid = false;
-          if (trace_compiler) {
-            THR_Print("--> FAIL: CHA invalidation.");
-          }
-        }
-      }
       if (!flow_graph->parsed_function().guarded_fields()->is_empty()) {
         if (field_invalidation_gen_at_start() !=
             isolate()->field_invalidation_gen()) {
@@ -519,13 +505,11 @@
           }
         }
       }
-      if (parsed_function()->HasDeferredPrefixes()) {
-        if (prefix_invalidation_gen_at_start() !=
-            isolate()->prefix_invalidation_gen()) {
-          code_is_valid = false;
-          if (trace_compiler) {
-            THR_Print("--> FAIL: Prefix invalidation.");
-          }
+      if (loading_invalidation_gen_at_start() !=
+          isolate()->loading_invalidation_gen()) {
+        code_is_valid = false;
+        if (trace_compiler) {
+          THR_Print("--> FAIL: Loading invalidation.");
         }
       }
       if (code_is_valid) {
@@ -1154,6 +1138,9 @@
     if (optimized) {
       INC_STAT(thread, num_functions_optimized, 1);
     }
+    // Makes sure no classes are loaded during parsing in background.
+    const intptr_t loading_invalidation_gen_at_start =
+        isolate->loading_invalidation_gen();
     {
       HANDLESCOPE(thread);
       const int64_t num_tokens_before = STAT_VALUE(thread, num_tokens_consumed);
@@ -1164,13 +1151,29 @@
                num_tokens_after - num_tokens_before);
     }
 
+
     CompileParsedFunctionHelper helper(parsed_function, optimized, osr_id);
+
+    if (Compiler::IsBackgroundCompilation()) {
+      if (isolate->IsTopLevelParsing() ||
+              (loading_invalidation_gen_at_start !=
+               isolate->loading_invalidation_gen())) {
+        // Loading occured while parsing. We need to abort here because state
+        // changed while compiling.
+        Compiler::AbortBackgroundCompilation(Thread::kNoDeoptId);
+      }
+    }
+
     const bool success = helper.Compile(pipeline);
     if (!success) {
       if (optimized) {
         if (Compiler::IsBackgroundCompilation()) {
           // Try again later, background compilation may abort because of
           // state change during compilation.
+          if (FLAG_trace_compiler) {
+            THR_Print("Aborted background compilation: %s\n",
+                function.ToFullyQualifiedCString());
+          }
           return Error::null();
         }
         // Optimizer bailed out. Disable optimizations and never try again.
@@ -1225,9 +1228,18 @@
     Thread* const thread = Thread::Current();
     StackZone stack_zone(thread);
     Error& error = Error::Handle();
-    // We got an error during compilation.
+    // We got an error during compilation or it is a bailout from background
+    // compilation (e.g., during parsing with EnsureIsFinalized).
     error = thread->sticky_error();
     thread->clear_sticky_error();
+    if (error.raw() == Object::background_compilation_error().raw()) {
+      // Exit compilation, retry it later.
+      if (FLAG_trace_bailout) {
+        THR_Print("Aborted background compilation: %s\n",
+            function.ToFullyQualifiedCString());
+      }
+      return Error::null();
+    }
     // Unoptimized compilation or precompilation may encounter compile-time
     // errors, but regular optimized compilation should not.
     ASSERT(!optimized);
@@ -1364,6 +1376,8 @@
   // IsIrregexpFunction have eager var descriptors generation.
   ASSERT(!function.IsIrregexpFunction());
   // Parser should not produce any errors, therefore no LongJumpScope needed.
+  // (exception is background compilation).
+  ASSERT(!Compiler::IsBackgroundCompilation());
   Parser::ParseFunction(parsed_function);
   parsed_function->AllocateVariables();
   var_descs = parsed_function->node_sequence()->scope()->
diff --git a/runtime/vm/compiler_stats.cc b/runtime/vm/compiler_stats.cc
index 7905ed8..d7950c1 100644
--- a/runtime/vm/compiler_stats.cc
+++ b/runtime/vm/compiler_stats.cc
@@ -20,9 +20,8 @@
 
 class TokenStreamVisitor : public ObjectVisitor {
  public:
-  TokenStreamVisitor(Isolate* isolate, CompilerStats* compiler_stats)
-      : ObjectVisitor(isolate),
-        obj_(Object::Handle()),
+  explicit TokenStreamVisitor(CompilerStats* compiler_stats)
+      : obj_(Object::Handle()),
         stats_(compiler_stats) {
   }
 
@@ -113,7 +112,7 @@
   // Traverse the heap and compute number of tokens in all
   // TokenStream objects.
   num_tokens_total = 0;
-  TokenStreamVisitor visitor(isolate_, this);
+  TokenStreamVisitor visitor(this);
   isolate_->heap()->IterateObjects(&visitor);
   Dart::vm_isolate()->heap()->IterateObjects(&visitor);
 }
diff --git a/runtime/vm/constants_arm.h b/runtime/vm/constants_arm.h
index 24110b4..5764745 100644
--- a/runtime/vm/constants_arm.h
+++ b/runtime/vm/constants_arm.h
@@ -246,6 +246,7 @@
 const Register ARGS_DESC_REG = R4;
 const Register CODE_REG = R6;
 const Register THR = R10;  // Caches current thread in generated code.
+const Register CALLEE_SAVED_TEMP = R6;
 
 // R15 encodes APSR in the vmrs instruction.
 const Register APSR = R15;
diff --git a/runtime/vm/constants_arm64.h b/runtime/vm/constants_arm64.h
index 7a0a18b..870bb34 100644
--- a/runtime/vm/constants_arm64.h
+++ b/runtime/vm/constants_arm64.h
@@ -117,7 +117,8 @@
 const Register ICREG = R5;  // IC data register.
 const Register ARGS_DESC_REG = R4;  // Arguments descriptor register.
 const Register THR = R26;  // Caches current thread in generated code.
-
+const Register CALLEE_SAVED_TEMP = R19;
+const Register CALLEE_SAVED_TEMP2 = R20;
 
 // Exception object is passed in this register to the catch handlers when an
 // exception is thrown.
diff --git a/runtime/vm/constants_ia32.h b/runtime/vm/constants_ia32.h
index 466dd42..adf988a 100644
--- a/runtime/vm/constants_ia32.h
+++ b/runtime/vm/constants_ia32.h
@@ -68,7 +68,8 @@
 const Register ICREG = ECX;  // IC data register.
 const Register ARGS_DESC_REG = EDX;  // Arguments descriptor register.
 const Register THR = ESI;  // Caches current thread in generated code.
-
+const Register CALLEE_SAVED_TEMP = EBX;
+const Register CALLEE_SAVED_TEMP2 = EDI;
 
 // Exception object is passed in this register to the catch handlers when an
 // exception is thrown.
diff --git a/runtime/vm/constants_mips.h b/runtime/vm/constants_mips.h
index bcde75e..9a79f53 100644
--- a/runtime/vm/constants_mips.h
+++ b/runtime/vm/constants_mips.h
@@ -186,7 +186,7 @@
 const Register ICREG = S5;  // IC data register.
 const Register ARGS_DESC_REG = S4;
 const Register THR = S3;  // Caches current thread in generated code.
-
+const Register CALLEE_SAVED_TEMP = S5;
 
 // The code that generates a comparison can be far away from the code that
 // generates the branch that uses the result of that comparison. In this case,
diff --git a/runtime/vm/constants_x64.h b/runtime/vm/constants_x64.h
index 9c92faa..0cfee29 100644
--- a/runtime/vm/constants_x64.h
+++ b/runtime/vm/constants_x64.h
@@ -93,7 +93,7 @@
 const Register ARGS_DESC_REG = R10;  // Arguments descriptor register.
 const Register CODE_REG = R12;
 const Register THR = R14;  // Caches current thread in generated code.
-
+const Register CALLEE_SAVED_TEMP = R13;
 
 // Exception object is passed in this register to the catch handlers when an
 // exception is thrown.
diff --git a/runtime/vm/dart.cc b/runtime/vm/dart.cc
index 9c07dc0..d8367fe 100644
--- a/runtime/vm/dart.cc
+++ b/runtime/vm/dart.cc
@@ -36,10 +36,7 @@
 namespace dart {
 
 DECLARE_FLAG(bool, print_class_table);
-DECLARE_FLAG(bool, trace_isolates);
 DECLARE_FLAG(bool, trace_time_all);
-DECLARE_FLAG(bool, pause_isolates_on_start);
-DECLARE_FLAG(bool, pause_isolates_on_exit);
 DEFINE_FLAG(bool, keep_code, false,
             "Keep deoptimized code for profiling.");
 DEFINE_FLAG(bool, shutdown, true, "Do a clean shutdown of the VM");
@@ -164,9 +161,9 @@
       StubCode::InitOnce();
     }
     if (vm_isolate_snapshot != NULL) {
-      if (instructions_snapshot != NULL) {
-        vm_isolate_->SetupInstructionsSnapshotPage(instructions_snapshot);
-        ASSERT(data_snapshot != NULL);
+      NOT_IN_PRODUCT(TimelineDurationScope tds(Timeline::GetVMStream(),
+                                               "VMIsolateSnapshot"));
+      if (data_snapshot != NULL) {
         vm_isolate_->SetupDataSnapshotPage(data_snapshot);
       }
       const Snapshot* snapshot = Snapshot::SetupFromBuffer(vm_isolate_snapshot);
@@ -207,7 +204,11 @@
       return "SSE2 is required.";
     }
 #endif
-    Object::FinalizeVMIsolate(vm_isolate_);
+    {
+      NOT_IN_PRODUCT(TimelineDurationScope tds(Timeline::GetVMStream(),
+                                               "FinalizeVMIsolate"));
+      Object::FinalizeVMIsolate(vm_isolate_);
+    }
 #if defined(DEBUG)
     vm_isolate_->heap()->Verify(kRequireMarked);
 #endif
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index cb540bc..5f314a6 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -97,7 +97,6 @@
 class FunctionVisitor : public ObjectVisitor {
  public:
   explicit FunctionVisitor(Thread* thread) :
-      ObjectVisitor(thread->isolate()),
       classHandle_(Class::Handle(thread->zone())),
       funcHandle_(Function::Handle(thread->zone())),
       typeHandle_(AbstractType::Handle(thread->zone())) {}
@@ -1466,6 +1465,7 @@
     intptr_t* isolate_snapshot_size) {
   ASSERT(FLAG_load_deferred_eagerly);
   DARTSCOPE(Thread::Current());
+  API_TIMELINE_DURATION;
   Isolate* I = T->isolate();
   if (vm_isolate_snapshot_buffer != NULL &&
       vm_isolate_snapshot_size == NULL) {
@@ -1537,6 +1537,7 @@
 
 DART_EXPORT Dart_Handle Dart_CreateScriptSnapshot(uint8_t** buffer,
                                                   intptr_t* size) {
+  API_TIMELINE_DURATION;
   return createLibrarySnapshot(Dart_Null(), buffer, size);
 }
 
@@ -1544,6 +1545,7 @@
 DART_EXPORT Dart_Handle Dart_CreateLibrarySnapshot(Dart_Handle library,
                                                    uint8_t** buffer,
                                                    intptr_t* size) {
+  API_TIMELINE_DURATION;
   return createLibrarySnapshot(library, buffer, size);
 }
 
diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc
index e9951c8..b30a331 100644
--- a/runtime/vm/debugger.cc
+++ b/runtime/vm/debugger.cc
@@ -45,7 +45,6 @@
             "handler instead.  This handler dispatches breakpoints to "
             "the VM service.");
 
-DECLARE_FLAG(bool, trace_isolates);
 DECLARE_FLAG(bool, warn_on_pause_with_no_debugger);
 
 
diff --git a/runtime/vm/deopt_instructions.cc b/runtime/vm/deopt_instructions.cc
index 8b0aa72..fffd667 100644
--- a/runtime/vm/deopt_instructions.cc
+++ b/runtime/vm/deopt_instructions.cc
@@ -666,9 +666,14 @@
       return;
     }
 
-    *dest_addr = reinterpret_cast<intptr_t>(Object::null());
-    deopt_context->DeferPcMarkerMaterialization(
-        object_table_index_, dest_addr);
+    // We don't always have the Code object for the frame's corresponding
+    // unoptimized code as it may have been collected. Use a stub as the pc
+    // marker until we can recreate that Code object during deferred
+    // materialization to maintain the invariant that Dart frames always have
+    // a pc marker.
+    *reinterpret_cast<RawObject**>(dest_addr) =
+        StubCode::FrameAwaitingMaterialization_entry()->code();
+    deopt_context->DeferPcMarkerMaterialization(object_table_index_, dest_addr);
   }
 
  private:
diff --git a/runtime/vm/disassembler.cc b/runtime/vm/disassembler.cc
index 5ba92d9..9f3d4a3 100644
--- a/runtime/vm/disassembler.cc
+++ b/runtime/vm/disassembler.cc
@@ -99,8 +99,7 @@
 
 class FindAddrVisitor : public FindObjectVisitor {
  public:
-  explicit FindAddrVisitor(uword addr)
-      : FindObjectVisitor(Isolate::Current()), addr_(addr) { }
+  explicit FindAddrVisitor(uword addr) : addr_(addr) { }
   virtual ~FindAddrVisitor() { }
 
   virtual uword filter_addr() const { return addr_; }
diff --git a/runtime/vm/flag_list.h b/runtime/vm/flag_list.h
index a879dda..5a55b8a 100644
--- a/runtime/vm/flag_list.h
+++ b/runtime/vm/flag_list.h
@@ -27,6 +27,8 @@
   "Instance call always as megamorphic.")                                      \
 C(background_compilation, false, false, bool, false,                           \
   "Run optimizing compilation in background")                                  \
+R(break_at_isolate_spawn, false, bool, false,                                  \
+  "Insert a one-time breakpoint at the entrypoint for all spawned isolates")   \
 C(collect_code, false, true, bool, true,                                       \
   "Attempt to GC infrequently used code.")                                     \
 P(collect_dynamic_function_names, bool, false,                                 \
@@ -55,6 +57,9 @@
   "Report error for bad overrides.")                                           \
 R(error_on_bad_type, false, bool, false,                                       \
   "Report error for malformed types.")                                         \
+P(external_max_size, int, (kWordSize <= 4) ? 512 : 1024,                       \
+  "Max total size of external allocations in MB, or 0 for unlimited,"          \
+  "e.g: --external_max_size=1024 allows up to 1024MB of externals")            \
 P(fields_may_be_reset, bool, false,                                            \
   "Don't optimize away static field initialization")                           \
 C(force_clone_compiler_objects, false, false, bool, false,                     \
@@ -83,8 +88,19 @@
   "Merge sin/cos into sincos")                                                 \
 P(new_gen_ext_limit, int, 64,                                                  \
   "maximum total external size (MB) in new gen before triggering GC")          \
+P(new_gen_semi_max_size, int, (kWordSize <= 4) ? 16 : 32,                      \
+  "Max size of new gen semi space in MB")                                      \
 P(optimization_counter_threshold, int, 30000,                                  \
   "Function's usage-counter value before it is optimized, -1 means never")     \
+P(old_gen_heap_size, int, (kWordSize <= 4) ? 1536 : 0,                         \
+  "Max size of old gen heap size in MB, or 0 for unlimited,"                   \
+  "e.g: --old_gen_heap_size=1024 allows up to 1024MB old gen heap")            \
+R(pause_isolates_on_start, false, bool, false,                                 \
+  "Pause isolates before starting.")                                           \
+R(pause_isolates_on_exit, false, bool, false,                                  \
+  "Pause isolates exiting.")                                                   \
+R(pause_isolates_on_unhandled_exceptions, false, bool, false,                  \
+  "Pause isolates on unhandled exceptions.")                                   \
 P(polymorphic_with_deopt, bool, true,                                          \
   "Polymorphic calls with deoptimization / megamorphic call")                  \
 P(precompiled_mode, bool, false,                                               \
@@ -127,10 +143,16 @@
   "Trace CHA operations")                                                      \
 D(trace_field_guards, bool, false,                                             \
   "Trace changes in field's cids.")                                            \
+D(trace_isolates, bool, false,                                                 \
+  "Trace isolate creation and shut down.")                                     \
 D(trace_handles, bool, false,                                                  \
   "Traces allocation of handles.")                                             \
 D(trace_optimization, bool, false,                                             \
   "Print optimization details.");                                              \
+R(trace_profiler, false, bool, false,                                          \
+  "Profiler trace")                                                            \
+D(trace_profiler_verbose, bool, false,                                         \
+  "Verbose profiler trace")                                                    \
 D(trace_ssa_allocator, bool, false,                                            \
   "Trace register allocation over SSA.")                                       \
 D(trace_zones, bool, false,                                                    \
@@ -154,4 +176,5 @@
 D(verify_on_transition, bool, false,                                           \
   "Verify on dart <==> VM.")                                                   \
 
+
 #endif  // VM_FLAG_LIST_H_
diff --git a/runtime/vm/flow_graph_inliner.cc b/runtime/vm/flow_graph_inliner.cc
index 437c684..f3d3406 100644
--- a/runtime/vm/flow_graph_inliner.cc
+++ b/runtime/vm/flow_graph_inliner.cc
@@ -14,7 +14,6 @@
 #include "vm/flow_graph_compiler.h"
 #include "vm/flow_graph_type_propagator.h"
 #include "vm/il_printer.h"
-#include "vm/intrinsifier.h"
 #include "vm/jit_optimizer.h"
 #include "vm/longjump.h"
 #include "vm/object.h"
@@ -629,6 +628,15 @@
       return false;
     }
 
+    // Don't inline any intrinsified functions in precompiled mode
+    // to reduce code size and make sure we use the intrinsic code.
+    if (FLAG_precompiled_mode && function.is_intrinsic()) {
+      TRACE_INLINING(THR_Print("     Bailout: intrinisic\n"));
+      PRINT_INLINING_TREE("intrinsic",
+          &call_data->caller, &function, call_data->call);
+      return false;
+    }
+
     // Function has no type feedback. With precompilation we don't rely on
     // type feedback.
     if (!FLAG_precompiled_mode &&
@@ -694,14 +702,28 @@
       // Install bailout jump.
       LongJumpScope jump;
       if (setjmp(*jump.Set()) == 0) {
+        Isolate* isolate = Isolate::Current();
+        // Makes sure no classes are loaded during parsing in background.
+        const intptr_t loading_invalidation_gen_at_start =
+            isolate->loading_invalidation_gen();
         // Parse the callee function.
         bool in_cache;
         ParsedFunction* parsed_function;
-        {
+       {
           CSTAT_TIMER_SCOPE(thread(), graphinliner_parse_timer);
           parsed_function = GetParsedFunction(function, &in_cache);
         }
 
+        if (Compiler::IsBackgroundCompilation()) {
+          if (isolate->IsTopLevelParsing() ||
+                  (loading_invalidation_gen_at_start !=
+                   isolate->loading_invalidation_gen())) {
+            // Loading occured while parsing. We need to abort here because
+            // state changed while compiling.
+            Compiler::AbortBackgroundCompilation(Thread::kNoDeoptId);
+          }
+        }
+
         // Load IC data for the callee.
         ZoneGrowableArray<const ICData*>* ic_data_array =
               new(Z) ZoneGrowableArray<const ICData*>();
diff --git a/runtime/vm/heap.cc b/runtime/vm/heap.cc
index 138e9b1..0cd9f41 100644
--- a/runtime/vm/heap.cc
+++ b/runtime/vm/heap.cc
@@ -260,6 +260,12 @@
 }
 
 
+void Heap::IterateOldObjectsNoEmbedderPages(ObjectVisitor* visitor) const {
+  HeapIterationScope heap_iteration_scope;
+  old_space_.VisitObjectsNoEmbedderPages(visitor);
+}
+
+
 void Heap::VisitObjectPointers(ObjectPointerVisitor* visitor) const {
   new_space_.VisitObjectPointers(visitor);
   old_space_.VisitObjectPointers(visitor);
@@ -511,10 +517,10 @@
 }
 
 
-void Heap::WriteProtect(bool read_only, bool include_code_pages) {
+void Heap::WriteProtect(bool read_only) {
   read_only_ = read_only;
   new_space_.WriteProtect(read_only);
-  old_space_.WriteProtect(read_only, include_code_pages);
+  old_space_.WriteProtect(read_only);
 }
 
 
@@ -840,16 +846,15 @@
 }
 
 
-WritableVMIsolateScope::WritableVMIsolateScope(Thread* thread,
-                                               bool include_code_pages)
-    : StackResource(thread), include_code_pages_(include_code_pages) {
-  Dart::vm_isolate()->heap()->WriteProtect(false, include_code_pages_);
+WritableVMIsolateScope::WritableVMIsolateScope(Thread* thread)
+    : StackResource(thread) {
+  Dart::vm_isolate()->heap()->WriteProtect(false);
 }
 
 
 WritableVMIsolateScope::~WritableVMIsolateScope() {
   ASSERT(Dart::vm_isolate()->heap()->UsedInWords(Heap::kNew) == 0);
-  Dart::vm_isolate()->heap()->WriteProtect(true, include_code_pages_);
+  Dart::vm_isolate()->heap()->WriteProtect(true);
 }
 
 }  // namespace dart
diff --git a/runtime/vm/heap.h b/runtime/vm/heap.h
index 6fd1934..6732c1b 100644
--- a/runtime/vm/heap.h
+++ b/runtime/vm/heap.h
@@ -102,6 +102,7 @@
 
   void IterateObjects(ObjectVisitor* visitor) const;
   void IterateOldObjects(ObjectVisitor* visitor) const;
+  void IterateOldObjectsNoEmbedderPages(ObjectVisitor* visitor) const;
   void IterateObjectPointers(ObjectVisitor* visitor) const;
 
   // Find an object by visiting all pointers in the specified heap space,
@@ -138,7 +139,7 @@
 
   // Protect access to the heap. Note: Code pages are made
   // executable/non-executable when 'read_only' is true/false, respectively.
-  void WriteProtect(bool read_only, bool include_code_pages);
+  void WriteProtect(bool read_only);
   void WriteProtectCode(bool read_only) {
     old_space_.WriteProtectCode(read_only);
   }
@@ -391,11 +392,8 @@
 // Note: During this scope, the code pages are non-executable.
 class WritableVMIsolateScope : StackResource {
  public:
-  explicit WritableVMIsolateScope(Thread* thread, bool include_code_pages);
+  explicit WritableVMIsolateScope(Thread* thread);
   ~WritableVMIsolateScope();
-
- private:
-  bool include_code_pages_;
 };
 
 }  // namespace dart
diff --git a/runtime/vm/heap_test.cc b/runtime/vm/heap_test.cc
index c76297d..80319e3 100644
--- a/runtime/vm/heap_test.cc
+++ b/runtime/vm/heap_test.cc
@@ -236,8 +236,7 @@
 
 class FindOnly : public FindObjectVisitor {
  public:
-  FindOnly(Isolate* isolate, RawObject* target)
-      : FindObjectVisitor(isolate), target_(target) {
+  explicit FindOnly(RawObject* target) : target_(target) {
 #if defined(DEBUG)
     EXPECT_GT(Thread::Current()->no_safepoint_scope_depth(), 0);
 #endif
@@ -254,7 +253,7 @@
 
 class FindNothing : public FindObjectVisitor {
  public:
-  FindNothing() : FindObjectVisitor(Isolate::Current()) { }
+  FindNothing() { }
   virtual ~FindNothing() { }
   virtual bool FindObject(RawObject* obj) const { return false; }
 };
@@ -268,7 +267,7 @@
     const String& obj = String::Handle(String::New("x", spaces[space]));
     {
       NoSafepointScope no_safepoint;
-      FindOnly find_only(isolate, obj.raw());
+      FindOnly find_only(obj.raw());
       EXPECT(obj.raw() == heap->FindObject(&find_only));
     }
   }
@@ -284,9 +283,9 @@
   const String& obj = String::Handle(String::New("x", Heap::kOld));
   Heap* heap = Thread::Current()->isolate()->heap();
   EXPECT(heap->Contains(RawObject::ToAddr(obj.raw())));
-  heap->WriteProtect(true, true /* include_code_pages */);
+  heap->WriteProtect(true);
   EXPECT(heap->Contains(RawObject::ToAddr(obj.raw())));
-  heap->WriteProtect(false, true /* include_code_pages */);
+  heap->WriteProtect(false);
   EXPECT(heap->Contains(RawObject::ToAddr(obj.raw())));
 }
 
diff --git a/runtime/vm/intermediate_language.cc b/runtime/vm/intermediate_language.cc
index 4b55595..59cb8ab 100644
--- a/runtime/vm/intermediate_language.cc
+++ b/runtime/vm/intermediate_language.cc
@@ -3550,6 +3550,8 @@
     case MethodRecognizer::kMathTan:
     case MethodRecognizer::kMathAcos:
     case MethodRecognizer::kMathAsin:
+    case MethodRecognizer::kMathSin:
+    case MethodRecognizer::kMathCos:
       return 1;
     case MethodRecognizer::kDoubleMod:
     case MethodRecognizer::kMathDoublePow:
@@ -3636,6 +3638,10 @@
       return kLibcTanRuntimeEntry;
     case MethodRecognizer::kMathAsin:
       return kLibcAsinRuntimeEntry;
+    case MethodRecognizer::kMathSin:
+      return kLibcSinRuntimeEntry;
+    case MethodRecognizer::kMathCos:
+      return kLibcCosRuntimeEntry;
     case MethodRecognizer::kMathAcos:
       return kLibcAcosRuntimeEntry;
     case MethodRecognizer::kMathAtan:
diff --git a/runtime/vm/intermediate_language_arm.cc b/runtime/vm/intermediate_language_arm.cc
index 6b180bd..dfe3fc5 100644
--- a/runtime/vm/intermediate_language_arm.cc
+++ b/runtime/vm/intermediate_language_arm.cc
@@ -3093,8 +3093,20 @@
   Register left = locs()->in(0).reg();
   Register right = locs()->in(1).reg();
   Register result = locs()->out(0).reg();
-  __ orr(result, left, Operand(right));
-  __ tst(result, Operand(kSmiTagMask));
+  intptr_t left_cid = this->left()->Type()->ToCid();
+  intptr_t right_cid = this->right()->Type()->ToCid();
+  bool combined_smi_check = false;
+  if (this->left()->definition() == this->right()->definition()) {
+    __ tst(left, Operand(kSmiTagMask));
+  } else if (left_cid == kSmiCid) {
+    __ tst(right, Operand(kSmiTagMask));
+  } else if (right_cid == kSmiCid) {
+    __ tst(left, Operand(kSmiTagMask));
+  } else {
+    combined_smi_check = true;
+    __ orr(result, left, Operand(right));
+    __ tst(result, Operand(kSmiTagMask));
+  }
   __ b(slow_path->entry_label(), NE);
   switch (op_kind()) {
     case Token::kADD:
@@ -3105,8 +3117,18 @@
       __ subs(result, left, Operand(right));
       __ b(slow_path->entry_label(), VS);
       break;
+    case Token::kMUL:
+      __ SmiUntag(IP, left);
+      __ smull(result, IP, IP, right);
+      // IP: result bits 32..63.
+      __ cmp(IP, Operand(result, ASR, 31));
+      __ b(slow_path->entry_label(), NE);
+      break;
     case Token::kBIT_OR:
-      // Operation part of combined smi check.
+      // Operation may be part of combined smi check.
+      if (!combined_smi_check) {
+        __ orr(result, left, Operand(right));
+      }
       break;
     case Token::kBIT_AND:
       __ and_(result, left, Operand(right));
diff --git a/runtime/vm/intermediate_language_arm64.cc b/runtime/vm/intermediate_language_arm64.cc
index cb225a2..239ad0b 100644
--- a/runtime/vm/intermediate_language_arm64.cc
+++ b/runtime/vm/intermediate_language_arm64.cc
@@ -2809,8 +2809,21 @@
   Register left = locs()->in(0).reg();
   Register right = locs()->in(1).reg();
   Register result = locs()->out(0).reg();
-  __ orr(result, left, Operand(right));
-  __ tsti(result, Immediate(kSmiTagMask));
+  intptr_t left_cid = this->left()->Type()->ToCid();
+  intptr_t right_cid = this->right()->Type()->ToCid();
+  bool combined_smi_check = false;
+  if (this->left()->definition() == this->right()->definition()) {
+    __ tsti(left, Immediate(kSmiTagMask));
+  } else if (left_cid == kSmiCid) {
+    __ tsti(right, Immediate(kSmiTagMask));
+  } else if (right_cid == kSmiCid) {
+    __ tsti(left, Immediate(kSmiTagMask));
+  } else {
+    combined_smi_check = true;
+    __ orr(result, left, Operand(right));
+    __ tsti(result, Immediate(kSmiTagMask));
+  }
+
   __ b(slow_path->entry_label(), NE);
   switch (op_kind()) {
     case Token::kADD:
@@ -2821,8 +2834,19 @@
       __ subs(result, left, Operand(right));
       __ b(slow_path->entry_label(), VS);
       break;
+    case Token::kMUL:
+      __ SmiUntag(TMP, left);
+      __ mul(result, TMP, right);
+      __ smulh(TMP, TMP, right);
+      // TMP: result bits 64..127.
+      __ cmp(TMP, Operand(result, ASR, 63));
+      __ b(slow_path->entry_label(), NE);
+      break;
     case Token::kBIT_OR:
-      // Operation part of combined smi check.
+      // Operation may be part of combined smi check.
+      if (!combined_smi_check) {
+        __ orr(result, left, Operand(right));
+      }
       break;
     case Token::kBIT_AND:
       __ and_(result, left, Operand(right));
@@ -3155,7 +3179,9 @@
   intptr_t right_cid = right()->Type()->ToCid();
   const Register left = locs()->in(0).reg();
   const Register right = locs()->in(1).reg();
-  if (left_cid == kSmiCid) {
+  if (this->left()->definition() == this->right()->definition()) {
+    __ tsti(left, Immediate(kSmiTagMask));
+  } else if (left_cid == kSmiCid) {
     __ tsti(right, Immediate(kSmiTagMask));
   } else if (right_cid == kSmiCid) {
     __ tsti(left, Immediate(kSmiTagMask));
diff --git a/runtime/vm/intermediate_language_mips.cc b/runtime/vm/intermediate_language_mips.cc
index 7342fb6..022d6b5 100644
--- a/runtime/vm/intermediate_language_mips.cc
+++ b/runtime/vm/intermediate_language_mips.cc
@@ -2928,8 +2928,20 @@
   Register left = locs()->in(0).reg();
   Register right = locs()->in(1).reg();
   Register result = locs()->out(0).reg();
-  __ or_(result, left, right);
-  __ andi(CMPRES1, result, Immediate(kSmiTagMask));
+  intptr_t left_cid = this->left()->Type()->ToCid();
+  intptr_t right_cid = this->right()->Type()->ToCid();
+  bool combined_smi_check = false;
+  if (this->left()->definition() == this->right()->definition()) {
+    __ andi(CMPRES1, left, Immediate(kSmiTagMask));
+  } else if (left_cid == kSmiCid) {
+    __ andi(CMPRES1, right, Immediate(kSmiTagMask));
+  } else if (right_cid == kSmiCid) {
+    __ andi(CMPRES1, left, Immediate(kSmiTagMask));
+  } else {
+    combined_smi_check = true;
+    __ or_(result, left, right);
+    __ andi(CMPRES1, result, Immediate(kSmiTagMask));
+  }
   __ bne(CMPRES1, ZR, slow_path->entry_label());
   switch (op_kind()) {
     case Token::kADD:
@@ -2940,8 +2952,19 @@
       __ SubuDetectOverflow(result, left, right, CMPRES1);
       __ bltz(CMPRES1, slow_path->entry_label());
       break;
+    case Token::kMUL:
+      __ sra(TMP, left, kSmiTagSize);
+      __ mult(TMP, right);
+      __ mflo(result);
+      __ mfhi(CMPRES2);
+      __ sra(CMPRES1, result, 31);
+      __ bne(CMPRES1, CMPRES2, slow_path->entry_label());
+      break;
     case Token::kBIT_OR:
       // Operation part of combined smi check.
+      if (!combined_smi_check) {
+        __ or_(result, left, right);
+      }
       break;
     case Token::kBIT_AND:
       __ and_(result, left, right);
diff --git a/runtime/vm/intermediate_language_x64.cc b/runtime/vm/intermediate_language_x64.cc
index 1738532..d94b5f6 100644
--- a/runtime/vm/intermediate_language_x64.cc
+++ b/runtime/vm/intermediate_language_x64.cc
@@ -2829,6 +2829,7 @@
     case Token::kGTE:
     case Token::kADD:
     case Token::kSUB:
+    case Token::kMUL:
       summary->set_out(0, Location::RequiresRegister());
       break;
     case Token::kBIT_OR:
@@ -2848,13 +2849,24 @@
       new CheckedSmiSlowPath(this, compiler->CurrentTryIndex());
   compiler->AddSlowPathCode(slow_path);
   // Test operands if necessary.
+
+  intptr_t left_cid = left()->Type()->ToCid();
+  intptr_t right_cid = right()->Type()->ToCid();
   Register left = locs()->in(0).reg();
   Register right = locs()->in(1).reg();
-  Register result = locs()->out(0).reg();
-  __ movq(TMP, left);
-  __ orq(TMP, right);
-  __ testq(TMP, Immediate(kSmiTagMask));
+  if (this->left()->definition() == this->right()->definition()) {
+    __ testq(left, Immediate(kSmiTagMask));
+  } else if (left_cid == kSmiCid) {
+    __ testq(right, Immediate(kSmiTagMask));
+  } else if (right_cid == kSmiCid) {
+    __ testq(left, Immediate(kSmiTagMask));
+  } else {
+    __ movq(TMP, left);
+    __ orq(TMP, right);
+    __ testq(TMP, Immediate(kSmiTagMask));
+  }
   __ j(NOT_ZERO, slow_path->entry_label());
+  Register result = locs()->out(0).reg();
   switch (op_kind()) {
     case Token::kADD:
       __ movq(result, left);
@@ -2866,6 +2878,12 @@
       __ subq(result, right);
       __ j(OVERFLOW, slow_path->entry_label());
       break;
+    case Token::kMUL:
+      __ movq(result, left);
+      __ SmiUntag(result);
+      __ imulq(result, right);
+      __ j(OVERFLOW, slow_path->entry_label());
+      break;
     case Token::kBIT_OR:
       ASSERT(left == result);
       __ orq(result, right);
diff --git a/runtime/vm/intrinsifier.cc b/runtime/vm/intrinsifier.cc
index af15e7a..f42d85e 100644
--- a/runtime/vm/intrinsifier.cc
+++ b/runtime/vm/intrinsifier.cc
@@ -5,6 +5,7 @@
 
 #include "vm/assembler.h"
 #include "vm/compiler.h"
+#include "vm/cpu.h"
 #include "vm/flags.h"
 #include "vm/flow_graph.h"
 #include "vm/flow_graph_compiler.h"
@@ -21,16 +22,39 @@
 namespace dart {
 
 DEFINE_FLAG(bool, intrinsify, true, "Instrinsify when possible");
+DEFINE_FLAG(bool, trace_intrinsifier, false, "Trace intrinsifier");
 DECLARE_FLAG(bool, code_comments);
 DECLARE_FLAG(bool, print_flow_graph);
 DECLARE_FLAG(bool, print_flow_graph_optimized);
 
 bool Intrinsifier::CanIntrinsify(const Function& function) {
+  if (FLAG_trace_intrinsifier) {
+    THR_Print("CanIntrinsify %s ->", function.ToQualifiedCString());
+  }
   if (!FLAG_intrinsify) return false;
-  if (function.IsClosureFunction()) return false;
+  if (function.IsClosureFunction()) {
+    if (FLAG_trace_intrinsifier) {
+      THR_Print("No, closure function.\n");
+    }
+    return false;
+  }
   // Can occur because of compile-all flag.
-  if (function.is_external()) return false;
-  return function.is_intrinsic();
+  if (function.is_external()) {
+    if (FLAG_trace_intrinsifier) {
+      THR_Print("No, external function.\n");
+    }
+    return false;
+  }
+  if (!function.is_intrinsic()) {
+    if (FLAG_trace_intrinsifier) {
+      THR_Print("No, not intrinsic function.\n");
+    }
+    return false;
+  }
+  if (FLAG_trace_intrinsifier) {
+    THR_Print("Yes.\n");
+  }
+  return true;
 }
 
 
@@ -78,6 +102,7 @@
   lib = Library::MathLibrary();
   ASSERT(!lib.IsNull());
   MATH_LIB_INTRINSIC_LIST(SETUP_FUNCTION);
+  GRAPH_MATH_LIB_INTRINSIC_LIST(SETUP_FUNCTION);
 
   // Set up all dart:typed_data lib functions that can be intrinsified.
   lib = Library::TypedDataLibrary();
@@ -94,12 +119,11 @@
 }
 #endif  // defined(DART_NO_SNAPSHOT).
 
-
 static void EmitCodeFor(FlowGraphCompiler* compiler,
                         FlowGraph* graph) {
   // The FlowGraph here is constructed by the intrinsics builder methods, and
   // is different from compiler->flow_graph(), the original method's flow graph.
-  compiler->assembler()->Comment("Graph intrinsic");
+  compiler->assembler()->Comment("Graph intrinsic begin");
   for (intptr_t i = 0; i < graph->reverse_postorder().length(); i++) {
     BlockEntryInstr* block = graph->reverse_postorder()[i];
     if (block->IsGraphEntry()) continue;  // No code for graph entry needed.
@@ -115,6 +139,11 @@
       if (instr->IsParallelMove()) {
         compiler->parallel_move_resolver()->EmitNativeCode(
             instr->AsParallelMove());
+      } else if (instr->IsInvokeMathCFunction()) {
+        ASSERT(instr->locs() != NULL);
+        Intrinsifier::IntrinsicCallPrologue(compiler->assembler());
+        instr->EmitNativeCode(compiler);
+        Intrinsifier::IntrinsicCallEpilogue(compiler->assembler());
       } else {
         ASSERT(instr->locs() != NULL);
         // Calls are not supported in intrinsics code.
@@ -123,6 +152,7 @@
       }
     }
   }
+  compiler->assembler()->Comment("Graph intrinsic end");
 }
 
 
@@ -224,6 +254,11 @@
 }
 
 
+// Notes about the graph intrinsics:
+//
+// IR instructions which would jump to a deoptimization sequence on failure
+// instead branch to the intrinsic slow path.
+//
 class BlockBuilder : public ValueObject {
  public:
   BlockBuilder(FlowGraph* flow_graph, TargetEntryInstr* entry)
@@ -269,17 +304,45 @@
         new ConstantInstr(Object::ZoneHandle(Object::null())));
   }
 
-  Definition* AddUnboxInstr(Representation rep, Value* value) {
+  Definition* AddUnboxInstr(Representation rep,
+                            Value* value,
+                            bool is_checked) {
     Definition* unboxed_value = AddDefinition(
         UnboxInstr::Create(rep, value, Thread::kNoDeoptId));
-    // Manually adjust reaching type because there is no type propagation
-    // when building intrinsics.
-    unboxed_value->AsUnbox()->value()->SetReachingType(ZoneCompileType::Wrap(
-        CompileType::FromCid(CidForRepresentation(rep))));
+    if (is_checked) {
+      // The type of |value| has already been checked and it is safe to
+      // adjust reaching type. This is done manually because there is no type
+      // propagation when building intrinsics.
+      unboxed_value->AsUnbox()->value()->SetReachingType(ZoneCompileType::Wrap(
+          CompileType::FromCid(CidForRepresentation(rep))));
+    }
     return unboxed_value;
   }
 
+  Definition* AddUnboxInstr(Representation rep,
+                            Definition* boxed,
+                            bool is_checked) {
+    return AddUnboxInstr(rep, new Value(boxed), is_checked);
+  }
+
+  Definition* InvokeMathCFunction(MethodRecognizer::Kind recognized_kind,
+                                  ZoneGrowableArray<Value*>* args) {
+    return InvokeMathCFunctionHelper(recognized_kind, args);
+  }
+
  private:
+  Definition* InvokeMathCFunctionHelper(MethodRecognizer::Kind recognized_kind,
+                                        ZoneGrowableArray<Value*>* args) {
+    InvokeMathCFunctionInstr* invoke_math_c_function =
+        new InvokeMathCFunctionInstr(args,
+                                     Thread::kNoDeoptId,
+                                     recognized_kind,
+                                     TokenPos());
+    AddDefinition(invoke_math_c_function);
+    return invoke_math_c_function;
+  }
+
+
   FlowGraph* flow_graph_;
   BlockEntryInstr* entry_;
   Instruction* current_;
@@ -460,7 +523,9 @@
   PrepareIndexedOp(&builder, array, index, TypedData::length_offset());
 
   Definition* unboxed_value =
-      builder.AddUnboxInstr(kUnboxedUint32, new Value(value));
+      builder.AddUnboxInstr(kUnboxedUint32,
+                            new Value(value),
+                            /* is_checked = */ true);
 
   builder.AddInstruction(
       new StoreIndexedInstr(new Value(array),
@@ -528,7 +593,9 @@
                           value_check,
                           builder.TokenPos()));
   Definition* double_value =
-      builder.AddUnboxInstr(kUnboxedDouble, new Value(value));
+      builder.AddUnboxInstr(kUnboxedDouble,
+                            new Value(value),
+                            /* is_checked = */ true);
 
   builder.AddInstruction(
       new StoreIndexedInstr(new Value(array),
@@ -596,10 +663,14 @@
                           value_check,
                           builder.TokenPos()));
   Definition* left_simd =
-      builder.AddUnboxInstr(kUnboxedFloat32x4, new Value(left));
+      builder.AddUnboxInstr(kUnboxedFloat32x4,
+                            new Value(left),
+                            /* is_checked = */ true);
 
   Definition* right_simd =
-      builder.AddUnboxInstr(kUnboxedFloat32x4, new Value(right));
+      builder.AddUnboxInstr(kUnboxedFloat32x4,
+                            new Value(right),
+                            /* is_checked = */ true);
 
   Definition* unboxed_result = builder.AddDefinition(
       new BinaryFloat32x4OpInstr(kind,
@@ -638,7 +709,9 @@
   Definition* receiver = builder.AddParameter(1);
 
   Definition* unboxed_receiver =
-      builder.AddUnboxInstr(kUnboxedFloat32x4, new Value(receiver));
+      builder.AddUnboxInstr(kUnboxedFloat32x4,
+                            new Value(receiver),
+                            /* is_checked = */ true);
 
   Definition* unboxed_result = builder.AddDefinition(
       new Simd32x4ShuffleInstr(kind,
@@ -872,7 +945,9 @@
 
   Definition* receiver = builder.AddParameter(1);
   Definition* unboxed_value =
-      builder.AddUnboxInstr(kUnboxedDouble, new Value(receiver));
+      builder.AddUnboxInstr(kUnboxedDouble,
+                            new Value(receiver),
+                            /* is_checked = */ true);
   Definition* unboxed_result = builder.AddDefinition(
       new UnaryDoubleOpInstr(Token::kNEGATE,
                              new Value(unboxed_value),
@@ -883,4 +958,185 @@
   return true;
 }
 
+
+static bool BuildInvokeMathCFunction(BlockBuilder* builder,
+                                     MethodRecognizer::Kind kind,
+                                     intptr_t num_parameters = 1) {
+  ZoneGrowableArray<Value*>* args =
+      new ZoneGrowableArray<Value*>(num_parameters);
+
+  for (intptr_t i = 0; i < num_parameters; i++) {
+    const intptr_t parameter_index = (num_parameters - i);
+    Definition* value = builder->AddParameter(parameter_index);
+    Definition* unboxed_value =
+        builder->AddUnboxInstr(kUnboxedDouble, value, /* is_checked = */ false);
+    args->Add(new Value(unboxed_value));
+  }
+
+  Definition* unboxed_result =
+      builder->InvokeMathCFunction(kind, args);
+
+  Definition* result = builder->AddDefinition(
+      BoxInstr::Create(kUnboxedDouble, new Value(unboxed_result)));
+
+  builder->AddIntrinsicReturn(new Value(result));
+
+  return true;
+}
+
+
+bool Intrinsifier::Build_MathSin(FlowGraph* flow_graph) {
+  if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
+
+  GraphEntryInstr* graph_entry = flow_graph->graph_entry();
+  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  BlockBuilder builder(flow_graph, normal_entry);
+
+  return BuildInvokeMathCFunction(&builder,
+                                  MethodRecognizer::kMathSin);
+}
+
+
+bool Intrinsifier::Build_MathCos(FlowGraph* flow_graph) {
+  if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
+
+  GraphEntryInstr* graph_entry = flow_graph->graph_entry();
+  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  BlockBuilder builder(flow_graph, normal_entry);
+
+  return BuildInvokeMathCFunction(&builder,
+                                  MethodRecognizer::kMathCos);
+}
+
+
+bool Intrinsifier::Build_MathTan(FlowGraph* flow_graph) {
+  if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
+
+  GraphEntryInstr* graph_entry = flow_graph->graph_entry();
+  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  BlockBuilder builder(flow_graph, normal_entry);
+
+  return BuildInvokeMathCFunction(&builder,
+                                  MethodRecognizer::kMathTan);
+}
+
+
+bool Intrinsifier::Build_MathAsin(FlowGraph* flow_graph) {
+  if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
+
+  GraphEntryInstr* graph_entry = flow_graph->graph_entry();
+  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  BlockBuilder builder(flow_graph, normal_entry);
+
+  return BuildInvokeMathCFunction(&builder,
+                                  MethodRecognizer::kMathAsin);
+}
+
+
+bool Intrinsifier::Build_MathAcos(FlowGraph* flow_graph) {
+  if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
+
+  GraphEntryInstr* graph_entry = flow_graph->graph_entry();
+  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  BlockBuilder builder(flow_graph, normal_entry);
+
+  return BuildInvokeMathCFunction(&builder,
+                                  MethodRecognizer::kMathAcos);
+}
+
+
+bool Intrinsifier::Build_MathAtan(FlowGraph* flow_graph) {
+  if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
+
+  GraphEntryInstr* graph_entry = flow_graph->graph_entry();
+  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  BlockBuilder builder(flow_graph, normal_entry);
+
+  return BuildInvokeMathCFunction(&builder,
+                                  MethodRecognizer::kMathAtan);
+}
+
+
+bool Intrinsifier::Build_MathAtan2(FlowGraph* flow_graph) {
+  if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
+
+  GraphEntryInstr* graph_entry = flow_graph->graph_entry();
+  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  BlockBuilder builder(flow_graph, normal_entry);
+
+  return BuildInvokeMathCFunction(&builder,
+                                  MethodRecognizer::kMathAtan2,
+                                  /* num_parameters = */ 2);
+}
+
+
+bool Intrinsifier::Build_DoubleMod(FlowGraph* flow_graph) {
+  if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
+
+  GraphEntryInstr* graph_entry = flow_graph->graph_entry();
+  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  BlockBuilder builder(flow_graph, normal_entry);
+
+  return BuildInvokeMathCFunction(&builder,
+                                  MethodRecognizer::kDoubleMod,
+                                  /* num_parameters = */ 2);
+}
+
+
+bool Intrinsifier::Build_DoubleCeil(FlowGraph* flow_graph) {
+  if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
+  // TODO(johnmccutchan): On X86 this intrinsic can be written in a different
+  // way.
+  if (TargetCPUFeatures::double_truncate_round_supported()) return false;
+
+  GraphEntryInstr* graph_entry = flow_graph->graph_entry();
+  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  BlockBuilder builder(flow_graph, normal_entry);
+
+  return BuildInvokeMathCFunction(&builder,
+                                  MethodRecognizer::kDoubleCeil);
+}
+
+
+bool Intrinsifier::Build_DoubleFloor(FlowGraph* flow_graph) {
+  if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
+  // TODO(johnmccutchan): On X86 this intrinsic can be written in a different
+  // way.
+  if (TargetCPUFeatures::double_truncate_round_supported()) return false;
+
+  GraphEntryInstr* graph_entry = flow_graph->graph_entry();
+  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  BlockBuilder builder(flow_graph, normal_entry);
+
+  return BuildInvokeMathCFunction(&builder,
+                                  MethodRecognizer::kDoubleFloor);
+}
+
+
+bool Intrinsifier::Build_DoubleTruncate(FlowGraph* flow_graph) {
+  if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
+  // TODO(johnmccutchan): On X86 this intrinsic can be written in a different
+  // way.
+  if (TargetCPUFeatures::double_truncate_round_supported()) return false;
+
+  GraphEntryInstr* graph_entry = flow_graph->graph_entry();
+  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  BlockBuilder builder(flow_graph, normal_entry);
+
+  return BuildInvokeMathCFunction(&builder,
+                                  MethodRecognizer::kDoubleTruncate);
+}
+
+
+bool Intrinsifier::Build_DoubleRound(FlowGraph* flow_graph) {
+  if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
+
+  GraphEntryInstr* graph_entry = flow_graph->graph_entry();
+  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  BlockBuilder builder(flow_graph, normal_entry);
+
+  return BuildInvokeMathCFunction(&builder,
+                                  MethodRecognizer::kDoubleRound);
+}
+
 }  // namespace dart
diff --git a/runtime/vm/intrinsifier.h b/runtime/vm/intrinsifier.h
index 0203632..1a7e07a 100644
--- a/runtime/vm/intrinsifier.h
+++ b/runtime/vm/intrinsifier.h
@@ -32,6 +32,9 @@
 
   static intptr_t ParameterSlotFromSp();
 
+  static void IntrinsicCallPrologue(Assembler* assembler);
+  static void IntrinsicCallEpilogue(Assembler* assembler);
+
  private:
   static bool CanIntrinsify(const Function& function);
 
diff --git a/runtime/vm/intrinsifier_arm.cc b/runtime/vm/intrinsifier_arm.cc
index 4eeee12..7afb021 100644
--- a/runtime/vm/intrinsifier_arm.cc
+++ b/runtime/vm/intrinsifier_arm.cc
@@ -32,6 +32,20 @@
 intptr_t Intrinsifier::ParameterSlotFromSp() { return -1; }
 
 
+void Intrinsifier::IntrinsicCallPrologue(Assembler* assembler) {
+  // Save LR by moving it to a callee saved temporary register.
+  assembler->Comment("IntrinsicCallPrologue");
+  assembler->mov(CALLEE_SAVED_TEMP, Operand(LR));
+}
+
+
+void Intrinsifier::IntrinsicCallEpilogue(Assembler* assembler) {
+  // Restore LR.
+  assembler->Comment("IntrinsicCallEpilogue");
+  assembler->mov(LR, Operand(CALLEE_SAVED_TEMP));
+}
+
+
 // Intrinsify only for Smi value and index. Non-smi values need a store buffer
 // update. Array length is always a Smi.
 void Intrinsifier::ObjectArraySetIndexed(Assembler* assembler) {
@@ -1288,11 +1302,12 @@
 // Both arguments are on stack.
 static void DoubleArithmeticOperations(Assembler* assembler, Token::Kind kind) {
   if (TargetCPUFeatures::vfp_supported()) {
-    Label fall_through;
+    Label fall_through, is_smi, double_op;
 
-    TestLastArgumentIsDouble(assembler, &fall_through, &fall_through);
+    TestLastArgumentIsDouble(assembler, &is_smi, &fall_through);
     // Both arguments are double, right operand is in R0.
     __ LoadDFromOffset(D1, R0, Double::value_offset() - kHeapObjectTag);
+    __ Bind(&double_op);
     __ ldr(R0, Address(SP, 1 * kWordSize));  // Left argument.
     __ LoadDFromOffset(D0, R0, Double::value_offset() - kHeapObjectTag);
     switch (kind) {
@@ -1307,6 +1322,11 @@
     __ TryAllocate(double_class, &fall_through, R0, R1);  // Result register.
     __ StoreDToOffset(D0, R0, Double::value_offset() - kHeapObjectTag);
     __ Ret();
+    __ Bind(&is_smi);  // Convert R0 to a double.
+    __ SmiUntag(R0);
+    __ vmovsr(S0, R0);
+    __ vcvtdi(D1, S0);
+    __ b(&double_op);
     __ Bind(&fall_through);
   }
 }
diff --git a/runtime/vm/intrinsifier_arm64.cc b/runtime/vm/intrinsifier_arm64.cc
index f8611a1..e4e5b11 100644
--- a/runtime/vm/intrinsifier_arm64.cc
+++ b/runtime/vm/intrinsifier_arm64.cc
@@ -31,6 +31,20 @@
 intptr_t Intrinsifier::ParameterSlotFromSp() { return -1; }
 
 
+void Intrinsifier::IntrinsicCallPrologue(Assembler* assembler) {
+  assembler->Comment("IntrinsicCallPrologue");
+  assembler->mov(CALLEE_SAVED_TEMP, LR);
+  assembler->mov(CALLEE_SAVED_TEMP2, R4);
+}
+
+
+void Intrinsifier::IntrinsicCallEpilogue(Assembler* assembler) {
+  assembler->Comment("IntrinsicCallEpilogue");
+  assembler->mov(LR, CALLEE_SAVED_TEMP);
+  assembler->mov(R4, CALLEE_SAVED_TEMP2);
+}
+
+
 // Intrinsify only for Smi value and index. Non-smi values need a store buffer
 // update. Array length is always a Smi.
 void Intrinsifier::ObjectArraySetIndexed(Assembler* assembler) {
@@ -1384,11 +1398,12 @@
 // Expects left argument to be double (receiver). Right argument is unknown.
 // Both arguments are on stack.
 static void DoubleArithmeticOperations(Assembler* assembler, Token::Kind kind) {
-  Label fall_through;
+  Label fall_through, is_smi, double_op;
 
-  TestLastArgumentIsDouble(assembler, &fall_through, &fall_through);
+  TestLastArgumentIsDouble(assembler, &is_smi, &fall_through);
   // Both arguments are double, right operand is in R0.
   __ LoadDFieldFromOffset(V1, R0, Double::value_offset());
+  __ Bind(&double_op);
   __ ldr(R0, Address(SP, 1 * kWordSize));  // Left argument.
   __ LoadDFieldFromOffset(V0, R0, Double::value_offset());
   switch (kind) {
@@ -1403,6 +1418,12 @@
   __ TryAllocate(double_class, &fall_through, R0, R1);
   __ StoreDFieldToOffset(V0, R0, Double::value_offset());
   __ ret();
+
+  __ Bind(&is_smi);  // Convert R0 to a double.
+  __ SmiUntag(R0);
+  __ scvtfdx(V1, R0);
+  __ b(&double_op);
+
   __ Bind(&fall_through);
 }
 
diff --git a/runtime/vm/intrinsifier_ia32.cc b/runtime/vm/intrinsifier_ia32.cc
index 4e2a8e9..3c4a470 100644
--- a/runtime/vm/intrinsifier_ia32.cc
+++ b/runtime/vm/intrinsifier_ia32.cc
@@ -39,6 +39,20 @@
 intptr_t Intrinsifier::ParameterSlotFromSp() { return 0; }
 
 
+void Intrinsifier::IntrinsicCallPrologue(Assembler* assembler) {
+  assembler->Comment("IntrinsicCallPrologue");
+  assembler->movl(CALLEE_SAVED_TEMP, ICREG);
+  assembler->movl(CALLEE_SAVED_TEMP2, ARGS_DESC_REG);
+}
+
+
+void Intrinsifier::IntrinsicCallEpilogue(Assembler* assembler) {
+  assembler->Comment("IntrinsicCallEpilogue");
+  assembler->movl(ICREG, CALLEE_SAVED_TEMP);
+  assembler->movl(ARGS_DESC_REG, CALLEE_SAVED_TEMP2);
+}
+
+
 static intptr_t ComputeObjectArrayTypeArgumentsOffset() {
   const Library& core_lib = Library::Handle(Library::CoreLibrary());
   const Class& cls = Class::Handle(
@@ -1441,10 +1455,11 @@
 // Expects left argument to be double (receiver). Right argument is unknown.
 // Both arguments are on stack.
 static void DoubleArithmeticOperations(Assembler* assembler, Token::Kind kind) {
-  Label fall_through;
-  TestLastArgumentIsDouble(assembler, &fall_through, &fall_through);
+  Label fall_through, is_smi, double_op;
+  TestLastArgumentIsDouble(assembler, &is_smi, &fall_through);
   // Both arguments are double, right operand is in EAX.
   __ movsd(XMM1, FieldAddress(EAX, Double::value_offset()));
+  __ Bind(&double_op);
   __ movl(EAX, Address(ESP, + 2 * kWordSize));  // Left argument.
   __ movsd(XMM0, FieldAddress(EAX, Double::value_offset()));
   switch (kind) {
@@ -1463,6 +1478,10 @@
                  EBX);
   __ movsd(FieldAddress(EAX, Double::value_offset()), XMM0);
   __ ret();
+  __ Bind(&is_smi);
+  __ SmiUntag(EAX);
+  __ cvtsi2sd(XMM1, EAX);
+  __ jmp(&double_op);
   __ Bind(&fall_through);
 }
 
diff --git a/runtime/vm/intrinsifier_mips.cc b/runtime/vm/intrinsifier_mips.cc
index 1fd65bc..63b7755 100644
--- a/runtime/vm/intrinsifier_mips.cc
+++ b/runtime/vm/intrinsifier_mips.cc
@@ -31,6 +31,18 @@
 intptr_t Intrinsifier::ParameterSlotFromSp() { return -1; }
 
 
+void Intrinsifier::IntrinsicCallPrologue(Assembler* assembler) {
+  assembler->Comment("IntrinsicCallPrologue");
+  assembler->mov(CALLEE_SAVED_TEMP, RA);
+}
+
+
+void Intrinsifier::IntrinsicCallEpilogue(Assembler* assembler) {
+  assembler->Comment("IntrinsicCallEpilogue");
+  assembler->mov(RA, CALLEE_SAVED_TEMP);
+}
+
+
 // Intrinsify only for Smi value and index. Non-smi values need a store buffer
 // update. Array length is always a Smi.
 void Intrinsifier::ObjectArraySetIndexed(Assembler* assembler) {
@@ -1347,8 +1359,9 @@
   __ Bind(&is_smi);
   __ SmiUntag(T0);
   __ mtc1(T0, STMP1);
-  __ cvtdw(D1, STMP1);
   __ b(&double_op);
+  __ delay_slot()->cvtdw(D1, STMP1);
+
 
   __ Bind(&fall_through);
 }
@@ -1382,12 +1395,13 @@
 // Expects left argument to be double (receiver). Right argument is unknown.
 // Both arguments are on stack.
 static void DoubleArithmeticOperations(Assembler* assembler, Token::Kind kind) {
-  Label fall_through;
+  Label fall_through, is_smi, double_op;
 
-  TestLastArgumentIsDouble(assembler, &fall_through, &fall_through);
+  TestLastArgumentIsDouble(assembler, &is_smi, &fall_through);
   // Both arguments are double, right operand is in T0.
   __ lwc1(F2, FieldAddress(T0, Double::value_offset()));
   __ lwc1(F3, FieldAddress(T0, Double::value_offset() + kWordSize));
+  __ Bind(&double_op);
   __ lw(T0, Address(SP, 1 * kWordSize));  // Left argument.
   __ lwc1(F0, FieldAddress(T0, Double::value_offset()));
   __ lwc1(F1, FieldAddress(T0, Double::value_offset() + kWordSize));
@@ -1405,6 +1419,13 @@
   __ Ret();
   __ delay_slot()->swc1(F1,
                         FieldAddress(V0, Double::value_offset() + kWordSize));
+
+  __ Bind(&is_smi);
+  __ SmiUntag(T0);
+  __ mtc1(T0, STMP1);
+  __ b(&double_op);
+  __ delay_slot()->cvtdw(D1, STMP1);
+
   __ Bind(&fall_through);
 }
 
diff --git a/runtime/vm/intrinsifier_x64.cc b/runtime/vm/intrinsifier_x64.cc
index 5fd3ad7..c3954fd 100644
--- a/runtime/vm/intrinsifier_x64.cc
+++ b/runtime/vm/intrinsifier_x64.cc
@@ -31,6 +31,18 @@
 intptr_t Intrinsifier::ParameterSlotFromSp() { return 0; }
 
 
+void Intrinsifier::IntrinsicCallPrologue(Assembler* assembler) {
+  assembler->Comment("IntrinsicCallPrologue");
+  assembler->movq(CALLEE_SAVED_TEMP, R10);
+}
+
+
+void Intrinsifier::IntrinsicCallEpilogue(Assembler* assembler) {
+  assembler->Comment("IntrinsicCallEpilogue");
+  assembler->movq(R10, CALLEE_SAVED_TEMP);
+}
+
+
 void Intrinsifier::ObjectArraySetIndexed(Assembler* assembler) {
   if (Isolate::Current()->type_checks()) {
     return;
@@ -1295,10 +1307,11 @@
 // Expects left argument to be double (receiver). Right argument is unknown.
 // Both arguments are on stack.
 static void DoubleArithmeticOperations(Assembler* assembler, Token::Kind kind) {
-  Label fall_through;
-  TestLastArgumentIsDouble(assembler, &fall_through, &fall_through);
+  Label fall_through, is_smi, double_op;
+  TestLastArgumentIsDouble(assembler, &is_smi, &fall_through);
   // Both arguments are double, right operand is in RAX.
   __ movsd(XMM1, FieldAddress(RAX, Double::value_offset()));
+  __ Bind(&double_op);
   __ movq(RAX, Address(RSP, + 2 * kWordSize));  // Left argument.
   __ movsd(XMM0, FieldAddress(RAX, Double::value_offset()));
   switch (kind) {
@@ -1317,6 +1330,10 @@
                  R13);
   __ movsd(FieldAddress(RAX, Double::value_offset()), XMM0);
   __ ret();
+  __ Bind(&is_smi);
+  __ SmiUntag(RAX);
+  __ cvtsi2sdq(XMM1, RAX);
+  __ jmp(&double_op);
   __ Bind(&fall_through);
 }
 
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index 7678eef..a7ebef5 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -53,29 +53,6 @@
 DECLARE_FLAG(bool, print_metrics);
 DECLARE_FLAG(bool, timing);
 DECLARE_FLAG(bool, trace_service);
-
-DEFINE_FLAG(bool, trace_isolates, false,
-            "Trace isolate creation and shut down.");
-DEFINE_FLAG(bool, pause_isolates_on_start, false,
-            "Pause isolates before starting.");
-DEFINE_FLAG(bool, pause_isolates_on_exit, false,
-            "Pause isolates exiting.");
-DEFINE_FLAG(bool, pause_isolates_on_unhandled_exceptions, false,
-            "Pause isolates on unhandled exceptions.");
-
-DEFINE_FLAG(bool, break_at_isolate_spawn, false,
-            "Insert a one-time breakpoint at the entrypoint for all spawned "
-            "isolates");
-
-DEFINE_FLAG(int, new_gen_semi_max_size, (kWordSize <= 4) ? 16 : 32,
-            "Max size of new gen semi space in MB");
-DEFINE_FLAG(int, old_gen_heap_size, 0,
-            "Max size of old gen heap size in MB, or 0 for unlimited,"
-            "e.g: --old_gen_heap_size=1024 allows up to 1024MB old gen heap");
-DEFINE_FLAG(int, external_max_size, (kWordSize <= 4) ? 512 : 1024,
-            "Max total size of external allocations in MB, or 0 for unlimited,"
-            "e.g: --external_max_size=1024 allows up to 1024MB of externals");
-
 DECLARE_FLAG(bool, warn_on_pause_with_no_debugger);
 
 NOT_IN_PRODUCT(
@@ -817,9 +794,9 @@
       all_classes_finalized_(false),
       next_(NULL),
       pause_loop_monitor_(NULL),
-      cha_invalidation_gen_(kInvalidGen),
       field_invalidation_gen_(kInvalidGen),
-      prefix_invalidation_gen_(kInvalidGen),
+      loading_invalidation_gen_(kInvalidGen),
+      top_level_parsing_count_(0),
       boxed_field_list_mutex_(new Mutex()),
       boxed_field_list_(GrowableObjectArray::null()),
       spawn_count_monitor_(new Monitor()),
@@ -969,23 +946,6 @@
 }
 
 
-void Isolate::SetupInstructionsSnapshotPage(
-    const uint8_t* instructions_snapshot_buffer) {
-  InstructionsSnapshot snapshot(instructions_snapshot_buffer);
-#if defined(DEBUG)
-  if (FLAG_trace_isolates) {
-    OS::Print("Precompiled instructions are at [0x%" Px ", 0x%" Px ")\n",
-              reinterpret_cast<uword>(snapshot.instructions_start()),
-              reinterpret_cast<uword>(snapshot.instructions_start()) +
-              snapshot.instructions_size());
-  }
-#endif
-  heap_->SetupExternalPage(snapshot.instructions_start(),
-                           snapshot.instructions_size(),
-                           /* is_executable = */ true);
-}
-
-
 void Isolate::SetupDataSnapshotPage(const uint8_t* data_snapshot_buffer) {
   DataSnapshot snapshot(data_snapshot_buffer);
 #if defined(DEBUG)
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index 8d2508f..58ca52c 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -228,8 +228,6 @@
     library_tag_handler_ = value;
   }
 
-  void SetupInstructionsSnapshotPage(
-      const uint8_t* instructions_snapshot_buffer);
   void SetupDataSnapshotPage(
       const uint8_t* instructions_snapshot_buffer);
 
@@ -487,30 +485,40 @@
     all_classes_finalized_ = value;
   }
 
-  static const uint32_t kInvalidGen = 0;
-
-  void IncrCHAInvalidationGen() {
-    cha_invalidation_gen_++;
-    if (cha_invalidation_gen_ == kInvalidGen) cha_invalidation_gen_++;
+  // True during top level parsing.
+  bool IsTopLevelParsing() {
+    const intptr_t value =
+        AtomicOperations::LoadRelaxedIntPtr(&top_level_parsing_count_);
+    ASSERT(value >= 0);
+    return value > 0;
   }
-  void ResetCHAInvalidationGen() { cha_invalidation_gen_ = kInvalidGen; }
-  uint32_t cha_invalidation_gen() const { return cha_invalidation_gen_; }
 
+  void IncrTopLevelParsingCount() {
+    AtomicOperations::IncrementBy(&top_level_parsing_count_, 1);
+  }
+  void DecrTopLevelParsingCount() {
+    AtomicOperations::DecrementBy(&top_level_parsing_count_, 1);
+  }
+
+  static const intptr_t kInvalidGen = 0;
 
   void IncrFieldInvalidationGen() {
-    field_invalidation_gen_++;
-    if (field_invalidation_gen_ == kInvalidGen) field_invalidation_gen_++;
+    AtomicOperations::IncrementBy(&field_invalidation_gen_, 1);
+    if (field_invalidation_gen_ == kInvalidGen) {
+      AtomicOperations::IncrementBy(&field_invalidation_gen_, 1);
+    }
   }
+  intptr_t field_invalidation_gen() const { return field_invalidation_gen_; }
 
-  void ResetFieldInvalidationGen() { field_invalidation_gen_ = kInvalidGen; }
-  uint32_t field_invalidation_gen() const { return field_invalidation_gen_; }
-
-  void IncrPrefixInvalidationGen() {
-    prefix_invalidation_gen_++;
-    if (prefix_invalidation_gen_ == kInvalidGen) prefix_invalidation_gen_++;
+  void IncrLoadingInvalidationGen() {
+    AtomicOperations::IncrementBy(&loading_invalidation_gen_, 1);
+    if (loading_invalidation_gen_ == kInvalidGen) {
+      AtomicOperations::IncrementBy(&loading_invalidation_gen_, 1);
+    }
   }
-  void ResetPrefixInvalidationGen() { prefix_invalidation_gen_ = kInvalidGen; }
-  uint32_t prefix_invalidation_gen() const { return prefix_invalidation_gen_; }
+  intptr_t loading_invalidation_gen() {
+    return AtomicOperations::LoadRelaxedIntPtr(&loading_invalidation_gen_);
+  }
 
   // Used by background compiler which field became boxed and must trigger
   // deoptimization in the mutator thread.
@@ -730,9 +738,9 @@
   // Invalidation generations; used to track events occuring in parallel
   // to background compilation. The counters may overflow, which is OK
   // since we check for equality to detect if an event occured.
-  uint32_t cha_invalidation_gen_;
-  uint32_t field_invalidation_gen_;
-  uint32_t prefix_invalidation_gen_;
+  intptr_t field_invalidation_gen_;
+  intptr_t loading_invalidation_gen_;
+  intptr_t top_level_parsing_count_;
 
   // Protect access to boxed_field_list_.
   Mutex* boxed_field_list_mutex_;
diff --git a/runtime/vm/jit_optimizer.cc b/runtime/vm/jit_optimizer.cc
index c02fa8c..edb2524 100644
--- a/runtime/vm/jit_optimizer.cc
+++ b/runtime/vm/jit_optimizer.cc
@@ -3118,6 +3118,7 @@
     AddReceiverCheck(instr);
   }
   if (field.guarded_cid() != kDynamicCid) {
+    ASSERT(FLAG_use_field_guards);
     InsertBefore(instr,
                  new(Z) GuardFieldClassInstr(
                      new(Z) Value(instr->ArgumentAt(1)),
@@ -3128,6 +3129,7 @@
   }
 
   if (field.needs_length_check()) {
+    ASSERT(FLAG_use_field_guards);
     InsertBefore(instr,
                  new(Z) GuardFieldLengthInstr(
                      new(Z) Value(instr->ArgumentAt(1)),
diff --git a/runtime/vm/message_handler.cc b/runtime/vm/message_handler.cc
index eecd798..a6626d0 100644
--- a/runtime/vm/message_handler.cc
+++ b/runtime/vm/message_handler.cc
@@ -15,7 +15,6 @@
 
 namespace dart {
 
-DECLARE_FLAG(bool, trace_isolates);
 DECLARE_FLAG(bool, trace_service_pause_events);
 
 class MessageHandlerTask : public ThreadPool::Task {
diff --git a/runtime/vm/method_recognizer.h b/runtime/vm/method_recognizer.h
index f4d6b06..7efa6e7 100644
--- a/runtime/vm/method_recognizer.h
+++ b/runtime/vm/method_recognizer.h
@@ -43,22 +43,10 @@
   V(_IntegerImplementation, toDouble, IntegerToDouble, 150718448)              \
   V(_IntegerImplementation, _leftShiftWithMask32,                              \
       IntegerLeftShiftWithMask32, 1634465017)                                  \
-  V(_Double, truncateToDouble, DoubleTruncate, 791143891)                      \
-  V(_Double, roundToDouble, DoubleRound, 797558034)                            \
-  V(_Double, floorToDouble, DoubleFloor, 1789426271)                           \
-  V(_Double, ceilToDouble, DoubleCeil, 453271198)                              \
-  V(_Double, _modulo, DoubleMod, 1093862165)                                   \
   V(_Double, _add, DoubleAdd, 1190606283)                                      \
   V(_Double, _sub, DoubleSub, 1086286468)                                      \
   V(_Double, _mul, DoubleMul, 166332351)                                       \
   V(_Double, _div, DoubleDiv, 821396195)                                       \
-  V(::, sin, MathSin, 939048573)                                               \
-  V(::, cos, MathCos, 1148850331)                                              \
-  V(::, tan, MathTan, 179725235)                                               \
-  V(::, asin, MathAsin, 848695059)                                             \
-  V(::, acos, MathAcos, 337299516)                                             \
-  V(::, atan, MathAtan, 866406810)                                             \
-  V(::, atan2, MathAtan2, 1901969510)                                          \
   V(::, min, MathMin, 1115051548)                                              \
   V(::, max, MathMax, 1410473322)                                              \
   V(::, _doublePow, MathDoublePow, 562154128)                                  \
@@ -243,6 +231,14 @@
   V(::, sqrt, MathSqrt, 1446681622)                                            \
   V(_Random, _nextState, Random_nextState, 1241583299)                         \
 
+#define GRAPH_MATH_LIB_INTRINSIC_LIST(V)                                       \
+  V(::, sin, MathSin, 939048573)                                               \
+  V(::, cos, MathCos, 1148850331)                                              \
+  V(::, tan, MathTan, 179725235)                                               \
+  V(::, asin, MathAsin, 848695059)                                             \
+  V(::, acos, MathAcos, 337299516)                                             \
+  V(::, atan, MathAtan, 866406810)                                             \
+  V(::, atan2, MathAtan2, 1901969510)                                          \
 
 #define TYPED_DATA_LIB_INTRINSIC_LIST(V)                                       \
   V(Int8List, ., TypedData_Int8Array_factory, 779569635)                       \
@@ -290,11 +286,18 @@
   V(_GrowableList, [], GrowableArrayGetIndexed, 1957529650)                    \
   V(_GrowableList, []=, GrowableArraySetIndexed, 225246870)                    \
   V(_StringBase, get:length, StringBaseLength, 707533587)                      \
-  V(_Double, unary-, DoubleFlipSignBit, 1783281169)
+  V(_Double, unary-, DoubleFlipSignBit, 1783281169)                            \
+  V(_Double, truncateToDouble, DoubleTruncate, 791143891)                      \
+  V(_Double, roundToDouble, DoubleRound, 797558034)                            \
+  V(_Double, floorToDouble, DoubleFloor, 1789426271)                           \
+  V(_Double, ceilToDouble, DoubleCeil, 453271198)                              \
+  V(_Double, _modulo, DoubleMod, 1093862165)
+
 
 #define GRAPH_INTRINSICS_LIST(V)                                               \
   GRAPH_CORE_INTRINSICS_LIST(V)                                                \
   GRAPH_TYPED_DATA_INTRINSICS_LIST(V)                                          \
+  GRAPH_MATH_LIB_INTRINSIC_LIST(V)                                             \
 
 #define DEVELOPER_LIB_INTRINSIC_LIST(V)                                        \
   V(_UserTag, makeCurrent, UserTag_makeCurrent, 187721469)                     \
@@ -423,6 +426,30 @@
   V(_Bigint, _sqrAdd, Bigint_sqrAdd, 372896038)                                \
   V(_Bigint, _estQuotientDigit, Bigint_estQuotientDigit, 540033329)            \
   V(_Montgomery, _mulMod, Montgomery_mulMod, 118781828)                        \
+  V(_Double, >, Double_greaterThan, 1413076759)                                \
+  V(_Double, >=, Double_greaterEqualThan, 1815180096)                          \
+  V(_Double, <, Double_lessThan, 652059836)                                    \
+  V(_Double, <=, Double_lessEqualThan, 512138528)                              \
+  V(_Double, ==, Double_equal, 752327620)                                      \
+  V(_Double, +, Double_add, 854024064)                                         \
+  V(_Double, -, Double_sub, 685132889)                                         \
+  V(_Double, *, Double_mul, 542254390)                                         \
+  V(_Double, /, Double_div, 1145710768)                                        \
+  V(_IntegerImplementation, +, Integer_add, 364498398)                         \
+  V(_IntegerImplementation, -, Integer_sub, 1682674911)                        \
+  V(_IntegerImplementation, *, Integer_mul, 1651115456)                        \
+  V(_IntegerImplementation, ~/, Integer_truncDivide, 108494012)                \
+  V(_IntegerImplementation, unary-, Integer_negate, 1507648892)                \
+  V(_IntegerImplementation, &, Integer_bitAnd, 286231290)                      \
+  V(_IntegerImplementation, |, Integer_bitOr, 1111108792)                      \
+  V(_IntegerImplementation, ^, Integer_bitXor, 1884808537)                     \
+  V(_IntegerImplementation, >, Integer_greaterThan, 293890061)                 \
+  V(_IntegerImplementation, ==, Integer_equal, 4489308)                        \
+  V(_IntegerImplementation, <, Integer_lessThan, 652059836)                    \
+  V(_IntegerImplementation, <=, Integer_lessEqualThan, 512138528)              \
+  V(_IntegerImplementation, >=, Integer_greaterEqualThan, 1815180096)          \
+  V(_IntegerImplementation, <<, Integer_shl, 293751452)                        \
+  V(_IntegerImplementation, >>, Integer_sar, 125091101)                        \
 
 // A list of core functions that internally dispatch based on received id.
 #define POLYMORPHIC_TARGET_LIST(V)                                             \
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 8922db4..894452d 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -908,22 +908,14 @@
 // premark all objects in the vm_isolate_ heap.
 class PremarkingVisitor : public ObjectVisitor {
  public:
-  explicit PremarkingVisitor(Isolate* isolate) : ObjectVisitor(isolate) {}
+  PremarkingVisitor() { }
 
   void VisitObject(RawObject* obj) {
     // Free list elements should never be marked.
+    ASSERT(!obj->IsMarked());
     if (!obj->IsFreeListElement()) {
       ASSERT(obj->IsVMHeapObject());
-      if (obj->IsMarked()) {
-        // Precompiled objects are loaded pre-marked.
-        ASSERT(Dart::IsRunningPrecompiledCode());
-        ASSERT(obj->IsInstructions() ||
-               obj->IsPcDescriptors() ||
-               obj->IsStackmap() ||
-               obj->IsOneByteString());
-      } else {
-        obj->SetMarkBitUnsynchronized();
-      }
+      obj->SetMarkBitUnsynchronized();
     }
   }
 };
@@ -994,11 +986,10 @@
 
   {
     ASSERT(isolate == Dart::vm_isolate());
-    bool include_code_pages = !Dart::IsRunningPrecompiledCode();
-    WritableVMIsolateScope scope(Thread::Current(), include_code_pages);
-    PremarkingVisitor premarker(isolate);
+    WritableVMIsolateScope scope(Thread::Current());
+    PremarkingVisitor premarker;
     ASSERT(isolate->heap()->UsedInWords(Heap::kNew) == 0);
-    isolate->heap()->IterateOldObjects(&premarker);
+    isolate->heap()->IterateOldObjectsNoEmbedderPages(&premarker);
     // Make the VM isolate read-only again after setting all objects as marked.
   }
 }
@@ -2733,9 +2724,7 @@
     }
   }
 
-  virtual void IncrementInvalidationGen() {
-    Isolate::Current()->IncrCHAInvalidationGen();
-  }
+  virtual void IncrementInvalidationGen() {}
 
  private:
   const Class& cls_;
@@ -2982,6 +2971,9 @@
   if (is_finalized()) {
     return Error::null();
   }
+  if (Compiler::IsBackgroundCompilation()) {
+    Compiler::AbortBackgroundCompilation(Thread::kNoDeoptId);
+  }
   ASSERT(thread->IsMutatorThread());
   ASSERT(thread != NULL);
   const Error& error = Error::Handle(
@@ -3339,6 +3331,10 @@
   const Script& scr = Script::Handle(script());
   ASSERT(!scr.IsNull());
   const TokenStream& tkns = TokenStream::Handle(scr.tokens());
+  if (tkns.IsNull()) {
+    ASSERT(Dart::IsRunningPrecompiledCode());
+    return TokenPosition::kNoSource;
+  }
   TokenStream::Iterator tkit(tkns,
                              token_pos(),
                              TokenStream::Iterator::kNoNewlines);
@@ -5171,6 +5167,11 @@
 }
 
 
+intptr_t Function::Hash() const {
+  return String::HashRawSymbol(name());
+}
+
+
 bool Function::HasBreakpoint() const {
   if (!FLAG_support_debugger) {
     return false;
@@ -9493,11 +9494,21 @@
 
 
 // Lookup a name in the library's re-export namespace.
+// This lookup can occur from two different threads: background compiler and
+// mutator thread.
 RawObject* Library::LookupReExport(const String& name) const {
   if (HasExports()) {
-    const Array& exports = Array::Handle(this->exports());
-    // Break potential export cycle while looking up name.
-    StorePointer(&raw_ptr()->exports_, Object::empty_array().raw());
+    const bool is_background_compiler = Compiler::IsBackgroundCompilation();
+    Array& exports = Array::Handle();
+    if (is_background_compiler) {
+      exports = this->exports2();
+      // Break potential export cycle while looking up name.
+      StorePointer(&raw_ptr()->exports2_, Object::empty_array().raw());
+    } else {
+      exports = this->exports();
+      // Break potential export cycle while looking up name.
+      StorePointer(&raw_ptr()->exports_, Object::empty_array().raw());
+    }
     Namespace& ns = Namespace::Handle();
     Object& obj = Object::Handle();
     for (int i = 0; i < exports.Length(); i++) {
@@ -9513,7 +9524,11 @@
         }
       }
     }
-    StorePointer(&raw_ptr()->exports_, exports.raw());
+    if (is_background_compiler) {
+      StorePointer(&raw_ptr()->exports2_, exports.raw());
+    } else {
+      StorePointer(&raw_ptr()->exports_, exports.raw());
+    }
     return obj.raw();
   }
   return Object::null();
@@ -9960,6 +9975,7 @@
 void Library::DropDependencies() const {
   StorePointer(&raw_ptr()->imports_, Array::null());
   StorePointer(&raw_ptr()->exports_, Array::null());
+  StorePointer(&raw_ptr()->exports2_, Array::null());
 }
 
 
@@ -9992,6 +10008,7 @@
   intptr_t num_exports = exports.Length();
   exports = Array::Grow(exports, num_exports + 1);
   StorePointer(&raw_ptr()->exports_, exports.raw());
+  StorePointer(&raw_ptr()->exports2_, exports.raw());
   exports.SetAt(num_exports, ns);
 }
 
@@ -10059,6 +10076,8 @@
                                                Heap::kOld));
   result.StorePointer(&result.raw_ptr()->imports_, Object::empty_array().raw());
   result.StorePointer(&result.raw_ptr()->exports_, Object::empty_array().raw());
+  result.StorePointer(&result.raw_ptr()->exports2_,
+      Object::empty_array().raw());
   result.StorePointer(&result.raw_ptr()->loaded_scripts_, Array::null());
   result.StorePointer(&result.raw_ptr()->load_error_, Instance::null());
   result.set_native_entry_resolver(NULL);
@@ -10599,9 +10618,7 @@
     }
   }
 
-  virtual void IncrementInvalidationGen() {
-    Isolate::Current()->IncrPrefixInvalidationGen();
-  }
+  virtual void IncrementInvalidationGen() {}
 
  private:
   const LibraryPrefix& prefix_;
@@ -10800,6 +10817,15 @@
   if (obj.IsNull() || obj.IsLibraryPrefix()) {
     // Lookup in the re-exported symbols.
     obj = lib.LookupReExport(name);
+    if (obj.IsNull() && !Field::IsSetterName(name)) {
+      // LookupReExport() only returns objects that match the given name.
+      // If there is no field/func/getter, try finding a setter.
+      const String& setter_name =
+          String::Handle(Field::LookupSetterSymbol(name));
+      if (!setter_name.IsNull()) {
+        obj = lib.LookupReExport(setter_name);
+      }
+    }
   }
   if (obj.IsNull() || HidesName(name) || obj.IsLibraryPrefix()) {
     return Object::null();
@@ -12954,6 +12980,26 @@
 }
 
 
+uword Code::EntryPoint() const {
+  RawObject* instr = instructions();
+  if (!instr->IsHeapObject()) {
+    return active_entry_point();
+  } else {
+    return Instructions::EntryPoint(instructions());
+  }
+}
+
+
+intptr_t Code::Size() const {
+  RawObject* instr = instructions();
+  if (!instr->IsHeapObject()) {
+    return Smi::Value(raw_ptr()->precompiled_instructions_size_);
+  } else {
+    return instructions()->ptr()->size_;
+  }
+}
+
+
 bool Code::HasBreakpoint() const {
   if (!FLAG_support_debugger) {
     return false;
@@ -13299,10 +13345,13 @@
     }
 
     // Hook up Code and Instructions objects.
-    code.SetActiveInstructions(instrs.raw());
     code.set_instructions(instrs.raw());
+    code.SetActiveInstructions(instrs.raw());
     code.set_is_alive(true);
 
+    ASSERT(code.EntryPoint() == instrs.EntryPoint());
+    ASSERT(code.Size() == instrs.size());
+
     // Set object pool in Instructions object.
     INC_STAT(Thread::Current(),
              total_code_size, object_pool.Length() * sizeof(uintptr_t));
@@ -13500,9 +13549,10 @@
 void Code::DisableDartCode() const {
   DEBUG_ASSERT(IsMutatorOrAtSafepoint());
   ASSERT(IsFunctionCode());
-  ASSERT(instructions() == active_instructions());
+  ASSERT(!IsDisabled());
   const Code& new_code =
       Code::Handle(StubCode::FixCallersTarget_entry()->code());
+  ASSERT(new_code.instructions()->IsVMHeapObject());
   SetActiveInstructions(new_code.instructions());
 }
 
@@ -13510,9 +13560,10 @@
 void Code::DisableStubCode() const {
   ASSERT(Thread::Current()->IsMutatorThread());
   ASSERT(IsAllocationStubCode());
-  ASSERT(instructions() == active_instructions());
+  ASSERT(!IsDisabled());
   const Code& new_code =
       Code::Handle(StubCode::FixAllocationStubTarget_entry()->code());
+  ASSERT(new_code.instructions()->IsVMHeapObject());
   SetActiveInstructions(new_code.instructions());
 }
 
@@ -13521,7 +13572,6 @@
   DEBUG_ASSERT(IsMutatorOrAtSafepoint() || !is_alive());
   // RawInstructions are never allocated in New space and hence a
   // store buffer update is not needed here.
-  StorePointer(&raw_ptr()->active_instructions_, instructions);
   StoreNonPointer(&raw_ptr()->entry_point_,
                   reinterpret_cast<uword>(instructions->ptr()) +
                   Instructions::HeaderSize());
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 1ed09f7..8a818f6 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -2249,6 +2249,8 @@
     return OFFSET_OF(RawFunction, entry_point_);
   }
 
+  virtual intptr_t Hash() const;
+
   // Returns true if there is at least one debugger breakpoint
   // set in this function.
   bool HasBreakpoint() const;
@@ -3552,6 +3554,7 @@
   // Library imports.
   RawArray* imports() const { return raw_ptr()->imports_; }
   RawArray* exports() const { return raw_ptr()->exports_; }
+  RawArray* exports2() const { return raw_ptr()->exports2_; }
   void AddImport(const Namespace& ns) const;
   intptr_t num_imports() const { return raw_ptr()->num_imports_; }
   RawNamespace* ImportAt(intptr_t index) const;
@@ -3856,7 +3859,10 @@
   intptr_t size() const { return raw_ptr()->size_; }  // Excludes HeaderSize().
 
   uword EntryPoint() const {
-    return reinterpret_cast<uword>(raw_ptr()) + HeaderSize();
+    return EntryPoint(raw());
+  }
+  static uword EntryPoint(RawInstructions* instr) {
+    return reinterpret_cast<uword>(instr->ptr()) + HeaderSize();
   }
 
   static const intptr_t kMaxElements = (kMaxInt32 -
@@ -4323,9 +4329,7 @@
 
 class Code : public Object {
  public:
-  RawInstructions* active_instructions() const {
-    return raw_ptr()->active_instructions_;
-  }
+  uword active_entry_point() const { return raw_ptr()->entry_point_; }
 
   RawInstructions* instructions() const { return raw_ptr()->instructions_; }
 
@@ -4355,20 +4359,15 @@
   }
   void set_is_alive(bool value) const;
 
-  uword EntryPoint() const {
-    return Instructions::Handle(instructions()).EntryPoint();
-  }
-  intptr_t Size() const {
-    const Instructions& instr = Instructions::Handle(instructions());
-    return instr.size();
-  }
+  uword EntryPoint() const;
+  intptr_t Size() const;
+
   RawObjectPool* GetObjectPool() const {
     return object_pool();
   }
   bool ContainsInstructionAt(uword addr) const {
-    const Instructions& instr = Instructions::Handle(instructions());
-    const uword offset = addr - instr.EntryPoint();
-    return offset < static_cast<uword>(instr.size());
+    const uword offset = addr - EntryPoint();
+    return offset < static_cast<uword>(Size());
   }
 
   // Returns true if there is a debugger breakpoint set in this code object.
@@ -4607,12 +4606,11 @@
   void Enable() const {
     if (!IsDisabled()) return;
     ASSERT(Thread::Current()->IsMutatorThread());
-    ASSERT(instructions() != active_instructions());
     SetActiveInstructions(instructions());
   }
 
   bool IsDisabled() const {
-    return instructions() != active_instructions();
+    return active_entry_point() != EntryPoint();
   }
 
  private:
@@ -4638,8 +4636,7 @@
 
   class SlowFindRawCodeVisitor : public FindObjectVisitor {
    public:
-    explicit SlowFindRawCodeVisitor(uword pc)
-        : FindObjectVisitor(Isolate::Current()), pc_(pc) { }
+    explicit SlowFindRawCodeVisitor(uword pc) : pc_(pc) { }
     virtual ~SlowFindRawCodeVisitor() { }
 
     // Check if object matches find condition.
diff --git a/runtime/vm/object_graph.cc b/runtime/vm/object_graph.cc
index 145b84e..bbecac7 100644
--- a/runtime/vm/object_graph.cc
+++ b/runtime/vm/object_graph.cc
@@ -138,7 +138,7 @@
 
 class Unmarker : public ObjectVisitor {
  public:
-  explicit Unmarker(Isolate* isolate) : ObjectVisitor(isolate) { }
+  Unmarker() { }
 
   void VisitObject(RawObject* obj) {
     if (obj->IsMarked()) {
@@ -147,7 +147,7 @@
   }
 
   static void UnmarkAll(Isolate* isolate) {
-    Unmarker unmarker(isolate);
+    Unmarker unmarker;
     isolate->heap()->IterateObjects(&unmarker);
   }
 
@@ -192,10 +192,8 @@
 
 class InstanceAccumulator : public ObjectVisitor {
  public:
-  explicit InstanceAccumulator(ObjectGraph::Stack* stack,
-                               intptr_t class_id,
-                               Isolate* isolate)
-    : ObjectVisitor(isolate), stack_(stack), class_id_(class_id) { }
+  InstanceAccumulator(ObjectGraph::Stack* stack, intptr_t class_id)
+      : stack_(stack), class_id_(class_id) { }
 
   void VisitObject(RawObject* obj) {
     if (obj->GetClassId() == class_id_) {
@@ -217,7 +215,7 @@
   NoSafepointScope no_safepoint_scope_;
   Stack stack(isolate());
 
-  InstanceAccumulator accumulator(&stack, class_id, isolate());
+  InstanceAccumulator accumulator(&stack, class_id);
   isolate()->heap()->IterateObjects(&accumulator);
 
   stack.TraverseGraph(visitor);
@@ -376,7 +374,7 @@
                            RawObject* target,
                            const Array& references,
                            Object* scratch)
-    : ObjectVisitor(isolate), ObjectPointerVisitor(isolate), source_(NULL),
+    : ObjectPointerVisitor(isolate), source_(NULL),
       target_(target), references_(references), scratch_(scratch), length_(0) {
     ASSERT(Thread::Current()->no_safepoint_scope_depth() != 0);
   }
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index e793b9b..b1243e9 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -4121,7 +4121,7 @@
 class ObjectAccumulator : public ObjectVisitor {
  public:
   explicit ObjectAccumulator(GrowableArray<Object*>* objects)
-      : ObjectVisitor(Isolate::Current()), objects_(objects) {}
+      : objects_(objects) { }
   virtual ~ObjectAccumulator() { }
   virtual void VisitObject(RawObject* obj) {
     // Free-list elements cannot even be wrapped in handles.
diff --git a/runtime/vm/pages.cc b/runtime/vm/pages.cc
index 177b091..05e01fb 100644
--- a/runtime/vm/pages.cc
+++ b/runtime/vm/pages.cc
@@ -611,6 +611,15 @@
 }
 
 
+void PageSpace::VisitObjectsNoEmbedderPages(ObjectVisitor* visitor) const {
+  for (ExclusivePageIterator it(this); !it.Done(); it.Advance()) {
+    if (!it.page()->embedder_allocated()) {
+      it.page()->VisitObjects(visitor);
+    }
+  }
+}
+
+
 void PageSpace::VisitObjectPointers(ObjectPointerVisitor* visitor) const {
   for (ExclusivePageIterator it(this); !it.Done(); it.Advance()) {
     it.page()->VisitObjectPointers(visitor);
@@ -652,15 +661,13 @@
 }
 
 
-void PageSpace::WriteProtect(bool read_only, bool include_code_pages) {
+void PageSpace::WriteProtect(bool read_only) {
   if (read_only) {
     // Avoid MakeIterable trying to write to the heap.
     AbandonBumpAllocation();
   }
   for (ExclusivePageIterator it(this); !it.Done(); it.Advance()) {
-    HeapPage::PageType page_type = it.page()->type();
-    if ((page_type != HeapPage::kReadOnlyData) &&
-        ((page_type != HeapPage::kExecutable) || include_code_pages)) {
+    if (!it.page()->embedder_allocated()) {
       it.page()->WriteProtect(read_only);
     }
   }
@@ -698,8 +705,7 @@
 
 class HeapMapAsJSONVisitor : public ObjectVisitor {
  public:
-  explicit HeapMapAsJSONVisitor(JSONArray* array)
-      : ObjectVisitor(NULL), array_(array) {}
+  explicit HeapMapAsJSONVisitor(JSONArray* array) : array_(array) { }
   virtual void VisitObject(RawObject* obj) {
     array_->AddValue(obj->Size() / kObjectAlignment);
     array_->AddValue(obj->GetClassId());
diff --git a/runtime/vm/pages.h b/runtime/vm/pages.h
index bd4ab5c..ff1ca15 100644
--- a/runtime/vm/pages.h
+++ b/runtime/vm/pages.h
@@ -52,6 +52,8 @@
     return type_;
   }
 
+  bool embedder_allocated() const { return memory_->embedder_allocated(); }
+
   void VisitObjects(ObjectVisitor* visitor) const;
   void VisitObjectPointers(ObjectPointerVisitor* visitor) const;
 
@@ -254,6 +256,7 @@
   }
 
   void VisitObjects(ObjectVisitor* visitor) const;
+  void VisitObjectsNoEmbedderPages(ObjectVisitor* visitor) const;
   void VisitObjectPointers(ObjectPointerVisitor* visitor) const;
 
   RawObject* FindObject(FindObjectVisitor* visitor,
@@ -292,7 +295,7 @@
 
   // Note: Code pages are made executable/non-executable when 'read_only' is
   // true/false, respectively.
-  void WriteProtect(bool read_only, bool include_code_pages);
+  void WriteProtect(bool read_only);
   void WriteProtectCode(bool read_only);
 
   void AddGCTime(int64_t micros) {
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
index 315d5a1..3e89bad 100644
--- a/runtime/vm/parser.cc
+++ b/runtime/vm/parser.cc
@@ -491,6 +491,20 @@
 }
 
 
+// Set state and increments generational count so that thge background compiler
+// can detect if loading/top-level-parsing occured during compilation.
+class TopLevelParsingScope : public StackResource {
+ public:
+  explicit TopLevelParsingScope(Thread* thread) : StackResource(thread) {
+    isolate()->IncrTopLevelParsingCount();
+  }
+  ~TopLevelParsingScope() {
+    isolate()->DecrTopLevelParsingCount();
+    isolate()->IncrLoadingInvalidationGen();
+  }
+};
+
+
 void Parser::ParseCompilationUnit(const Library& library,
                                   const Script& script) {
   Thread* thread = Thread::Current();
@@ -507,6 +521,7 @@
   }
 #endif
 
+  TopLevelParsingScope scope(thread);
   Parser parser(script, library, TokenPosition::kMinSource);
   parser.ParseTopLevel();
 }
@@ -11860,7 +11875,6 @@
   }
   // Resolve type arguments, if any.
   const TypeArguments& arguments = TypeArguments::Handle(Z, type->arguments());
-      TypeArguments::Handle(Z, type->arguments());
   if (!arguments.IsNull()) {
     const intptr_t num_arguments = arguments.Length();
     for (intptr_t i = 0; i < num_arguments; i++) {
@@ -13050,12 +13064,20 @@
     factory_type_args = factory_type_args.Canonicalize();
     ArgumentListNode* factory_param = new(Z) ArgumentListNode(literal_pos);
     // The kv_pair array is temporary and of element type dynamic. It is passed
-    // to the factory to initialize a properly typed map.
-    ArrayNode* kv_pairs = new(Z) ArrayNode(
-        TokenPos(),
-        Type::ZoneHandle(Z, Type::ArrayType()),
-        kv_pairs_list);
-    factory_param->Add(kv_pairs);
+    // to the factory to initialize a properly typed map. Pass a pre-allocated
+    // array for the common empty map literal case.
+    if (kv_pairs_list.length() == 0) {
+      LiteralNode* empty_array_literal =
+          new(Z) LiteralNode(TokenPos(), Object::empty_array());
+      factory_param->Add(empty_array_literal);
+    } else {
+      ArrayNode* kv_pairs = new(Z) ArrayNode(
+          TokenPos(),
+          Type::ZoneHandle(Z, Type::ArrayType()),
+          kv_pairs_list);
+      factory_param->Add(kv_pairs);
+    }
+
     return CreateConstructorCallNode(literal_pos,
                                      factory_type_args,
                                      factory_method,
diff --git a/runtime/vm/port.cc b/runtime/vm/port.cc
index a57b93f..3df0a63 100644
--- a/runtime/vm/port.cc
+++ b/runtime/vm/port.cc
@@ -14,8 +14,6 @@
 
 namespace dart {
 
-DECLARE_FLAG(bool, trace_isolates);
-
 Mutex* PortMap::mutex_ = NULL;
 PortMap::Entry* PortMap::map_ = NULL;
 MessageHandler* PortMap::deleted_entry_ = reinterpret_cast<MessageHandler*>(1);
diff --git a/runtime/vm/precompiler.cc b/runtime/vm/precompiler.cc
index d357839..dcabc02 100644
--- a/runtime/vm/precompiler.cc
+++ b/runtime/vm/precompiler.cc
@@ -282,6 +282,14 @@
   }
 
   Dart_QualifiedFunctionName vm_entry_points[] = {
+    // TODO(rmacnak): These types are not allocated from C++ but they are
+    // cached in the object store. Consider clearing them from the object store
+    // before snapshotting and adjusting InitKnownObjects to allow their
+    // absence.
+    { "dart:async", "Future", "Future." },
+    { "dart:async", "Completer", "Completer." },
+    { "dart:async", "StreamIterator", "StreamIterator." },
+
     // Functions
     { "dart:async", "::", "_setScheduleImmediateClosure" },
     { "dart:core", "::", "_completeDeferredLoads" },
@@ -314,9 +322,11 @@
     { "dart:typed_data", "ByteData", "ByteData." },
     { "dart:typed_data", "ByteData", "ByteData._view" },
     { "dart:typed_data", "ByteBuffer", "ByteBuffer._New" },
+#if !defined(PRODUCT)
     { "dart:_vmservice", "::", "_registerIsolate" },
     { "dart:_vmservice", "::", "boot" },
     { "dart:developer", "Metrics", "_printMetrics" },
+#endif  // !PRODUCT
     // Fields
     { "dart:core", "Error", "_stackTrace" },
     { "dart:math", "_Random", "_state" },
diff --git a/runtime/vm/profiler.cc b/runtime/vm/profiler.cc
index f0014f4..e597260 100644
--- a/runtime/vm/profiler.cc
+++ b/runtime/vm/profiler.cc
@@ -27,8 +27,8 @@
 namespace dart {
 
 static const intptr_t kSampleSize = 8;
+static const intptr_t kMaxSamplesPerTick = 4;
 
-DECLARE_FLAG(bool, trace_profiler);
 DEFINE_FLAG(bool, trace_profiled_isolates, false, "Trace profiled isolates.");
 
 #if defined(TARGET_OS_ANDROID) || defined(TARGET_ARCH_ARM64) ||                \
@@ -39,7 +39,7 @@
   DEFINE_FLAG(int, profile_period, 1000,
               "Time between profiler samples in microseconds. Minimum 50.");
 #endif
-DEFINE_FLAG(int, max_profile_depth, kSampleSize,
+DEFINE_FLAG(int, max_profile_depth, kSampleSize * kMaxSamplesPerTick,
             "Maximum number stack frames walked. Minimum 1. Maximum 255.");
 #if defined(USING_SIMULATOR)
 DEFINE_FLAG(bool, profile_vm, true,
@@ -945,6 +945,32 @@
 }
 
 
+void Profiler::SampleThreadSingleFrame(Thread* thread, uintptr_t pc) {
+  ASSERT(thread != NULL);
+  OSThread* os_thread = thread->os_thread();
+  ASSERT(os_thread != NULL);
+  Isolate* isolate = thread->isolate();
+
+  SampleBuffer* sample_buffer = Profiler::sample_buffer();
+  if (sample_buffer == NULL) {
+    // Profiler not initialized.
+    return;
+  }
+
+  // Setup sample.
+  Sample* sample = SetupSample(thread, sample_buffer, os_thread->trace_id());
+  // Increment counter for vm tag.
+  VMTagCounters* counters = isolate->vm_tag_counters();
+  ASSERT(counters != NULL);
+  if (thread->IsMutatorThread()) {
+    counters->Increment(sample->vm_tag());
+  }
+
+  // Write the single pc value.
+  sample->SetAt(0, pc);
+}
+
+
 void Profiler::SampleThread(Thread* thread,
                             const InterruptedThreadState& state) {
   ASSERT(thread != NULL);
@@ -989,15 +1015,17 @@
     sp = state.csp;
   }
 
-  if (!InitialRegisterCheck(pc, fp, sp)) {
-    return;
-  }
-
   if (!CheckIsolate(isolate)) {
     return;
   }
 
   if (thread->IsMutatorThread() && isolate->IsDeoptimizing()) {
+    SampleThreadSingleFrame(thread, pc);
+    return;
+  }
+
+  if (!InitialRegisterCheck(pc, fp, sp)) {
+    SampleThreadSingleFrame(thread, pc);
     return;
   }
 
@@ -1009,6 +1037,7 @@
                                         &stack_lower,
                                         &stack_upper)) {
     // Could not get stack boundary.
+    SampleThreadSingleFrame(thread, pc);
     return;
   }
 
@@ -1096,9 +1125,7 @@
 
 class CodeLookupTableBuilder : public ObjectVisitor {
  public:
-  CodeLookupTableBuilder(Isolate* isolate, CodeLookupTable* table)
-      : ObjectVisitor(isolate),
-        table_(table) {
+  explicit CodeLookupTableBuilder(CodeLookupTable* table) : table_(table) {
     ASSERT(table_ != NULL);
   }
 
@@ -1134,7 +1161,7 @@
   code_objects_.Clear();
 
   // Add all found Code objects.
-  CodeLookupTableBuilder cltb(isolate, this);
+  CodeLookupTableBuilder cltb(this);
   vm_isolate->heap()->IterateOldObjects(&cltb);
   isolate->heap()->IterateOldObjects(&cltb);
 
diff --git a/runtime/vm/profiler.h b/runtime/vm/profiler.h
index 1f65c91..096d429 100644
--- a/runtime/vm/profiler.h
+++ b/runtime/vm/profiler.h
@@ -53,6 +53,8 @@
                            const InterruptedThreadState& state);
 
  private:
+  // Does not walk the thread's stack.
+  static void SampleThreadSingleFrame(Thread* thread, uintptr_t pc);
   static bool initialized_;
 
   static SampleBuffer* sample_buffer_;
diff --git a/runtime/vm/profiler_service.cc b/runtime/vm/profiler_service.cc
index 09d4d43..c0ac69d 100644
--- a/runtime/vm/profiler_service.cc
+++ b/runtime/vm/profiler_service.cc
@@ -5,6 +5,7 @@
 #include "vm/profiler_service.h"
 
 #include "vm/growable_array.h"
+#include "vm/hash_map.h"
 #include "vm/log.h"
 #include "vm/native_symbol.h"
 #include "vm/object.h"
@@ -17,8 +18,7 @@
 
 DECLARE_FLAG(int, max_profile_depth);
 DECLARE_FLAG(int, profile_period);
-
-DEFINE_FLAG(bool, trace_profiler, false, "Trace profiler.");
+DECLARE_FLAG(bool, show_invisible_frames);
 
 #ifndef PRODUCT
 
@@ -137,6 +137,15 @@
 }
 
 
+bool ProfileFunction::is_visible() const {
+  if (function_.IsNull()) {
+    // Some synthetic function.
+    return true;
+  }
+  return FLAG_show_invisible_frames || function_.is_visible();
+}
+
+
 void ProfileFunction::Tick(bool exclusive,
                            intptr_t inclusive_serial,
                            TokenPosition token_position) {
@@ -161,7 +170,7 @@
   for (; i < source_position_ticks_.length(); i++) {
     ProfileFunctionSourcePosition& position = source_position_ticks_[i];
     if (position.token_pos().value() == token_position.value()) {
-      if (FLAG_trace_profiler) {
+      if (FLAG_trace_profiler_verbose) {
         OS::Print("Ticking source position %s %s\n",
                   exclusive ? "exclusive" : "inclusive",
                   token_position.ToCString());
@@ -177,7 +186,7 @@
 
   // Add new one, sorted by token position value.
   ProfileFunctionSourcePosition pfsp(token_position);
-  if (FLAG_trace_profiler) {
+  if (FLAG_trace_profiler_verbose) {
     OS::Print("Ticking source position %s %s\n",
               exclusive ? "exclusive" : "inclusive",
               token_position.ToCString());
@@ -515,8 +524,8 @@
  public:
   ProfileFunctionTable()
       : null_function_(Function::ZoneHandle()),
-        table_(8),
-        unknown_function_(NULL) {
+        unknown_function_(NULL),
+        table_(8) {
     unknown_function_ = Add(ProfileFunction::kUnknownFunction,
                             "<unknown Dart function>");
   }
@@ -530,15 +539,9 @@
     return Add(function);
   }
 
-  intptr_t LookupIndex(const Function& function) {
+  ProfileFunction* Lookup(const Function& function) {
     ASSERT(!function.IsNull());
-    for (intptr_t i = 0; i < table_.length(); i++) {
-      ProfileFunction* profile_function = table_[i];
-      if (profile_function->function() == function.raw()) {
-        return i;
-      }
-    }
-    return -1;
+    return function_hash_.Lookup(&function);
   }
 
   ProfileFunction* GetUnknown() {
@@ -595,21 +598,37 @@
                             function,
                             table_.length());
     table_.Add(profile_function);
+    function_hash_.Insert(profile_function);
     return profile_function;
   }
 
-  ProfileFunction* Lookup(const Function& function) {
-    ASSERT(!function.IsNull());
-    intptr_t index = LookupIndex(function);
-    if (index == -1) {
-      return NULL;
+  // Needed for DirectChainedHashMap.
+  struct ProfileFunctionTableTrait {
+    typedef ProfileFunction* Value;
+    typedef const Function* Key;
+    typedef ProfileFunction* Pair;
+
+    static Key KeyOf(Pair kv) {
+      return kv->function();
     }
-    return table_[index];
-  }
+
+    static Value ValueOf(Pair kv) {
+      return kv;
+    }
+
+    static inline intptr_t Hashcode(Key key) {
+      return key->Hash();
+    }
+
+    static inline bool IsKeyEqual(Pair kv, Key key) {
+      return kv->function()->raw() == key->raw();
+    }
+  };
 
   const Function& null_function_;
-  ZoneGrowableArray<ProfileFunction*> table_;
   ProfileFunction* unknown_function_;
+  ZoneGrowableArray<ProfileFunction*> table_;
+  DirectChainedHashMap<ProfileFunctionTableTrait> function_hash_;
 };
 
 
@@ -1046,6 +1065,160 @@
 };
 
 
+class ProfileCodeInlinedFunctionsCache : public ValueObject {
+ public:
+  ProfileCodeInlinedFunctionsCache()
+      : cache_cursor_(0),
+        last_hit_(0) {
+    for (intptr_t i = 0; i < kCacheSize; i++) {
+      cache_[i].Reset();
+    }
+    cache_hit_ = 0;
+    cache_miss_ = 0;
+  }
+
+  ~ProfileCodeInlinedFunctionsCache() {
+    if (FLAG_trace_profiler) {
+      intptr_t total = cache_hit_ + cache_miss_;
+      OS::Print("LOOKUPS: %" Pd " HITS: %" Pd " MISSES: %" Pd "\n",
+                total,
+                cache_hit_,
+                cache_miss_);
+    }
+  }
+
+  void Get(uword pc,
+           const Code& code,
+           ProcessedSample* sample,
+           intptr_t frame_index,
+           // Outputs:
+           GrowableArray<Function*>** inlined_functions,
+           GrowableArray<TokenPosition>** inlined_token_positions,
+           TokenPosition* token_position) {
+    const intptr_t offset = OffsetForPC(pc, code, sample, frame_index);
+    if (FindInCache(pc,
+                    offset,
+                    inlined_functions,
+                    inlined_token_positions,
+                    token_position)) {
+      // Found in cache.
+      return;
+    }
+    Add(pc, code, sample, frame_index,
+        inlined_functions, inlined_token_positions, token_position);
+  }
+
+ private:
+  bool FindInCache(uword pc,
+                   intptr_t offset,
+                   GrowableArray<Function*>** inlined_functions,
+                   GrowableArray<TokenPosition>** inlined_token_positions,
+                   TokenPosition* token_position) {
+    // Simple linear scan.
+    for (intptr_t i = 0; i < kCacheSize; i++) {
+      intptr_t index = (last_hit_ + i) % kCacheSize;
+      if ((cache_[index].pc == pc) && (cache_[index].offset == offset)) {
+        // Hit.
+        if (cache_[index].inlined_functions.length() == 0) {
+          *inlined_functions = NULL;
+          *inlined_token_positions = NULL;
+        } else {
+          *inlined_functions = &cache_[index].inlined_functions;
+          *inlined_token_positions = &cache_[index].inlined_token_positions;
+        }
+        *token_position = cache_[index].token_position;
+        cache_hit_++;
+        last_hit_ = index;
+        return true;
+      }
+    }
+    cache_miss_++;
+    return false;
+  }
+
+  // Add to cache and fill in outputs.
+  void Add(uword pc,
+           const Code& code,
+           ProcessedSample* sample,
+           intptr_t frame_index,
+           // Outputs:
+           GrowableArray<Function*>** inlined_functions,
+           GrowableArray<TokenPosition>** inlined_token_positions,
+           TokenPosition* token_position) {
+    const intptr_t offset = OffsetForPC(pc, code, sample, frame_index);
+    CacheEntry* cache_entry = &cache_[NextFreeIndex()];
+    cache_entry->pc = pc;
+    cache_entry->offset = offset;
+    code.GetInlinedFunctionsAt(offset,
+                               &(cache_entry->inlined_functions),
+                               &(cache_entry->inlined_token_positions));
+    cache_entry->token_position = code.GetTokenPositionAt(offset);
+    *token_position = (cache_entry->token_position);
+    if (cache_entry->inlined_functions.length() == 0) {
+      *inlined_functions = NULL;
+      *inlined_token_positions = NULL;
+      return;
+    }
+    // The inlined token position table does not include the token position
+    // of the final call. Insert it at the beginning because the table.
+    // is reversed.
+    cache_entry->inlined_token_positions.InsertAt(
+        0,
+        cache_entry->token_position);
+
+    // Write outputs.
+    *inlined_functions = &(cache_entry->inlined_functions);
+    *inlined_token_positions = &(cache_entry->inlined_token_positions);
+  }
+
+  intptr_t NextFreeIndex() {
+    cache_cursor_ = (cache_cursor_ + 1) % kCacheSize;
+    return cache_cursor_;
+  }
+
+  intptr_t OffsetForPC(uword pc,
+                       const Code& code,
+                       ProcessedSample* sample,
+                       intptr_t frame_index) {
+    intptr_t offset = pc - code.EntryPoint();
+    if (frame_index != 0) {
+      // The PC of frames below the top frame is a call's return address,
+      // which can belong to a different inlining interval than the call.
+      offset--;
+    } else if (sample->IsAllocationSample()) {
+      // Allocation samples skip the top frame, so the top frame's pc is
+      // also a call's return address.
+      offset--;
+    } else if (!sample->first_frame_executing()) {
+      // If the first frame wasn't executing code (i.e. we started to collect
+      // the stack trace at an exit frame), the top frame's pc is also a
+      // call's return address.
+      offset--;
+    }
+    return offset;
+  }
+
+  struct CacheEntry {
+    void Reset() {
+      pc = 0;
+      offset = 0;
+    }
+    uword pc;
+    intptr_t offset;
+    GrowableArray<Function*> inlined_functions;
+    GrowableArray<TokenPosition> inlined_token_positions;
+    TokenPosition token_position;
+  };
+
+  static const intptr_t kCacheSize = 128;
+  intptr_t cache_cursor_;
+  intptr_t last_hit_;
+  CacheEntry cache_[kCacheSize];
+  intptr_t cache_miss_;
+  intptr_t cache_hit_;
+};
+
+
 class ProfileBuilder : public ValueObject {
  public:
   enum ProfileInfoKind {
@@ -1447,28 +1620,6 @@
     }
   }
 
-  intptr_t OffsetForPC(uword pc,
-                       const Code& code,
-                       ProcessedSample* sample,
-                       intptr_t frame_index) {
-    intptr_t offset = pc - code.EntryPoint();
-    if (frame_index != 0) {
-      // The PC of frames below the top frame is a call's return address,
-      // which can belong to a different inlining interval than the call.
-      offset--;
-    } else if (sample->IsAllocationSample()) {
-      // Allocation samples skip the top frame, so the top frame's pc is
-      // also a call's return address.
-      offset--;
-    } else if (!sample->first_frame_executing()) {
-      // If the first frame wasn't executing code (i.e. we started to collect
-      // the stack trace at an exit frame), the top frame's pc is also a
-      // call's return address.
-      offset--;
-    }
-    return offset;
-  }
-
   ProfileFunctionTrieNode* ProcessFrame(
       ProfileFunctionTrieNode* current,
       intptr_t sample_index,
@@ -1482,34 +1633,28 @@
     const intptr_t code_index = profile_code->code_table_index();
     ASSERT(profile_code != NULL);
     const Code& code = Code::ZoneHandle(profile_code->code());
-    GrowableArray<Function*> inlined_functions;
-    GrowableArray<TokenPosition> inlined_token_positions;
+    GrowableArray<Function*>* inlined_functions = NULL;
+    GrowableArray<TokenPosition>* inlined_token_positions = NULL;
     TokenPosition token_position = TokenPosition::kNoSource;
     if (!code.IsNull()) {
-      const intptr_t offset = OffsetForPC(pc, code, sample, frame_index);
-      code.GetInlinedFunctionsAt(offset,
-                                 &inlined_functions,
-                                 &inlined_token_positions);
-      token_position = code.GetTokenPositionAt(offset);
-      if (inlined_functions.length() > 0) {
-        // The inlined token position table does not include the token position
-        // of the final call. Insert it at the beginning because the table.
-        // is reversed.
-        inlined_token_positions.InsertAt(0, token_position);
-      }
-      ASSERT(inlined_functions.length() <= inlined_token_positions.length());
-      if (FLAG_trace_profiler) {
-        for (intptr_t i = 0; i < inlined_functions.length(); i++) {
+      inlined_functions_cache_.Get(pc, code, sample, frame_index,
+                                   &inlined_functions,
+                                   &inlined_token_positions,
+                                   &token_position);
+      if (FLAG_trace_profiler_verbose) {
+        for (intptr_t i = 0; i < inlined_functions->length(); i++) {
           const String& name =
-              String::Handle(inlined_functions[i]->QualifiedScrubbedName());
+              String::Handle((*inlined_functions)[i]->QualifiedScrubbedName());
           THR_Print("InlinedFunction[%" Pd "] = {%s, %s}\n",
                     i,
                     name.ToCString(),
-                    inlined_token_positions[i].ToCString());
+                    (*inlined_token_positions)[i].ToCString());
         }
       }
     }
-    if (code.IsNull() || (inlined_functions.length() == 0)) {
+    if (code.IsNull() ||
+        (inlined_functions == NULL) ||
+        (inlined_functions->length() == 0)) {
       // No inlined functions.
       if (inclusive_tree_) {
         current = AppendKind(code, current);
@@ -1530,12 +1675,12 @@
     ASSERT(code.is_optimized());
 
     if (inclusive_tree_) {
-      for (intptr_t i = inlined_functions.length() - 1; i >= 0; i--) {
-        Function* inlined_function = inlined_functions[i];
+      for (intptr_t i = inlined_functions->length() - 1; i >= 0; i--) {
+        Function* inlined_function = (*inlined_functions)[i];
         ASSERT(inlined_function != NULL);
         ASSERT(!inlined_function->IsNull());
-        TokenPosition inlined_token_position = inlined_token_positions[i];
-        const bool inliner = i == (inlined_functions.length() - 1);
+        TokenPosition inlined_token_position = (*inlined_token_positions)[i];
+        const bool inliner = i == (inlined_functions->length() - 1);
         if (inliner) {
           current = AppendKind(code, current);
         }
@@ -1554,12 +1699,12 @@
     } else {
       // Append the inlined children.
       current = AppendKind(kInlineFinish, current);
-      for (intptr_t i = 0; i < inlined_functions.length(); i++) {
-        Function* inlined_function = inlined_functions[i];
+      for (intptr_t i = 0; i < inlined_functions->length(); i++) {
+        Function* inlined_function = (*inlined_functions)[i];
         ASSERT(inlined_function != NULL);
         ASSERT(!inlined_function->IsNull());
-        TokenPosition inlined_token_position = inlined_token_positions[i];
-        const bool inliner = i == (inlined_functions.length() - 1);
+        TokenPosition inlined_token_position = (*inlined_token_positions)[i];
+        const bool inliner = i == (inlined_functions->length() - 1);
         if (inliner) {
           current = AppendKind(kInlineStart, current);
         }
@@ -1615,8 +1760,11 @@
                                            ProfileFunction* function,
                                            TokenPosition token_position,
                                            intptr_t code_index) {
+    if (!function->is_visible()) {
+      return current;
+    }
     if (tick_functions_) {
-      if (FLAG_trace_profiler) {
+      if (FLAG_trace_profiler_verbose) {
         THR_Print("S[%" Pd "]F[%" Pd "] %s %s 0x%" Px "\n",
                   sample_index,
                   frame_index,
@@ -2104,7 +2252,7 @@
   const Function& null_function_;
   bool tick_functions_;
   bool inclusive_tree_;
-
+  ProfileCodeInlinedFunctionsCache inlined_functions_cache_;
   ProcessedSampleBuffer* samples_;
   ProfileInfoKind info_kind_;
 };  // ProfileBuilder.
@@ -2259,11 +2407,7 @@
 
 
 ProfileFunction* Profile::FindFunction(const Function& function) {
-  const intptr_t index = functions_->LookupIndex(function);
-  if (index < 0) {
-    return NULL;
-  }
-  return functions_->At(index);
+  return functions_->Lookup(function);
 }
 
 
@@ -2395,7 +2539,7 @@
     return NULL;
   }
   ProfileFunction* func = profile_->GetFunction(current_->table_index());
-  const Function& function = Function::Handle(func->function());
+  const Function& function = *(func->function());
   if (function.IsNull()) {
     // No function.
     return NULL;
diff --git a/runtime/vm/profiler_service.h b/runtime/vm/profiler_service.h
index 4bd64da..0e0e6d3 100644
--- a/runtime/vm/profiler_service.h
+++ b/runtime/vm/profiler_service.h
@@ -73,10 +73,12 @@
 
   const char* Name() const;
 
-  RawFunction* function() const {
-    return function_.raw();
+  const Function* function() const {
+    return &function_;
   }
 
+  bool is_visible() const;
+
   intptr_t table_index() const {
     return table_index_;
   }
diff --git a/runtime/vm/raw_object.cc b/runtime/vm/raw_object.cc
index 437ab7e..98553cd 100644
--- a/runtime/vm/raw_object.cc
+++ b/runtime/vm/raw_object.cc
@@ -535,8 +535,11 @@
 
   RawCode* obj = raw_obj->ptr();
   intptr_t length = Code::PtrOffBits::decode(obj->state_bits_);
+#if defined(TARGET_ARCH_IA32)
+  // On IA32 only we embed pointers to objects directly in the generated
+  // instructions. The variable portion of a Code object describes where to
+  // find those pointers for tracing.
   if (Code::AliveBit::decode(obj->state_bits_)) {
-    // Also visit all the embedded pointers in the corresponding instructions.
     uword entry_point = reinterpret_cast<uword>(obj->instructions_->ptr()) +
         Instructions::HeaderSize();
     for (intptr_t i = 0; i < length; i++) {
@@ -546,6 +549,12 @@
     }
   }
   return Code::InstanceSize(length);
+#else
+  // On all other architectures, objects are referenced indirectly through
+  // either an ObjectPool or Thread.
+  ASSERT(length == 0);
+  return Code::InstanceSize(0);
+#endif
 }
 
 
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index 561011c..7c90991 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -1023,6 +1023,9 @@
   RawGrowableObjectArray* patch_classes_;
   RawArray* imports_;            // List of Namespaces imported without prefix.
   RawArray* exports_;            // List of re-exported Namespaces.
+  RawArray* exports2_;           // Copy of exports_, used by background
+                                 // compiler to detect cycles without colliding
+                                 // with mutator thread lookups.
   RawInstance* load_error_;      // Error iff load_state_ == kLoadError.
   RawObject** to_snapshot() {
     return reinterpret_cast<RawObject**>(&ptr()->load_error_);
@@ -1079,10 +1082,12 @@
   uword entry_point_;
 
   RawObject** from() {
-    return reinterpret_cast<RawObject**>(&ptr()->active_instructions_);
+    return reinterpret_cast<RawObject**>(&ptr()->instructions_);
   }
-  RawInstructions* active_instructions_;
-  RawInstructions* instructions_;
+  union {
+    RawInstructions* instructions_;
+    RawSmi* precompiled_instructions_size_;
+  };
   RawObjectPool* object_pool_;
   // If owner_ is Function::null() the owner is a regular stub.
   // If owner_ is a Class the owner is the allocation stub for that class.
diff --git a/runtime/vm/raw_object_snapshot.cc b/runtime/vm/raw_object_snapshot.cc
index 194317f..7c861e2 100644
--- a/runtime/vm/raw_object_snapshot.cc
+++ b/runtime/vm/raw_object_snapshot.cc
@@ -855,8 +855,6 @@
   if (reader->snapshot_code()) {
     field.set_token_pos(TokenPosition::kNoSource);
     ASSERT(!FLAG_use_field_guards);
-    field.set_guarded_cid(kDynamicCid);
-    field.set_is_nullable(true);
   } else {
     field.set_token_pos(
         TokenPosition::SnapshotDecode(reader->Read<int32_t>()));
@@ -873,8 +871,9 @@
                      field.raw()->from(), toobj,
                      kAsReference);
 
-  if (reader->snapshot_code()) {
-    ASSERT(!FLAG_use_field_guards);
+  if (!FLAG_use_field_guards) {
+    field.set_guarded_cid(kDynamicCid);
+    field.set_is_nullable(true);
     field.set_guarded_list_length(Field::kNoFixedLength);
     field.set_guarded_list_length_in_object_offset(Field::kUnknownLengthOffset);
   } else {
@@ -1339,6 +1338,19 @@
 }
 
 
+#if defined(DEBUG)
+static uword Checksum(uword entry, intptr_t size) {
+  uword sum = 0;
+  uword* start = reinterpret_cast<uword*>(entry);
+  uword* end = reinterpret_cast<uword*>(entry + size);
+  for (uword* cursor = start; cursor < end; cursor++) {
+    sum ^= *cursor;
+  }
+  return sum;
+}
+#endif
+
+
 RawCode* Code::ReadFrom(SnapshotReader* reader,
                         intptr_t object_id,
                         intptr_t tags,
@@ -1354,20 +1366,66 @@
   result.set_state_bits(reader->Read<int32_t>());
   result.set_lazy_deopt_pc_offset(-1);
 
-  // Set all the object fields.
-  READ_OBJECT_FIELDS(result,
-                     result.raw()->from(), result.raw()->to_snapshot(),
-                     kAsReference);
-  for (RawObject** ptr = result.raw()->to();
-       ptr > result.raw()->to_snapshot();
-       ptr--) {
-    result.StorePointer(ptr, Object::null());
-  }
+  int32_t text_offset = reader->Read<int32_t>();
+  int32_t instructions_size = reader->Read<int32_t>();
+  uword entry_point = reader->GetInstructionsAt(text_offset);
 
-  // Fix entry point.
-  uword new_entry = result.EntryPoint();
-  ASSERT(Dart::vm_isolate()->heap()->CodeContains(new_entry));
-  result.StoreNonPointer(&result.raw_ptr()->entry_point_, new_entry);
+#if defined(DEBUG)
+  uword expected_check = reader->Read<uword>();
+  uword actual_check = Checksum(entry_point, instructions_size);
+  ASSERT(expected_check == actual_check);
+#endif
+
+  result.StoreNonPointer(&result.raw_ptr()->entry_point_, entry_point);
+
+  result.StorePointer(reinterpret_cast<RawSmi*const*>(
+                          &result.raw_ptr()->instructions_),
+                      Smi::New(instructions_size));
+
+  (*reader->PassiveObjectHandle()) ^= reader->ReadObjectImpl(kAsReference);
+  result.StorePointer(reinterpret_cast<RawObject*const*>(
+                          &result.raw_ptr()->object_pool_),
+                      reader->PassiveObjectHandle()->raw());
+
+  (*reader->PassiveObjectHandle()) ^= reader->ReadObjectImpl(kAsReference);
+  result.StorePointer(&result.raw_ptr()->owner_,
+                      reader->PassiveObjectHandle()->raw());
+
+  (*reader->PassiveObjectHandle()) ^= reader->ReadObjectImpl(kAsReference);
+  result.StorePointer(reinterpret_cast<RawObject*const*>(
+                          &result.raw_ptr()->exception_handlers_),
+                      reader->PassiveObjectHandle()->raw());
+
+  (*reader->PassiveObjectHandle()) ^= reader->ReadObjectImpl(kAsReference);
+  result.StorePointer(reinterpret_cast<RawObject*const*>(
+                          &result.raw_ptr()->pc_descriptors_),
+                      reader->PassiveObjectHandle()->raw());
+
+  (*reader->PassiveObjectHandle()) ^= reader->ReadObjectImpl(kAsReference);
+  result.StorePointer(reinterpret_cast<RawObject*const*>(
+                          &result.raw_ptr()->code_source_map_),
+                      reader->PassiveObjectHandle()->raw());
+
+  (*reader->PassiveObjectHandle()) ^= reader->ReadObjectImpl(kAsReference);
+  result.StorePointer(reinterpret_cast<RawObject*const*>(
+                          &result.raw_ptr()->stackmaps_),
+                      reader->PassiveObjectHandle()->raw());
+
+  result.StorePointer(&result.raw_ptr()->deopt_info_array_,
+                      Array::null());
+  result.StorePointer(&result.raw_ptr()->static_calls_target_table_,
+                      Array::null());
+  result.StorePointer(&result.raw_ptr()->var_descriptors_,
+                      LocalVarDescriptors::null());
+  result.StorePointer(&result.raw_ptr()->inlined_metadata_,
+                      Array::null());
+  result.StorePointer(&result.raw_ptr()->comments_,
+                      Array::null());
+  result.StorePointer(&result.raw_ptr()->return_address_metadata_,
+                      Object::null());
+
+  ASSERT(result.Size() == instructions_size);
+  ASSERT(result.EntryPoint() == entry_point);
 
   return result.raw();
 }
@@ -1397,11 +1455,23 @@
   // Write out all the non object fields.
   writer->Write<int32_t>(ptr()->state_bits_);
 
-  // Write out all the object pointer fields.
-  SnapshotWriterVisitor visitor(writer, kAsReference);
-  visitor.VisitPointers(from(), to_snapshot());
+  RawInstructions* instr = ptr()->instructions_;
+  intptr_t size = instr->ptr()->size_;
+  int32_t text_offset = writer->GetInstructionsId(instr, this);
+  writer->Write<int32_t>(text_offset);
+  writer->Write<int32_t>(size);
+#if defined(DEBUG)
+  uword entry = ptr()->entry_point_;
+  uword check = Checksum(entry, size);
+  writer->Write<uword>(check);
+#endif
 
-  writer->SetInstructionsCode(ptr()->instructions_, this);
+  writer->WriteObjectImpl(ptr()->object_pool_, kAsReference);
+  writer->WriteObjectImpl(ptr()->owner_, kAsReference);
+  writer->WriteObjectImpl(ptr()->exception_handlers_, kAsReference);
+  writer->WriteObjectImpl(ptr()->pc_descriptors_, kAsReference);
+  writer->WriteObjectImpl(ptr()->code_source_map_, kAsReference);
+  writer->WriteObjectImpl(ptr()->stackmaps_, kAsReference);
 }
 
 
@@ -1410,21 +1480,8 @@
                                         intptr_t tags,
                                         Snapshot::Kind kind,
                                         bool as_reference) {
-  ASSERT(reader->snapshot_code());
-  ASSERT(kind == Snapshot::kFull);
-
-#ifdef DEBUG
-  intptr_t full_tags = static_cast<uword>(reader->Read<intptr_t>());
-#else
-  intptr_t full_tags = 0;  // unused in release mode
-#endif
-  intptr_t offset = reader->Read<int32_t>();
-  Instructions& result =
-      Instructions::ZoneHandle(reader->zone(),
-                               reader->GetInstructionsAt(offset, full_tags));
-  reader->AddBackRef(object_id, &result, kIsDeserialized);
-
-  return result.raw();
+  UNREACHABLE();
+  return Instructions::null();
 }
 
 
@@ -1432,24 +1489,7 @@
                               intptr_t object_id,
                               Snapshot::Kind kind,
                               bool as_reference) {
-  ASSERT(writer->snapshot_code());
-  ASSERT(kind == Snapshot::kFull);
-
-  writer->WriteInlinedObjectHeader(object_id);
-  writer->WriteVMIsolateObject(kInstructionsCid);
-  writer->WriteTags(writer->GetObjectTags(this));
-
-#ifdef DEBUG
-  // Instructions will be written pre-marked and in the VM heap. Write out
-  // the tags we expect to find when reading the snapshot for a sanity check
-  // that our offsets/alignment didn't get out of sync.
-  uword written_tags = writer->GetObjectTags(this);
-  written_tags = RawObject::VMHeapObjectTag::update(true, written_tags);
-  written_tags = RawObject::MarkBit::update(true, written_tags);
-  writer->Write<intptr_t>(written_tags);
-#endif
-
-  writer->Write<int32_t>(writer->GetInstructionsId(this));
+  UNREACHABLE();
 }
 
 
diff --git a/runtime/vm/scavenger_test.cc b/runtime/vm/scavenger_test.cc
index 1ab6bdf..9776cca 100644
--- a/runtime/vm/scavenger_test.cc
+++ b/runtime/vm/scavenger_test.cc
@@ -12,7 +12,7 @@
 // Expects to visit no objects (since the space should be empty).
 class FailingObjectVisitor : public ObjectVisitor {
  public:
-  FailingObjectVisitor() : ObjectVisitor(NULL) {}
+  FailingObjectVisitor() { }
   virtual void VisitObject(RawObject* obj) {
     EXPECT(false);
   }
@@ -30,7 +30,7 @@
 // Expects to visit no objects (since the space should be empty).
 class FailingFindObjectVisitor : public FindObjectVisitor {
  public:
-  FailingFindObjectVisitor() : FindObjectVisitor(NULL) {}
+  FailingFindObjectVisitor() { }
   virtual bool FindObject(RawObject* obj) const {
     EXPECT(false);
     return false;
diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc
index d346361..0caeb9c 100644
--- a/runtime/vm/service.cc
+++ b/runtime/vm/service.cc
@@ -2159,8 +2159,7 @@
   }
   js->PrintError(kInvalidParams,
                  "%s: invalid 'targetId' parameter: "
-                 "id '%s' does not correspond to a "
-                 "library, class, or instance", js->method(), target_id);
+                 "Cannot evaluate against a VM-internal object", js->method());
   return true;
 }
 
@@ -3404,8 +3403,7 @@
 
 class ContainsAddressVisitor : public FindObjectVisitor {
  public:
-  ContainsAddressVisitor(Isolate* isolate, uword addr)
-      : FindObjectVisitor(isolate), addr_(addr) { }
+  explicit ContainsAddressVisitor(uword addr) : addr_(addr) { }
   virtual ~ContainsAddressVisitor() { }
 
   virtual uword filter_addr() const { return addr_; }
@@ -3436,7 +3434,7 @@
   {
     NoSafepointScope no_safepoint;
     Isolate* isolate = thread->isolate();
-    ContainsAddressVisitor visitor(isolate, addr);
+    ContainsAddressVisitor visitor(addr);
     object = isolate->heap()->FindObject(&visitor);
   }
 
@@ -3446,7 +3444,7 @@
 
   {
     NoSafepointScope no_safepoint;
-    ContainsAddressVisitor visitor(Dart::vm_isolate(), addr);
+    ContainsAddressVisitor visitor(addr);
     object = Dart::vm_isolate()->heap()->FindObject(&visitor);
   }
 
diff --git a/runtime/vm/snapshot.cc b/runtime/vm/snapshot.cc
index ea0dce3..8d1fdcf 100644
--- a/runtime/vm/snapshot.cc
+++ b/runtime/vm/snapshot.cc
@@ -1142,11 +1142,27 @@
 }
 
 
-int32_t InstructionsWriter::GetOffsetFor(RawInstructions* instructions) {
-  intptr_t heap_size = instructions->Size();
+int32_t InstructionsWriter::GetOffsetFor(RawInstructions* instructions,
+                                         RawCode* code) {
+#if defined(PRODUCT)
+  // Instructions are only dedup in product mode because it obfuscates profiler
+  // results.
+  for (intptr_t i = 0; i < instructions_.length(); i++) {
+    if (instructions_[i].raw_insns_ == instructions) {
+      return instructions_[i].offset_;
+    }
+  }
+#endif
+
+  intptr_t payload_size = instructions->ptr()->size_;
+  payload_size = Utils::RoundUp(payload_size, OS::PreferredCodeAlignment());
+
   intptr_t offset = next_offset_;
-  next_offset_ += heap_size;
-  instructions_.Add(InstructionsData(instructions));
+  ASSERT(Utils::IsAligned(next_offset_, OS::PreferredCodeAlignment()));
+  next_offset_ += payload_size;
+  ASSERT(Utils::IsAligned(next_offset_, OS::PreferredCodeAlignment()));
+  instructions_.Add(InstructionsData(instructions, code, offset));
+
   return offset;
 }
 
@@ -1213,32 +1229,7 @@
 
     ASSERT(insns.raw()->Size() % sizeof(uint64_t) == 0);
 
-    {
-      // 1. Write from the header to the entry point.
-      NoSafepointScope no_safepoint;
-
-      uword beginning = reinterpret_cast<uword>(insns.raw_ptr());
-      uword entry = beginning + Instructions::HeaderSize();
-
-      ASSERT(Utils::IsAligned(beginning, sizeof(uint64_t)));
-      ASSERT(Utils::IsAligned(entry, sizeof(uint64_t)));
-
-      // Write Instructions with the mark and VM heap bits set.
-      uword marked_tags = insns.raw_ptr()->tags_;
-      marked_tags = RawObject::VMHeapObjectTag::update(true, marked_tags);
-      marked_tags = RawObject::MarkBit::update(true, marked_tags);
-
-      WriteWordLiteral(marked_tags);
-      beginning += sizeof(uword);
-
-      for (uword* cursor = reinterpret_cast<uword*>(beginning);
-           cursor < reinterpret_cast<uword*>(entry);
-           cursor++) {
-        WriteWordLiteral(*cursor);
-      }
-    }
-
-    // 2. Write a label at the entry point.
+    // 1. Write a label at the entry point.
     owner = code.owner();
     if (owner.IsNull()) {
       const char* name = StubCode::NameOfStub(insns.EntryPoint());
@@ -1257,11 +1248,13 @@
     }
 
     {
-      // 3. Write from the entry point to the end.
+      // 2. Write from the entry point to the end.
       NoSafepointScope no_safepoint;
       uword beginning = reinterpret_cast<uword>(insns.raw()) - kHeapObjectTag;
       uword entry = beginning + Instructions::HeaderSize();
-      uword end = beginning + insns.raw()->Size();
+      uword payload_size = insns.size();
+      payload_size = Utils::RoundUp(payload_size, OS::PreferredCodeAlignment());
+      uword end = entry + payload_size;
 
       ASSERT(Utils::IsAligned(beginning, sizeof(uint64_t)));
       ASSERT(Utils::IsAligned(entry, sizeof(uint64_t)));
@@ -1313,27 +1306,9 @@
 }
 
 
-RawInstructions* InstructionsReader::GetInstructionsAt(int32_t offset,
-                                                       uword expected_tags) {
+uword InstructionsReader::GetInstructionsAt(int32_t offset) {
   ASSERT(Utils::IsAligned(offset, OS::PreferredCodeAlignment()));
-
-  RawInstructions* result =
-      reinterpret_cast<RawInstructions*>(
-          reinterpret_cast<uword>(instructions_buffer_) +
-          offset + kHeapObjectTag);
-
-#ifdef DEBUG
-  uword actual_tags = result->ptr()->tags_;
-  if (actual_tags != expected_tags) {
-    FATAL2("Instructions tag mismatch: expected %" Pd ", saw %" Pd,
-           expected_tags,
-           actual_tags);
-  }
-#endif
-
-  ASSERT(result->IsMarked());
-
-  return result;
+  return reinterpret_cast<uword>(instructions_buffer_) + offset;
 }
 
 
@@ -1870,13 +1845,11 @@
 class ScriptVisitor : public ObjectVisitor {
  public:
   explicit ScriptVisitor(Thread* thread) :
-      ObjectVisitor(thread->isolate()),
       objHandle_(Object::Handle(thread->zone())),
       count_(0),
       scripts_(NULL) {}
 
   ScriptVisitor(Thread* thread, const Array* scripts) :
-      ObjectVisitor(thread->isolate()),
       objHandle_(Object::Handle(thread->zone())),
       count_(0),
       scripts_(scripts) {}
@@ -2296,7 +2269,7 @@
 class WriteInlinedObjectVisitor : public ObjectVisitor {
  public:
   explicit WriteInlinedObjectVisitor(SnapshotWriter* writer)
-      : ObjectVisitor(Isolate::Current()), writer_(writer) {}
+      : writer_(writer) {}
 
   virtual void VisitObject(RawObject* obj) {
     intptr_t object_id = writer_->forward_list_->FindObject(obj);
diff --git a/runtime/vm/snapshot.h b/runtime/vm/snapshot.h
index 7f6436b..25dab12 100644
--- a/runtime/vm/snapshot.h
+++ b/runtime/vm/snapshot.h
@@ -370,7 +370,7 @@
                             OS::PreferredCodeAlignment()));
   }
 
-  RawInstructions* GetInstructionsAt(int32_t offset, uword expected_tags);
+  uword GetInstructionsAt(int32_t offset);
   RawObject* GetObjectAt(int32_t offset);
 
  private:
@@ -483,8 +483,8 @@
   RawWeakProperty* NewWeakProperty();
   RawRegExp* NewRegExp();
 
-  RawInstructions* GetInstructionsAt(int32_t offset, uword expected_tags) {
-    return instructions_reader_->GetInstructionsAt(offset, expected_tags);
+  uword GetInstructionsAt(int32_t offset) {
+    return instructions_reader_->GetInstructionsAt(offset);
   }
 
   RawObject* GetObjectAt(int32_t offset) {
@@ -862,26 +862,18 @@
 
   intptr_t binary_size() { return binary_size_; }
 
-  int32_t GetOffsetFor(RawInstructions* instructions);
+  int32_t GetOffsetFor(RawInstructions* instructions, RawCode* code);
 
   int32_t GetObjectOffsetFor(RawObject* raw_object);
 
-  void SetInstructionsCode(RawInstructions* insns, RawCode* code) {
-    for (intptr_t i = 0; i < instructions_.length(); i++) {
-      if (instructions_[i].raw_insns_ == insns) {
-        instructions_[i].raw_code_ = code;
-        return;
-      }
-    }
-    UNREACHABLE();
-  }
-
   void WriteAssembly();
 
  private:
   struct InstructionsData {
-    explicit InstructionsData(RawInstructions* insns)
-        : raw_insns_(insns), raw_code_(NULL) { }
+    explicit InstructionsData(RawInstructions* insns,
+                              RawCode* code,
+                              intptr_t offset)
+        : raw_insns_(insns), raw_code_(code), offset_(offset) { }
 
     union {
       RawInstructions* raw_insns_;
@@ -891,6 +883,7 @@
       RawCode* raw_code_;
       const Code* code_;
     };
+    intptr_t offset_;
   };
 
   struct ObjectData {
@@ -970,18 +963,14 @@
 
   static intptr_t FirstObjectId();
 
-  int32_t GetInstructionsId(RawInstructions* instructions) {
-    return instructions_writer_->GetOffsetFor(instructions);
+  int32_t GetInstructionsId(RawInstructions* instructions, RawCode* code) {
+    return instructions_writer_->GetOffsetFor(instructions, code);
   }
 
   int32_t GetObjectId(RawObject* raw) {
     return instructions_writer_->GetObjectOffsetFor(raw);
   }
 
-  void SetInstructionsCode(RawInstructions* instructions, RawCode* code) {
-    return instructions_writer_->SetInstructionsCode(instructions, code);
-  }
-
   void WriteFunctionId(RawFunction* func, bool owner_is_class);
 
   RawFunction* IsSerializableClosure(RawClosure* closure);
@@ -1048,6 +1037,7 @@
   friend class RawArray;
   friend class RawClass;
   friend class RawClosureData;
+  friend class RawCode;
   friend class RawContextScope;
   friend class RawExceptionHandlers;
   friend class RawField;
diff --git a/runtime/vm/stack_frame.cc b/runtime/vm/stack_frame.cc
index 4eb3da7..ebfe69e 100644
--- a/runtime/vm/stack_frame.cc
+++ b/runtime/vm/stack_frame.cc
@@ -28,7 +28,8 @@
   NoSafepointScope no_safepoint;
 #endif
   RawCode* code = GetCodeObject();
-  intptr_t cid = code->ptr()->owner_->GetClassId();
+  ASSERT(code != Object::null());
+  const intptr_t cid = code->ptr()->owner_->GetClassId();
   ASSERT(cid == kNullCid || cid == kClassCid || cid == kFunctionCid);
   return cid == kNullCid || cid == kClassCid;
 }
@@ -100,8 +101,7 @@
     Array maps;
     maps = Array::null();
     Stackmap map;
-    const uword entry = reinterpret_cast<uword>(code.instructions()->ptr()) +
-                        Instructions::HeaderSize();
+    const uword entry = code.EntryPoint();
     map = code.GetStackmap(pc() - entry, &maps, &map);
     if (!map.IsNull()) {
       RawObject** first = reinterpret_cast<RawObject**>(sp());
@@ -150,6 +150,8 @@
       visitor->VisitPointers(first, last);
       return;
     }
+
+    // No stack map, fall through.
   }
   // For normal unoptimized Dart frames and Stub frames each slot
   // between the first and last included are tagged objects.
diff --git a/runtime/vm/stub_code.h b/runtime/vm/stub_code.h
index d90a3ab..fed306b 100644
--- a/runtime/vm/stub_code.h
+++ b/runtime/vm/stub_code.h
@@ -63,6 +63,7 @@
   V(Subtype2TestCache)                                                         \
   V(Subtype3TestCache)                                                         \
   V(CallClosureNoSuchMethod)                                                   \
+  V(FrameAwaitingMaterialization)                                              \
 
 // Is it permitted for the stubs above to refer to Object::null(), which is
 // allocated in the VM isolate and shared across all isolates.
diff --git a/runtime/vm/stub_code_arm.cc b/runtime/vm/stub_code_arm.cc
index 9a31d42..e5a03c7 100644
--- a/runtime/vm/stub_code_arm.cc
+++ b/runtime/vm/stub_code_arm.cc
@@ -2179,6 +2179,11 @@
   __ Ret();
 }
 
+
+void StubCode::GenerateFrameAwaitingMaterializationStub(Assembler* assembler) {
+  __ bkpt(0);
+}
+
 }  // namespace dart
 
 #endif  // defined TARGET_ARCH_ARM
diff --git a/runtime/vm/stub_code_arm64.cc b/runtime/vm/stub_code_arm64.cc
index 22ee31f..bddf296 100644
--- a/runtime/vm/stub_code_arm64.cc
+++ b/runtime/vm/stub_code_arm64.cc
@@ -2232,6 +2232,11 @@
   __ ret();
 }
 
+
+void StubCode::GenerateFrameAwaitingMaterializationStub(Assembler* assembler) {
+  __ brk(0);
+}
+
 }  // namespace dart
 
 #endif  // defined TARGET_ARCH_ARM64
diff --git a/runtime/vm/stub_code_ia32.cc b/runtime/vm/stub_code_ia32.cc
index 57820c8..2a4ed9b 100644
--- a/runtime/vm/stub_code_ia32.cc
+++ b/runtime/vm/stub_code_ia32.cc
@@ -2093,6 +2093,12 @@
   __ int3();
 }
 
+
+
+void StubCode::GenerateFrameAwaitingMaterializationStub(Assembler* assembler) {
+  __ int3();
+}
+
 }  // namespace dart
 
 #endif  // defined TARGET_ARCH_IA32
diff --git a/runtime/vm/stub_code_mips.cc b/runtime/vm/stub_code_mips.cc
index 1a13f74..7ae26bb 100644
--- a/runtime/vm/stub_code_mips.cc
+++ b/runtime/vm/stub_code_mips.cc
@@ -2345,6 +2345,11 @@
   __ Ret();
 }
 
+
+void StubCode::GenerateFrameAwaitingMaterializationStub(Assembler* assembler) {
+  __ break_(0);
+}
+
 }  // namespace dart
 
 #endif  // defined TARGET_ARCH_MIPS
diff --git a/runtime/vm/stub_code_x64.cc b/runtime/vm/stub_code_x64.cc
index a8ed6ef..db210a1 100644
--- a/runtime/vm/stub_code_x64.cc
+++ b/runtime/vm/stub_code_x64.cc
@@ -2092,6 +2092,7 @@
           FieldAddress(RBX, MegamorphicCache::arguments_descriptor_offset()));
   __ movq(RDI, FieldAddress(RBX, MegamorphicCache::buckets_offset()));
   __ movq(R9, FieldAddress(RBX, MegamorphicCache::mask_offset()));
+  // R10: arguments descriptor (result).
   // RDI: cache buckets array.
   // RBX: mask.
   __ movq(RCX, RAX);
@@ -2219,6 +2220,11 @@
   __ ret();
 }
 
+
+void StubCode::GenerateFrameAwaitingMaterializationStub(Assembler* assembler) {
+  __ int3();
+}
+
 }  // namespace dart
 
 #endif  // defined TARGET_ARCH_X64
diff --git a/runtime/vm/symbols.cc b/runtime/vm/symbols.cc
index d35dc6d..bad8f74 100644
--- a/runtime/vm/symbols.cc
+++ b/runtime/vm/symbols.cc
@@ -375,8 +375,7 @@
    public:
     SymbolCollector(Thread* thread,
                     GrowableArray<String*>* symbols)
-        : ObjectVisitor(thread->isolate()),
-          symbols_(symbols),
+        : symbols_(symbols),
           zone_(thread->zone()) {}
 
     void VisitObject(RawObject* obj) {
diff --git a/runtime/vm/thread.cc b/runtime/vm/thread.cc
index fd176c2..9b36cd4 100644
--- a/runtime/vm/thread.cc
+++ b/runtime/vm/thread.cc
@@ -23,7 +23,6 @@
 namespace dart {
 
 
-DECLARE_FLAG(bool, trace_isolates);
 DECLARE_FLAG(bool, trace_service);
 DECLARE_FLAG(bool, trace_service_verbose);
 
diff --git a/runtime/vm/timeline.cc b/runtime/vm/timeline.cc
index 5f3d719..959b9ad 100644
--- a/runtime/vm/timeline.cc
+++ b/runtime/vm/timeline.cc
@@ -19,6 +19,7 @@
 #ifndef PRODUCT
 
 DEFINE_FLAG(bool, complete_timeline, false, "Record the complete timeline");
+DEFINE_FLAG(bool, startup_timeline, false, "Record the startup timeline");
 DEFINE_FLAG(bool, trace_timeline, false,
             "Trace timeline backend");
 DEFINE_FLAG(bool, trace_timeline_analysis, false,
@@ -111,7 +112,8 @@
 
 // Returns true if |streams| contains |stream| or "all". Not case sensitive.
 static bool HasStream(MallocGrowableArray<char*>* streams, const char* stream) {
-  if ((FLAG_timeline_dir != NULL) || FLAG_timing || FLAG_complete_timeline) {
+  if ((FLAG_timeline_dir != NULL) ||
+      FLAG_timing || FLAG_complete_timeline || FLAG_startup_timeline) {
     return true;
   }
   for (intptr_t i = 0; i < streams->length(); i++) {
@@ -134,6 +136,8 @@
       (FLAG_timeline_dir != NULL) || FLAG_timing || FLAG_complete_timeline;
   if (use_endless_recorder) {
     recorder_ = new TimelineEventEndlessRecorder();
+  } else if (FLAG_startup_timeline) {
+    recorder_ = new TimelineEventStartupRecorder();
   } else if (use_ring_recorder) {
     recorder_ = new TimelineEventRingRecorder();
   }
@@ -146,6 +150,11 @@
                         &stream_##name##_enabled_);
   TIMELINE_STREAM_LIST(TIMELINE_STREAM_FLAG_DEFAULT)
 #undef TIMELINE_STREAM_FLAG_DEFAULT
+
+  if (stream_Embedder_enabled_ &&
+      (Timeline::get_start_recording_cb() != NULL)) {
+    Timeline::get_start_recording_cb()();
+  }
 }
 
 
@@ -167,9 +176,16 @@
 
 void Timeline::Shutdown() {
   ASSERT(recorder_ != NULL);
+
+  if (stream_Embedder_enabled_ &&
+      (Timeline::get_stop_recording_cb() != NULL)) {
+    Timeline::get_stop_recording_cb()();
+  }
+
   if (FLAG_timeline_dir != NULL) {
     recorder_->WriteTo(FLAG_timeline_dir);
   }
+
   // Disable global streams.
 #define TIMELINE_STREAM_DISABLE(name, not_used)                                \
   stream_##name##_enabled_ = false;
@@ -1054,7 +1070,8 @@
 }
 
 
-TimelineEventRingRecorder::TimelineEventRingRecorder(intptr_t capacity)
+TimelineEventFixedBufferRecorder::TimelineEventFixedBufferRecorder(
+    intptr_t capacity)
     : blocks_(NULL),
       capacity_(capacity),
       num_blocks_(0),
@@ -1077,7 +1094,7 @@
 }
 
 
-TimelineEventRingRecorder::~TimelineEventRingRecorder() {
+TimelineEventFixedBufferRecorder::~TimelineEventFixedBufferRecorder() {
   // Delete all blocks.
   for (intptr_t i = 0; i < num_blocks_; i++) {
     TimelineEventBlock* block = blocks_[i];
@@ -1087,7 +1104,7 @@
 }
 
 
-void TimelineEventRingRecorder::PrintJSONEvents(
+void TimelineEventFixedBufferRecorder::PrintJSONEvents(
     JSONArray* events,
     TimelineEventFilter* filter) {
   if (!FLAG_support_service) {
@@ -1117,8 +1134,8 @@
 }
 
 
-void TimelineEventRingRecorder::PrintJSON(JSONStream* js,
-                                          TimelineEventFilter* filter) {
+void TimelineEventFixedBufferRecorder::PrintJSON(JSONStream* js,
+                                                 TimelineEventFilter* filter) {
   if (!FLAG_support_service) {
     return;
   }
@@ -1132,8 +1149,9 @@
 }
 
 
-void TimelineEventRingRecorder::PrintTraceEvent(JSONStream* js,
-                                                TimelineEventFilter* filter) {
+void TimelineEventFixedBufferRecorder::PrintTraceEvent(
+    JSONStream* js,
+    TimelineEventFilter* filter) {
   if (!FLAG_support_service) {
     return;
   }
@@ -1142,25 +1160,12 @@
 }
 
 
-TimelineEventBlock* TimelineEventRingRecorder::GetHeadBlockLocked() {
+TimelineEventBlock* TimelineEventFixedBufferRecorder::GetHeadBlockLocked() {
   return blocks_[0];
 }
 
 
-TimelineEventBlock* TimelineEventRingRecorder::GetNewBlockLocked() {
-  // TODO(johnmccutchan): This function should only hand out blocks
-  // which have been marked as finished.
-  if (block_cursor_ == num_blocks_) {
-    block_cursor_ = 0;
-  }
-  TimelineEventBlock* block = blocks_[block_cursor_++];
-  block->Reset();
-  block->Open();
-  return block;
-}
-
-
-void TimelineEventRingRecorder::Clear() {
+void TimelineEventFixedBufferRecorder::Clear() {
   MutexLocker ml(&lock_);
   for (intptr_t i = 0; i < num_blocks_; i++) {
     TimelineEventBlock* block = blocks_[i];
@@ -1169,7 +1174,7 @@
 }
 
 
-intptr_t TimelineEventRingRecorder::FindOldestBlockIndex() const {
+intptr_t TimelineEventFixedBufferRecorder::FindOldestBlockIndex() const {
   int64_t earliest_time = kMaxInt64;
   intptr_t earliest_index = -1;
   for (intptr_t block_idx = 0; block_idx < num_blocks_; block_idx++) {
@@ -1187,12 +1192,12 @@
 }
 
 
-TimelineEvent* TimelineEventRingRecorder::StartEvent() {
+TimelineEvent* TimelineEventFixedBufferRecorder::StartEvent() {
   return ThreadBlockStartEvent();
 }
 
 
-void TimelineEventRingRecorder::CompleteEvent(TimelineEvent* event) {
+void TimelineEventFixedBufferRecorder::CompleteEvent(TimelineEvent* event) {
   if (event == NULL) {
     return;
   }
@@ -1200,6 +1205,30 @@
 }
 
 
+TimelineEventBlock* TimelineEventRingRecorder::GetNewBlockLocked() {
+  // TODO(johnmccutchan): This function should only hand out blocks
+  // which have been marked as finished.
+  if (block_cursor_ == num_blocks_) {
+    block_cursor_ = 0;
+  }
+  TimelineEventBlock* block = blocks_[block_cursor_++];
+  block->Reset();
+  block->Open();
+  return block;
+}
+
+
+TimelineEventBlock* TimelineEventStartupRecorder::GetNewBlockLocked() {
+  if (block_cursor_ == num_blocks_) {
+    return NULL;
+  }
+  TimelineEventBlock* block = blocks_[block_cursor_++];
+  block->Reset();
+  block->Open();
+  return block;
+}
+
+
 TimelineEventCallbackRecorder::TimelineEventCallbackRecorder() {
 }
 
diff --git a/runtime/vm/timeline.h b/runtime/vm/timeline.h
index f16056e..0e0cf73 100644
--- a/runtime/vm/timeline.h
+++ b/runtime/vm/timeline.h
@@ -330,6 +330,7 @@
   friend class TimelineEventRecorder;
   friend class TimelineEventEndlessRecorder;
   friend class TimelineEventRingRecorder;
+  friend class TimelineEventStartupRecorder;
   friend class TimelineStream;
   friend class TimelineTestHelper;
   DISALLOW_COPY_AND_ASSIGN(TimelineEvent);
@@ -574,8 +575,9 @@
 
   friend class Thread;
   friend class TimelineEventRecorder;
-  friend class TimelineEventRingRecorder;
   friend class TimelineEventEndlessRecorder;
+  friend class TimelineEventRingRecorder;
+  friend class TimelineEventStartupRecorder;
   friend class TimelineTestHelper;
   friend class JSONStream;
 
@@ -689,26 +691,22 @@
 };
 
 
-// A recorder that stores events in a ring buffer of fixed capacity.
-class TimelineEventRingRecorder : public TimelineEventRecorder {
+// An abstract recorder that stores events in a buffer of fixed capacity.
+class TimelineEventFixedBufferRecorder : public TimelineEventRecorder {
  public:
   static const intptr_t kDefaultCapacity = 8192;
 
-  explicit TimelineEventRingRecorder(intptr_t capacity = kDefaultCapacity);
-  ~TimelineEventRingRecorder();
+  explicit TimelineEventFixedBufferRecorder(intptr_t capacity);
+  ~TimelineEventFixedBufferRecorder();
 
   void PrintJSON(JSONStream* js, TimelineEventFilter* filter);
   void PrintTraceEvent(JSONStream* js, TimelineEventFilter* filter);
-  const char* name() const {
-    return "ring";
-  }
 
  protected:
   TimelineEvent* StartEvent();
   void CompleteEvent(TimelineEvent* event);
   TimelineEventBlock* GetHeadBlockLocked();
   intptr_t FindOldestBlockIndex() const;
-  TimelineEventBlock* GetNewBlockLocked();
   void Clear();
 
   void PrintJSONEvents(JSONArray* array, TimelineEventFilter* filter);
@@ -720,6 +718,40 @@
 };
 
 
+// A recorder that stores events in a buffer of fixed capacity. When the buffer
+// is full, new events overwrite old events.
+class TimelineEventRingRecorder : public TimelineEventFixedBufferRecorder {
+ public:
+  explicit TimelineEventRingRecorder(intptr_t capacity = kDefaultCapacity)
+      : TimelineEventFixedBufferRecorder(capacity) {}
+  ~TimelineEventRingRecorder() {}
+
+  const char* name() const {
+    return "ring";
+  }
+
+ protected:
+  TimelineEventBlock* GetNewBlockLocked();
+};
+
+
+// A recorder that stores events in a buffer of fixed capacity. When the buffer
+// is full, new events are dropped.
+class TimelineEventStartupRecorder : public TimelineEventFixedBufferRecorder {
+ public:
+  explicit TimelineEventStartupRecorder(intptr_t capacity = kDefaultCapacity)
+      : TimelineEventFixedBufferRecorder(capacity) {}
+  ~TimelineEventStartupRecorder() {}
+
+  const char* name() const {
+    return "startup";
+  }
+
+ protected:
+  TimelineEventBlock* GetNewBlockLocked();
+};
+
+
 // An abstract recorder that calls |OnEvent| whenever an event is complete.
 // This should only be used for testing.
 class TimelineEventCallbackRecorder : public TimelineEventRecorder {
diff --git a/runtime/vm/verifier.cc b/runtime/vm/verifier.cc
index a9bbf01..78b4697 100644
--- a/runtime/vm/verifier.cc
+++ b/runtime/vm/verifier.cc
@@ -42,7 +42,7 @@
     }
   }
   allocated_set_->Add(raw_obj);
-  raw_obj->Validate(isolate());
+  raw_obj->Validate(isolate_);
 }
 
 
diff --git a/runtime/vm/verifier.h b/runtime/vm/verifier.h
index 99b6056..a34d7f6 100644
--- a/runtime/vm/verifier.h
+++ b/runtime/vm/verifier.h
@@ -30,7 +30,7 @@
   VerifyObjectVisitor(Isolate* isolate,
                      ObjectSet* allocated_set,
                      MarkExpectation mark_expectation)
-      : ObjectVisitor(isolate),
+      : isolate_(isolate),
         allocated_set_(allocated_set),
         mark_expectation_(mark_expectation) {
   }
@@ -38,6 +38,7 @@
   virtual void VisitObject(RawObject* obj);
 
  private:
+  Isolate* isolate_;
   ObjectSet* allocated_set_;
   MarkExpectation mark_expectation_;
 
diff --git a/runtime/vm/visitor.h b/runtime/vm/visitor.h
index 9e8780b..3b071e2 100644
--- a/runtime/vm/visitor.h
+++ b/runtime/vm/visitor.h
@@ -18,8 +18,8 @@
 // An object pointer visitor interface.
 class ObjectPointerVisitor {
  public:
-  explicit ObjectPointerVisitor(Isolate* isolate) : isolate_(isolate) {}
-  virtual ~ObjectPointerVisitor() {}
+  explicit ObjectPointerVisitor(Isolate* isolate) : isolate_(isolate) { }
+  virtual ~ObjectPointerVisitor() { }
 
   Isolate* isolate() const { return isolate_; }
 
@@ -48,18 +48,14 @@
 // An object visitor interface.
 class ObjectVisitor {
  public:
-  explicit ObjectVisitor(Isolate* isolate) : isolate_(isolate) {}
+  ObjectVisitor() { }
 
-  virtual ~ObjectVisitor() {}
-
-  Isolate* isolate() const { return isolate_; }
+  virtual ~ObjectVisitor() { }
 
   // Invoked for each object.
   virtual void VisitObject(RawObject* obj) = 0;
 
  private:
-  Isolate* isolate_;
-
   DISALLOW_COPY_AND_ASSIGN(ObjectVisitor);
 };
 
@@ -67,8 +63,8 @@
 // An object finder visitor interface.
 class FindObjectVisitor {
  public:
-  explicit FindObjectVisitor(Isolate* isolate) : isolate_(isolate) {}
-  virtual ~FindObjectVisitor() {}
+  FindObjectVisitor() { }
+  virtual ~FindObjectVisitor() { }
 
   // Allow to specify a address filter.
   virtual uword filter_addr() const { return 0; }
@@ -81,9 +77,7 @@
   virtual bool FindObject(RawObject* obj) const = 0;
 
  private:
-  Isolate* isolate_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(FindObjectVisitor);
+  DISALLOW_COPY_AND_ASSIGN(FindObjectVisitor);
 };
 
 }  // namespace dart
diff --git a/sdk/lib/_blink/dartium/_blink_dartium.dart b/sdk/lib/_blink/dartium/_blink_dartium.dart
index 37471b9..4e302c9 100644
--- a/sdk/lib/_blink/dartium/_blink_dartium.dart
+++ b/sdk/lib/_blink/dartium/_blink_dartium.dart
@@ -733,652 +733,652 @@
 class BlinkANGLEInstancedArrays {
   static final instance = new BlinkANGLEInstancedArrays();
 
-  drawArraysInstancedANGLE_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "drawArraysInstancedANGLE", [__arg_0, __arg_1]);
+  drawArraysInstancedANGLE_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* ANGLEInstancedArrays */, "drawArraysInstancedANGLE", [__arg_0, __arg_1]);
 
-  drawArraysInstancedANGLE_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "drawArraysInstancedANGLE", [__arg_0, __arg_1, __arg_2]);
+  drawArraysInstancedANGLE_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* ANGLEInstancedArrays */, "drawArraysInstancedANGLE", [__arg_0, __arg_1, __arg_2]);
 
-  drawArraysInstancedANGLE_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "drawArraysInstancedANGLE", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  drawArraysInstancedANGLE_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* ANGLEInstancedArrays */, "drawArraysInstancedANGLE", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  drawElementsInstancedANGLE_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "drawElementsInstancedANGLE", [__arg_0, __arg_1, __arg_2]);
+  drawElementsInstancedANGLE_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* ANGLEInstancedArrays */, "drawElementsInstancedANGLE", [__arg_0, __arg_1, __arg_2]);
 
-  drawElementsInstancedANGLE_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "drawElementsInstancedANGLE", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  drawElementsInstancedANGLE_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* ANGLEInstancedArrays */, "drawElementsInstancedANGLE", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  drawElementsInstancedANGLE_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "drawElementsInstancedANGLE", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  drawElementsInstancedANGLE_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* ANGLEInstancedArrays */, "drawElementsInstancedANGLE", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  vertexAttribDivisorANGLE_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribDivisorANGLE", []);
+  vertexAttribDivisorANGLE_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ANGLEInstancedArrays */, "vertexAttribDivisorANGLE", []);
 
-  vertexAttribDivisorANGLE_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribDivisorANGLE", [__arg_0]);
+  vertexAttribDivisorANGLE_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ANGLEInstancedArrays */, "vertexAttribDivisorANGLE", [__arg_0]);
 
-  vertexAttribDivisorANGLE_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribDivisorANGLE", [__arg_0, __arg_1]);
+  vertexAttribDivisorANGLE_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* ANGLEInstancedArrays */, "vertexAttribDivisorANGLE", [__arg_0, __arg_1]);
 
 }
 
 class BlinkAbstractWorker {
   static final instance = new BlinkAbstractWorker();
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AbstractWorker */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AbstractWorker */, "onerror", __arg_0);
 
 }
 
 class BlinkAnalyserNode extends BlinkAudioNode {
   static final instance = new BlinkAnalyserNode();
 
-  fftSize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fftSize");
+  fftSize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnalyserNode */, "fftSize");
 
-  fftSize_Setter_(mthis, __arg_0) => mthis["fftSize"] = __arg_0;
+  fftSize_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AnalyserNode */, "fftSize", __arg_0);
 
-  frequencyBinCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "frequencyBinCount");
+  frequencyBinCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnalyserNode */, "frequencyBinCount");
 
-  maxDecibels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "maxDecibels");
+  maxDecibels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnalyserNode */, "maxDecibels");
 
-  maxDecibels_Setter_(mthis, __arg_0) => mthis["maxDecibels"] = __arg_0;
+  maxDecibels_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AnalyserNode */, "maxDecibels", __arg_0);
 
-  minDecibels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "minDecibels");
+  minDecibels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnalyserNode */, "minDecibels");
 
-  minDecibels_Setter_(mthis, __arg_0) => mthis["minDecibels"] = __arg_0;
+  minDecibels_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AnalyserNode */, "minDecibels", __arg_0);
 
-  smoothingTimeConstant_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "smoothingTimeConstant");
+  smoothingTimeConstant_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnalyserNode */, "smoothingTimeConstant");
 
-  smoothingTimeConstant_Setter_(mthis, __arg_0) => mthis["smoothingTimeConstant"] = __arg_0;
+  smoothingTimeConstant_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AnalyserNode */, "smoothingTimeConstant", __arg_0);
 
-  getByteFrequencyData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getByteFrequencyData", []);
+  getByteFrequencyData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AnalyserNode */, "getByteFrequencyData", []);
 
-  getByteFrequencyData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getByteFrequencyData", [__arg_0]);
+  getByteFrequencyData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AnalyserNode */, "getByteFrequencyData", [__arg_0]);
 
-  getByteTimeDomainData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getByteTimeDomainData", []);
+  getByteTimeDomainData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AnalyserNode */, "getByteTimeDomainData", []);
 
-  getByteTimeDomainData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getByteTimeDomainData", [__arg_0]);
+  getByteTimeDomainData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AnalyserNode */, "getByteTimeDomainData", [__arg_0]);
 
-  getFloatFrequencyData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getFloatFrequencyData", []);
+  getFloatFrequencyData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AnalyserNode */, "getFloatFrequencyData", []);
 
-  getFloatFrequencyData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getFloatFrequencyData", [__arg_0]);
+  getFloatFrequencyData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AnalyserNode */, "getFloatFrequencyData", [__arg_0]);
 
-  getFloatTimeDomainData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getFloatTimeDomainData", []);
+  getFloatTimeDomainData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AnalyserNode */, "getFloatTimeDomainData", []);
 
-  getFloatTimeDomainData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getFloatTimeDomainData", [__arg_0]);
+  getFloatTimeDomainData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AnalyserNode */, "getFloatTimeDomainData", [__arg_0]);
 
 }
 
 class BlinkAnimation extends BlinkEventTarget {
   static final instance = new BlinkAnimation();
 
-  currentTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "currentTime");
+  currentTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Animation */, "currentTime");
 
-  currentTime_Setter_(mthis, __arg_0) => mthis["currentTime"] = __arg_0;
+  currentTime_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Animation */, "currentTime", __arg_0);
 
-  effect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "effect");
+  effect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Animation */, "effect");
 
-  effect_Setter_(mthis, __arg_0) => mthis["effect"] = __arg_0;
+  effect_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Animation */, "effect", __arg_0);
 
-  endClip_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "endClip");
+  endClip_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Animation */, "endClip");
 
-  endClip_Setter_(mthis, __arg_0) => mthis["endClip"] = __arg_0;
+  endClip_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Animation */, "endClip", __arg_0);
 
-  finished_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "finished");
+  finished_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Animation */, "finished");
 
-  onfinish_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onfinish");
+  onfinish_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Animation */, "onfinish");
 
-  onfinish_Setter_(mthis, __arg_0) => mthis["onfinish"] = __arg_0;
+  onfinish_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Animation */, "onfinish", __arg_0);
 
-  playState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "playState");
+  playState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Animation */, "playState");
 
-  playbackRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "playbackRate");
+  playbackRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Animation */, "playbackRate");
 
-  playbackRate_Setter_(mthis, __arg_0) => mthis["playbackRate"] = __arg_0;
+  playbackRate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Animation */, "playbackRate", __arg_0);
 
-  ready_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ready");
+  ready_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Animation */, "ready");
 
-  startClip_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "startClip");
+  startClip_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Animation */, "startClip");
 
-  startClip_Setter_(mthis, __arg_0) => mthis["startClip"] = __arg_0;
+  startClip_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Animation */, "startClip", __arg_0);
 
-  startTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "startTime");
+  startTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Animation */, "startTime");
 
-  startTime_Setter_(mthis, __arg_0) => mthis["startTime"] = __arg_0;
+  startTime_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Animation */, "startTime", __arg_0);
 
-  cancel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cancel", []);
+  cancel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Animation */, "cancel", []);
 
-  finish_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "finish", []);
+  finish_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Animation */, "finish", []);
 
-  pause_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "pause", []);
+  pause_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Animation */, "pause", []);
 
-  play_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "play", []);
+  play_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Animation */, "play", []);
 
-  reverse_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "reverse", []);
+  reverse_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Animation */, "reverse", []);
 
 }
 
 class BlinkAnimationEffectReadOnly {
   static final instance = new BlinkAnimationEffectReadOnly();
 
-  computedTiming_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "computedTiming");
+  computedTiming_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationEffectReadOnly */, "computedTiming");
 
-  timing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "timing");
+  timing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationEffectReadOnly */, "timing");
 
 }
 
 class BlinkAnimationEffectTiming {
   static final instance = new BlinkAnimationEffectTiming();
 
-  delay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "delay");
+  delay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationEffectTiming */, "delay");
 
-  delay_Setter_(mthis, __arg_0) => mthis["delay"] = __arg_0;
+  delay_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AnimationEffectTiming */, "delay", __arg_0);
 
-  direction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "direction");
+  direction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationEffectTiming */, "direction");
 
-  direction_Setter_(mthis, __arg_0) => mthis["direction"] = __arg_0;
+  direction_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AnimationEffectTiming */, "direction", __arg_0);
 
-  duration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "duration");
+  duration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationEffectTiming */, "duration");
 
-  duration_Setter_(mthis, __arg_0) => mthis["duration"] = __arg_0;
+  duration_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AnimationEffectTiming */, "duration", __arg_0);
 
-  easing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "easing");
+  easing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationEffectTiming */, "easing");
 
-  easing_Setter_(mthis, __arg_0) => mthis["easing"] = __arg_0;
+  easing_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AnimationEffectTiming */, "easing", __arg_0);
 
-  endDelay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "endDelay");
+  endDelay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationEffectTiming */, "endDelay");
 
-  endDelay_Setter_(mthis, __arg_0) => mthis["endDelay"] = __arg_0;
+  endDelay_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AnimationEffectTiming */, "endDelay", __arg_0);
 
-  fill_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fill");
+  fill_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationEffectTiming */, "fill");
 
-  fill_Setter_(mthis, __arg_0) => mthis["fill"] = __arg_0;
+  fill_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AnimationEffectTiming */, "fill", __arg_0);
 
-  iterationStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "iterationStart");
+  iterationStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationEffectTiming */, "iterationStart");
 
-  iterationStart_Setter_(mthis, __arg_0) => mthis["iterationStart"] = __arg_0;
+  iterationStart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AnimationEffectTiming */, "iterationStart", __arg_0);
 
-  iterations_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "iterations");
+  iterations_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationEffectTiming */, "iterations");
 
-  iterations_Setter_(mthis, __arg_0) => mthis["iterations"] = __arg_0;
+  iterations_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AnimationEffectTiming */, "iterations", __arg_0);
 
-  playbackRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "playbackRate");
+  playbackRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationEffectTiming */, "playbackRate");
 
-  playbackRate_Setter_(mthis, __arg_0) => mthis["playbackRate"] = __arg_0;
+  playbackRate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AnimationEffectTiming */, "playbackRate", __arg_0);
 
 }
 
 class BlinkAnimationEvent extends BlinkEvent {
   static final instance = new BlinkAnimationEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "AnimationEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("AnimationEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "AnimationEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("AnimationEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "AnimationEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("AnimationEvent", [__arg_0, __arg_1]);
 
-  animationName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animationName");
+  animationName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationEvent */, "animationName");
 
-  elapsedTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "elapsedTime");
+  elapsedTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationEvent */, "elapsedTime");
 
 }
 
 class BlinkAnimationPlayerEvent extends BlinkEvent {
   static final instance = new BlinkAnimationPlayerEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "AnimationPlayerEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("AnimationPlayerEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "AnimationPlayerEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("AnimationPlayerEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "AnimationPlayerEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("AnimationPlayerEvent", [__arg_0, __arg_1]);
 
-  currentTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "currentTime");
+  currentTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationPlayerEvent */, "currentTime");
 
-  timelineTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "timelineTime");
+  timelineTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationPlayerEvent */, "timelineTime");
 
 }
 
 class BlinkAnimationTimeline {
   static final instance = new BlinkAnimationTimeline();
 
-  currentTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "currentTime");
+  currentTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationTimeline */, "currentTime");
 
-  currentTime_Setter_(mthis, __arg_0) => mthis["currentTime"] = __arg_0;
+  currentTime_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AnimationTimeline */, "currentTime", __arg_0);
 
-  playbackRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "playbackRate");
+  playbackRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AnimationTimeline */, "playbackRate");
 
-  playbackRate_Setter_(mthis, __arg_0) => mthis["playbackRate"] = __arg_0;
+  playbackRate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AnimationTimeline */, "playbackRate", __arg_0);
 
-  getAnimations_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAnimations", []);
+  getAnimations_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AnimationTimeline */, "getAnimations", []);
 
-  play_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "play", []);
+  play_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AnimationTimeline */, "play", []);
 
-  play_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "play", [__arg_0]);
+  play_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AnimationTimeline */, "play", [__arg_0]);
 
 }
 
 class BlinkAppBannerPromptResult {
   static final instance = new BlinkAppBannerPromptResult();
 
-  outcome_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "outcome");
+  outcome_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AppBannerPromptResult */, "outcome");
 
-  platform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "platform");
+  platform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AppBannerPromptResult */, "platform");
 
 }
 
 class BlinkApplicationCache extends BlinkEventTarget {
   static final instance = new BlinkApplicationCache();
 
-  oncached_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncached");
+  oncached_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ApplicationCache */, "oncached");
 
-  oncached_Setter_(mthis, __arg_0) => mthis["oncached"] = __arg_0;
+  oncached_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ApplicationCache */, "oncached", __arg_0);
 
-  onchecking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onchecking");
+  onchecking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ApplicationCache */, "onchecking");
 
-  onchecking_Setter_(mthis, __arg_0) => mthis["onchecking"] = __arg_0;
+  onchecking_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ApplicationCache */, "onchecking", __arg_0);
 
-  ondownloading_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondownloading");
+  ondownloading_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ApplicationCache */, "ondownloading");
 
-  ondownloading_Setter_(mthis, __arg_0) => mthis["ondownloading"] = __arg_0;
+  ondownloading_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ApplicationCache */, "ondownloading", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ApplicationCache */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ApplicationCache */, "onerror", __arg_0);
 
-  onnoupdate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onnoupdate");
+  onnoupdate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ApplicationCache */, "onnoupdate");
 
-  onnoupdate_Setter_(mthis, __arg_0) => mthis["onnoupdate"] = __arg_0;
+  onnoupdate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ApplicationCache */, "onnoupdate", __arg_0);
 
-  onobsolete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onobsolete");
+  onobsolete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ApplicationCache */, "onobsolete");
 
-  onobsolete_Setter_(mthis, __arg_0) => mthis["onobsolete"] = __arg_0;
+  onobsolete_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ApplicationCache */, "onobsolete", __arg_0);
 
-  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onprogress");
+  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ApplicationCache */, "onprogress");
 
-  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
+  onprogress_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ApplicationCache */, "onprogress", __arg_0);
 
-  onupdateready_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onupdateready");
+  onupdateready_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ApplicationCache */, "onupdateready");
 
-  onupdateready_Setter_(mthis, __arg_0) => mthis["onupdateready"] = __arg_0;
+  onupdateready_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ApplicationCache */, "onupdateready", __arg_0);
 
-  status_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "status");
+  status_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ApplicationCache */, "status");
 
-  abort_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "abort", []);
+  abort_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ApplicationCache */, "abort", []);
 
-  swapCache_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "swapCache", []);
+  swapCache_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ApplicationCache */, "swapCache", []);
 
-  update_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "update", []);
+  update_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ApplicationCache */, "update", []);
 
 }
 
 class BlinkApplicationCacheErrorEvent extends BlinkEvent {
   static final instance = new BlinkApplicationCacheErrorEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ApplicationCacheErrorEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("ApplicationCacheErrorEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ApplicationCacheErrorEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("ApplicationCacheErrorEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ApplicationCacheErrorEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("ApplicationCacheErrorEvent", [__arg_0, __arg_1]);
 
-  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "message");
+  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ApplicationCacheErrorEvent */, "message");
 
-  reason_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "reason");
+  reason_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ApplicationCacheErrorEvent */, "reason");
 
-  status_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "status");
+  status_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ApplicationCacheErrorEvent */, "status");
 
-  url_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "url");
+  url_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ApplicationCacheErrorEvent */, "url");
 
 }
 
 class BlinkArrayBuffer {
   static final instance = new BlinkArrayBuffer();
 
-  byteLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "byteLength");
+  byteLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ArrayBuffer */, "byteLength");
 
 }
 
 class BlinkArrayBufferView {
   static final instance = new BlinkArrayBufferView();
 
-  buffer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "buffer");
+  buffer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ArrayBufferView */, "buffer");
 
-  byteLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "byteLength");
+  byteLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ArrayBufferView */, "byteLength");
 
-  byteOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "byteOffset");
+  byteOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ArrayBufferView */, "byteOffset");
 
 }
 
 class BlinkAttr extends BlinkNode {
   static final instance = new BlinkAttr();
 
-  localName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "localName");
+  localName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Attr */, "localName");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Attr */, "name");
 
-  namespaceURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "namespaceURI");
+  namespaceURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Attr */, "namespaceURI");
 
-  nodeValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "nodeValue");
+  nodeValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Attr */, "nodeValue");
 
-  nodeValue_Setter_(mthis, __arg_0) => mthis["nodeValue"] = __arg_0;
+  nodeValue_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Attr */, "nodeValue", __arg_0);
 
-  ownerElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ownerElement");
+  ownerElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Attr */, "ownerElement");
 
-  prefix_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "prefix");
+  prefix_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Attr */, "prefix");
 
-  specified_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "specified");
+  specified_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Attr */, "specified");
 
-  textContent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "textContent");
+  textContent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Attr */, "textContent");
 
-  textContent_Setter_(mthis, __arg_0) => mthis["textContent"] = __arg_0;
+  textContent_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Attr */, "textContent", __arg_0);
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Attr */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Attr */, "value", __arg_0);
 
 }
 
 class BlinkAudioBuffer {
   static final instance = new BlinkAudioBuffer();
 
-  duration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "duration");
+  duration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioBuffer */, "duration");
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioBuffer */, "length");
 
-  numberOfChannels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "numberOfChannels");
+  numberOfChannels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioBuffer */, "numberOfChannels");
 
-  sampleRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sampleRate");
+  sampleRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioBuffer */, "sampleRate");
 
-  copyFromChannel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "copyFromChannel", []);
+  copyFromChannel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioBuffer */, "copyFromChannel", []);
 
-  copyFromChannel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "copyFromChannel", [__arg_0]);
+  copyFromChannel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioBuffer */, "copyFromChannel", [__arg_0]);
 
-  copyFromChannel_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "copyFromChannel", [__arg_0, __arg_1]);
+  copyFromChannel_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* AudioBuffer */, "copyFromChannel", [__arg_0, __arg_1]);
 
-  copyFromChannel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "copyFromChannel", [__arg_0, __arg_1, __arg_2]);
+  copyFromChannel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* AudioBuffer */, "copyFromChannel", [__arg_0, __arg_1, __arg_2]);
 
-  copyToChannel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "copyToChannel", []);
+  copyToChannel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioBuffer */, "copyToChannel", []);
 
-  copyToChannel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "copyToChannel", [__arg_0]);
+  copyToChannel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioBuffer */, "copyToChannel", [__arg_0]);
 
-  copyToChannel_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "copyToChannel", [__arg_0, __arg_1]);
+  copyToChannel_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* AudioBuffer */, "copyToChannel", [__arg_0, __arg_1]);
 
-  copyToChannel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "copyToChannel", [__arg_0, __arg_1, __arg_2]);
+  copyToChannel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* AudioBuffer */, "copyToChannel", [__arg_0, __arg_1, __arg_2]);
 
-  getChannelData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getChannelData", []);
+  getChannelData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioBuffer */, "getChannelData", []);
 
-  getChannelData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getChannelData", [__arg_0]);
+  getChannelData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioBuffer */, "getChannelData", [__arg_0]);
 
 }
 
 class BlinkAudioBufferCallback {
   static final instance = new BlinkAudioBufferCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioBufferCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioBufferCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkAudioBufferSourceNode extends BlinkAudioSourceNode {
   static final instance = new BlinkAudioBufferSourceNode();
 
-  buffer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "buffer");
+  buffer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioBufferSourceNode */, "buffer");
 
-  buffer_Setter_(mthis, __arg_0) => mthis["buffer"] = __arg_0;
+  buffer_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AudioBufferSourceNode */, "buffer", __arg_0);
 
-  detune_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "detune");
+  detune_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioBufferSourceNode */, "detune");
 
-  loop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "loop");
+  loop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioBufferSourceNode */, "loop");
 
-  loop_Setter_(mthis, __arg_0) => mthis["loop"] = __arg_0;
+  loop_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AudioBufferSourceNode */, "loop", __arg_0);
 
-  loopEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "loopEnd");
+  loopEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioBufferSourceNode */, "loopEnd");
 
-  loopEnd_Setter_(mthis, __arg_0) => mthis["loopEnd"] = __arg_0;
+  loopEnd_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AudioBufferSourceNode */, "loopEnd", __arg_0);
 
-  loopStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "loopStart");
+  loopStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioBufferSourceNode */, "loopStart");
 
-  loopStart_Setter_(mthis, __arg_0) => mthis["loopStart"] = __arg_0;
+  loopStart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AudioBufferSourceNode */, "loopStart", __arg_0);
 
-  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onended");
+  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioBufferSourceNode */, "onended");
 
-  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
+  onended_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AudioBufferSourceNode */, "onended", __arg_0);
 
-  playbackRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "playbackRate");
+  playbackRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioBufferSourceNode */, "playbackRate");
 
-  start_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "start", []);
+  start_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioBufferSourceNode */, "start", []);
 
-  start_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "start", [__arg_0]);
+  start_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioBufferSourceNode */, "start", [__arg_0]);
 
-  start_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "start", [__arg_0, __arg_1]);
+  start_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* AudioBufferSourceNode */, "start", [__arg_0, __arg_1]);
 
-  start_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "start", [__arg_0, __arg_1, __arg_2]);
+  start_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* AudioBufferSourceNode */, "start", [__arg_0, __arg_1, __arg_2]);
 
-  stop_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stop", []);
+  stop_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioBufferSourceNode */, "stop", []);
 
-  stop_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stop", [__arg_0]);
+  stop_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioBufferSourceNode */, "stop", [__arg_0]);
 
 }
 
 class BlinkAudioContext extends BlinkEventTarget {
   static final instance = new BlinkAudioContext();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "AudioContext"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("AudioContext");
 
-  currentTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "currentTime");
+  currentTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioContext */, "currentTime");
 
-  destination_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "destination");
+  destination_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioContext */, "destination");
 
-  listener_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "listener");
+  listener_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioContext */, "listener");
 
-  onstatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstatechange");
+  onstatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioContext */, "onstatechange");
 
-  onstatechange_Setter_(mthis, __arg_0) => mthis["onstatechange"] = __arg_0;
+  onstatechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AudioContext */, "onstatechange", __arg_0);
 
-  sampleRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sampleRate");
+  sampleRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioContext */, "sampleRate");
 
-  state_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "state");
+  state_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioContext */, "state");
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "close", []);
 
-  createAnalyser_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createAnalyser", []);
+  createAnalyser_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createAnalyser", []);
 
-  createBiquadFilter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createBiquadFilter", []);
+  createBiquadFilter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createBiquadFilter", []);
 
-  createBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createBuffer", [__arg_0]);
+  createBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createBuffer", [__arg_0]);
 
-  createBuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createBuffer", [__arg_0, __arg_1]);
+  createBuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createBuffer", [__arg_0, __arg_1]);
 
-  createBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "createBuffer", [__arg_0, __arg_1, __arg_2]);
+  createBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createBuffer", [__arg_0, __arg_1, __arg_2]);
 
-  createBufferSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createBufferSource", []);
+  createBufferSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createBufferSource", []);
 
-  createChannelMerger_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createChannelMerger", []);
+  createChannelMerger_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createChannelMerger", []);
 
-  createChannelMerger_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createChannelMerger", [__arg_0]);
+  createChannelMerger_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createChannelMerger", [__arg_0]);
 
-  createChannelSplitter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createChannelSplitter", []);
+  createChannelSplitter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createChannelSplitter", []);
 
-  createChannelSplitter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createChannelSplitter", [__arg_0]);
+  createChannelSplitter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createChannelSplitter", [__arg_0]);
 
-  createConvolver_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createConvolver", []);
+  createConvolver_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createConvolver", []);
 
-  createDelay_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createDelay", []);
+  createDelay_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createDelay", []);
 
-  createDelay_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createDelay", [__arg_0]);
+  createDelay_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createDelay", [__arg_0]);
 
-  createDynamicsCompressor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createDynamicsCompressor", []);
+  createDynamicsCompressor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createDynamicsCompressor", []);
 
-  createGain_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createGain", []);
+  createGain_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createGain", []);
 
-  createMediaElementSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createMediaElementSource", []);
+  createMediaElementSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createMediaElementSource", []);
 
-  createMediaElementSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createMediaElementSource", [__arg_0]);
+  createMediaElementSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createMediaElementSource", [__arg_0]);
 
-  createMediaStreamDestination_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createMediaStreamDestination", []);
+  createMediaStreamDestination_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createMediaStreamDestination", []);
 
-  createMediaStreamSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createMediaStreamSource", []);
+  createMediaStreamSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createMediaStreamSource", []);
 
-  createMediaStreamSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createMediaStreamSource", [__arg_0]);
+  createMediaStreamSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createMediaStreamSource", [__arg_0]);
 
-  createOscillator_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createOscillator", []);
+  createOscillator_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createOscillator", []);
 
-  createPanner_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createPanner", []);
+  createPanner_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createPanner", []);
 
-  createPeriodicWave_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createPeriodicWave", []);
+  createPeriodicWave_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createPeriodicWave", []);
 
-  createPeriodicWave_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createPeriodicWave", [__arg_0]);
+  createPeriodicWave_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createPeriodicWave", [__arg_0]);
 
-  createPeriodicWave_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createPeriodicWave", [__arg_0, __arg_1]);
+  createPeriodicWave_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createPeriodicWave", [__arg_0, __arg_1]);
 
-  createScriptProcessor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createScriptProcessor", []);
+  createScriptProcessor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createScriptProcessor", []);
 
-  createScriptProcessor_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createScriptProcessor", [__arg_0]);
+  createScriptProcessor_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createScriptProcessor", [__arg_0]);
 
-  createScriptProcessor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createScriptProcessor", [__arg_0, __arg_1]);
+  createScriptProcessor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createScriptProcessor", [__arg_0, __arg_1]);
 
-  createScriptProcessor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "createScriptProcessor", [__arg_0, __arg_1, __arg_2]);
+  createScriptProcessor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createScriptProcessor", [__arg_0, __arg_1, __arg_2]);
 
-  createStereoPanner_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createStereoPanner", []);
+  createStereoPanner_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createStereoPanner", []);
 
-  createWaveShaper_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createWaveShaper", []);
+  createWaveShaper_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "createWaveShaper", []);
 
-  decodeAudioData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "decodeAudioData", []);
+  decodeAudioData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "decodeAudioData", []);
 
-  decodeAudioData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "decodeAudioData", [__arg_0]);
+  decodeAudioData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "decodeAudioData", [__arg_0]);
 
-  decodeAudioData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "decodeAudioData", [__arg_0, __arg_1]);
+  decodeAudioData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "decodeAudioData", [__arg_0, __arg_1]);
 
-  decodeAudioData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "decodeAudioData", [__arg_0, __arg_1, __arg_2]);
+  decodeAudioData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "decodeAudioData", [__arg_0, __arg_1, __arg_2]);
 
-  resume_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "resume", []);
+  resume_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "resume", []);
 
-  suspend_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "suspend", []);
+  suspend_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioContext */, "suspend", []);
 
 }
 
 class BlinkAudioDestinationNode extends BlinkAudioNode {
   static final instance = new BlinkAudioDestinationNode();
 
-  maxChannelCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "maxChannelCount");
+  maxChannelCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioDestinationNode */, "maxChannelCount");
 
 }
 
 class BlinkAudioListener {
   static final instance = new BlinkAudioListener();
 
-  dopplerFactor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dopplerFactor");
+  dopplerFactor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioListener */, "dopplerFactor");
 
-  dopplerFactor_Setter_(mthis, __arg_0) => mthis["dopplerFactor"] = __arg_0;
+  dopplerFactor_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AudioListener */, "dopplerFactor", __arg_0);
 
-  speedOfSound_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "speedOfSound");
+  speedOfSound_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioListener */, "speedOfSound");
 
-  speedOfSound_Setter_(mthis, __arg_0) => mthis["speedOfSound"] = __arg_0;
+  speedOfSound_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AudioListener */, "speedOfSound", __arg_0);
 
-  setOrientation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "setOrientation", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  setOrientation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* AudioListener */, "setOrientation", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  setOrientation_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "setOrientation", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  setOrientation_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* AudioListener */, "setOrientation", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  setOrientation_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "setOrientation", [__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) => Blink_JsNative_DomException.callMethod(mthis /* AudioListener */, "setOrientation", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  setPosition_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setPosition", [__arg_0]);
+  setPosition_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioListener */, "setPosition", [__arg_0]);
 
-  setPosition_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setPosition", [__arg_0, __arg_1]);
+  setPosition_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* AudioListener */, "setPosition", [__arg_0, __arg_1]);
 
-  setPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setPosition", [__arg_0, __arg_1, __arg_2]);
+  setPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* AudioListener */, "setPosition", [__arg_0, __arg_1, __arg_2]);
 
-  setVelocity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setVelocity", [__arg_0]);
+  setVelocity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioListener */, "setVelocity", [__arg_0]);
 
-  setVelocity_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setVelocity", [__arg_0, __arg_1]);
+  setVelocity_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* AudioListener */, "setVelocity", [__arg_0, __arg_1]);
 
-  setVelocity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setVelocity", [__arg_0, __arg_1, __arg_2]);
+  setVelocity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* AudioListener */, "setVelocity", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkAudioNode extends BlinkEventTarget {
   static final instance = new BlinkAudioNode();
 
-  channelCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "channelCount");
+  channelCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioNode */, "channelCount");
 
-  channelCount_Setter_(mthis, __arg_0) => mthis["channelCount"] = __arg_0;
+  channelCount_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AudioNode */, "channelCount", __arg_0);
 
-  channelCountMode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "channelCountMode");
+  channelCountMode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioNode */, "channelCountMode");
 
-  channelCountMode_Setter_(mthis, __arg_0) => mthis["channelCountMode"] = __arg_0;
+  channelCountMode_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AudioNode */, "channelCountMode", __arg_0);
 
-  channelInterpretation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "channelInterpretation");
+  channelInterpretation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioNode */, "channelInterpretation");
 
-  channelInterpretation_Setter_(mthis, __arg_0) => mthis["channelInterpretation"] = __arg_0;
+  channelInterpretation_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AudioNode */, "channelInterpretation", __arg_0);
 
-  context_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "context");
+  context_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioNode */, "context");
 
-  numberOfInputs_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "numberOfInputs");
+  numberOfInputs_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioNode */, "numberOfInputs");
 
-  numberOfOutputs_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "numberOfOutputs");
+  numberOfOutputs_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioNode */, "numberOfOutputs");
 
-  connect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "connect", []);
+  connect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioNode */, "connect", []);
 
-  connect_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "connect", [__arg_0]);
+  connect_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioNode */, "connect", [__arg_0]);
 
-  connect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "connect", [__arg_0, __arg_1]);
+  connect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* AudioNode */, "connect", [__arg_0, __arg_1]);
 
-  connect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "connect", [__arg_0, __arg_1, __arg_2]);
+  connect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* AudioNode */, "connect", [__arg_0, __arg_1, __arg_2]);
 
-  disconnect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "disconnect", []);
+  disconnect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioNode */, "disconnect", []);
 
-  disconnect_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "disconnect", [__arg_0]);
+  disconnect_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioNode */, "disconnect", [__arg_0]);
 
-  disconnect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "disconnect", [__arg_0, __arg_1]);
+  disconnect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* AudioNode */, "disconnect", [__arg_0, __arg_1]);
 
-  disconnect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "disconnect", [__arg_0, __arg_1, __arg_2]);
+  disconnect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* AudioNode */, "disconnect", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkAudioParam {
   static final instance = new BlinkAudioParam();
 
-  defaultValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "defaultValue");
+  defaultValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioParam */, "defaultValue");
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioParam */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AudioParam */, "value", __arg_0);
 
-  cancelScheduledValues_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cancelScheduledValues", []);
+  cancelScheduledValues_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "cancelScheduledValues", []);
 
-  cancelScheduledValues_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "cancelScheduledValues", [__arg_0]);
+  cancelScheduledValues_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "cancelScheduledValues", [__arg_0]);
 
-  exponentialRampToValueAtTime_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "exponentialRampToValueAtTime", []);
+  exponentialRampToValueAtTime_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "exponentialRampToValueAtTime", []);
 
-  exponentialRampToValueAtTime_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "exponentialRampToValueAtTime", [__arg_0]);
+  exponentialRampToValueAtTime_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "exponentialRampToValueAtTime", [__arg_0]);
 
-  exponentialRampToValueAtTime_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "exponentialRampToValueAtTime", [__arg_0, __arg_1]);
+  exponentialRampToValueAtTime_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "exponentialRampToValueAtTime", [__arg_0, __arg_1]);
 
-  linearRampToValueAtTime_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "linearRampToValueAtTime", []);
+  linearRampToValueAtTime_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "linearRampToValueAtTime", []);
 
-  linearRampToValueAtTime_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "linearRampToValueAtTime", [__arg_0]);
+  linearRampToValueAtTime_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "linearRampToValueAtTime", [__arg_0]);
 
-  linearRampToValueAtTime_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "linearRampToValueAtTime", [__arg_0, __arg_1]);
+  linearRampToValueAtTime_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "linearRampToValueAtTime", [__arg_0, __arg_1]);
 
-  setTargetAtTime_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setTargetAtTime", [__arg_0]);
+  setTargetAtTime_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "setTargetAtTime", [__arg_0]);
 
-  setTargetAtTime_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setTargetAtTime", [__arg_0, __arg_1]);
+  setTargetAtTime_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "setTargetAtTime", [__arg_0, __arg_1]);
 
-  setTargetAtTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setTargetAtTime", [__arg_0, __arg_1, __arg_2]);
+  setTargetAtTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "setTargetAtTime", [__arg_0, __arg_1, __arg_2]);
 
-  setValueAtTime_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setValueAtTime", []);
+  setValueAtTime_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "setValueAtTime", []);
 
-  setValueAtTime_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setValueAtTime", [__arg_0]);
+  setValueAtTime_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "setValueAtTime", [__arg_0]);
 
-  setValueAtTime_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setValueAtTime", [__arg_0, __arg_1]);
+  setValueAtTime_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "setValueAtTime", [__arg_0, __arg_1]);
 
-  setValueCurveAtTime_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setValueCurveAtTime", [__arg_0]);
+  setValueCurveAtTime_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "setValueCurveAtTime", [__arg_0]);
 
-  setValueCurveAtTime_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setValueCurveAtTime", [__arg_0, __arg_1]);
+  setValueCurveAtTime_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "setValueCurveAtTime", [__arg_0, __arg_1]);
 
-  setValueCurveAtTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setValueCurveAtTime", [__arg_0, __arg_1, __arg_2]);
+  setValueCurveAtTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* AudioParam */, "setValueCurveAtTime", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkAudioProcessingEvent extends BlinkEvent {
   static final instance = new BlinkAudioProcessingEvent();
 
-  inputBuffer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "inputBuffer");
+  inputBuffer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioProcessingEvent */, "inputBuffer");
 
-  outputBuffer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "outputBuffer");
+  outputBuffer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioProcessingEvent */, "outputBuffer");
 
-  playbackTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "playbackTime");
+  playbackTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioProcessingEvent */, "playbackTime");
 
 }
 
@@ -1390,272 +1390,272 @@
 class BlinkAudioTrack {
   static final instance = new BlinkAudioTrack();
 
-  enabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "enabled");
+  enabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioTrack */, "enabled");
 
-  enabled_Setter_(mthis, __arg_0) => mthis["enabled"] = __arg_0;
+  enabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AudioTrack */, "enabled", __arg_0);
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioTrack */, "id");
 
-  kind_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "kind");
+  kind_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioTrack */, "kind");
 
-  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "label");
+  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioTrack */, "label");
 
-  language_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "language");
+  language_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioTrack */, "language");
 
 }
 
 class BlinkAudioTrackList extends BlinkEventTarget {
   static final instance = new BlinkAudioTrackList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioTrackList */, "length");
 
-  onaddtrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onaddtrack");
+  onaddtrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioTrackList */, "onaddtrack");
 
-  onaddtrack_Setter_(mthis, __arg_0) => mthis["onaddtrack"] = __arg_0;
+  onaddtrack_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AudioTrackList */, "onaddtrack", __arg_0);
 
-  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onchange");
+  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioTrackList */, "onchange");
 
-  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
+  onchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AudioTrackList */, "onchange", __arg_0);
 
-  onremovetrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onremovetrack");
+  onremovetrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AudioTrackList */, "onremovetrack");
 
-  onremovetrack_Setter_(mthis, __arg_0) => mthis["onremovetrack"] = __arg_0;
+  onremovetrack_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AudioTrackList */, "onremovetrack", __arg_0);
 
-  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__getter__", [__arg_0]);
+  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioTrackList */, "__getter__", [__arg_0]);
 
-  getTrackById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getTrackById", []);
+  getTrackById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* AudioTrackList */, "getTrackById", []);
 
-  getTrackById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getTrackById", [__arg_0]);
+  getTrackById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* AudioTrackList */, "getTrackById", [__arg_0]);
 
 }
 
 class BlinkAutocompleteErrorEvent extends BlinkEvent {
   static final instance = new BlinkAutocompleteErrorEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "AutocompleteErrorEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("AutocompleteErrorEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "AutocompleteErrorEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("AutocompleteErrorEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "AutocompleteErrorEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("AutocompleteErrorEvent", [__arg_0, __arg_1]);
 
-  reason_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "reason");
+  reason_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AutocompleteErrorEvent */, "reason");
 
 }
 
 class BlinkBarProp {
   static final instance = new BlinkBarProp();
 
-  visible_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "visible");
+  visible_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BarProp */, "visible");
 
 }
 
 class BlinkBatteryManager extends BlinkEventTarget {
   static final instance = new BlinkBatteryManager();
 
-  charging_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "charging");
+  charging_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BatteryManager */, "charging");
 
-  chargingTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "chargingTime");
+  chargingTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BatteryManager */, "chargingTime");
 
-  dischargingTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dischargingTime");
+  dischargingTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BatteryManager */, "dischargingTime");
 
-  level_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "level");
+  level_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BatteryManager */, "level");
 
-  onchargingchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onchargingchange");
+  onchargingchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BatteryManager */, "onchargingchange");
 
-  onchargingchange_Setter_(mthis, __arg_0) => mthis["onchargingchange"] = __arg_0;
+  onchargingchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* BatteryManager */, "onchargingchange", __arg_0);
 
-  onchargingtimechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onchargingtimechange");
+  onchargingtimechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BatteryManager */, "onchargingtimechange");
 
-  onchargingtimechange_Setter_(mthis, __arg_0) => mthis["onchargingtimechange"] = __arg_0;
+  onchargingtimechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* BatteryManager */, "onchargingtimechange", __arg_0);
 
-  ondischargingtimechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondischargingtimechange");
+  ondischargingtimechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BatteryManager */, "ondischargingtimechange");
 
-  ondischargingtimechange_Setter_(mthis, __arg_0) => mthis["ondischargingtimechange"] = __arg_0;
+  ondischargingtimechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* BatteryManager */, "ondischargingtimechange", __arg_0);
 
-  onlevelchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onlevelchange");
+  onlevelchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BatteryManager */, "onlevelchange");
 
-  onlevelchange_Setter_(mthis, __arg_0) => mthis["onlevelchange"] = __arg_0;
+  onlevelchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* BatteryManager */, "onlevelchange", __arg_0);
 
 }
 
 class BlinkBeforeInstallPromptEvent extends BlinkEvent {
   static final instance = new BlinkBeforeInstallPromptEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "BeforeInstallPromptEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("BeforeInstallPromptEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "BeforeInstallPromptEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("BeforeInstallPromptEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "BeforeInstallPromptEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("BeforeInstallPromptEvent", [__arg_0, __arg_1]);
 
-  platforms_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "platforms");
+  platforms_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BeforeInstallPromptEvent */, "platforms");
 
-  userChoice_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "userChoice");
+  userChoice_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BeforeInstallPromptEvent */, "userChoice");
 
-  prompt_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "prompt", []);
+  prompt_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* BeforeInstallPromptEvent */, "prompt", []);
 
 }
 
 class BlinkBeforeUnloadEvent extends BlinkEvent {
   static final instance = new BlinkBeforeUnloadEvent();
 
-  returnValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "returnValue");
+  returnValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BeforeUnloadEvent */, "returnValue");
 
-  returnValue_Setter_(mthis, __arg_0) => mthis["returnValue"] = __arg_0;
+  returnValue_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* BeforeUnloadEvent */, "returnValue", __arg_0);
 
 }
 
 class BlinkBiquadFilterNode extends BlinkAudioNode {
   static final instance = new BlinkBiquadFilterNode();
 
-  Q_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "Q");
+  Q_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BiquadFilterNode */, "Q");
 
-  detune_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "detune");
+  detune_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BiquadFilterNode */, "detune");
 
-  frequency_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "frequency");
+  frequency_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BiquadFilterNode */, "frequency");
 
-  gain_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "gain");
+  gain_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BiquadFilterNode */, "gain");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BiquadFilterNode */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* BiquadFilterNode */, "type", __arg_0);
 
-  getFrequencyResponse_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getFrequencyResponse", [__arg_0]);
+  getFrequencyResponse_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* BiquadFilterNode */, "getFrequencyResponse", [__arg_0]);
 
-  getFrequencyResponse_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getFrequencyResponse", [__arg_0, __arg_1]);
+  getFrequencyResponse_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* BiquadFilterNode */, "getFrequencyResponse", [__arg_0, __arg_1]);
 
-  getFrequencyResponse_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getFrequencyResponse", [__arg_0, __arg_1, __arg_2]);
+  getFrequencyResponse_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* BiquadFilterNode */, "getFrequencyResponse", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkBlob {
   static final instance = new BlinkBlob();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Blob"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("Blob");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Blob"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("Blob", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Blob"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("Blob", [__arg_0, __arg_1]);
 
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Blob"), [__arg_0, __arg_1, __arg_2]);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callConstructor("Blob", [__arg_0, __arg_1, __arg_2]);
 
-  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "size");
+  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Blob */, "size");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Blob */, "type");
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Blob */, "close", []);
 
-  slice_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "slice", []);
+  slice_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Blob */, "slice", []);
 
-  slice_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "slice", [__arg_0]);
+  slice_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Blob */, "slice", [__arg_0]);
 
-  slice_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "slice", [__arg_0, __arg_1]);
+  slice_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Blob */, "slice", [__arg_0, __arg_1]);
 
-  slice_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "slice", [__arg_0, __arg_1, __arg_2]);
+  slice_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Blob */, "slice", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkBluetooth {
   static final instance = new BlinkBluetooth();
 
-  requestDevice_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "requestDevice", []);
+  requestDevice_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Bluetooth */, "requestDevice", []);
 
-  requestDevice_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "requestDevice", [__arg_0]);
+  requestDevice_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Bluetooth */, "requestDevice", [__arg_0]);
 
 }
 
 class BlinkBluetoothDevice {
   static final instance = new BlinkBluetoothDevice();
 
-  deviceClass_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "deviceClass");
+  deviceClass_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BluetoothDevice */, "deviceClass");
 
-  instanceID_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "instanceID");
+  instanceID_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BluetoothDevice */, "instanceID");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BluetoothDevice */, "name");
 
-  paired_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "paired");
+  paired_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BluetoothDevice */, "paired");
 
-  productID_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "productID");
+  productID_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BluetoothDevice */, "productID");
 
-  productVersion_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "productVersion");
+  productVersion_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BluetoothDevice */, "productVersion");
 
-  vendorID_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "vendorID");
+  vendorID_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BluetoothDevice */, "vendorID");
 
-  vendorIDSource_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "vendorIDSource");
+  vendorIDSource_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BluetoothDevice */, "vendorIDSource");
 
-  connectGATT_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "connectGATT", []);
+  connectGATT_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* BluetoothDevice */, "connectGATT", []);
 
 }
 
 class BlinkBluetoothGATTCharacteristic {
   static final instance = new BlinkBluetoothGATTCharacteristic();
 
-  uuid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "uuid");
+  uuid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BluetoothGATTCharacteristic */, "uuid");
 
-  readValue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "readValue", []);
+  readValue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* BluetoothGATTCharacteristic */, "readValue", []);
 
-  writeValue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "writeValue", []);
+  writeValue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* BluetoothGATTCharacteristic */, "writeValue", []);
 
-  writeValue_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "writeValue", [__arg_0]);
+  writeValue_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* BluetoothGATTCharacteristic */, "writeValue", [__arg_0]);
 
 }
 
 class BlinkBluetoothGATTRemoteServer {
   static final instance = new BlinkBluetoothGATTRemoteServer();
 
-  connected_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "connected");
+  connected_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BluetoothGATTRemoteServer */, "connected");
 
-  getPrimaryService_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getPrimaryService", []);
+  getPrimaryService_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* BluetoothGATTRemoteServer */, "getPrimaryService", []);
 
-  getPrimaryService_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getPrimaryService", [__arg_0]);
+  getPrimaryService_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* BluetoothGATTRemoteServer */, "getPrimaryService", [__arg_0]);
 
 }
 
 class BlinkBluetoothGATTService {
   static final instance = new BlinkBluetoothGATTService();
 
-  isPrimary_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "isPrimary");
+  isPrimary_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BluetoothGATTService */, "isPrimary");
 
-  uuid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "uuid");
+  uuid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* BluetoothGATTService */, "uuid");
 
-  getCharacteristic_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getCharacteristic", []);
+  getCharacteristic_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* BluetoothGATTService */, "getCharacteristic", []);
 
-  getCharacteristic_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getCharacteristic", [__arg_0]);
+  getCharacteristic_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* BluetoothGATTService */, "getCharacteristic", [__arg_0]);
 
 }
 
 class BlinkBluetoothUUID {
   static final instance = new BlinkBluetoothUUID();
 
-  canonicalUUID_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "BluetoothUUID"), "canonicalUUID", []);
+  canonicalUUID_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "BluetoothUUID") /* BluetoothUUID */, "canonicalUUID", []);
 
-  canonicalUUID_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "BluetoothUUID"), "canonicalUUID", [__arg_0]);
+  canonicalUUID_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "BluetoothUUID") /* BluetoothUUID */, "canonicalUUID", [__arg_0]);
 
-  getCharacteristic_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "BluetoothUUID"), "getCharacteristic", []);
+  getCharacteristic_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "BluetoothUUID") /* BluetoothUUID */, "getCharacteristic", []);
 
-  getCharacteristic_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "BluetoothUUID"), "getCharacteristic", [__arg_0]);
+  getCharacteristic_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "BluetoothUUID") /* BluetoothUUID */, "getCharacteristic", [__arg_0]);
 
-  getDescriptor_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "BluetoothUUID"), "getDescriptor", []);
+  getDescriptor_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "BluetoothUUID") /* BluetoothUUID */, "getDescriptor", []);
 
-  getDescriptor_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "BluetoothUUID"), "getDescriptor", [__arg_0]);
+  getDescriptor_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "BluetoothUUID") /* BluetoothUUID */, "getDescriptor", [__arg_0]);
 
-  getService_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "BluetoothUUID"), "getService", []);
+  getService_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "BluetoothUUID") /* BluetoothUUID */, "getService", []);
 
-  getService_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "BluetoothUUID"), "getService", [__arg_0]);
+  getService_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "BluetoothUUID") /* BluetoothUUID */, "getService", [__arg_0]);
 
 }
 
 class BlinkBody {
   static final instance = new BlinkBody();
 
-  bodyUsed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "bodyUsed");
+  bodyUsed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Body */, "bodyUsed");
 
-  arrayBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "arrayBuffer", []);
+  arrayBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Body */, "arrayBuffer", []);
 
-  blob_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blob", []);
+  blob_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Body */, "blob", []);
 
-  json_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "json", []);
+  json_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Body */, "json", []);
 
-  text_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "text", []);
+  text_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Body */, "text", []);
 
 }
 
@@ -1667,37 +1667,37 @@
 class BlinkCHROMIUMSubscribeUniform {
   static final instance = new BlinkCHROMIUMSubscribeUniform();
 
-  bindValuebufferCHROMIUM_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindValuebufferCHROMIUM", []);
+  bindValuebufferCHROMIUM_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CHROMIUMSubscribeUniform */, "bindValuebufferCHROMIUM", []);
 
-  bindValuebufferCHROMIUM_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindValuebufferCHROMIUM", [__arg_0]);
+  bindValuebufferCHROMIUM_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CHROMIUMSubscribeUniform */, "bindValuebufferCHROMIUM", [__arg_0]);
 
-  bindValuebufferCHROMIUM_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindValuebufferCHROMIUM", [__arg_0, __arg_1]);
+  bindValuebufferCHROMIUM_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CHROMIUMSubscribeUniform */, "bindValuebufferCHROMIUM", [__arg_0, __arg_1]);
 
-  createValuebufferCHROMIUM_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createValuebufferCHROMIUM", []);
+  createValuebufferCHROMIUM_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CHROMIUMSubscribeUniform */, "createValuebufferCHROMIUM", []);
 
-  deleteValuebufferCHROMIUM_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteValuebufferCHROMIUM", []);
+  deleteValuebufferCHROMIUM_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CHROMIUMSubscribeUniform */, "deleteValuebufferCHROMIUM", []);
 
-  deleteValuebufferCHROMIUM_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteValuebufferCHROMIUM", [__arg_0]);
+  deleteValuebufferCHROMIUM_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CHROMIUMSubscribeUniform */, "deleteValuebufferCHROMIUM", [__arg_0]);
 
-  isValuebufferCHROMIUM_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isValuebufferCHROMIUM", []);
+  isValuebufferCHROMIUM_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CHROMIUMSubscribeUniform */, "isValuebufferCHROMIUM", []);
 
-  isValuebufferCHROMIUM_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isValuebufferCHROMIUM", [__arg_0]);
+  isValuebufferCHROMIUM_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CHROMIUMSubscribeUniform */, "isValuebufferCHROMIUM", [__arg_0]);
 
-  populateSubscribedValuesCHROMIUM_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "populateSubscribedValuesCHROMIUM", []);
+  populateSubscribedValuesCHROMIUM_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CHROMIUMSubscribeUniform */, "populateSubscribedValuesCHROMIUM", []);
 
-  populateSubscribedValuesCHROMIUM_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "populateSubscribedValuesCHROMIUM", [__arg_0]);
+  populateSubscribedValuesCHROMIUM_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CHROMIUMSubscribeUniform */, "populateSubscribedValuesCHROMIUM", [__arg_0]);
 
-  subscribeValueCHROMIUM_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "subscribeValueCHROMIUM", []);
+  subscribeValueCHROMIUM_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CHROMIUMSubscribeUniform */, "subscribeValueCHROMIUM", []);
 
-  subscribeValueCHROMIUM_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "subscribeValueCHROMIUM", [__arg_0]);
+  subscribeValueCHROMIUM_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CHROMIUMSubscribeUniform */, "subscribeValueCHROMIUM", [__arg_0]);
 
-  subscribeValueCHROMIUM_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "subscribeValueCHROMIUM", [__arg_0, __arg_1]);
+  subscribeValueCHROMIUM_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CHROMIUMSubscribeUniform */, "subscribeValueCHROMIUM", [__arg_0, __arg_1]);
 
-  uniformValuebufferCHROMIUM_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformValuebufferCHROMIUM", [__arg_0]);
+  uniformValuebufferCHROMIUM_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CHROMIUMSubscribeUniform */, "uniformValuebufferCHROMIUM", [__arg_0]);
 
-  uniformValuebufferCHROMIUM_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformValuebufferCHROMIUM", [__arg_0, __arg_1]);
+  uniformValuebufferCHROMIUM_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CHROMIUMSubscribeUniform */, "uniformValuebufferCHROMIUM", [__arg_0, __arg_1]);
 
-  uniformValuebufferCHROMIUM_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformValuebufferCHROMIUM", [__arg_0, __arg_1, __arg_2]);
+  uniformValuebufferCHROMIUM_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CHROMIUMSubscribeUniform */, "uniformValuebufferCHROMIUM", [__arg_0, __arg_1, __arg_2]);
 
 }
 
@@ -1709,724 +1709,724 @@
 class BlinkCSS {
   static final instance = new BlinkCSS();
 
-  supports_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "CSS"), "supports", []);
+  supports_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "CSS") /* CSS */, "supports", []);
 
-  supports_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "CSS"), "supports", [__arg_0]);
+  supports_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "CSS") /* CSS */, "supports", [__arg_0]);
 
-  supports_Callback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "CSS"), "supports", [__arg_0, __arg_1]);
+  supports_Callback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "CSS") /* CSS */, "supports", [__arg_0, __arg_1]);
 
 }
 
 class BlinkCSSCharsetRule extends BlinkCSSRule {
   static final instance = new BlinkCSSCharsetRule();
 
-  encoding_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "encoding");
+  encoding_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSCharsetRule */, "encoding");
 
-  encoding_Setter_(mthis, __arg_0) => mthis["encoding"] = __arg_0;
+  encoding_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CSSCharsetRule */, "encoding", __arg_0);
 
 }
 
 class BlinkCSSFontFaceRule extends BlinkCSSRule {
   static final instance = new BlinkCSSFontFaceRule();
 
-  style_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "style");
+  style_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSFontFaceRule */, "style");
 
 }
 
 class BlinkCSSGroupingRule extends BlinkCSSRule {
   static final instance = new BlinkCSSGroupingRule();
 
-  cssRules_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cssRules");
+  cssRules_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSGroupingRule */, "cssRules");
 
-  deleteRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteRule", []);
+  deleteRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CSSGroupingRule */, "deleteRule", []);
 
-  deleteRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteRule", [__arg_0]);
+  deleteRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSGroupingRule */, "deleteRule", [__arg_0]);
 
-  insertRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertRule", []);
+  insertRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CSSGroupingRule */, "insertRule", []);
 
-  insertRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertRule", [__arg_0]);
+  insertRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSGroupingRule */, "insertRule", [__arg_0]);
 
-  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "insertRule", [__arg_0, __arg_1]);
+  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CSSGroupingRule */, "insertRule", [__arg_0, __arg_1]);
 
 }
 
 class BlinkCSSImportRule extends BlinkCSSRule {
   static final instance = new BlinkCSSImportRule();
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSImportRule */, "href");
 
-  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "media");
+  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSImportRule */, "media");
 
-  styleSheet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "styleSheet");
+  styleSheet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSImportRule */, "styleSheet");
 
 }
 
 class BlinkCSSKeyframeRule extends BlinkCSSRule {
   static final instance = new BlinkCSSKeyframeRule();
 
-  keyText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "keyText");
+  keyText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSKeyframeRule */, "keyText");
 
-  keyText_Setter_(mthis, __arg_0) => mthis["keyText"] = __arg_0;
+  keyText_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CSSKeyframeRule */, "keyText", __arg_0);
 
-  style_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "style");
+  style_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSKeyframeRule */, "style");
 
 }
 
 class BlinkCSSKeyframesRule extends BlinkCSSRule {
   static final instance = new BlinkCSSKeyframesRule();
 
-  cssRules_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cssRules");
+  cssRules_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSKeyframesRule */, "cssRules");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSKeyframesRule */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CSSKeyframesRule */, "name", __arg_0);
 
-  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__getter__", [__arg_0]);
+  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSKeyframesRule */, "__getter__", [__arg_0]);
 
-  appendRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "appendRule", []);
+  appendRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CSSKeyframesRule */, "appendRule", []);
 
-  appendRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "appendRule", [__arg_0]);
+  appendRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSKeyframesRule */, "appendRule", [__arg_0]);
 
-  deleteRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteRule", []);
+  deleteRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CSSKeyframesRule */, "deleteRule", []);
 
-  deleteRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteRule", [__arg_0]);
+  deleteRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSKeyframesRule */, "deleteRule", [__arg_0]);
 
-  findRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "findRule", []);
+  findRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CSSKeyframesRule */, "findRule", []);
 
-  findRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "findRule", [__arg_0]);
+  findRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSKeyframesRule */, "findRule", [__arg_0]);
 
 }
 
 class BlinkCSSMediaRule extends BlinkCSSGroupingRule {
   static final instance = new BlinkCSSMediaRule();
 
-  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "media");
+  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSMediaRule */, "media");
 
 }
 
 class BlinkCSSPageRule extends BlinkCSSRule {
   static final instance = new BlinkCSSPageRule();
 
-  selectorText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "selectorText");
+  selectorText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSPageRule */, "selectorText");
 
-  selectorText_Setter_(mthis, __arg_0) => mthis["selectorText"] = __arg_0;
+  selectorText_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CSSPageRule */, "selectorText", __arg_0);
 
-  style_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "style");
+  style_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSPageRule */, "style");
 
 }
 
 class BlinkCSSRule {
   static final instance = new BlinkCSSRule();
 
-  cssText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cssText");
+  cssText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSRule */, "cssText");
 
-  cssText_Setter_(mthis, __arg_0) => mthis["cssText"] = __arg_0;
+  cssText_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CSSRule */, "cssText", __arg_0);
 
-  parentRule_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "parentRule");
+  parentRule_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSRule */, "parentRule");
 
-  parentStyleSheet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "parentStyleSheet");
+  parentStyleSheet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSRule */, "parentStyleSheet");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSRule */, "type");
 
 }
 
 class BlinkCSSRuleList {
   static final instance = new BlinkCSSRuleList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSRuleList */, "length");
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CSSRuleList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSRuleList */, "item", [__arg_0]);
 
 }
 
 class BlinkCSSStyleDeclaration {
   static final instance = new BlinkCSSStyleDeclaration();
 
-  cssText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cssText");
+  cssText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSStyleDeclaration */, "cssText");
 
-  cssText_Setter_(mthis, __arg_0) => mthis["cssText"] = __arg_0;
+  cssText_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CSSStyleDeclaration */, "cssText", __arg_0);
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSStyleDeclaration */, "length");
 
-  parentRule_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "parentRule");
+  parentRule_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSStyleDeclaration */, "parentRule");
 
-  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__getter__", [__arg_0]);
+  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleDeclaration */, "__getter__", [__arg_0]);
 
-  $__propertyQuery___Callback_1_(mthis, __arg_0) => mthis[__arg_0];
+  $__propertyQuery___Callback_1_(mthis, __arg_0) native "Blink_Operation_PQ_CSSStyleDeclaration";
 
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "__setter__", [__arg_0, __arg_1]);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleDeclaration */, "__setter__", [__arg_0, __arg_1]);
 
-  getPropertyPriority_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getPropertyPriority", []);
+  getPropertyPriority_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleDeclaration */, "getPropertyPriority", []);
 
-  getPropertyPriority_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getPropertyPriority", [__arg_0]);
+  getPropertyPriority_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleDeclaration */, "getPropertyPriority", [__arg_0]);
 
-  getPropertyValue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getPropertyValue", []);
+  getPropertyValue_Callback_0_(mthis) native "Blink_Operation_0_CSSStyleDeclaration_getPropertyValue";
 
-  getPropertyValue_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getPropertyValue", [__arg_0]);
+  getPropertyValue_Callback_1_(mthis, __arg_0) native "Blink_Operation_CSSStyleDeclaration_getPropertyValue"; /* __arg_0 */
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleDeclaration */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleDeclaration */, "item", [__arg_0]);
 
-  removeProperty_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeProperty", []);
+  removeProperty_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleDeclaration */, "removeProperty", []);
 
-  removeProperty_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeProperty", [__arg_0]);
+  removeProperty_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleDeclaration */, "removeProperty", [__arg_0]);
 
-  setProperty_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setProperty", [__arg_0]);
+  setProperty_Callback_1_(mthis, __arg_0) native "Blink_Operation_CSSStyleDeclaration_setProperty"; /* __arg_0 */
 
-  setProperty_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setProperty", [__arg_0, __arg_1]);
+  setProperty_Callback_2_(mthis, __arg_0, __arg_1) native "Blink_Operation_CSSStyleDeclaration_setProperty"; /* __arg_0, __arg_1 */
 
-  setProperty_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setProperty", [__arg_0, __arg_1, __arg_2]);
+  setProperty_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) native "Blink_Operation_CSSStyleDeclaration_setProperty"; /* __arg_0, __arg_1, __arg_2 */
 
 }
 
 class BlinkCSSStyleRule extends BlinkCSSRule {
   static final instance = new BlinkCSSStyleRule();
 
-  selectorText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "selectorText");
+  selectorText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSStyleRule */, "selectorText");
 
-  selectorText_Setter_(mthis, __arg_0) => mthis["selectorText"] = __arg_0;
+  selectorText_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CSSStyleRule */, "selectorText", __arg_0);
 
-  style_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "style");
+  style_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSStyleRule */, "style");
 
 }
 
 class BlinkCSSStyleSheet extends BlinkStyleSheet {
   static final instance = new BlinkCSSStyleSheet();
 
-  cssRules_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cssRules");
+  cssRules_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSStyleSheet */, "cssRules");
 
-  ownerRule_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ownerRule");
+  ownerRule_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSStyleSheet */, "ownerRule");
 
-  rules_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rules");
+  rules_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSStyleSheet */, "rules");
 
-  addRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "addRule", []);
+  addRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleSheet */, "addRule", []);
 
-  addRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addRule", [__arg_0]);
+  addRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleSheet */, "addRule", [__arg_0]);
 
-  addRule_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "addRule", [__arg_0, __arg_1]);
+  addRule_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleSheet */, "addRule", [__arg_0, __arg_1]);
 
-  addRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "addRule", [__arg_0, __arg_1, __arg_2]);
+  addRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleSheet */, "addRule", [__arg_0, __arg_1, __arg_2]);
 
-  deleteRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteRule", []);
+  deleteRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleSheet */, "deleteRule", []);
 
-  deleteRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteRule", [__arg_0]);
+  deleteRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleSheet */, "deleteRule", [__arg_0]);
 
-  insertRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertRule", []);
+  insertRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleSheet */, "insertRule", []);
 
-  insertRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertRule", [__arg_0]);
+  insertRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleSheet */, "insertRule", [__arg_0]);
 
-  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "insertRule", [__arg_0, __arg_1]);
+  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleSheet */, "insertRule", [__arg_0, __arg_1]);
 
-  removeRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeRule", []);
+  removeRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleSheet */, "removeRule", []);
 
-  removeRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeRule", [__arg_0]);
+  removeRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSStyleSheet */, "removeRule", [__arg_0]);
 
 }
 
 class BlinkCSSSupportsRule extends BlinkCSSRule {
   static final instance = new BlinkCSSSupportsRule();
 
-  conditionText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "conditionText");
+  conditionText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSSupportsRule */, "conditionText");
 
-  cssRules_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cssRules");
+  cssRules_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSSupportsRule */, "cssRules");
 
-  deleteRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteRule", []);
+  deleteRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CSSSupportsRule */, "deleteRule", []);
 
-  deleteRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteRule", [__arg_0]);
+  deleteRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSSupportsRule */, "deleteRule", [__arg_0]);
 
-  insertRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertRule", []);
+  insertRule_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CSSSupportsRule */, "insertRule", []);
 
-  insertRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertRule", [__arg_0]);
+  insertRule_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CSSSupportsRule */, "insertRule", [__arg_0]);
 
-  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "insertRule", [__arg_0, __arg_1]);
+  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CSSSupportsRule */, "insertRule", [__arg_0, __arg_1]);
 
 }
 
 class BlinkCSSViewportRule extends BlinkCSSRule {
   static final instance = new BlinkCSSViewportRule();
 
-  style_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "style");
+  style_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CSSViewportRule */, "style");
 
 }
 
 class BlinkCache {
   static final instance = new BlinkCache();
 
-  add_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "add", []);
+  add_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Cache */, "add", []);
 
-  add_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "add", [__arg_0]);
+  add_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Cache */, "add", [__arg_0]);
 
-  addAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "addAll", []);
+  addAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Cache */, "addAll", []);
 
-  addAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addAll", [__arg_0]);
+  addAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Cache */, "addAll", [__arg_0]);
 
-  delete_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "delete", []);
+  delete_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Cache */, "delete", []);
 
-  delete_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "delete", [__arg_0]);
+  delete_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Cache */, "delete", [__arg_0]);
 
-  delete_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "delete", [__arg_0, __arg_1]);
+  delete_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Cache */, "delete", [__arg_0, __arg_1]);
 
-  keys_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "keys", []);
+  keys_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Cache */, "keys", []);
 
-  keys_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "keys", [__arg_0]);
+  keys_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Cache */, "keys", [__arg_0]);
 
-  keys_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "keys", [__arg_0, __arg_1]);
+  keys_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Cache */, "keys", [__arg_0, __arg_1]);
 
-  match_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "match", []);
+  match_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Cache */, "match", []);
 
-  match_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "match", [__arg_0]);
+  match_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Cache */, "match", [__arg_0]);
 
-  match_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "match", [__arg_0, __arg_1]);
+  match_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Cache */, "match", [__arg_0, __arg_1]);
 
-  put_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "put", []);
+  put_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Cache */, "put", []);
 
-  put_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "put", [__arg_0]);
+  put_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Cache */, "put", [__arg_0]);
 
-  put_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "put", [__arg_0, __arg_1]);
+  put_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Cache */, "put", [__arg_0, __arg_1]);
 
 }
 
 class BlinkCacheStorage {
   static final instance = new BlinkCacheStorage();
 
-  delete_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "delete", []);
+  delete_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CacheStorage */, "delete", []);
 
-  delete_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "delete", [__arg_0]);
+  delete_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CacheStorage */, "delete", [__arg_0]);
 
-  has_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "has", []);
+  has_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CacheStorage */, "has", []);
 
-  has_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "has", [__arg_0]);
+  has_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CacheStorage */, "has", [__arg_0]);
 
-  keys_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "keys", []);
+  keys_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CacheStorage */, "keys", []);
 
-  match_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "match", []);
+  match_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CacheStorage */, "match", []);
 
-  match_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "match", [__arg_0]);
+  match_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CacheStorage */, "match", [__arg_0]);
 
-  match_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "match", [__arg_0, __arg_1]);
+  match_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CacheStorage */, "match", [__arg_0, __arg_1]);
 
-  open_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "open", []);
+  open_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CacheStorage */, "open", []);
 
-  open_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "open", [__arg_0]);
+  open_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CacheStorage */, "open", [__arg_0]);
 
 }
 
 class BlinkCanvasGradient {
   static final instance = new BlinkCanvasGradient();
 
-  addColorStop_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "addColorStop", []);
+  addColorStop_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasGradient */, "addColorStop", []);
 
-  addColorStop_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addColorStop", [__arg_0]);
+  addColorStop_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasGradient */, "addColorStop", [__arg_0]);
 
-  addColorStop_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "addColorStop", [__arg_0, __arg_1]);
+  addColorStop_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasGradient */, "addColorStop", [__arg_0, __arg_1]);
 
 }
 
 class BlinkCanvasPathMethods {
   static final instance = new BlinkCanvasPathMethods();
 
-  arc_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "arc", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  arc_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arc", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  arc_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "arc", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  arc_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arc", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  arc_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "arc", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arc", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  arcTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "arcTo", [__arg_0, __arg_1, __arg_2]);
+  arcTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arcTo", [__arg_0, __arg_1, __arg_2]);
 
-  arcTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "arcTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  arcTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arcTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  arcTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "arcTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  arcTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arcTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  bezierCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  bezierCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  bezierCurveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  bezierCurveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  bezierCurveTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "bezierCurveTo", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  closePath_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "closePath", []);
+  closePath_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "closePath", []);
 
-  ellipse_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "ellipse", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  ellipse_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "ellipse", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  ellipse_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "ellipse", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  lineTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "lineTo", []);
+  lineTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "lineTo", []);
 
-  lineTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "lineTo", [__arg_0]);
+  lineTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "lineTo", [__arg_0]);
 
-  lineTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "lineTo", [__arg_0, __arg_1]);
+  lineTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "lineTo", [__arg_0, __arg_1]);
 
-  moveTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", []);
+  moveTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "moveTo", []);
 
-  moveTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", [__arg_0]);
+  moveTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "moveTo", [__arg_0]);
 
-  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", [__arg_0, __arg_1]);
+  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "moveTo", [__arg_0, __arg_1]);
 
-  quadraticCurveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "quadraticCurveTo", [__arg_0, __arg_1]);
+  quadraticCurveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "quadraticCurveTo", [__arg_0, __arg_1]);
 
-  quadraticCurveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "quadraticCurveTo", [__arg_0, __arg_1, __arg_2]);
+  quadraticCurveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "quadraticCurveTo", [__arg_0, __arg_1, __arg_2]);
 
-  quadraticCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "quadraticCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  quadraticCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "quadraticCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  rect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "rect", [__arg_0, __arg_1]);
+  rect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "rect", [__arg_0, __arg_1]);
 
-  rect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "rect", [__arg_0, __arg_1, __arg_2]);
+  rect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "rect", [__arg_0, __arg_1, __arg_2]);
 
-  rect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "rect", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  rect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "rect", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
 class BlinkCanvasPattern {
   static final instance = new BlinkCanvasPattern();
 
-  setTransform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setTransform", []);
+  setTransform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPattern */, "setTransform", []);
 
-  setTransform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setTransform", [__arg_0]);
+  setTransform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPattern */, "setTransform", [__arg_0]);
 
 }
 
 class BlinkCanvasRenderingContext2D {
   static final instance = new BlinkCanvasRenderingContext2D();
 
-  canvas_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "canvas");
+  canvas_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "canvas");
 
-  currentTransform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "currentTransform");
+  currentTransform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "currentTransform");
 
-  currentTransform_Setter_(mthis, __arg_0) => mthis["currentTransform"] = __arg_0;
+  currentTransform_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "currentTransform", __arg_0);
 
-  direction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "direction");
+  direction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "direction");
 
-  direction_Setter_(mthis, __arg_0) => mthis["direction"] = __arg_0;
+  direction_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "direction", __arg_0);
 
-  fillStyle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fillStyle");
+  fillStyle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "fillStyle");
 
-  fillStyle_Setter_(mthis, __arg_0) => mthis["fillStyle"] = __arg_0;
+  fillStyle_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "fillStyle", __arg_0);
 
-  filter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "filter");
+  filter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "filter");
 
-  filter_Setter_(mthis, __arg_0) => mthis["filter"] = __arg_0;
+  filter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "filter", __arg_0);
 
-  font_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "font");
+  font_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "font");
 
-  font_Setter_(mthis, __arg_0) => mthis["font"] = __arg_0;
+  font_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "font", __arg_0);
 
-  globalAlpha_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "globalAlpha");
+  globalAlpha_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "globalAlpha");
 
-  globalAlpha_Setter_(mthis, __arg_0) => mthis["globalAlpha"] = __arg_0;
+  globalAlpha_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "globalAlpha", __arg_0);
 
-  globalCompositeOperation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "globalCompositeOperation");
+  globalCompositeOperation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "globalCompositeOperation");
 
-  globalCompositeOperation_Setter_(mthis, __arg_0) => mthis["globalCompositeOperation"] = __arg_0;
+  globalCompositeOperation_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "globalCompositeOperation", __arg_0);
 
-  imageSmoothingEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "imageSmoothingEnabled");
+  imageSmoothingEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "imageSmoothingEnabled");
 
-  imageSmoothingEnabled_Setter_(mthis, __arg_0) => mthis["imageSmoothingEnabled"] = __arg_0;
+  imageSmoothingEnabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "imageSmoothingEnabled", __arg_0);
 
-  lineCap_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lineCap");
+  lineCap_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "lineCap");
 
-  lineCap_Setter_(mthis, __arg_0) => mthis["lineCap"] = __arg_0;
+  lineCap_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "lineCap", __arg_0);
 
-  lineDashOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lineDashOffset");
+  lineDashOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "lineDashOffset");
 
-  lineDashOffset_Setter_(mthis, __arg_0) => mthis["lineDashOffset"] = __arg_0;
+  lineDashOffset_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "lineDashOffset", __arg_0);
 
-  lineJoin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lineJoin");
+  lineJoin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "lineJoin");
 
-  lineJoin_Setter_(mthis, __arg_0) => mthis["lineJoin"] = __arg_0;
+  lineJoin_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "lineJoin", __arg_0);
 
-  lineWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lineWidth");
+  lineWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "lineWidth");
 
-  lineWidth_Setter_(mthis, __arg_0) => mthis["lineWidth"] = __arg_0;
+  lineWidth_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "lineWidth", __arg_0);
 
-  miterLimit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "miterLimit");
+  miterLimit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "miterLimit");
 
-  miterLimit_Setter_(mthis, __arg_0) => mthis["miterLimit"] = __arg_0;
+  miterLimit_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "miterLimit", __arg_0);
 
-  shadowBlur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "shadowBlur");
+  shadowBlur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "shadowBlur");
 
-  shadowBlur_Setter_(mthis, __arg_0) => mthis["shadowBlur"] = __arg_0;
+  shadowBlur_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "shadowBlur", __arg_0);
 
-  shadowColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "shadowColor");
+  shadowColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "shadowColor");
 
-  shadowColor_Setter_(mthis, __arg_0) => mthis["shadowColor"] = __arg_0;
+  shadowColor_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "shadowColor", __arg_0);
 
-  shadowOffsetX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "shadowOffsetX");
+  shadowOffsetX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "shadowOffsetX");
 
-  shadowOffsetX_Setter_(mthis, __arg_0) => mthis["shadowOffsetX"] = __arg_0;
+  shadowOffsetX_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "shadowOffsetX", __arg_0);
 
-  shadowOffsetY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "shadowOffsetY");
+  shadowOffsetY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "shadowOffsetY");
 
-  shadowOffsetY_Setter_(mthis, __arg_0) => mthis["shadowOffsetY"] = __arg_0;
+  shadowOffsetY_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "shadowOffsetY", __arg_0);
 
-  strokeStyle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "strokeStyle");
+  strokeStyle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "strokeStyle");
 
-  strokeStyle_Setter_(mthis, __arg_0) => mthis["strokeStyle"] = __arg_0;
+  strokeStyle_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "strokeStyle", __arg_0);
 
-  textAlign_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "textAlign");
+  textAlign_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "textAlign");
 
-  textAlign_Setter_(mthis, __arg_0) => mthis["textAlign"] = __arg_0;
+  textAlign_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "textAlign", __arg_0);
 
-  textBaseline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "textBaseline");
+  textBaseline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "textBaseline");
 
-  textBaseline_Setter_(mthis, __arg_0) => mthis["textBaseline"] = __arg_0;
+  textBaseline_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "textBaseline", __arg_0);
 
-  webkitImageSmoothingEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitImageSmoothingEnabled");
+  webkitImageSmoothingEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CanvasRenderingContext2D */, "webkitImageSmoothingEnabled");
 
-  webkitImageSmoothingEnabled_Setter_(mthis, __arg_0) => mthis["webkitImageSmoothingEnabled"] = __arg_0;
+  webkitImageSmoothingEnabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CanvasRenderingContext2D */, "webkitImageSmoothingEnabled", __arg_0);
 
-  addHitRegion_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "addHitRegion", []);
+  addHitRegion_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "addHitRegion", []);
 
-  addHitRegion_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addHitRegion", [__arg_0]);
+  addHitRegion_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "addHitRegion", [__arg_0]);
 
-  beginPath_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "beginPath", []);
+  beginPath_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "beginPath", []);
 
-  clearHitRegions_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearHitRegions", []);
+  clearHitRegions_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "clearHitRegions", []);
 
-  clearRect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "clearRect", [__arg_0, __arg_1]);
+  clearRect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "clearRect", [__arg_0, __arg_1]);
 
-  clearRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "clearRect", [__arg_0, __arg_1, __arg_2]);
+  clearRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "clearRect", [__arg_0, __arg_1, __arg_2]);
 
-  clearRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "clearRect", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  clearRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "clearRect", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  clip_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clip", []);
+  clip_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "clip", []);
 
-  clip_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clip", [__arg_0]);
+  clip_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "clip", [__arg_0]);
 
-  clip_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "clip", [__arg_0, __arg_1]);
+  clip_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "clip", [__arg_0, __arg_1]);
 
-  createImageData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createImageData", []);
+  createImageData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "createImageData", []);
 
-  createImageData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createImageData", [__arg_0]);
+  createImageData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "createImageData", [__arg_0]);
 
-  createImageData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createImageData", [__arg_0, __arg_1]);
+  createImageData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "createImageData", [__arg_0, __arg_1]);
 
-  createLinearGradient_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createLinearGradient", [__arg_0, __arg_1]);
+  createLinearGradient_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "createLinearGradient", [__arg_0, __arg_1]);
 
-  createLinearGradient_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "createLinearGradient", [__arg_0, __arg_1, __arg_2]);
+  createLinearGradient_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "createLinearGradient", [__arg_0, __arg_1, __arg_2]);
 
-  createLinearGradient_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "createLinearGradient", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  createLinearGradient_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "createLinearGradient", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  createPattern_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createPattern", []);
+  createPattern_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "createPattern", []);
 
-  createPattern_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createPattern", [__arg_0]);
+  createPattern_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "createPattern", [__arg_0]);
 
-  createPattern_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createPattern", [__arg_0, __arg_1]);
+  createPattern_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "createPattern", [__arg_0, __arg_1]);
 
-  createRadialGradient_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "createRadialGradient", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  createRadialGradient_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "createRadialGradient", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  createRadialGradient_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "createRadialGradient", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  createRadialGradient_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "createRadialGradient", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  createRadialGradient_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "createRadialGradient", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "createRadialGradient", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  drawFocusIfNeeded_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "drawFocusIfNeeded", []);
+  drawFocusIfNeeded_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "drawFocusIfNeeded", []);
 
-  drawFocusIfNeeded_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "drawFocusIfNeeded", [__arg_0]);
+  drawFocusIfNeeded_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "drawFocusIfNeeded", [__arg_0]);
 
-  drawFocusIfNeeded_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "drawFocusIfNeeded", [__arg_0, __arg_1]);
+  drawFocusIfNeeded_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "drawFocusIfNeeded", [__arg_0, __arg_1]);
 
-  drawImage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "drawImage", [__arg_0]);
+  drawImage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "drawImage", [__arg_0]);
 
-  drawImage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "drawImage", [__arg_0, __arg_1]);
+  drawImage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "drawImage", [__arg_0, __arg_1]);
 
-  drawImage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "drawImage", [__arg_0, __arg_1, __arg_2]);
+  drawImage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "drawImage", [__arg_0, __arg_1, __arg_2]);
 
-  drawImage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "drawImage", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  drawImage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "drawImage", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  drawImage_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "drawImage", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  drawImage_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "drawImage", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  drawImage_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "drawImage", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "drawImage", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  drawImage_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "drawImage", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "drawImage", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  drawImage_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "drawImage", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "drawImage", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  drawImage_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "drawImage", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "drawImage", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  fill_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "fill", []);
+  fill_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "fill", []);
 
-  fill_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "fill", [__arg_0]);
+  fill_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "fill", [__arg_0]);
 
-  fill_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "fill", [__arg_0, __arg_1]);
+  fill_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "fill", [__arg_0, __arg_1]);
 
-  fillRect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "fillRect", [__arg_0, __arg_1]);
+  fillRect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "fillRect", [__arg_0, __arg_1]);
 
-  fillRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "fillRect", [__arg_0, __arg_1, __arg_2]);
+  fillRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "fillRect", [__arg_0, __arg_1, __arg_2]);
 
-  fillRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "fillRect", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  fillRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "fillRect", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  fillText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "fillText", [__arg_0]);
+  fillText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "fillText", [__arg_0]);
 
-  fillText_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "fillText", [__arg_0, __arg_1]);
+  fillText_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "fillText", [__arg_0, __arg_1]);
 
-  fillText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "fillText", [__arg_0, __arg_1, __arg_2]);
+  fillText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "fillText", [__arg_0, __arg_1, __arg_2]);
 
-  fillText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "fillText", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  fillText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "fillText", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  getContextAttributes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getContextAttributes", []);
+  getContextAttributes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "getContextAttributes", []);
 
-  getImageData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getImageData", [__arg_0, __arg_1]);
+  getImageData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "getImageData", [__arg_0, __arg_1]);
 
-  getImageData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getImageData", [__arg_0, __arg_1, __arg_2]);
+  getImageData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "getImageData", [__arg_0, __arg_1, __arg_2]);
 
-  getImageData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "getImageData", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  getImageData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "getImageData", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  getLineDash_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getLineDash", []);
+  getLineDash_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "getLineDash", []);
 
-  isContextLost_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isContextLost", []);
+  isContextLost_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "isContextLost", []);
 
-  isPointInPath_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isPointInPath", []);
+  isPointInPath_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "isPointInPath", []);
 
-  isPointInPath_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isPointInPath", [__arg_0]);
+  isPointInPath_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "isPointInPath", [__arg_0]);
 
-  isPointInPath_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "isPointInPath", [__arg_0, __arg_1]);
+  isPointInPath_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "isPointInPath", [__arg_0, __arg_1]);
 
-  isPointInPath_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "isPointInPath", [__arg_0, __arg_1, __arg_2]);
+  isPointInPath_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "isPointInPath", [__arg_0, __arg_1, __arg_2]);
 
-  isPointInPath_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "isPointInPath", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  isPointInPath_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "isPointInPath", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  isPointInStroke_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isPointInStroke", []);
+  isPointInStroke_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "isPointInStroke", []);
 
-  isPointInStroke_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isPointInStroke", [__arg_0]);
+  isPointInStroke_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "isPointInStroke", [__arg_0]);
 
-  isPointInStroke_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "isPointInStroke", [__arg_0, __arg_1]);
+  isPointInStroke_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "isPointInStroke", [__arg_0, __arg_1]);
 
-  isPointInStroke_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "isPointInStroke", [__arg_0, __arg_1, __arg_2]);
+  isPointInStroke_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "isPointInStroke", [__arg_0, __arg_1, __arg_2]);
 
-  measureText_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "measureText", []);
+  measureText_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "measureText", []);
 
-  measureText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "measureText", [__arg_0]);
+  measureText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "measureText", [__arg_0]);
 
-  putImageData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "putImageData", [__arg_0]);
+  putImageData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "putImageData", [__arg_0]);
 
-  putImageData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "putImageData", [__arg_0, __arg_1]);
+  putImageData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "putImageData", [__arg_0, __arg_1]);
 
-  putImageData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "putImageData", [__arg_0, __arg_1, __arg_2]);
+  putImageData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "putImageData", [__arg_0, __arg_1, __arg_2]);
 
-  putImageData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "putImageData", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  putImageData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "putImageData", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  putImageData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "putImageData", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  putImageData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "putImageData", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  putImageData_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "putImageData", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "putImageData", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  putImageData_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "putImageData", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "putImageData", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  removeHitRegion_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeHitRegion", []);
+  removeHitRegion_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "removeHitRegion", []);
 
-  removeHitRegion_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeHitRegion", [__arg_0]);
+  removeHitRegion_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "removeHitRegion", [__arg_0]);
 
-  resetTransform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "resetTransform", []);
+  resetTransform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "resetTransform", []);
 
-  restore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "restore", []);
+  restore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "restore", []);
 
-  rotate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "rotate", []);
+  rotate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "rotate", []);
 
-  rotate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "rotate", [__arg_0]);
+  rotate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "rotate", [__arg_0]);
 
-  save_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "save", []);
+  save_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "save", []);
 
-  scale_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scale", []);
+  scale_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "scale", []);
 
-  scale_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scale", [__arg_0]);
+  scale_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "scale", [__arg_0]);
 
-  scale_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scale", [__arg_0, __arg_1]);
+  scale_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "scale", [__arg_0, __arg_1]);
 
-  scrollPathIntoView_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scrollPathIntoView", []);
+  scrollPathIntoView_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "scrollPathIntoView", []);
 
-  scrollPathIntoView_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scrollPathIntoView", [__arg_0]);
+  scrollPathIntoView_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "scrollPathIntoView", [__arg_0]);
 
-  setLineDash_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setLineDash", []);
+  setLineDash_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "setLineDash", []);
 
-  setLineDash_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setLineDash", [__arg_0]);
+  setLineDash_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "setLineDash", [__arg_0]);
 
-  setTransform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "setTransform", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  setTransform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "setTransform", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  setTransform_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "setTransform", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  setTransform_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "setTransform", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  setTransform_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "setTransform", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "setTransform", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  stroke_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stroke", []);
+  stroke_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "stroke", []);
 
-  stroke_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stroke", [__arg_0]);
+  stroke_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "stroke", [__arg_0]);
 
-  strokeRect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "strokeRect", [__arg_0, __arg_1]);
+  strokeRect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "strokeRect", [__arg_0, __arg_1]);
 
-  strokeRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "strokeRect", [__arg_0, __arg_1, __arg_2]);
+  strokeRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "strokeRect", [__arg_0, __arg_1, __arg_2]);
 
-  strokeRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "strokeRect", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  strokeRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "strokeRect", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  strokeText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "strokeText", [__arg_0]);
+  strokeText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "strokeText", [__arg_0]);
 
-  strokeText_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "strokeText", [__arg_0, __arg_1]);
+  strokeText_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "strokeText", [__arg_0, __arg_1]);
 
-  strokeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "strokeText", [__arg_0, __arg_1, __arg_2]);
+  strokeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "strokeText", [__arg_0, __arg_1, __arg_2]);
 
-  strokeText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "strokeText", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  strokeText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "strokeText", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  transform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "transform", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  transform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "transform", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  transform_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "transform", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  transform_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "transform", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  transform_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "transform", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "transform", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  translate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "translate", []);
+  translate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "translate", []);
 
-  translate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "translate", [__arg_0]);
+  translate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "translate", [__arg_0]);
 
-  translate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "translate", [__arg_0, __arg_1]);
+  translate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasRenderingContext2D */, "translate", [__arg_0, __arg_1]);
 
-  arc_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "arc", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  arc_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arc", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  arc_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "arc", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  arc_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arc", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  arc_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "arc", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arc", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  arcTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "arcTo", [__arg_0, __arg_1, __arg_2]);
+  arcTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arcTo", [__arg_0, __arg_1, __arg_2]);
 
-  arcTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "arcTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  arcTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arcTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  arcTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "arcTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  arcTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arcTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  bezierCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  bezierCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  bezierCurveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  bezierCurveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  bezierCurveTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "bezierCurveTo", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  closePath_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "closePath", []);
+  closePath_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "closePath", []);
 
-  ellipse_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "ellipse", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  ellipse_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "ellipse", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  ellipse_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "ellipse", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  lineTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "lineTo", []);
+  lineTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "lineTo", []);
 
-  lineTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "lineTo", [__arg_0]);
+  lineTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "lineTo", [__arg_0]);
 
-  lineTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "lineTo", [__arg_0, __arg_1]);
+  lineTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "lineTo", [__arg_0, __arg_1]);
 
-  moveTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", []);
+  moveTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "moveTo", []);
 
-  moveTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", [__arg_0]);
+  moveTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "moveTo", [__arg_0]);
 
-  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", [__arg_0, __arg_1]);
+  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "moveTo", [__arg_0, __arg_1]);
 
-  quadraticCurveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "quadraticCurveTo", [__arg_0, __arg_1]);
+  quadraticCurveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "quadraticCurveTo", [__arg_0, __arg_1]);
 
-  quadraticCurveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "quadraticCurveTo", [__arg_0, __arg_1, __arg_2]);
+  quadraticCurveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "quadraticCurveTo", [__arg_0, __arg_1, __arg_2]);
 
-  quadraticCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "quadraticCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  quadraticCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "quadraticCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  rect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "rect", [__arg_0, __arg_1]);
+  rect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "rect", [__arg_0, __arg_1]);
 
-  rect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "rect", [__arg_0, __arg_1, __arg_2]);
+  rect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "rect", [__arg_0, __arg_1, __arg_2]);
 
-  rect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "rect", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  rect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "rect", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
@@ -2443,1110 +2443,1110 @@
 class BlinkCharacterData extends BlinkNode {
   static final instance = new BlinkCharacterData();
 
-  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "data");
+  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CharacterData */, "data");
 
-  data_Setter_(mthis, __arg_0) => mthis["data"] = __arg_0;
+  data_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CharacterData */, "data", __arg_0);
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CharacterData */, "length");
 
-  appendData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "appendData", []);
+  appendData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CharacterData */, "appendData", []);
 
-  appendData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "appendData", [__arg_0]);
+  appendData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CharacterData */, "appendData", [__arg_0]);
 
-  deleteData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteData", []);
+  deleteData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CharacterData */, "deleteData", []);
 
-  deleteData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteData", [__arg_0]);
+  deleteData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CharacterData */, "deleteData", [__arg_0]);
 
-  deleteData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "deleteData", [__arg_0, __arg_1]);
+  deleteData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CharacterData */, "deleteData", [__arg_0, __arg_1]);
 
-  insertData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertData", []);
+  insertData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CharacterData */, "insertData", []);
 
-  insertData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertData", [__arg_0]);
+  insertData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CharacterData */, "insertData", [__arg_0]);
 
-  insertData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "insertData", [__arg_0, __arg_1]);
+  insertData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CharacterData */, "insertData", [__arg_0, __arg_1]);
 
-  replaceData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "replaceData", [__arg_0]);
+  replaceData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CharacterData */, "replaceData", [__arg_0]);
 
-  replaceData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "replaceData", [__arg_0, __arg_1]);
+  replaceData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CharacterData */, "replaceData", [__arg_0, __arg_1]);
 
-  replaceData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "replaceData", [__arg_0, __arg_1, __arg_2]);
+  replaceData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CharacterData */, "replaceData", [__arg_0, __arg_1, __arg_2]);
 
-  substringData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "substringData", []);
+  substringData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CharacterData */, "substringData", []);
 
-  substringData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "substringData", [__arg_0]);
+  substringData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CharacterData */, "substringData", [__arg_0]);
 
-  substringData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "substringData", [__arg_0, __arg_1]);
+  substringData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CharacterData */, "substringData", [__arg_0, __arg_1]);
 
-  after_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "after", []);
+  after_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "after", []);
 
-  after_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "after", [__arg_0]);
+  after_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "after", [__arg_0]);
 
-  before_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "before", []);
+  before_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "before", []);
 
-  before_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "before", [__arg_0]);
+  before_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "before", [__arg_0]);
 
-  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "remove", []);
+  remove_Callback_0_(mthis) native "Blink_Operation_0_ChildNode_remove";
 
-  replaceWith_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "replaceWith", []);
+  replaceWith_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "replaceWith", []);
 
-  replaceWith_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "replaceWith", [__arg_0]);
+  replaceWith_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "replaceWith", [__arg_0]);
 
-  nextElementSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "nextElementSibling");
+  nextElementSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NonDocumentTypeChildNode */, "nextElementSibling");
 
-  previousElementSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "previousElementSibling");
+  previousElementSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NonDocumentTypeChildNode */, "previousElementSibling");
 
 }
 
 class BlinkChildNode {
   static final instance = new BlinkChildNode();
 
-  after_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "after", []);
+  after_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "after", []);
 
-  after_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "after", [__arg_0]);
+  after_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "after", [__arg_0]);
 
-  before_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "before", []);
+  before_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "before", []);
 
-  before_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "before", [__arg_0]);
+  before_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "before", [__arg_0]);
 
-  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "remove", []);
+  remove_Callback_0_(mthis) native "Blink_Operation_0_ChildNode_remove";
 
-  replaceWith_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "replaceWith", []);
+  replaceWith_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "replaceWith", []);
 
-  replaceWith_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "replaceWith", [__arg_0]);
+  replaceWith_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "replaceWith", [__arg_0]);
 
 }
 
 class BlinkCircularGeofencingRegion extends BlinkGeofencingRegion {
   static final instance = new BlinkCircularGeofencingRegion();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "CircularGeofencingRegion"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("CircularGeofencingRegion");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "CircularGeofencingRegion"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("CircularGeofencingRegion", [__arg_0]);
 
-  latitude_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "latitude");
+  latitude_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CircularGeofencingRegion */, "latitude");
 
-  longitude_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "longitude");
+  longitude_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CircularGeofencingRegion */, "longitude");
 
-  radius_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "radius");
+  radius_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CircularGeofencingRegion */, "radius");
 
 }
 
 class BlinkClient {
   static final instance = new BlinkClient();
 
-  frameType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "frameType");
+  frameType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Client */, "frameType");
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Client */, "id");
 
-  url_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "url");
+  url_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Client */, "url");
 
-  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", []);
+  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Client */, "postMessage", []);
 
-  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0]);
+  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Client */, "postMessage", [__arg_0]);
 
-  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0, __arg_1]);
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Client */, "postMessage", [__arg_0, __arg_1]);
 
 }
 
 class BlinkClientRect {
   static final instance = new BlinkClientRect();
 
-  bottom_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "bottom");
+  bottom_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ClientRect */, "bottom");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ClientRect */, "height");
 
-  left_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "left");
+  left_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ClientRect */, "left");
 
-  right_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "right");
+  right_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ClientRect */, "right");
 
-  top_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "top");
+  top_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ClientRect */, "top");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ClientRect */, "width");
 
 }
 
 class BlinkClientRectList {
   static final instance = new BlinkClientRectList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ClientRectList */, "length");
 
-  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__getter__", [__arg_0]);
+  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ClientRectList */, "__getter__", [__arg_0]);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ClientRectList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ClientRectList */, "item", [__arg_0]);
 
 }
 
 class BlinkClients {
   static final instance = new BlinkClients();
 
-  claim_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "claim", []);
+  claim_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Clients */, "claim", []);
 
-  matchAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "matchAll", []);
+  matchAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Clients */, "matchAll", []);
 
-  matchAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "matchAll", [__arg_0]);
+  matchAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Clients */, "matchAll", [__arg_0]);
 
-  openWindow_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "openWindow", []);
+  openWindow_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Clients */, "openWindow", []);
 
-  openWindow_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "openWindow", [__arg_0]);
+  openWindow_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Clients */, "openWindow", [__arg_0]);
 
 }
 
 class BlinkClipboardEvent extends BlinkEvent {
   static final instance = new BlinkClipboardEvent();
 
-  clipboardData_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "clipboardData");
+  clipboardData_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ClipboardEvent */, "clipboardData");
 
 }
 
 class BlinkCloseEvent extends BlinkEvent {
   static final instance = new BlinkCloseEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "CloseEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("CloseEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "CloseEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("CloseEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "CloseEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("CloseEvent", [__arg_0, __arg_1]);
 
-  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "code");
+  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CloseEvent */, "code");
 
-  reason_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "reason");
+  reason_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CloseEvent */, "reason");
 
-  wasClean_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "wasClean");
+  wasClean_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CloseEvent */, "wasClean");
 
 }
 
 class BlinkComment extends BlinkCharacterData {
   static final instance = new BlinkComment();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Comment"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("Comment");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Comment"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("Comment", [__arg_0]);
 
 }
 
 class BlinkCompositionEvent extends BlinkUIEvent {
   static final instance = new BlinkCompositionEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "CompositionEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("CompositionEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "CompositionEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("CompositionEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "CompositionEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("CompositionEvent", [__arg_0, __arg_1]);
 
-  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "data");
+  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CompositionEvent */, "data");
 
-  initCompositionEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "initCompositionEvent", [__arg_0, __arg_1, __arg_2]);
+  initCompositionEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CompositionEvent */, "initCompositionEvent", [__arg_0, __arg_1, __arg_2]);
 
-  initCompositionEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "initCompositionEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  initCompositionEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CompositionEvent */, "initCompositionEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  initCompositionEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "initCompositionEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  initCompositionEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* CompositionEvent */, "initCompositionEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
 }
 
 class BlinkCompositorProxy {
   static final instance = new BlinkCompositorProxy();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "CompositorProxy"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("CompositorProxy");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "CompositorProxy"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("CompositorProxy", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "CompositorProxy"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("CompositorProxy", [__arg_0, __arg_1]);
 
-  opacity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "opacity");
+  opacity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CompositorProxy */, "opacity");
 
-  opacity_Setter_(mthis, __arg_0) => mthis["opacity"] = __arg_0;
+  opacity_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CompositorProxy */, "opacity", __arg_0);
 
-  scrollLeft_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scrollLeft");
+  scrollLeft_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CompositorProxy */, "scrollLeft");
 
-  scrollLeft_Setter_(mthis, __arg_0) => mthis["scrollLeft"] = __arg_0;
+  scrollLeft_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CompositorProxy */, "scrollLeft", __arg_0);
 
-  scrollTop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scrollTop");
+  scrollTop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CompositorProxy */, "scrollTop");
 
-  scrollTop_Setter_(mthis, __arg_0) => mthis["scrollTop"] = __arg_0;
+  scrollTop_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CompositorProxy */, "scrollTop", __arg_0);
 
-  transform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "transform");
+  transform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CompositorProxy */, "transform");
 
-  transform_Setter_(mthis, __arg_0) => mthis["transform"] = __arg_0;
+  transform_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CompositorProxy */, "transform", __arg_0);
 
-  disconnect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "disconnect", []);
+  disconnect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CompositorProxy */, "disconnect", []);
 
-  supports_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "supports", []);
+  supports_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CompositorProxy */, "supports", []);
 
-  supports_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "supports", [__arg_0]);
+  supports_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CompositorProxy */, "supports", [__arg_0]);
 
 }
 
 class BlinkCompositorWorker extends BlinkEventTarget {
   static final instance = new BlinkCompositorWorker();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "CompositorWorker"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("CompositorWorker");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "CompositorWorker"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("CompositorWorker", [__arg_0]);
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CompositorWorker */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CompositorWorker */, "onmessage", __arg_0);
 
-  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", []);
+  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CompositorWorker */, "postMessage", []);
 
-  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0]);
+  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CompositorWorker */, "postMessage", [__arg_0]);
 
-  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0, __arg_1]);
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CompositorWorker */, "postMessage", [__arg_0, __arg_1]);
 
-  terminate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "terminate", []);
+  terminate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CompositorWorker */, "terminate", []);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AbstractWorker */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AbstractWorker */, "onerror", __arg_0);
 
 }
 
 class BlinkCompositorWorkerGlobalScope extends BlinkWorkerGlobalScope {
   static final instance = new BlinkCompositorWorkerGlobalScope();
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CompositorWorkerGlobalScope */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* CompositorWorkerGlobalScope */, "onmessage", __arg_0);
 
-  cancelAnimationFrame_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cancelAnimationFrame", []);
+  cancelAnimationFrame_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CompositorWorkerGlobalScope */, "cancelAnimationFrame", []);
 
-  cancelAnimationFrame_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "cancelAnimationFrame", [__arg_0]);
+  cancelAnimationFrame_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CompositorWorkerGlobalScope */, "cancelAnimationFrame", [__arg_0]);
 
-  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", []);
+  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CompositorWorkerGlobalScope */, "postMessage", []);
 
-  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0]);
+  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CompositorWorkerGlobalScope */, "postMessage", [__arg_0]);
 
-  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0, __arg_1]);
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CompositorWorkerGlobalScope */, "postMessage", [__arg_0, __arg_1]);
 
-  requestAnimationFrame_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "requestAnimationFrame", []);
+  requestAnimationFrame_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CompositorWorkerGlobalScope */, "requestAnimationFrame", []);
 
-  requestAnimationFrame_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "requestAnimationFrame", [__arg_0]);
+  requestAnimationFrame_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CompositorWorkerGlobalScope */, "requestAnimationFrame", [__arg_0]);
 
 }
 
 class BlinkConsole extends BlinkConsoleBase {
   static final instance = new BlinkConsole();
 
-  memory_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "memory");
+  memory_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Console */, "memory");
 
-  memory_Setter_(mthis, __arg_0) => mthis["memory"] = __arg_0;
+  memory_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Console */, "memory", __arg_0);
 
 }
 
 class BlinkConsoleBase {
   static final instance = new BlinkConsoleBase();
 
-  assert_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "assert", []);
+  assert_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "assert", []);
 
-  assert_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "assert", [__arg_0]);
+  assert_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "assert", [__arg_0]);
 
-  assert_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "assert", [__arg_0, __arg_1]);
+  assert_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "assert", [__arg_0, __arg_1]);
 
-  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clear", []);
+  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "clear", []);
 
-  clear_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clear", [__arg_0]);
+  clear_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "clear", [__arg_0]);
 
-  count_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "count", []);
+  count_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "count", []);
 
-  count_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "count", [__arg_0]);
+  count_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "count", [__arg_0]);
 
-  debug_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "debug", []);
+  debug_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "debug", []);
 
-  debug_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "debug", [__arg_0]);
+  debug_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "debug", [__arg_0]);
 
-  dir_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "dir", []);
+  dir_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "dir", []);
 
-  dir_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "dir", [__arg_0]);
+  dir_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "dir", [__arg_0]);
 
-  dirxml_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "dirxml", []);
+  dirxml_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "dirxml", []);
 
-  dirxml_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "dirxml", [__arg_0]);
+  dirxml_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "dirxml", [__arg_0]);
 
-  error_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "error", []);
+  error_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "error", []);
 
-  error_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "error", [__arg_0]);
+  error_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "error", [__arg_0]);
 
-  group_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "group", []);
+  group_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "group", []);
 
-  group_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "group", [__arg_0]);
+  group_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "group", [__arg_0]);
 
-  groupCollapsed_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "groupCollapsed", []);
+  groupCollapsed_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "groupCollapsed", []);
 
-  groupCollapsed_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "groupCollapsed", [__arg_0]);
+  groupCollapsed_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "groupCollapsed", [__arg_0]);
 
-  groupEnd_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "groupEnd", []);
+  groupEnd_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "groupEnd", []);
 
-  info_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "info", []);
+  info_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "info", []);
 
-  info_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "info", [__arg_0]);
+  info_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "info", [__arg_0]);
 
-  log_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "log", []);
+  log_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "log", []);
 
-  log_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "log", [__arg_0]);
+  log_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "log", [__arg_0]);
 
-  markTimeline_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "markTimeline", []);
+  markTimeline_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "markTimeline", []);
 
-  markTimeline_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "markTimeline", [__arg_0]);
+  markTimeline_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "markTimeline", [__arg_0]);
 
-  profile_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "profile", []);
+  profile_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "profile", []);
 
-  profile_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "profile", [__arg_0]);
+  profile_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "profile", [__arg_0]);
 
-  profileEnd_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "profileEnd", []);
+  profileEnd_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "profileEnd", []);
 
-  profileEnd_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "profileEnd", [__arg_0]);
+  profileEnd_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "profileEnd", [__arg_0]);
 
-  table_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "table", []);
+  table_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "table", []);
 
-  table_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "table", [__arg_0]);
+  table_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "table", [__arg_0]);
 
-  time_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "time", []);
+  time_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "time", []);
 
-  time_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "time", [__arg_0]);
+  time_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "time", [__arg_0]);
 
-  timeEnd_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "timeEnd", []);
+  timeEnd_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "timeEnd", []);
 
-  timeEnd_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "timeEnd", [__arg_0]);
+  timeEnd_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "timeEnd", [__arg_0]);
 
-  timeStamp_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "timeStamp", []);
+  timeStamp_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "timeStamp", []);
 
-  timeStamp_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "timeStamp", [__arg_0]);
+  timeStamp_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "timeStamp", [__arg_0]);
 
-  timeline_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "timeline", []);
+  timeline_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "timeline", []);
 
-  timeline_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "timeline", [__arg_0]);
+  timeline_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "timeline", [__arg_0]);
 
-  timelineEnd_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "timelineEnd", []);
+  timelineEnd_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "timelineEnd", []);
 
-  timelineEnd_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "timelineEnd", [__arg_0]);
+  timelineEnd_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "timelineEnd", [__arg_0]);
 
-  trace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "trace", []);
+  trace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "trace", []);
 
-  trace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "trace", [__arg_0]);
+  trace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "trace", [__arg_0]);
 
-  warn_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "warn", []);
+  warn_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "warn", []);
 
-  warn_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "warn", [__arg_0]);
+  warn_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ConsoleBase */, "warn", [__arg_0]);
 
 }
 
 class BlinkConvolverNode extends BlinkAudioNode {
   static final instance = new BlinkConvolverNode();
 
-  buffer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "buffer");
+  buffer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ConvolverNode */, "buffer");
 
-  buffer_Setter_(mthis, __arg_0) => mthis["buffer"] = __arg_0;
+  buffer_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ConvolverNode */, "buffer", __arg_0);
 
-  normalize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "normalize");
+  normalize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ConvolverNode */, "normalize");
 
-  normalize_Setter_(mthis, __arg_0) => mthis["normalize"] = __arg_0;
+  normalize_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ConvolverNode */, "normalize", __arg_0);
 
 }
 
 class BlinkCoordinates {
   static final instance = new BlinkCoordinates();
 
-  accuracy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "accuracy");
+  accuracy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Coordinates */, "accuracy");
 
-  altitude_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "altitude");
+  altitude_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Coordinates */, "altitude");
 
-  altitudeAccuracy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "altitudeAccuracy");
+  altitudeAccuracy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Coordinates */, "altitudeAccuracy");
 
-  heading_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "heading");
+  heading_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Coordinates */, "heading");
 
-  latitude_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "latitude");
+  latitude_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Coordinates */, "latitude");
 
-  longitude_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "longitude");
+  longitude_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Coordinates */, "longitude");
 
-  speed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "speed");
+  speed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Coordinates */, "speed");
 
 }
 
 class BlinkCredential {
   static final instance = new BlinkCredential();
 
-  iconURL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "iconURL");
+  iconURL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Credential */, "iconURL");
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Credential */, "id");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Credential */, "name");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Credential */, "type");
 
 }
 
 class BlinkCredentialsContainer {
   static final instance = new BlinkCredentialsContainer();
 
-  notifySignedIn_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "notifySignedIn", []);
+  notifySignedIn_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CredentialsContainer */, "notifySignedIn", []);
 
-  notifySignedIn_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "notifySignedIn", [__arg_0]);
+  notifySignedIn_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CredentialsContainer */, "notifySignedIn", [__arg_0]);
 
-  request_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "request", []);
+  request_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CredentialsContainer */, "request", []);
 
-  request_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "request", [__arg_0]);
+  request_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CredentialsContainer */, "request", [__arg_0]);
 
-  requireUserMediation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "requireUserMediation", []);
+  requireUserMediation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CredentialsContainer */, "requireUserMediation", []);
 
 }
 
 class BlinkCrossOriginConnectEvent extends BlinkEvent {
   static final instance = new BlinkCrossOriginConnectEvent();
 
-  client_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "client");
+  client_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CrossOriginConnectEvent */, "client");
 
-  acceptConnection_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "acceptConnection", []);
+  acceptConnection_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CrossOriginConnectEvent */, "acceptConnection", []);
 
-  acceptConnection_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "acceptConnection", [__arg_0]);
+  acceptConnection_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CrossOriginConnectEvent */, "acceptConnection", [__arg_0]);
 
 }
 
 class BlinkCrossOriginServiceWorkerClient extends BlinkEventTarget {
   static final instance = new BlinkCrossOriginServiceWorkerClient();
 
-  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "origin");
+  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CrossOriginServiceWorkerClient */, "origin");
 
-  targetUrl_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "targetUrl");
+  targetUrl_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CrossOriginServiceWorkerClient */, "targetUrl");
 
-  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", []);
+  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CrossOriginServiceWorkerClient */, "postMessage", []);
 
-  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0]);
+  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CrossOriginServiceWorkerClient */, "postMessage", [__arg_0]);
 
-  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0, __arg_1]);
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CrossOriginServiceWorkerClient */, "postMessage", [__arg_0, __arg_1]);
 
 }
 
 class BlinkCrypto {
   static final instance = new BlinkCrypto();
 
-  subtle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "subtle");
+  subtle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Crypto */, "subtle");
 
-  getRandomValues_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getRandomValues", []);
+  getRandomValues_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Crypto */, "getRandomValues", []);
 
-  getRandomValues_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getRandomValues", [__arg_0]);
+  getRandomValues_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Crypto */, "getRandomValues", [__arg_0]);
 
 }
 
 class BlinkCryptoKey {
   static final instance = new BlinkCryptoKey();
 
-  algorithm_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "algorithm");
+  algorithm_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CryptoKey */, "algorithm");
 
-  extractable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "extractable");
+  extractable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CryptoKey */, "extractable");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CryptoKey */, "type");
 
-  usages_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "usages");
+  usages_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CryptoKey */, "usages");
 
 }
 
 class BlinkCustomEvent extends BlinkEvent {
   static final instance = new BlinkCustomEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "CustomEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("CustomEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "CustomEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("CustomEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "CustomEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("CustomEvent", [__arg_0, __arg_1]);
 
-  detail_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "detail");
+  detail_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* CustomEvent */, "detail");
 
-  initCustomEvent_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "initCustomEvent", [__arg_0, __arg_1]);
+  initCustomEvent_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CustomEvent */, "initCustomEvent", [__arg_0, __arg_1]);
 
-  initCustomEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "initCustomEvent", [__arg_0, __arg_1, __arg_2]);
+  initCustomEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CustomEvent */, "initCustomEvent", [__arg_0, __arg_1, __arg_2]);
 
-  initCustomEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "initCustomEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  initCustomEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CustomEvent */, "initCustomEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
 class BlinkDOMError {
   static final instance = new BlinkDOMError();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMError"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("DOMError");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMError"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("DOMError", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMError"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("DOMError", [__arg_0, __arg_1]);
 
-  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "message");
+  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMError */, "message");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMError */, "name");
 
 }
 
 class BlinkDOMException {
   static final instance = new BlinkDOMException();
 
-  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "code");
+  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMException */, "code");
 
-  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "message");
+  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMException */, "message");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMException */, "name");
 
-  toString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "toString", []);
+  toString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMException */, "toString", []);
 
 }
 
 class BlinkDOMFileSystem {
   static final instance = new BlinkDOMFileSystem();
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMFileSystem */, "name");
 
-  root_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "root");
+  root_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMFileSystem */, "root");
 
 }
 
 class BlinkDOMFileSystemSync {
   static final instance = new BlinkDOMFileSystemSync();
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMFileSystemSync */, "name");
 
-  root_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "root");
+  root_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMFileSystemSync */, "root");
 
 }
 
 class BlinkDOMImplementation {
   static final instance = new BlinkDOMImplementation();
 
-  createDocument_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createDocument", [__arg_0]);
+  createDocument_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMImplementation */, "createDocument", [__arg_0]);
 
-  createDocument_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createDocument", [__arg_0, __arg_1]);
+  createDocument_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DOMImplementation */, "createDocument", [__arg_0, __arg_1]);
 
-  createDocument_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "createDocument", [__arg_0, __arg_1, __arg_2]);
+  createDocument_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* DOMImplementation */, "createDocument", [__arg_0, __arg_1, __arg_2]);
 
-  createDocumentType_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createDocumentType", [__arg_0]);
+  createDocumentType_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMImplementation */, "createDocumentType", [__arg_0]);
 
-  createDocumentType_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createDocumentType", [__arg_0, __arg_1]);
+  createDocumentType_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DOMImplementation */, "createDocumentType", [__arg_0, __arg_1]);
 
-  createDocumentType_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "createDocumentType", [__arg_0, __arg_1, __arg_2]);
+  createDocumentType_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* DOMImplementation */, "createDocumentType", [__arg_0, __arg_1, __arg_2]);
 
-  createHTMLDocument_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createHTMLDocument", []);
+  createHTMLDocument_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMImplementation */, "createHTMLDocument", []);
 
-  createHTMLDocument_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createHTMLDocument", [__arg_0]);
+  createHTMLDocument_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMImplementation */, "createHTMLDocument", [__arg_0]);
 
-  hasFeature_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "hasFeature", []);
+  hasFeature_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMImplementation */, "hasFeature", []);
 
 }
 
 class BlinkDOMMatrix extends BlinkDOMMatrixReadOnly {
   static final instance = new BlinkDOMMatrix();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMMatrix"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("DOMMatrix");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMMatrix"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("DOMMatrix", [__arg_0]);
 
-  a_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "a");
+  a_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "a");
 
-  a_Setter_(mthis, __arg_0) => mthis["a"] = __arg_0;
+  a_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "a", __arg_0);
 
-  b_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "b");
+  b_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "b");
 
-  b_Setter_(mthis, __arg_0) => mthis["b"] = __arg_0;
+  b_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "b", __arg_0);
 
-  c_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "c");
+  c_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "c");
 
-  c_Setter_(mthis, __arg_0) => mthis["c"] = __arg_0;
+  c_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "c", __arg_0);
 
-  d_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "d");
+  d_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "d");
 
-  d_Setter_(mthis, __arg_0) => mthis["d"] = __arg_0;
+  d_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "d", __arg_0);
 
-  e_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "e");
+  e_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "e");
 
-  e_Setter_(mthis, __arg_0) => mthis["e"] = __arg_0;
+  e_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "e", __arg_0);
 
-  f_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "f");
+  f_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "f");
 
-  f_Setter_(mthis, __arg_0) => mthis["f"] = __arg_0;
+  f_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "f", __arg_0);
 
-  m11_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m11");
+  m11_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "m11");
 
-  m11_Setter_(mthis, __arg_0) => mthis["m11"] = __arg_0;
+  m11_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "m11", __arg_0);
 
-  m12_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m12");
+  m12_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "m12");
 
-  m12_Setter_(mthis, __arg_0) => mthis["m12"] = __arg_0;
+  m12_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "m12", __arg_0);
 
-  m13_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m13");
+  m13_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "m13");
 
-  m13_Setter_(mthis, __arg_0) => mthis["m13"] = __arg_0;
+  m13_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "m13", __arg_0);
 
-  m14_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m14");
+  m14_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "m14");
 
-  m14_Setter_(mthis, __arg_0) => mthis["m14"] = __arg_0;
+  m14_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "m14", __arg_0);
 
-  m21_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m21");
+  m21_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "m21");
 
-  m21_Setter_(mthis, __arg_0) => mthis["m21"] = __arg_0;
+  m21_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "m21", __arg_0);
 
-  m22_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m22");
+  m22_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "m22");
 
-  m22_Setter_(mthis, __arg_0) => mthis["m22"] = __arg_0;
+  m22_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "m22", __arg_0);
 
-  m23_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m23");
+  m23_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "m23");
 
-  m23_Setter_(mthis, __arg_0) => mthis["m23"] = __arg_0;
+  m23_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "m23", __arg_0);
 
-  m24_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m24");
+  m24_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "m24");
 
-  m24_Setter_(mthis, __arg_0) => mthis["m24"] = __arg_0;
+  m24_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "m24", __arg_0);
 
-  m31_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m31");
+  m31_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "m31");
 
-  m31_Setter_(mthis, __arg_0) => mthis["m31"] = __arg_0;
+  m31_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "m31", __arg_0);
 
-  m32_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m32");
+  m32_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "m32");
 
-  m32_Setter_(mthis, __arg_0) => mthis["m32"] = __arg_0;
+  m32_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "m32", __arg_0);
 
-  m33_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m33");
+  m33_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "m33");
 
-  m33_Setter_(mthis, __arg_0) => mthis["m33"] = __arg_0;
+  m33_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "m33", __arg_0);
 
-  m34_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m34");
+  m34_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "m34");
 
-  m34_Setter_(mthis, __arg_0) => mthis["m34"] = __arg_0;
+  m34_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "m34", __arg_0);
 
-  m41_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m41");
+  m41_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "m41");
 
-  m41_Setter_(mthis, __arg_0) => mthis["m41"] = __arg_0;
+  m41_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "m41", __arg_0);
 
-  m42_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m42");
+  m42_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "m42");
 
-  m42_Setter_(mthis, __arg_0) => mthis["m42"] = __arg_0;
+  m42_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "m42", __arg_0);
 
-  m43_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m43");
+  m43_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "m43");
 
-  m43_Setter_(mthis, __arg_0) => mthis["m43"] = __arg_0;
+  m43_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "m43", __arg_0);
 
-  m44_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m44");
+  m44_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrix */, "m44");
 
-  m44_Setter_(mthis, __arg_0) => mthis["m44"] = __arg_0;
+  m44_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMMatrix */, "m44", __arg_0);
 
-  multiplySelf_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "multiplySelf", []);
+  multiplySelf_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "multiplySelf", []);
 
-  multiplySelf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "multiplySelf", [__arg_0]);
+  multiplySelf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "multiplySelf", [__arg_0]);
 
-  preMultiplySelf_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "preMultiplySelf", []);
+  preMultiplySelf_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "preMultiplySelf", []);
 
-  preMultiplySelf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "preMultiplySelf", [__arg_0]);
+  preMultiplySelf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "preMultiplySelf", [__arg_0]);
 
-  scale3dSelf_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scale3dSelf", []);
+  scale3dSelf_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "scale3dSelf", []);
 
-  scale3dSelf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scale3dSelf", [__arg_0]);
+  scale3dSelf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "scale3dSelf", [__arg_0]);
 
-  scale3dSelf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scale3dSelf", [__arg_0, __arg_1]);
+  scale3dSelf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "scale3dSelf", [__arg_0, __arg_1]);
 
-  scale3dSelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "scale3dSelf", [__arg_0, __arg_1, __arg_2]);
+  scale3dSelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "scale3dSelf", [__arg_0, __arg_1, __arg_2]);
 
-  scale3dSelf_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "scale3dSelf", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  scale3dSelf_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "scale3dSelf", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  scaleNonUniformSelf_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniformSelf", []);
+  scaleNonUniformSelf_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "scaleNonUniformSelf", []);
 
-  scaleNonUniformSelf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniformSelf", [__arg_0]);
+  scaleNonUniformSelf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "scaleNonUniformSelf", [__arg_0]);
 
-  scaleNonUniformSelf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniformSelf", [__arg_0, __arg_1]);
+  scaleNonUniformSelf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "scaleNonUniformSelf", [__arg_0, __arg_1]);
 
-  scaleNonUniformSelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniformSelf", [__arg_0, __arg_1, __arg_2]);
+  scaleNonUniformSelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "scaleNonUniformSelf", [__arg_0, __arg_1, __arg_2]);
 
-  scaleNonUniformSelf_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniformSelf", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  scaleNonUniformSelf_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "scaleNonUniformSelf", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  scaleNonUniformSelf_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniformSelf", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  scaleNonUniformSelf_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "scaleNonUniformSelf", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  scaleNonUniformSelf_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniformSelf", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
+  scaleNonUniformSelf_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "scaleNonUniformSelf", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  scaleSelf_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scaleSelf", []);
+  scaleSelf_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "scaleSelf", []);
 
-  scaleSelf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scaleSelf", [__arg_0]);
+  scaleSelf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "scaleSelf", [__arg_0]);
 
-  scaleSelf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scaleSelf", [__arg_0, __arg_1]);
+  scaleSelf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "scaleSelf", [__arg_0, __arg_1]);
 
-  scaleSelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "scaleSelf", [__arg_0, __arg_1, __arg_2]);
+  scaleSelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "scaleSelf", [__arg_0, __arg_1, __arg_2]);
 
-  translateSelf_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "translateSelf", []);
+  translateSelf_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "translateSelf", []);
 
-  translateSelf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "translateSelf", [__arg_0]);
+  translateSelf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "translateSelf", [__arg_0]);
 
-  translateSelf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "translateSelf", [__arg_0, __arg_1]);
+  translateSelf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "translateSelf", [__arg_0, __arg_1]);
 
-  translateSelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "translateSelf", [__arg_0, __arg_1, __arg_2]);
+  translateSelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrix */, "translateSelf", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkDOMMatrixReadOnly {
   static final instance = new BlinkDOMMatrixReadOnly();
 
-  a_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "a");
+  a_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "a");
 
-  b_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "b");
+  b_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "b");
 
-  c_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "c");
+  c_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "c");
 
-  d_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "d");
+  d_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "d");
 
-  e_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "e");
+  e_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "e");
 
-  f_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "f");
+  f_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "f");
 
-  is2D_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "is2D");
+  is2D_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "is2D");
 
-  isIdentity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "isIdentity");
+  isIdentity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "isIdentity");
 
-  m11_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m11");
+  m11_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "m11");
 
-  m12_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m12");
+  m12_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "m12");
 
-  m13_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m13");
+  m13_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "m13");
 
-  m14_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m14");
+  m14_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "m14");
 
-  m21_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m21");
+  m21_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "m21");
 
-  m22_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m22");
+  m22_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "m22");
 
-  m23_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m23");
+  m23_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "m23");
 
-  m24_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m24");
+  m24_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "m24");
 
-  m31_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m31");
+  m31_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "m31");
 
-  m32_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m32");
+  m32_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "m32");
 
-  m33_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m33");
+  m33_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "m33");
 
-  m34_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m34");
+  m34_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "m34");
 
-  m41_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m41");
+  m41_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "m41");
 
-  m42_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m42");
+  m42_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "m42");
 
-  m43_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m43");
+  m43_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "m43");
 
-  m44_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m44");
+  m44_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMMatrixReadOnly */, "m44");
 
-  multiply_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "multiply", []);
+  multiply_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "multiply", []);
 
-  multiply_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "multiply", [__arg_0]);
+  multiply_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "multiply", [__arg_0]);
 
-  scale_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scale", []);
+  scale_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "scale", []);
 
-  scale_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scale", [__arg_0]);
+  scale_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "scale", [__arg_0]);
 
-  scale_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scale", [__arg_0, __arg_1]);
+  scale_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "scale", [__arg_0, __arg_1]);
 
-  scale_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "scale", [__arg_0, __arg_1, __arg_2]);
+  scale_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "scale", [__arg_0, __arg_1, __arg_2]);
 
-  scale3d_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scale3d", []);
+  scale3d_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "scale3d", []);
 
-  scale3d_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scale3d", [__arg_0]);
+  scale3d_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "scale3d", [__arg_0]);
 
-  scale3d_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scale3d", [__arg_0, __arg_1]);
+  scale3d_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "scale3d", [__arg_0, __arg_1]);
 
-  scale3d_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "scale3d", [__arg_0, __arg_1, __arg_2]);
+  scale3d_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "scale3d", [__arg_0, __arg_1, __arg_2]);
 
-  scale3d_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "scale3d", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  scale3d_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "scale3d", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  scaleNonUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniform", []);
+  scaleNonUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "scaleNonUniform", []);
 
-  scaleNonUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniform", [__arg_0]);
+  scaleNonUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "scaleNonUniform", [__arg_0]);
 
-  scaleNonUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniform", [__arg_0, __arg_1]);
+  scaleNonUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "scaleNonUniform", [__arg_0, __arg_1]);
 
-  scaleNonUniform_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniform", [__arg_0, __arg_1, __arg_2]);
+  scaleNonUniform_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "scaleNonUniform", [__arg_0, __arg_1, __arg_2]);
 
-  scaleNonUniform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniform", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  scaleNonUniform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "scaleNonUniform", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  scaleNonUniform_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniform", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  scaleNonUniform_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "scaleNonUniform", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  scaleNonUniform_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniform", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
+  scaleNonUniform_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "scaleNonUniform", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  toFloat32Array_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "toFloat32Array", []);
+  toFloat32Array_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "toFloat32Array", []);
 
-  toFloat64Array_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "toFloat64Array", []);
+  toFloat64Array_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "toFloat64Array", []);
 
-  translate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "translate", []);
+  translate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "translate", []);
 
-  translate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "translate", [__arg_0]);
+  translate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "translate", [__arg_0]);
 
-  translate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "translate", [__arg_0, __arg_1]);
+  translate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "translate", [__arg_0, __arg_1]);
 
-  translate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "translate", [__arg_0, __arg_1, __arg_2]);
+  translate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* DOMMatrixReadOnly */, "translate", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkDOMParser {
   static final instance = new BlinkDOMParser();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMParser"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("DOMParser");
 
-  parseFromString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "parseFromString", []);
+  parseFromString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMParser */, "parseFromString", []);
 
-  parseFromString_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "parseFromString", [__arg_0]);
+  parseFromString_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMParser */, "parseFromString", [__arg_0]);
 
-  parseFromString_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "parseFromString", [__arg_0, __arg_1]);
+  parseFromString_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DOMParser */, "parseFromString", [__arg_0, __arg_1]);
 
 }
 
 class BlinkDOMPoint extends BlinkDOMPointReadOnly {
   static final instance = new BlinkDOMPoint();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMPoint"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("DOMPoint");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMPoint"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("DOMPoint", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMPoint"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("DOMPoint", [__arg_0, __arg_1]);
 
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMPoint"), [__arg_0, __arg_1, __arg_2]);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callConstructor("DOMPoint", [__arg_0, __arg_1, __arg_2]);
 
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMPoint"), [__arg_0, __arg_1, __arg_2, __arg_3]);
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callConstructor("DOMPoint", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  w_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "w");
+  w_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMPoint */, "w");
 
-  w_Setter_(mthis, __arg_0) => mthis["w"] = __arg_0;
+  w_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMPoint */, "w", __arg_0);
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMPoint */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMPoint */, "x", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMPoint */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMPoint */, "y", __arg_0);
 
-  z_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "z");
+  z_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMPoint */, "z");
 
-  z_Setter_(mthis, __arg_0) => mthis["z"] = __arg_0;
+  z_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMPoint */, "z", __arg_0);
 
 }
 
 class BlinkDOMPointReadOnly {
   static final instance = new BlinkDOMPointReadOnly();
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMPointReadOnly"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("DOMPointReadOnly", [__arg_0, __arg_1]);
 
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMPointReadOnly"), [__arg_0, __arg_1, __arg_2]);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callConstructor("DOMPointReadOnly", [__arg_0, __arg_1, __arg_2]);
 
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMPointReadOnly"), [__arg_0, __arg_1, __arg_2, __arg_3]);
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callConstructor("DOMPointReadOnly", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  w_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "w");
+  w_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMPointReadOnly */, "w");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMPointReadOnly */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMPointReadOnly */, "y");
 
-  z_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "z");
+  z_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMPointReadOnly */, "z");
 
 }
 
 class BlinkDOMRect extends BlinkDOMRectReadOnly {
   static final instance = new BlinkDOMRect();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMRect"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("DOMRect");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMRect"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("DOMRect", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMRect"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("DOMRect", [__arg_0, __arg_1]);
 
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMRect"), [__arg_0, __arg_1, __arg_2]);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callConstructor("DOMRect", [__arg_0, __arg_1, __arg_2]);
 
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMRect"), [__arg_0, __arg_1, __arg_2, __arg_3]);
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callConstructor("DOMRect", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMRect */, "height");
 
-  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
+  height_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMRect */, "height", __arg_0);
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMRect */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMRect */, "width", __arg_0);
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMRect */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMRect */, "x", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMRect */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMRect */, "y", __arg_0);
 
 }
 
 class BlinkDOMRectReadOnly {
   static final instance = new BlinkDOMRectReadOnly();
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMRectReadOnly"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("DOMRectReadOnly", [__arg_0, __arg_1]);
 
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMRectReadOnly"), [__arg_0, __arg_1, __arg_2]);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callConstructor("DOMRectReadOnly", [__arg_0, __arg_1, __arg_2]);
 
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DOMRectReadOnly"), [__arg_0, __arg_1, __arg_2, __arg_3]);
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callConstructor("DOMRectReadOnly", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  bottom_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "bottom");
+  bottom_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMRectReadOnly */, "bottom");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMRectReadOnly */, "height");
 
-  left_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "left");
+  left_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMRectReadOnly */, "left");
 
-  right_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "right");
+  right_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMRectReadOnly */, "right");
 
-  top_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "top");
+  top_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMRectReadOnly */, "top");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMRectReadOnly */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMRectReadOnly */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMRectReadOnly */, "y");
 
 }
 
 class BlinkDOMSettableTokenList extends BlinkDOMTokenList {
   static final instance = new BlinkDOMSettableTokenList();
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMSettableTokenList */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DOMSettableTokenList */, "value", __arg_0);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMSettableTokenList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMSettableTokenList */, "item", [__arg_0]);
 
 }
 
 class BlinkDOMStringList {
   static final instance = new BlinkDOMStringList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMStringList */, "length");
 
-  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__getter__", [__arg_0]);
+  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMStringList */, "__getter__", [__arg_0]);
 
-  contains_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "contains", []);
+  contains_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMStringList */, "contains", []);
 
-  contains_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "contains", [__arg_0]);
+  contains_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMStringList */, "contains", [__arg_0]);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMStringList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMStringList */, "item", [__arg_0]);
 
 }
 
 class BlinkDOMStringMap {
   static final instance = new BlinkDOMStringMap();
 
-  $__delete___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__delete__", [__arg_0]);
+  $__delete___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMStringMap */, "__delete__", [__arg_0]);
 
-  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__getter__", [__arg_0]);
+  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMStringMap */, "__getter__", [__arg_0]);
 
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "__setter__", [__arg_0, __arg_1]);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DOMStringMap */, "__setter__", [__arg_0, __arg_1]);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMStringMap */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMStringMap */, "item", [__arg_0]);
 
 }
 
 class BlinkDOMTokenList {
   static final instance = new BlinkDOMTokenList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DOMTokenList */, "length");
 
-  add_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "add", []);
+  add_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMTokenList */, "add", []);
 
-  add_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "add", [__arg_0]);
+  add_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMTokenList */, "add", [__arg_0]);
 
-  contains_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "contains", []);
+  contains_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMTokenList */, "contains", []);
 
-  contains_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "contains", [__arg_0]);
+  contains_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMTokenList */, "contains", [__arg_0]);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMTokenList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMTokenList */, "item", [__arg_0]);
 
-  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "remove", []);
+  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMTokenList */, "remove", []);
 
-  remove_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "remove", [__arg_0]);
+  remove_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMTokenList */, "remove", [__arg_0]);
 
-  toggle_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "toggle", []);
+  toggle_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DOMTokenList */, "toggle", []);
 
-  toggle_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "toggle", [__arg_0]);
+  toggle_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DOMTokenList */, "toggle", [__arg_0]);
 
-  toggle_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "toggle", [__arg_0, __arg_1]);
+  toggle_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DOMTokenList */, "toggle", [__arg_0, __arg_1]);
 
 }
 
 class BlinkDataTransfer {
   static final instance = new BlinkDataTransfer();
 
-  dropEffect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dropEffect");
+  dropEffect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DataTransfer */, "dropEffect");
 
-  dropEffect_Setter_(mthis, __arg_0) => mthis["dropEffect"] = __arg_0;
+  dropEffect_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DataTransfer */, "dropEffect", __arg_0);
 
-  effectAllowed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "effectAllowed");
+  effectAllowed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DataTransfer */, "effectAllowed");
 
-  effectAllowed_Setter_(mthis, __arg_0) => mthis["effectAllowed"] = __arg_0;
+  effectAllowed_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DataTransfer */, "effectAllowed", __arg_0);
 
-  files_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "files");
+  files_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DataTransfer */, "files");
 
-  items_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "items");
+  items_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DataTransfer */, "items");
 
-  types_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "types");
+  types_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DataTransfer */, "types");
 
-  clearData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearData", []);
+  clearData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DataTransfer */, "clearData", []);
 
-  clearData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearData", [__arg_0]);
+  clearData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DataTransfer */, "clearData", [__arg_0]);
 
-  getData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getData", []);
+  getData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DataTransfer */, "getData", []);
 
-  getData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getData", [__arg_0]);
+  getData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DataTransfer */, "getData", [__arg_0]);
 
-  setData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setData", []);
+  setData_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DataTransfer */, "setData", []);
 
-  setData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setData", [__arg_0]);
+  setData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DataTransfer */, "setData", [__arg_0]);
 
-  setData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setData", [__arg_0, __arg_1]);
+  setData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DataTransfer */, "setData", [__arg_0, __arg_1]);
 
-  setDragImage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setDragImage", [__arg_0]);
+  setDragImage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DataTransfer */, "setDragImage", [__arg_0]);
 
-  setDragImage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setDragImage", [__arg_0, __arg_1]);
+  setDragImage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DataTransfer */, "setDragImage", [__arg_0, __arg_1]);
 
-  setDragImage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setDragImage", [__arg_0, __arg_1, __arg_2]);
+  setDragImage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* DataTransfer */, "setDragImage", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkDataTransferItem {
   static final instance = new BlinkDataTransferItem();
 
-  kind_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "kind");
+  kind_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DataTransferItem */, "kind");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DataTransferItem */, "type");
 
-  getAsFile_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAsFile", []);
+  getAsFile_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DataTransferItem */, "getAsFile", []);
 
-  getAsString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAsString", []);
+  getAsString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DataTransferItem */, "getAsString", []);
 
-  getAsString_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAsString", [__arg_0]);
+  getAsString_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DataTransferItem */, "getAsString", [__arg_0]);
 
-  webkitGetAsEntry_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitGetAsEntry", []);
+  webkitGetAsEntry_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DataTransferItem */, "webkitGetAsEntry", []);
 
 }
 
 class BlinkDataTransferItemList {
   static final instance = new BlinkDataTransferItemList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DataTransferItemList */, "length");
 
-  add_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "add", []);
+  add_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DataTransferItemList */, "add", []);
 
-  add_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "add", [__arg_0]);
+  add_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DataTransferItemList */, "add", [__arg_0]);
 
-  add_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "add", [__arg_0, __arg_1]);
+  add_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DataTransferItemList */, "add", [__arg_0, __arg_1]);
 
-  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clear", []);
+  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DataTransferItemList */, "clear", []);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DataTransferItemList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DataTransferItemList */, "item", [__arg_0]);
 
-  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "remove", []);
+  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DataTransferItemList */, "remove", []);
 
-  remove_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "remove", [__arg_0]);
+  remove_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DataTransferItemList */, "remove", [__arg_0]);
 
 }
 
@@ -3558,1072 +3558,1072 @@
 class BlinkDatabase {
   static final instance = new BlinkDatabase();
 
-  version_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "version");
+  version_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Database */, "version");
 
-  changeVersion_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "changeVersion", []);
+  changeVersion_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Database */, "changeVersion", []);
 
-  changeVersion_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "changeVersion", [__arg_0]);
+  changeVersion_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Database */, "changeVersion", [__arg_0]);
 
-  changeVersion_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "changeVersion", [__arg_0, __arg_1]);
+  changeVersion_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Database */, "changeVersion", [__arg_0, __arg_1]);
 
-  changeVersion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "changeVersion", [__arg_0, __arg_1, __arg_2]);
+  changeVersion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Database */, "changeVersion", [__arg_0, __arg_1, __arg_2]);
 
-  changeVersion_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "changeVersion", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  changeVersion_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* Database */, "changeVersion", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  changeVersion_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "changeVersion", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  changeVersion_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* Database */, "changeVersion", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  readTransaction_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "readTransaction", []);
+  readTransaction_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Database */, "readTransaction", []);
 
-  readTransaction_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "readTransaction", [__arg_0]);
+  readTransaction_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Database */, "readTransaction", [__arg_0]);
 
-  readTransaction_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "readTransaction", [__arg_0, __arg_1]);
+  readTransaction_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Database */, "readTransaction", [__arg_0, __arg_1]);
 
-  readTransaction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "readTransaction", [__arg_0, __arg_1, __arg_2]);
+  readTransaction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Database */, "readTransaction", [__arg_0, __arg_1, __arg_2]);
 
-  transaction_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "transaction", []);
+  transaction_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Database */, "transaction", []);
 
-  transaction_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "transaction", [__arg_0]);
+  transaction_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Database */, "transaction", [__arg_0]);
 
-  transaction_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "transaction", [__arg_0, __arg_1]);
+  transaction_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Database */, "transaction", [__arg_0, __arg_1]);
 
-  transaction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "transaction", [__arg_0, __arg_1, __arg_2]);
+  transaction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Database */, "transaction", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkDatabaseCallback {
   static final instance = new BlinkDatabaseCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DatabaseCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DatabaseCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkDedicatedWorkerGlobalScope extends BlinkWorkerGlobalScope {
   static final instance = new BlinkDedicatedWorkerGlobalScope();
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DedicatedWorkerGlobalScope */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* DedicatedWorkerGlobalScope */, "onmessage", __arg_0);
 
-  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", []);
+  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DedicatedWorkerGlobalScope */, "postMessage", []);
 
-  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0]);
+  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DedicatedWorkerGlobalScope */, "postMessage", [__arg_0]);
 
-  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0, __arg_1]);
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DedicatedWorkerGlobalScope */, "postMessage", [__arg_0, __arg_1]);
 
 }
 
 class BlinkDefaultSessionStartEvent extends BlinkEvent {
   static final instance = new BlinkDefaultSessionStartEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DefaultSessionStartEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("DefaultSessionStartEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DefaultSessionStartEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("DefaultSessionStartEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DefaultSessionStartEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("DefaultSessionStartEvent", [__arg_0, __arg_1]);
 
-  session_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "session");
+  session_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DefaultSessionStartEvent */, "session");
 
 }
 
 class BlinkDelayNode extends BlinkAudioNode {
   static final instance = new BlinkDelayNode();
 
-  delayTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "delayTime");
+  delayTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DelayNode */, "delayTime");
 
 }
 
 class BlinkDeprecatedStorageInfo {
   static final instance = new BlinkDeprecatedStorageInfo();
 
-  queryUsageAndQuota_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "queryUsageAndQuota", []);
+  queryUsageAndQuota_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DeprecatedStorageInfo */, "queryUsageAndQuota", []);
 
-  queryUsageAndQuota_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "queryUsageAndQuota", [__arg_0]);
+  queryUsageAndQuota_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DeprecatedStorageInfo */, "queryUsageAndQuota", [__arg_0]);
 
-  queryUsageAndQuota_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "queryUsageAndQuota", [__arg_0, __arg_1]);
+  queryUsageAndQuota_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DeprecatedStorageInfo */, "queryUsageAndQuota", [__arg_0, __arg_1]);
 
-  queryUsageAndQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "queryUsageAndQuota", [__arg_0, __arg_1, __arg_2]);
+  queryUsageAndQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* DeprecatedStorageInfo */, "queryUsageAndQuota", [__arg_0, __arg_1, __arg_2]);
 
-  requestQuota_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "requestQuota", []);
+  requestQuota_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DeprecatedStorageInfo */, "requestQuota", []);
 
-  requestQuota_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "requestQuota", [__arg_0]);
+  requestQuota_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DeprecatedStorageInfo */, "requestQuota", [__arg_0]);
 
-  requestQuota_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "requestQuota", [__arg_0, __arg_1]);
+  requestQuota_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DeprecatedStorageInfo */, "requestQuota", [__arg_0, __arg_1]);
 
-  requestQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "requestQuota", [__arg_0, __arg_1, __arg_2]);
+  requestQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* DeprecatedStorageInfo */, "requestQuota", [__arg_0, __arg_1, __arg_2]);
 
-  requestQuota_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "requestQuota", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  requestQuota_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* DeprecatedStorageInfo */, "requestQuota", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
 class BlinkDeprecatedStorageQuota {
   static final instance = new BlinkDeprecatedStorageQuota();
 
-  queryUsageAndQuota_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "queryUsageAndQuota", []);
+  queryUsageAndQuota_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DeprecatedStorageQuota */, "queryUsageAndQuota", []);
 
-  queryUsageAndQuota_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "queryUsageAndQuota", [__arg_0]);
+  queryUsageAndQuota_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DeprecatedStorageQuota */, "queryUsageAndQuota", [__arg_0]);
 
-  queryUsageAndQuota_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "queryUsageAndQuota", [__arg_0, __arg_1]);
+  queryUsageAndQuota_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DeprecatedStorageQuota */, "queryUsageAndQuota", [__arg_0, __arg_1]);
 
-  requestQuota_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "requestQuota", []);
+  requestQuota_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DeprecatedStorageQuota */, "requestQuota", []);
 
-  requestQuota_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "requestQuota", [__arg_0]);
+  requestQuota_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DeprecatedStorageQuota */, "requestQuota", [__arg_0]);
 
-  requestQuota_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "requestQuota", [__arg_0, __arg_1]);
+  requestQuota_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DeprecatedStorageQuota */, "requestQuota", [__arg_0, __arg_1]);
 
-  requestQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "requestQuota", [__arg_0, __arg_1, __arg_2]);
+  requestQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* DeprecatedStorageQuota */, "requestQuota", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkDeviceAcceleration {
   static final instance = new BlinkDeviceAcceleration();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DeviceAcceleration */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DeviceAcceleration */, "y");
 
-  z_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "z");
+  z_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DeviceAcceleration */, "z");
 
 }
 
 class BlinkDeviceLightEvent extends BlinkEvent {
   static final instance = new BlinkDeviceLightEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DeviceLightEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("DeviceLightEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DeviceLightEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("DeviceLightEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DeviceLightEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("DeviceLightEvent", [__arg_0, __arg_1]);
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DeviceLightEvent */, "value");
 
 }
 
 class BlinkDeviceMotionEvent extends BlinkEvent {
   static final instance = new BlinkDeviceMotionEvent();
 
-  acceleration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "acceleration");
+  acceleration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DeviceMotionEvent */, "acceleration");
 
-  accelerationIncludingGravity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "accelerationIncludingGravity");
+  accelerationIncludingGravity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DeviceMotionEvent */, "accelerationIncludingGravity");
 
-  interval_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "interval");
+  interval_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DeviceMotionEvent */, "interval");
 
-  rotationRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rotationRate");
+  rotationRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DeviceMotionEvent */, "rotationRate");
 
-  initDeviceMotionEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "initDeviceMotionEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  initDeviceMotionEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* DeviceMotionEvent */, "initDeviceMotionEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  initDeviceMotionEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "initDeviceMotionEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* DeviceMotionEvent */, "initDeviceMotionEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  initDeviceMotionEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "initDeviceMotionEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* DeviceMotionEvent */, "initDeviceMotionEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
 }
 
 class BlinkDeviceOrientationEvent extends BlinkEvent {
   static final instance = new BlinkDeviceOrientationEvent();
 
-  absolute_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "absolute");
+  absolute_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DeviceOrientationEvent */, "absolute");
 
-  alpha_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "alpha");
+  alpha_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DeviceOrientationEvent */, "alpha");
 
-  beta_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "beta");
+  beta_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DeviceOrientationEvent */, "beta");
 
-  gamma_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "gamma");
+  gamma_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DeviceOrientationEvent */, "gamma");
 
-  initDeviceOrientationEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "initDeviceOrientationEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  initDeviceOrientationEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* DeviceOrientationEvent */, "initDeviceOrientationEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  initDeviceOrientationEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "initDeviceOrientationEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* DeviceOrientationEvent */, "initDeviceOrientationEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  initDeviceOrientationEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "initDeviceOrientationEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* DeviceOrientationEvent */, "initDeviceOrientationEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
 }
 
 class BlinkDeviceRotationRate {
   static final instance = new BlinkDeviceRotationRate();
 
-  alpha_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "alpha");
+  alpha_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DeviceRotationRate */, "alpha");
 
-  beta_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "beta");
+  beta_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DeviceRotationRate */, "beta");
 
-  gamma_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "gamma");
+  gamma_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DeviceRotationRate */, "gamma");
 
 }
 
 class BlinkDirectoryEntry extends BlinkEntry {
   static final instance = new BlinkDirectoryEntry();
 
-  createReader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createReader", []);
+  createReader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntry */, "createReader", []);
 
-  getDirectory_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getDirectory", []);
+  getDirectory_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntry */, "getDirectory", []);
 
-  getDirectory_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getDirectory", [__arg_0]);
+  getDirectory_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntry */, "getDirectory", [__arg_0]);
 
-  getDirectory_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getDirectory", [__arg_0, __arg_1]);
+  getDirectory_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntry */, "getDirectory", [__arg_0, __arg_1]);
 
-  getDirectory_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getDirectory", [__arg_0, __arg_1, __arg_2]);
+  getDirectory_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntry */, "getDirectory", [__arg_0, __arg_1, __arg_2]);
 
-  getDirectory_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "getDirectory", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  getDirectory_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntry */, "getDirectory", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  getFile_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getFile", []);
+  getFile_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntry */, "getFile", []);
 
-  getFile_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getFile", [__arg_0]);
+  getFile_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntry */, "getFile", [__arg_0]);
 
-  getFile_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getFile", [__arg_0, __arg_1]);
+  getFile_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntry */, "getFile", [__arg_0, __arg_1]);
 
-  getFile_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getFile", [__arg_0, __arg_1, __arg_2]);
+  getFile_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntry */, "getFile", [__arg_0, __arg_1, __arg_2]);
 
-  getFile_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "getFile", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  getFile_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntry */, "getFile", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  removeRecursively_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeRecursively", []);
+  removeRecursively_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntry */, "removeRecursively", []);
 
-  removeRecursively_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeRecursively", [__arg_0]);
+  removeRecursively_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntry */, "removeRecursively", [__arg_0]);
 
-  removeRecursively_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "removeRecursively", [__arg_0, __arg_1]);
+  removeRecursively_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntry */, "removeRecursively", [__arg_0, __arg_1]);
 
 }
 
 class BlinkDirectoryEntrySync extends BlinkEntrySync {
   static final instance = new BlinkDirectoryEntrySync();
 
-  createReader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createReader", []);
+  createReader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntrySync */, "createReader", []);
 
-  getDirectory_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getDirectory", []);
+  getDirectory_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntrySync */, "getDirectory", []);
 
-  getDirectory_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getDirectory", [__arg_0]);
+  getDirectory_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntrySync */, "getDirectory", [__arg_0]);
 
-  getDirectory_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getDirectory", [__arg_0, __arg_1]);
+  getDirectory_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntrySync */, "getDirectory", [__arg_0, __arg_1]);
 
-  getFile_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getFile", []);
+  getFile_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntrySync */, "getFile", []);
 
-  getFile_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getFile", [__arg_0]);
+  getFile_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntrySync */, "getFile", [__arg_0]);
 
-  getFile_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getFile", [__arg_0, __arg_1]);
+  getFile_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntrySync */, "getFile", [__arg_0, __arg_1]);
 
-  removeRecursively_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeRecursively", []);
+  removeRecursively_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryEntrySync */, "removeRecursively", []);
 
 }
 
 class BlinkDirectoryReader {
   static final instance = new BlinkDirectoryReader();
 
-  readEntries_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "readEntries", []);
+  readEntries_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryReader */, "readEntries", []);
 
-  readEntries_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "readEntries", [__arg_0]);
+  readEntries_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryReader */, "readEntries", [__arg_0]);
 
-  readEntries_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "readEntries", [__arg_0, __arg_1]);
+  readEntries_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryReader */, "readEntries", [__arg_0, __arg_1]);
 
 }
 
 class BlinkDirectoryReaderSync {
   static final instance = new BlinkDirectoryReaderSync();
 
-  readEntries_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "readEntries", []);
+  readEntries_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* DirectoryReaderSync */, "readEntries", []);
 
 }
 
 class BlinkDocument extends BlinkNode {
   static final instance = new BlinkDocument();
 
-  URL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "URL");
+  URL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "URL");
 
-  activeElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "activeElement");
+  activeElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "activeElement");
 
-  anchors_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "anchors");
+  anchors_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "anchors");
 
-  applets_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "applets");
+  applets_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "applets");
 
-  body_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "body");
+  body_Getter_(mthis) native "Blink_Getter_Document_body";
 
-  body_Setter_(mthis, __arg_0) => mthis["body"] = __arg_0;
+  body_Setter_(mthis, __arg_0) native "Blink_Setter_Document_body";
 
-  characterSet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "characterSet");
+  characterSet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "characterSet");
 
-  charset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "charset");
+  charset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "charset");
 
-  compatMode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "compatMode");
+  compatMode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "compatMode");
 
-  contentType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "contentType");
+  contentType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "contentType");
 
-  cookie_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cookie");
+  cookie_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "cookie");
 
-  cookie_Setter_(mthis, __arg_0) => mthis["cookie"] = __arg_0;
+  cookie_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "cookie", __arg_0);
 
-  currentScript_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "currentScript");
+  currentScript_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "currentScript");
 
-  defaultCharset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "defaultCharset");
+  defaultCharset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "defaultCharset");
 
-  defaultView_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "defaultView");
+  defaultView_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "defaultView");
 
-  designMode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "designMode");
+  designMode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "designMode");
 
-  designMode_Setter_(mthis, __arg_0) => mthis["designMode"] = __arg_0;
+  designMode_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "designMode", __arg_0);
 
-  dir_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dir");
+  dir_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "dir");
 
-  dir_Setter_(mthis, __arg_0) => mthis["dir"] = __arg_0;
+  dir_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "dir", __arg_0);
 
-  doctype_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "doctype");
+  doctype_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "doctype");
 
-  documentElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "documentElement");
+  documentElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "documentElement");
 
-  documentURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "documentURI");
+  documentURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "documentURI");
 
-  domain_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "domain");
+  domain_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "domain");
 
-  domain_Setter_(mthis, __arg_0) => mthis["domain"] = __arg_0;
+  domain_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "domain", __arg_0);
 
-  embeds_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "embeds");
+  embeds_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "embeds");
 
-  fonts_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fonts");
+  fonts_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "fonts");
 
-  forms_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "forms");
+  forms_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "forms");
 
-  fullscreenElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fullscreenElement");
+  fullscreenElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "fullscreenElement");
 
-  fullscreenEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fullscreenEnabled");
+  fullscreenEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "fullscreenEnabled");
 
-  head_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "head");
+  head_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "head");
 
-  hidden_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hidden");
+  hidden_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "hidden");
 
-  images_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "images");
+  images_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "images");
 
-  implementation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "implementation");
+  implementation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "implementation");
 
-  inputEncoding_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "inputEncoding");
+  inputEncoding_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "inputEncoding");
 
-  lastModified_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lastModified");
+  lastModified_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "lastModified");
 
-  links_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "links");
+  links_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "links");
 
-  location_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "location");
+  location_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "location");
 
-  onbeforecopy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onbeforecopy");
+  onbeforecopy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "onbeforecopy");
 
-  onbeforecopy_Setter_(mthis, __arg_0) => mthis["onbeforecopy"] = __arg_0;
+  onbeforecopy_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "onbeforecopy", __arg_0);
 
-  onbeforecut_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onbeforecut");
+  onbeforecut_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "onbeforecut");
 
-  onbeforecut_Setter_(mthis, __arg_0) => mthis["onbeforecut"] = __arg_0;
+  onbeforecut_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "onbeforecut", __arg_0);
 
-  onbeforepaste_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onbeforepaste");
+  onbeforepaste_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "onbeforepaste");
 
-  onbeforepaste_Setter_(mthis, __arg_0) => mthis["onbeforepaste"] = __arg_0;
+  onbeforepaste_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "onbeforepaste", __arg_0);
 
-  oncopy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncopy");
+  oncopy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "oncopy");
 
-  oncopy_Setter_(mthis, __arg_0) => mthis["oncopy"] = __arg_0;
+  oncopy_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "oncopy", __arg_0);
 
-  oncut_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncut");
+  oncut_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "oncut");
 
-  oncut_Setter_(mthis, __arg_0) => mthis["oncut"] = __arg_0;
+  oncut_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "oncut", __arg_0);
 
-  onfullscreenchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onfullscreenchange");
+  onfullscreenchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "onfullscreenchange");
 
-  onfullscreenchange_Setter_(mthis, __arg_0) => mthis["onfullscreenchange"] = __arg_0;
+  onfullscreenchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "onfullscreenchange", __arg_0);
 
-  onfullscreenerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onfullscreenerror");
+  onfullscreenerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "onfullscreenerror");
 
-  onfullscreenerror_Setter_(mthis, __arg_0) => mthis["onfullscreenerror"] = __arg_0;
+  onfullscreenerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "onfullscreenerror", __arg_0);
 
-  onpaste_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpaste");
+  onpaste_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "onpaste");
 
-  onpaste_Setter_(mthis, __arg_0) => mthis["onpaste"] = __arg_0;
+  onpaste_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "onpaste", __arg_0);
 
-  onpointerlockchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerlockchange");
+  onpointerlockchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "onpointerlockchange");
 
-  onpointerlockchange_Setter_(mthis, __arg_0) => mthis["onpointerlockchange"] = __arg_0;
+  onpointerlockchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "onpointerlockchange", __arg_0);
 
-  onpointerlockerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerlockerror");
+  onpointerlockerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "onpointerlockerror");
 
-  onpointerlockerror_Setter_(mthis, __arg_0) => mthis["onpointerlockerror"] = __arg_0;
+  onpointerlockerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "onpointerlockerror", __arg_0);
 
-  onreadystatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onreadystatechange");
+  onreadystatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "onreadystatechange");
 
-  onreadystatechange_Setter_(mthis, __arg_0) => mthis["onreadystatechange"] = __arg_0;
+  onreadystatechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "onreadystatechange", __arg_0);
 
-  onsearch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsearch");
+  onsearch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "onsearch");
 
-  onsearch_Setter_(mthis, __arg_0) => mthis["onsearch"] = __arg_0;
+  onsearch_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "onsearch", __arg_0);
 
-  onsecuritypolicyviolation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsecuritypolicyviolation");
+  onsecuritypolicyviolation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "onsecuritypolicyviolation");
 
-  onsecuritypolicyviolation_Setter_(mthis, __arg_0) => mthis["onsecuritypolicyviolation"] = __arg_0;
+  onsecuritypolicyviolation_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "onsecuritypolicyviolation", __arg_0);
 
-  onselectionchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onselectionchange");
+  onselectionchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "onselectionchange");
 
-  onselectionchange_Setter_(mthis, __arg_0) => mthis["onselectionchange"] = __arg_0;
+  onselectionchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "onselectionchange", __arg_0);
 
-  onselectstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onselectstart");
+  onselectstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "onselectstart");
 
-  onselectstart_Setter_(mthis, __arg_0) => mthis["onselectstart"] = __arg_0;
+  onselectstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "onselectstart", __arg_0);
 
-  ontouchcancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontouchcancel");
+  ontouchcancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "ontouchcancel");
 
-  ontouchcancel_Setter_(mthis, __arg_0) => mthis["ontouchcancel"] = __arg_0;
+  ontouchcancel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "ontouchcancel", __arg_0);
 
-  ontouchend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontouchend");
+  ontouchend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "ontouchend");
 
-  ontouchend_Setter_(mthis, __arg_0) => mthis["ontouchend"] = __arg_0;
+  ontouchend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "ontouchend", __arg_0);
 
-  ontouchmove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontouchmove");
+  ontouchmove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "ontouchmove");
 
-  ontouchmove_Setter_(mthis, __arg_0) => mthis["ontouchmove"] = __arg_0;
+  ontouchmove_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "ontouchmove", __arg_0);
 
-  ontouchstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontouchstart");
+  ontouchstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "ontouchstart");
 
-  ontouchstart_Setter_(mthis, __arg_0) => mthis["ontouchstart"] = __arg_0;
+  ontouchstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "ontouchstart", __arg_0);
 
-  onwebkitfullscreenchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwebkitfullscreenchange");
+  onwebkitfullscreenchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "onwebkitfullscreenchange");
 
-  onwebkitfullscreenchange_Setter_(mthis, __arg_0) => mthis["onwebkitfullscreenchange"] = __arg_0;
+  onwebkitfullscreenchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "onwebkitfullscreenchange", __arg_0);
 
-  onwebkitfullscreenerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwebkitfullscreenerror");
+  onwebkitfullscreenerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "onwebkitfullscreenerror");
 
-  onwebkitfullscreenerror_Setter_(mthis, __arg_0) => mthis["onwebkitfullscreenerror"] = __arg_0;
+  onwebkitfullscreenerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "onwebkitfullscreenerror", __arg_0);
 
-  onwheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwheel");
+  onwheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "onwheel");
 
-  onwheel_Setter_(mthis, __arg_0) => mthis["onwheel"] = __arg_0;
+  onwheel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "onwheel", __arg_0);
 
-  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "origin");
+  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "origin");
 
-  plugins_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "plugins");
+  plugins_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "plugins");
 
-  pointerLockElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pointerLockElement");
+  pointerLockElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "pointerLockElement");
 
-  preferredStylesheetSet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "preferredStylesheetSet");
+  preferredStylesheetSet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "preferredStylesheetSet");
 
-  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "readyState");
+  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "readyState");
 
-  referrer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "referrer");
+  referrer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "referrer");
 
-  rootElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rootElement");
+  rootElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "rootElement");
 
-  scripts_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scripts");
+  scripts_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "scripts");
 
-  scrollingElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scrollingElement");
+  scrollingElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "scrollingElement");
 
-  selectedStylesheetSet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "selectedStylesheetSet");
+  selectedStylesheetSet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "selectedStylesheetSet");
 
-  selectedStylesheetSet_Setter_(mthis, __arg_0) => mthis["selectedStylesheetSet"] = __arg_0;
+  selectedStylesheetSet_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "selectedStylesheetSet", __arg_0);
 
-  styleSheets_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "styleSheets");
+  styleSheets_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "styleSheets");
 
-  timeline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "timeline");
+  timeline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "timeline");
 
-  title_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "title");
+  title_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "title");
 
-  title_Setter_(mthis, __arg_0) => mthis["title"] = __arg_0;
+  title_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "title", __arg_0);
 
-  visibilityState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "visibilityState");
+  visibilityState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "visibilityState");
 
-  webkitCurrentFullScreenElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitCurrentFullScreenElement");
+  webkitCurrentFullScreenElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "webkitCurrentFullScreenElement");
 
-  webkitFullscreenElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitFullscreenElement");
+  webkitFullscreenElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "webkitFullscreenElement");
 
-  webkitFullscreenEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitFullscreenEnabled");
+  webkitFullscreenEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "webkitFullscreenEnabled");
 
-  webkitHidden_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitHidden");
+  webkitHidden_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "webkitHidden");
 
-  webkitIsFullScreen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitIsFullScreen");
+  webkitIsFullScreen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "webkitIsFullScreen");
 
-  webkitVisibilityState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitVisibilityState");
+  webkitVisibilityState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "webkitVisibilityState");
 
-  xmlEncoding_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "xmlEncoding");
+  xmlEncoding_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "xmlEncoding");
 
-  xmlStandalone_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "xmlStandalone");
+  xmlStandalone_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "xmlStandalone");
 
-  xmlStandalone_Setter_(mthis, __arg_0) => mthis["xmlStandalone"] = __arg_0;
+  xmlStandalone_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "xmlStandalone", __arg_0);
 
-  xmlVersion_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "xmlVersion");
+  xmlVersion_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Document */, "xmlVersion");
 
-  xmlVersion_Setter_(mthis, __arg_0) => mthis["xmlVersion"] = __arg_0;
+  xmlVersion_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Document */, "xmlVersion", __arg_0);
 
-  adoptNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "adoptNode", []);
+  adoptNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "adoptNode", []);
 
-  adoptNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "adoptNode", [__arg_0]);
+  adoptNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "adoptNode", [__arg_0]);
 
-  caretRangeFromPoint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "caretRangeFromPoint", []);
+  caretRangeFromPoint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "caretRangeFromPoint", []);
 
-  caretRangeFromPoint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "caretRangeFromPoint", [__arg_0]);
+  caretRangeFromPoint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "caretRangeFromPoint", [__arg_0]);
 
-  caretRangeFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "caretRangeFromPoint", [__arg_0, __arg_1]);
+  caretRangeFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "caretRangeFromPoint", [__arg_0, __arg_1]);
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "close", []);
 
-  createAttribute_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createAttribute", []);
+  createAttribute_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createAttribute", []);
 
-  createAttribute_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createAttribute", [__arg_0]);
+  createAttribute_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createAttribute", [__arg_0]);
 
-  createAttributeNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createAttributeNS", []);
+  createAttributeNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createAttributeNS", []);
 
-  createAttributeNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createAttributeNS", [__arg_0]);
+  createAttributeNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createAttributeNS", [__arg_0]);
 
-  createAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createAttributeNS", [__arg_0, __arg_1]);
+  createAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createAttributeNS", [__arg_0, __arg_1]);
 
-  createCDATASection_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createCDATASection", []);
+  createCDATASection_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createCDATASection", []);
 
-  createCDATASection_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createCDATASection", [__arg_0]);
+  createCDATASection_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createCDATASection", [__arg_0]);
 
-  createComment_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createComment", []);
+  createComment_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createComment", []);
 
-  createComment_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createComment", [__arg_0]);
+  createComment_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createComment", [__arg_0]);
 
-  createDocumentFragment_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createDocumentFragment", []);
+  createDocumentFragment_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createDocumentFragment", []);
 
-  createElement_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createElement", []);
+  createElement_Callback_0_(mthis) native "Blink_Operation_0_Document_createElement";
 
-  createElement_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createElement", [__arg_0]);
+  createElement_Callback_1_(mthis, __arg_0) native "Blink_Operation_Document_createElement"; /* __arg_0 */
 
-  createElement_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createElement", [__arg_0, __arg_1]);
+  createElement_Callback_2_(mthis, __arg_0, __arg_1) native "Blink_Operation_Document_createElement"; /* __arg_0, __arg_1 */
 
-  createElementNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createElementNS", []);
+  createElementNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createElementNS", []);
 
-  createElementNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createElementNS", [__arg_0]);
+  createElementNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createElementNS", [__arg_0]);
 
-  createElementNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createElementNS", [__arg_0, __arg_1]);
+  createElementNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createElementNS", [__arg_0, __arg_1]);
 
-  createElementNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "createElementNS", [__arg_0, __arg_1, __arg_2]);
+  createElementNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createElementNS", [__arg_0, __arg_1, __arg_2]);
 
-  createEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createEvent", []);
+  createEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createEvent", []);
 
-  createEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createEvent", [__arg_0]);
+  createEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createEvent", [__arg_0]);
 
-  createExpression_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createExpression", []);
+  createExpression_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createExpression", []);
 
-  createExpression_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createExpression", [__arg_0]);
+  createExpression_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createExpression", [__arg_0]);
 
-  createExpression_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createExpression", [__arg_0, __arg_1]);
+  createExpression_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createExpression", [__arg_0, __arg_1]);
 
-  createNSResolver_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createNSResolver", []);
+  createNSResolver_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createNSResolver", []);
 
-  createNSResolver_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createNSResolver", [__arg_0]);
+  createNSResolver_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createNSResolver", [__arg_0]);
 
-  createNodeIterator_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createNodeIterator", []);
+  createNodeIterator_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createNodeIterator", []);
 
-  createNodeIterator_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createNodeIterator", [__arg_0]);
+  createNodeIterator_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createNodeIterator", [__arg_0]);
 
-  createNodeIterator_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createNodeIterator", [__arg_0, __arg_1]);
+  createNodeIterator_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createNodeIterator", [__arg_0, __arg_1]);
 
-  createNodeIterator_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "createNodeIterator", [__arg_0, __arg_1, __arg_2]);
+  createNodeIterator_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createNodeIterator", [__arg_0, __arg_1, __arg_2]);
 
-  createProcessingInstruction_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createProcessingInstruction", []);
+  createProcessingInstruction_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createProcessingInstruction", []);
 
-  createProcessingInstruction_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createProcessingInstruction", [__arg_0]);
+  createProcessingInstruction_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createProcessingInstruction", [__arg_0]);
 
-  createProcessingInstruction_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createProcessingInstruction", [__arg_0, __arg_1]);
+  createProcessingInstruction_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createProcessingInstruction", [__arg_0, __arg_1]);
 
-  createRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createRange", []);
+  createRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createRange", []);
 
-  createTextNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createTextNode", []);
+  createTextNode_Callback_0_(mthis) native "Blink_Operation_0_Document_createTextNode";
 
-  createTextNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createTextNode", [__arg_0]);
+  createTextNode_Callback_1_(mthis, __arg_0) native "Blink_Operation_Document_createTextNode"; /* __arg_0 */
 
-  createTouch_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "createTouch", [__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) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createTouch", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  createTouch_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis, "createTouch", [__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) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createTouch", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
 
-  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) => Blink_JsNative_DomException.callMethod(mthis, "createTouch", [__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) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createTouch", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10]);
 
-  createTouchList_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createTouchList", []);
+  createTouchList_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createTouchList", []);
 
-  createTouchList_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createTouchList", [__arg_0]);
+  createTouchList_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createTouchList", [__arg_0]);
 
-  createTreeWalker_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createTreeWalker", []);
+  createTreeWalker_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createTreeWalker", []);
 
-  createTreeWalker_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createTreeWalker", [__arg_0]);
+  createTreeWalker_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createTreeWalker", [__arg_0]);
 
-  createTreeWalker_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createTreeWalker", [__arg_0, __arg_1]);
+  createTreeWalker_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createTreeWalker", [__arg_0, __arg_1]);
 
-  createTreeWalker_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "createTreeWalker", [__arg_0, __arg_1, __arg_2]);
+  createTreeWalker_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "createTreeWalker", [__arg_0, __arg_1, __arg_2]);
 
-  elementFromPoint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "elementFromPoint", []);
+  elementFromPoint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "elementFromPoint", []);
 
-  elementFromPoint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "elementFromPoint", [__arg_0]);
+  elementFromPoint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "elementFromPoint", [__arg_0]);
 
-  elementFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "elementFromPoint", [__arg_0, __arg_1]);
+  elementFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "elementFromPoint", [__arg_0, __arg_1]);
 
-  elementsFromPoint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "elementsFromPoint", []);
+  elementsFromPoint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "elementsFromPoint", []);
 
-  elementsFromPoint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "elementsFromPoint", [__arg_0]);
+  elementsFromPoint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "elementsFromPoint", [__arg_0]);
 
-  elementsFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "elementsFromPoint", [__arg_0, __arg_1]);
+  elementsFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "elementsFromPoint", [__arg_0, __arg_1]);
 
-  evaluate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "evaluate", [__arg_0]);
+  evaluate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "evaluate", [__arg_0]);
 
-  evaluate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "evaluate", [__arg_0, __arg_1]);
+  evaluate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "evaluate", [__arg_0, __arg_1]);
 
-  evaluate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "evaluate", [__arg_0, __arg_1, __arg_2]);
+  evaluate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "evaluate", [__arg_0, __arg_1, __arg_2]);
 
-  evaluate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "evaluate", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  evaluate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "evaluate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  evaluate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "evaluate", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  evaluate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "evaluate", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  execCommand_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "execCommand", []);
+  execCommand_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "execCommand", []);
 
-  execCommand_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "execCommand", [__arg_0]);
+  execCommand_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "execCommand", [__arg_0]);
 
-  execCommand_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "execCommand", [__arg_0, __arg_1]);
+  execCommand_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "execCommand", [__arg_0, __arg_1]);
 
-  execCommand_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "execCommand", [__arg_0, __arg_1, __arg_2]);
+  execCommand_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "execCommand", [__arg_0, __arg_1, __arg_2]);
 
-  exitFullscreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "exitFullscreen", []);
+  exitFullscreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "exitFullscreen", []);
 
-  exitPointerLock_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "exitPointerLock", []);
+  exitPointerLock_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "exitPointerLock", []);
 
-  getCSSCanvasContext_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getCSSCanvasContext", [__arg_0, __arg_1]);
+  getCSSCanvasContext_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "getCSSCanvasContext", [__arg_0, __arg_1]);
 
-  getCSSCanvasContext_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getCSSCanvasContext", [__arg_0, __arg_1, __arg_2]);
+  getCSSCanvasContext_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "getCSSCanvasContext", [__arg_0, __arg_1, __arg_2]);
 
-  getCSSCanvasContext_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "getCSSCanvasContext", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  getCSSCanvasContext_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "getCSSCanvasContext", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  getElementsByClassName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getElementsByClassName", []);
+  getElementsByClassName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "getElementsByClassName", []);
 
-  getElementsByClassName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getElementsByClassName", [__arg_0]);
+  getElementsByClassName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "getElementsByClassName", [__arg_0]);
 
-  getElementsByName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getElementsByName", []);
+  getElementsByName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "getElementsByName", []);
 
-  getElementsByName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getElementsByName", [__arg_0]);
+  getElementsByName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "getElementsByName", [__arg_0]);
 
-  getElementsByTagName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getElementsByTagName", []);
+  getElementsByTagName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "getElementsByTagName", []);
 
-  getElementsByTagName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getElementsByTagName", [__arg_0]);
+  getElementsByTagName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "getElementsByTagName", [__arg_0]);
 
-  getElementsByTagNameNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getElementsByTagNameNS", []);
+  getElementsByTagNameNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "getElementsByTagNameNS", []);
 
-  getElementsByTagNameNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getElementsByTagNameNS", [__arg_0]);
+  getElementsByTagNameNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "getElementsByTagNameNS", [__arg_0]);
 
-  getElementsByTagNameNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getElementsByTagNameNS", [__arg_0, __arg_1]);
+  getElementsByTagNameNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "getElementsByTagNameNS", [__arg_0, __arg_1]);
 
-  getSelection_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSelection", []);
+  getSelection_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "getSelection", []);
 
-  hasFocus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "hasFocus", []);
+  hasFocus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "hasFocus", []);
 
-  importNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "importNode", []);
+  importNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "importNode", []);
 
-  importNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "importNode", [__arg_0]);
+  importNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "importNode", [__arg_0]);
 
-  importNode_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "importNode", [__arg_0, __arg_1]);
+  importNode_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "importNode", [__arg_0, __arg_1]);
 
-  open_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "open", []);
+  open_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "open", []);
 
-  queryCommandEnabled_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "queryCommandEnabled", []);
+  queryCommandEnabled_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "queryCommandEnabled", []);
 
-  queryCommandEnabled_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "queryCommandEnabled", [__arg_0]);
+  queryCommandEnabled_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "queryCommandEnabled", [__arg_0]);
 
-  queryCommandIndeterm_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "queryCommandIndeterm", []);
+  queryCommandIndeterm_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "queryCommandIndeterm", []);
 
-  queryCommandIndeterm_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "queryCommandIndeterm", [__arg_0]);
+  queryCommandIndeterm_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "queryCommandIndeterm", [__arg_0]);
 
-  queryCommandState_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "queryCommandState", []);
+  queryCommandState_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "queryCommandState", []);
 
-  queryCommandState_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "queryCommandState", [__arg_0]);
+  queryCommandState_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "queryCommandState", [__arg_0]);
 
-  queryCommandSupported_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "queryCommandSupported", []);
+  queryCommandSupported_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "queryCommandSupported", []);
 
-  queryCommandSupported_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "queryCommandSupported", [__arg_0]);
+  queryCommandSupported_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "queryCommandSupported", [__arg_0]);
 
-  queryCommandValue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "queryCommandValue", []);
+  queryCommandValue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "queryCommandValue", []);
 
-  queryCommandValue_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "queryCommandValue", [__arg_0]);
+  queryCommandValue_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "queryCommandValue", [__arg_0]);
 
-  transformDocumentToTreeView_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "transformDocumentToTreeView", []);
+  transformDocumentToTreeView_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "transformDocumentToTreeView", []);
 
-  transformDocumentToTreeView_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "transformDocumentToTreeView", [__arg_0]);
+  transformDocumentToTreeView_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "transformDocumentToTreeView", [__arg_0]);
 
-  webkitCancelFullScreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitCancelFullScreen", []);
+  webkitCancelFullScreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "webkitCancelFullScreen", []);
 
-  webkitExitFullscreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitExitFullscreen", []);
+  webkitExitFullscreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "webkitExitFullscreen", []);
 
-  write_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "write", []);
+  write_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "write", []);
 
-  write_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "write", [__arg_0]);
+  write_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "write", [__arg_0]);
 
-  writeln_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "writeln", []);
+  writeln_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "writeln", []);
 
-  writeln_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "writeln", [__arg_0]);
+  writeln_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Document */, "writeln", [__arg_0]);
 
-  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onabort");
+  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onabort");
 
-  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
+  onabort_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onabort", __arg_0);
 
-  onautocomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onautocomplete");
+  onautocomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onautocomplete");
 
-  onautocomplete_Setter_(mthis, __arg_0) => mthis["onautocomplete"] = __arg_0;
+  onautocomplete_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onautocomplete", __arg_0);
 
-  onautocompleteerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onautocompleteerror");
+  onautocompleteerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onautocompleteerror");
 
-  onautocompleteerror_Setter_(mthis, __arg_0) => mthis["onautocompleteerror"] = __arg_0;
+  onautocompleteerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onautocompleteerror", __arg_0);
 
-  onblur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onblur");
+  onblur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onblur");
 
-  onblur_Setter_(mthis, __arg_0) => mthis["onblur"] = __arg_0;
+  onblur_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onblur", __arg_0);
 
-  oncancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncancel");
+  oncancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncancel");
 
-  oncancel_Setter_(mthis, __arg_0) => mthis["oncancel"] = __arg_0;
+  oncancel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncancel", __arg_0);
 
-  oncanplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncanplay");
+  oncanplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncanplay");
 
-  oncanplay_Setter_(mthis, __arg_0) => mthis["oncanplay"] = __arg_0;
+  oncanplay_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncanplay", __arg_0);
 
-  oncanplaythrough_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncanplaythrough");
+  oncanplaythrough_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncanplaythrough");
 
-  oncanplaythrough_Setter_(mthis, __arg_0) => mthis["oncanplaythrough"] = __arg_0;
+  oncanplaythrough_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncanplaythrough", __arg_0);
 
-  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onchange");
+  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onchange");
 
-  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
+  onchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onchange", __arg_0);
 
-  onclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclick");
+  onclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onclick");
 
-  onclick_Setter_(mthis, __arg_0) => mthis["onclick"] = __arg_0;
+  onclick_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onclick", __arg_0);
 
-  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclose");
+  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onclose");
 
-  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
+  onclose_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onclose", __arg_0);
 
-  oncontextmenu_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncontextmenu");
+  oncontextmenu_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncontextmenu");
 
-  oncontextmenu_Setter_(mthis, __arg_0) => mthis["oncontextmenu"] = __arg_0;
+  oncontextmenu_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncontextmenu", __arg_0);
 
-  oncuechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncuechange");
+  oncuechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncuechange");
 
-  oncuechange_Setter_(mthis, __arg_0) => mthis["oncuechange"] = __arg_0;
+  oncuechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncuechange", __arg_0);
 
-  ondblclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondblclick");
+  ondblclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondblclick");
 
-  ondblclick_Setter_(mthis, __arg_0) => mthis["ondblclick"] = __arg_0;
+  ondblclick_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondblclick", __arg_0);
 
-  ondrag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondrag");
+  ondrag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondrag");
 
-  ondrag_Setter_(mthis, __arg_0) => mthis["ondrag"] = __arg_0;
+  ondrag_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondrag", __arg_0);
 
-  ondragend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragend");
+  ondragend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragend");
 
-  ondragend_Setter_(mthis, __arg_0) => mthis["ondragend"] = __arg_0;
+  ondragend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragend", __arg_0);
 
-  ondragenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragenter");
+  ondragenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragenter");
 
-  ondragenter_Setter_(mthis, __arg_0) => mthis["ondragenter"] = __arg_0;
+  ondragenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragenter", __arg_0);
 
-  ondragleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragleave");
+  ondragleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragleave");
 
-  ondragleave_Setter_(mthis, __arg_0) => mthis["ondragleave"] = __arg_0;
+  ondragleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragleave", __arg_0);
 
-  ondragover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragover");
+  ondragover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragover");
 
-  ondragover_Setter_(mthis, __arg_0) => mthis["ondragover"] = __arg_0;
+  ondragover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragover", __arg_0);
 
-  ondragstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragstart");
+  ondragstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragstart");
 
-  ondragstart_Setter_(mthis, __arg_0) => mthis["ondragstart"] = __arg_0;
+  ondragstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragstart", __arg_0);
 
-  ondrop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondrop");
+  ondrop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondrop");
 
-  ondrop_Setter_(mthis, __arg_0) => mthis["ondrop"] = __arg_0;
+  ondrop_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondrop", __arg_0);
 
-  ondurationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondurationchange");
+  ondurationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondurationchange");
 
-  ondurationchange_Setter_(mthis, __arg_0) => mthis["ondurationchange"] = __arg_0;
+  ondurationchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondurationchange", __arg_0);
 
-  onemptied_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onemptied");
+  onemptied_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onemptied");
 
-  onemptied_Setter_(mthis, __arg_0) => mthis["onemptied"] = __arg_0;
+  onemptied_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onemptied", __arg_0);
 
-  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onended");
+  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onended");
 
-  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
+  onended_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onended", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onerror", __arg_0);
 
-  onfocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onfocus");
+  onfocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onfocus");
 
-  onfocus_Setter_(mthis, __arg_0) => mthis["onfocus"] = __arg_0;
+  onfocus_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onfocus", __arg_0);
 
-  oninput_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oninput");
+  oninput_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oninput");
 
-  oninput_Setter_(mthis, __arg_0) => mthis["oninput"] = __arg_0;
+  oninput_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oninput", __arg_0);
 
-  oninvalid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oninvalid");
+  oninvalid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oninvalid");
 
-  oninvalid_Setter_(mthis, __arg_0) => mthis["oninvalid"] = __arg_0;
+  oninvalid_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oninvalid", __arg_0);
 
-  onkeydown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeydown");
+  onkeydown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeydown");
 
-  onkeydown_Setter_(mthis, __arg_0) => mthis["onkeydown"] = __arg_0;
+  onkeydown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeydown", __arg_0);
 
-  onkeypress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeypress");
+  onkeypress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeypress");
 
-  onkeypress_Setter_(mthis, __arg_0) => mthis["onkeypress"] = __arg_0;
+  onkeypress_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeypress", __arg_0);
 
-  onkeyup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeyup");
+  onkeyup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeyup");
 
-  onkeyup_Setter_(mthis, __arg_0) => mthis["onkeyup"] = __arg_0;
+  onkeyup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeyup", __arg_0);
 
-  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onload");
+  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onload");
 
-  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
+  onload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onload", __arg_0);
 
-  onloadeddata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadeddata");
+  onloadeddata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadeddata");
 
-  onloadeddata_Setter_(mthis, __arg_0) => mthis["onloadeddata"] = __arg_0;
+  onloadeddata_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadeddata", __arg_0);
 
-  onloadedmetadata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadedmetadata");
+  onloadedmetadata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadedmetadata");
 
-  onloadedmetadata_Setter_(mthis, __arg_0) => mthis["onloadedmetadata"] = __arg_0;
+  onloadedmetadata_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadedmetadata", __arg_0);
 
-  onloadstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadstart");
+  onloadstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadstart");
 
-  onloadstart_Setter_(mthis, __arg_0) => mthis["onloadstart"] = __arg_0;
+  onloadstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadstart", __arg_0);
 
-  onmousedown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousedown");
+  onmousedown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousedown");
 
-  onmousedown_Setter_(mthis, __arg_0) => mthis["onmousedown"] = __arg_0;
+  onmousedown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousedown", __arg_0);
 
-  onmouseenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseenter");
+  onmouseenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseenter");
 
-  onmouseenter_Setter_(mthis, __arg_0) => mthis["onmouseenter"] = __arg_0;
+  onmouseenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseenter", __arg_0);
 
-  onmouseleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseleave");
+  onmouseleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseleave");
 
-  onmouseleave_Setter_(mthis, __arg_0) => mthis["onmouseleave"] = __arg_0;
+  onmouseleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseleave", __arg_0);
 
-  onmousemove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousemove");
+  onmousemove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousemove");
 
-  onmousemove_Setter_(mthis, __arg_0) => mthis["onmousemove"] = __arg_0;
+  onmousemove_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousemove", __arg_0);
 
-  onmouseout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseout");
+  onmouseout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseout");
 
-  onmouseout_Setter_(mthis, __arg_0) => mthis["onmouseout"] = __arg_0;
+  onmouseout_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseout", __arg_0);
 
-  onmouseover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseover");
+  onmouseover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseover");
 
-  onmouseover_Setter_(mthis, __arg_0) => mthis["onmouseover"] = __arg_0;
+  onmouseover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseover", __arg_0);
 
-  onmouseup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseup");
+  onmouseup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseup");
 
-  onmouseup_Setter_(mthis, __arg_0) => mthis["onmouseup"] = __arg_0;
+  onmouseup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseup", __arg_0);
 
-  onmousewheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousewheel");
+  onmousewheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousewheel");
 
-  onmousewheel_Setter_(mthis, __arg_0) => mthis["onmousewheel"] = __arg_0;
+  onmousewheel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousewheel", __arg_0);
 
-  onpause_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpause");
+  onpause_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpause");
 
-  onpause_Setter_(mthis, __arg_0) => mthis["onpause"] = __arg_0;
+  onpause_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpause", __arg_0);
 
-  onplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onplay");
+  onplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onplay");
 
-  onplay_Setter_(mthis, __arg_0) => mthis["onplay"] = __arg_0;
+  onplay_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onplay", __arg_0);
 
-  onplaying_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onplaying");
+  onplaying_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onplaying");
 
-  onplaying_Setter_(mthis, __arg_0) => mthis["onplaying"] = __arg_0;
+  onplaying_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onplaying", __arg_0);
 
-  onpointercancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointercancel");
+  onpointercancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointercancel");
 
-  onpointercancel_Setter_(mthis, __arg_0) => mthis["onpointercancel"] = __arg_0;
+  onpointercancel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointercancel", __arg_0);
 
-  onpointerdown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerdown");
+  onpointerdown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerdown");
 
-  onpointerdown_Setter_(mthis, __arg_0) => mthis["onpointerdown"] = __arg_0;
+  onpointerdown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerdown", __arg_0);
 
-  onpointerenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerenter");
+  onpointerenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerenter");
 
-  onpointerenter_Setter_(mthis, __arg_0) => mthis["onpointerenter"] = __arg_0;
+  onpointerenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerenter", __arg_0);
 
-  onpointerleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerleave");
+  onpointerleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerleave");
 
-  onpointerleave_Setter_(mthis, __arg_0) => mthis["onpointerleave"] = __arg_0;
+  onpointerleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerleave", __arg_0);
 
-  onpointermove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointermove");
+  onpointermove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointermove");
 
-  onpointermove_Setter_(mthis, __arg_0) => mthis["onpointermove"] = __arg_0;
+  onpointermove_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointermove", __arg_0);
 
-  onpointerout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerout");
+  onpointerout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerout");
 
-  onpointerout_Setter_(mthis, __arg_0) => mthis["onpointerout"] = __arg_0;
+  onpointerout_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerout", __arg_0);
 
-  onpointerover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerover");
+  onpointerover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerover");
 
-  onpointerover_Setter_(mthis, __arg_0) => mthis["onpointerover"] = __arg_0;
+  onpointerover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerover", __arg_0);
 
-  onpointerup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerup");
+  onpointerup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerup");
 
-  onpointerup_Setter_(mthis, __arg_0) => mthis["onpointerup"] = __arg_0;
+  onpointerup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerup", __arg_0);
 
-  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onprogress");
+  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onprogress");
 
-  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
+  onprogress_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onprogress", __arg_0);
 
-  onratechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onratechange");
+  onratechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onratechange");
 
-  onratechange_Setter_(mthis, __arg_0) => mthis["onratechange"] = __arg_0;
+  onratechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onratechange", __arg_0);
 
-  onreset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onreset");
+  onreset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onreset");
 
-  onreset_Setter_(mthis, __arg_0) => mthis["onreset"] = __arg_0;
+  onreset_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onreset", __arg_0);
 
-  onresize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onresize");
+  onresize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onresize");
 
-  onresize_Setter_(mthis, __arg_0) => mthis["onresize"] = __arg_0;
+  onresize_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onresize", __arg_0);
 
-  onscroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onscroll");
+  onscroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onscroll");
 
-  onscroll_Setter_(mthis, __arg_0) => mthis["onscroll"] = __arg_0;
+  onscroll_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onscroll", __arg_0);
 
-  onseeked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onseeked");
+  onseeked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onseeked");
 
-  onseeked_Setter_(mthis, __arg_0) => mthis["onseeked"] = __arg_0;
+  onseeked_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onseeked", __arg_0);
 
-  onseeking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onseeking");
+  onseeking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onseeking");
 
-  onseeking_Setter_(mthis, __arg_0) => mthis["onseeking"] = __arg_0;
+  onseeking_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onseeking", __arg_0);
 
-  onselect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onselect");
+  onselect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onselect");
 
-  onselect_Setter_(mthis, __arg_0) => mthis["onselect"] = __arg_0;
+  onselect_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onselect", __arg_0);
 
-  onshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onshow");
+  onshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onshow");
 
-  onshow_Setter_(mthis, __arg_0) => mthis["onshow"] = __arg_0;
+  onshow_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onshow", __arg_0);
 
-  onstalled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstalled");
+  onstalled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onstalled");
 
-  onstalled_Setter_(mthis, __arg_0) => mthis["onstalled"] = __arg_0;
+  onstalled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onstalled", __arg_0);
 
-  onsubmit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsubmit");
+  onsubmit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onsubmit");
 
-  onsubmit_Setter_(mthis, __arg_0) => mthis["onsubmit"] = __arg_0;
+  onsubmit_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onsubmit", __arg_0);
 
-  onsuspend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsuspend");
+  onsuspend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onsuspend");
 
-  onsuspend_Setter_(mthis, __arg_0) => mthis["onsuspend"] = __arg_0;
+  onsuspend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onsuspend", __arg_0);
 
-  ontimeupdate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontimeupdate");
+  ontimeupdate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ontimeupdate");
 
-  ontimeupdate_Setter_(mthis, __arg_0) => mthis["ontimeupdate"] = __arg_0;
+  ontimeupdate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ontimeupdate", __arg_0);
 
-  ontoggle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontoggle");
+  ontoggle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ontoggle");
 
-  ontoggle_Setter_(mthis, __arg_0) => mthis["ontoggle"] = __arg_0;
+  ontoggle_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ontoggle", __arg_0);
 
-  onvolumechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onvolumechange");
+  onvolumechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onvolumechange");
 
-  onvolumechange_Setter_(mthis, __arg_0) => mthis["onvolumechange"] = __arg_0;
+  onvolumechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onvolumechange", __arg_0);
 
-  onwaiting_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwaiting");
+  onwaiting_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onwaiting");
 
-  onwaiting_Setter_(mthis, __arg_0) => mthis["onwaiting"] = __arg_0;
+  onwaiting_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onwaiting", __arg_0);
 
-  childElementCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "childElementCount");
+  childElementCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ParentNode */, "childElementCount");
 
-  children_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "children");
+  children_Getter_(mthis) native "Blink_Getter_ParentNode_children";
 
-  firstElementChild_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "firstElementChild");
+  firstElementChild_Getter_(mthis) native "Blink_Getter_ParentNode_firstElementChild";
 
-  lastElementChild_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lastElementChild");
+  lastElementChild_Getter_(mthis) native "Blink_Getter_ParentNode_lastElementChild";
 
-  append_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "append", []);
+  append_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "append", []);
 
-  append_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "append", [__arg_0]);
+  append_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "append", [__arg_0]);
 
-  prepend_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "prepend", []);
+  prepend_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "prepend", []);
 
-  prepend_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "prepend", [__arg_0]);
+  prepend_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "prepend", [__arg_0]);
 
-  querySelector_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "querySelector", []);
+  querySelector_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "querySelector", []);
 
-  querySelector_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "querySelector", [__arg_0]);
+  querySelector_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "querySelector", [__arg_0]);
 
-  querySelectorAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "querySelectorAll", []);
+  querySelectorAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "querySelectorAll", []);
 
-  querySelectorAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "querySelectorAll", [__arg_0]);
+  querySelectorAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "querySelectorAll", [__arg_0]);
 
-  getElementById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getElementById", []);
+  getElementById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NonElementParentNode */, "getElementById", []);
 
-  getElementById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getElementById", [__arg_0]);
+  getElementById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* NonElementParentNode */, "getElementById", [__arg_0]);
 
 }
 
 class BlinkDocumentFragment extends BlinkNode {
   static final instance = new BlinkDocumentFragment();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "DocumentFragment"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("DocumentFragment");
 
-  childElementCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "childElementCount");
+  childElementCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ParentNode */, "childElementCount");
 
-  children_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "children");
+  children_Getter_(mthis) native "Blink_Getter_ParentNode_children";
 
-  firstElementChild_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "firstElementChild");
+  firstElementChild_Getter_(mthis) native "Blink_Getter_ParentNode_firstElementChild";
 
-  lastElementChild_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lastElementChild");
+  lastElementChild_Getter_(mthis) native "Blink_Getter_ParentNode_lastElementChild";
 
-  append_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "append", []);
+  append_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "append", []);
 
-  append_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "append", [__arg_0]);
+  append_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "append", [__arg_0]);
 
-  prepend_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "prepend", []);
+  prepend_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "prepend", []);
 
-  prepend_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "prepend", [__arg_0]);
+  prepend_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "prepend", [__arg_0]);
 
-  querySelector_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "querySelector", []);
+  querySelector_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "querySelector", []);
 
-  querySelector_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "querySelector", [__arg_0]);
+  querySelector_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "querySelector", [__arg_0]);
 
-  querySelectorAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "querySelectorAll", []);
+  querySelectorAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "querySelectorAll", []);
 
-  querySelectorAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "querySelectorAll", [__arg_0]);
+  querySelectorAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "querySelectorAll", [__arg_0]);
 
-  getElementById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getElementById", []);
+  getElementById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NonElementParentNode */, "getElementById", []);
 
-  getElementById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getElementById", [__arg_0]);
+  getElementById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* NonElementParentNode */, "getElementById", [__arg_0]);
 
 }
 
 class BlinkDocumentType extends BlinkNode {
   static final instance = new BlinkDocumentType();
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DocumentType */, "name");
 
-  publicId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "publicId");
+  publicId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DocumentType */, "publicId");
 
-  systemId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "systemId");
+  systemId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DocumentType */, "systemId");
 
-  after_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "after", []);
+  after_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "after", []);
 
-  after_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "after", [__arg_0]);
+  after_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "after", [__arg_0]);
 
-  before_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "before", []);
+  before_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "before", []);
 
-  before_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "before", [__arg_0]);
+  before_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "before", [__arg_0]);
 
-  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "remove", []);
+  remove_Callback_0_(mthis) native "Blink_Operation_0_ChildNode_remove";
 
-  replaceWith_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "replaceWith", []);
+  replaceWith_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "replaceWith", []);
 
-  replaceWith_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "replaceWith", [__arg_0]);
+  replaceWith_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "replaceWith", [__arg_0]);
 
 }
 
 class BlinkDynamicsCompressorNode extends BlinkAudioNode {
   static final instance = new BlinkDynamicsCompressorNode();
 
-  attack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "attack");
+  attack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DynamicsCompressorNode */, "attack");
 
-  knee_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "knee");
+  knee_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DynamicsCompressorNode */, "knee");
 
-  ratio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ratio");
+  ratio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DynamicsCompressorNode */, "ratio");
 
-  reduction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "reduction");
+  reduction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DynamicsCompressorNode */, "reduction");
 
-  release_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "release");
+  release_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DynamicsCompressorNode */, "release");
 
-  threshold_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "threshold");
+  threshold_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* DynamicsCompressorNode */, "threshold");
 
 }
 
@@ -4660,1154 +4660,1154 @@
 class BlinkElement extends BlinkNode {
   static final instance = new BlinkElement();
 
-  attributes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "attributes");
+  attributes_Getter_(mthis) native "Blink_Getter_Element_attributes";
 
-  classList_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "classList");
+  classList_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "classList");
 
-  className_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "className");
+  className_Getter_(mthis) native "Blink_Getter_Element_className";
 
-  className_Setter_(mthis, __arg_0) => mthis["className"] = __arg_0;
+  className_Setter_(mthis, __arg_0) native "Blink_Setter_Element_className";
 
-  clientHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "clientHeight");
+  clientHeight_Getter_(mthis) native "Blink_Getter_Element_clientHeight";
 
-  clientLeft_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "clientLeft");
+  clientLeft_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "clientLeft");
 
-  clientTop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "clientTop");
+  clientTop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "clientTop");
 
-  clientWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "clientWidth");
+  clientWidth_Getter_(mthis) native "Blink_Getter_Element_clientWidth";
 
-  computedName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "computedName");
+  computedName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "computedName");
 
-  computedRole_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "computedRole");
+  computedRole_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "computedRole");
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) native "Blink_Getter_Element_id";
 
-  id_Setter_(mthis, __arg_0) => mthis["id"] = __arg_0;
+  id_Setter_(mthis, __arg_0) native "Blink_Setter_Element_id";
 
-  innerHTML_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "innerHTML");
+  innerHTML_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "innerHTML");
 
-  innerHTML_Setter_(mthis, __arg_0) => mthis["innerHTML"] = __arg_0;
+  innerHTML_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "innerHTML", __arg_0);
 
-  localName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "localName");
+  localName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "localName");
 
-  namespaceURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "namespaceURI");
+  namespaceURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "namespaceURI");
 
-  offsetHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "offsetHeight");
+  offsetHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "offsetHeight");
 
-  offsetLeft_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "offsetLeft");
+  offsetLeft_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "offsetLeft");
 
-  offsetParent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "offsetParent");
+  offsetParent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "offsetParent");
 
-  offsetTop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "offsetTop");
+  offsetTop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "offsetTop");
 
-  offsetWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "offsetWidth");
+  offsetWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "offsetWidth");
 
-  onbeforecopy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onbeforecopy");
+  onbeforecopy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "onbeforecopy");
 
-  onbeforecopy_Setter_(mthis, __arg_0) => mthis["onbeforecopy"] = __arg_0;
+  onbeforecopy_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "onbeforecopy", __arg_0);
 
-  onbeforecut_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onbeforecut");
+  onbeforecut_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "onbeforecut");
 
-  onbeforecut_Setter_(mthis, __arg_0) => mthis["onbeforecut"] = __arg_0;
+  onbeforecut_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "onbeforecut", __arg_0);
 
-  onbeforepaste_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onbeforepaste");
+  onbeforepaste_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "onbeforepaste");
 
-  onbeforepaste_Setter_(mthis, __arg_0) => mthis["onbeforepaste"] = __arg_0;
+  onbeforepaste_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "onbeforepaste", __arg_0);
 
-  oncopy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncopy");
+  oncopy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "oncopy");
 
-  oncopy_Setter_(mthis, __arg_0) => mthis["oncopy"] = __arg_0;
+  oncopy_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "oncopy", __arg_0);
 
-  oncut_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncut");
+  oncut_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "oncut");
 
-  oncut_Setter_(mthis, __arg_0) => mthis["oncut"] = __arg_0;
+  oncut_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "oncut", __arg_0);
 
-  onpaste_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpaste");
+  onpaste_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "onpaste");
 
-  onpaste_Setter_(mthis, __arg_0) => mthis["onpaste"] = __arg_0;
+  onpaste_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "onpaste", __arg_0);
 
-  onsearch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsearch");
+  onsearch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "onsearch");
 
-  onsearch_Setter_(mthis, __arg_0) => mthis["onsearch"] = __arg_0;
+  onsearch_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "onsearch", __arg_0);
 
-  onselectstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onselectstart");
+  onselectstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "onselectstart");
 
-  onselectstart_Setter_(mthis, __arg_0) => mthis["onselectstart"] = __arg_0;
+  onselectstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "onselectstart", __arg_0);
 
-  ontouchcancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontouchcancel");
+  ontouchcancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "ontouchcancel");
 
-  ontouchcancel_Setter_(mthis, __arg_0) => mthis["ontouchcancel"] = __arg_0;
+  ontouchcancel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "ontouchcancel", __arg_0);
 
-  ontouchend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontouchend");
+  ontouchend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "ontouchend");
 
-  ontouchend_Setter_(mthis, __arg_0) => mthis["ontouchend"] = __arg_0;
+  ontouchend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "ontouchend", __arg_0);
 
-  ontouchmove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontouchmove");
+  ontouchmove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "ontouchmove");
 
-  ontouchmove_Setter_(mthis, __arg_0) => mthis["ontouchmove"] = __arg_0;
+  ontouchmove_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "ontouchmove", __arg_0);
 
-  ontouchstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontouchstart");
+  ontouchstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "ontouchstart");
 
-  ontouchstart_Setter_(mthis, __arg_0) => mthis["ontouchstart"] = __arg_0;
+  ontouchstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "ontouchstart", __arg_0);
 
-  onwebkitfullscreenchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwebkitfullscreenchange");
+  onwebkitfullscreenchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "onwebkitfullscreenchange");
 
-  onwebkitfullscreenchange_Setter_(mthis, __arg_0) => mthis["onwebkitfullscreenchange"] = __arg_0;
+  onwebkitfullscreenchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "onwebkitfullscreenchange", __arg_0);
 
-  onwebkitfullscreenerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwebkitfullscreenerror");
+  onwebkitfullscreenerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "onwebkitfullscreenerror");
 
-  onwebkitfullscreenerror_Setter_(mthis, __arg_0) => mthis["onwebkitfullscreenerror"] = __arg_0;
+  onwebkitfullscreenerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "onwebkitfullscreenerror", __arg_0);
 
-  onwheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwheel");
+  onwheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "onwheel");
 
-  onwheel_Setter_(mthis, __arg_0) => mthis["onwheel"] = __arg_0;
+  onwheel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "onwheel", __arg_0);
 
-  outerHTML_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "outerHTML");
+  outerHTML_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "outerHTML");
 
-  outerHTML_Setter_(mthis, __arg_0) => mthis["outerHTML"] = __arg_0;
+  outerHTML_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "outerHTML", __arg_0);
 
-  prefix_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "prefix");
+  prefix_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "prefix");
 
-  scrollHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scrollHeight");
+  scrollHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "scrollHeight");
 
-  scrollLeft_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scrollLeft");
+  scrollLeft_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "scrollLeft");
 
-  scrollLeft_Setter_(mthis, __arg_0) => mthis["scrollLeft"] = __arg_0;
+  scrollLeft_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "scrollLeft", __arg_0);
 
-  scrollTop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scrollTop");
+  scrollTop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "scrollTop");
 
-  scrollTop_Setter_(mthis, __arg_0) => mthis["scrollTop"] = __arg_0;
+  scrollTop_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Element */, "scrollTop", __arg_0);
 
-  scrollWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scrollWidth");
+  scrollWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "scrollWidth");
 
-  shadowRoot_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "shadowRoot");
+  shadowRoot_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Element */, "shadowRoot");
 
-  tagName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "tagName");
+  tagName_Getter_(mthis) native "Blink_Getter_Element_tagName";
 
-  animate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "animate", []);
+  animate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "animate", []);
 
-  animate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "animate", [__arg_0]);
+  animate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "animate", [__arg_0]);
 
-  animate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "animate", [__arg_0, __arg_1]);
+  animate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "animate", [__arg_0, __arg_1]);
 
-  closest_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "closest", []);
+  closest_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "closest", []);
 
-  closest_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "closest", [__arg_0]);
+  closest_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "closest", [__arg_0]);
 
-  createShadowRoot_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createShadowRoot", []);
+  createShadowRoot_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "createShadowRoot", []);
 
-  createShadowRoot_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createShadowRoot", [__arg_0]);
+  createShadowRoot_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "createShadowRoot", [__arg_0]);
 
-  getAnimations_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAnimations", []);
+  getAnimations_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getAnimations", []);
 
-  getAttribute_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAttribute", []);
+  getAttribute_Callback_0_(mthis) native "Blink_Operation_0_Element_getAttribute";
 
-  getAttribute_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAttribute", [__arg_0]);
+  getAttribute_Callback_1_(mthis, __arg_0) native "Blink_Operation_Element_getAttribute"; /* __arg_0 */
 
-  getAttributeNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAttributeNS", []);
+  getAttributeNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getAttributeNS", []);
 
-  getAttributeNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAttributeNS", [__arg_0]);
+  getAttributeNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getAttributeNS", [__arg_0]);
 
-  getAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getAttributeNS", [__arg_0, __arg_1]);
+  getAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getAttributeNS", [__arg_0, __arg_1]);
 
-  getAttributeNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAttributeNode", []);
+  getAttributeNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getAttributeNode", []);
 
-  getAttributeNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAttributeNode", [__arg_0]);
+  getAttributeNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getAttributeNode", [__arg_0]);
 
-  getAttributeNodeNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAttributeNodeNS", []);
+  getAttributeNodeNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getAttributeNodeNS", []);
 
-  getAttributeNodeNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAttributeNodeNS", [__arg_0]);
+  getAttributeNodeNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getAttributeNodeNS", [__arg_0]);
 
-  getAttributeNodeNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getAttributeNodeNS", [__arg_0, __arg_1]);
+  getAttributeNodeNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getAttributeNodeNS", [__arg_0, __arg_1]);
 
-  getBoundingClientRect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getBoundingClientRect", []);
+  getBoundingClientRect_Callback_0_(mthis) native "Blink_Operation_0_Element_getBoundingClientRect";
 
-  getClientRects_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getClientRects", []);
+  getClientRects_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getClientRects", []);
 
-  getDestinationInsertionPoints_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getDestinationInsertionPoints", []);
+  getDestinationInsertionPoints_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getDestinationInsertionPoints", []);
 
-  getElementsByClassName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getElementsByClassName", []);
+  getElementsByClassName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getElementsByClassName", []);
 
-  getElementsByClassName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getElementsByClassName", [__arg_0]);
+  getElementsByClassName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getElementsByClassName", [__arg_0]);
 
-  getElementsByTagName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getElementsByTagName", []);
+  getElementsByTagName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getElementsByTagName", []);
 
-  getElementsByTagName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getElementsByTagName", [__arg_0]);
+  getElementsByTagName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getElementsByTagName", [__arg_0]);
 
-  getElementsByTagNameNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getElementsByTagNameNS", []);
+  getElementsByTagNameNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getElementsByTagNameNS", []);
 
-  getElementsByTagNameNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getElementsByTagNameNS", [__arg_0]);
+  getElementsByTagNameNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getElementsByTagNameNS", [__arg_0]);
 
-  getElementsByTagNameNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getElementsByTagNameNS", [__arg_0, __arg_1]);
+  getElementsByTagNameNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "getElementsByTagNameNS", [__arg_0, __arg_1]);
 
-  hasAttribute_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "hasAttribute", []);
+  hasAttribute_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "hasAttribute", []);
 
-  hasAttribute_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "hasAttribute", [__arg_0]);
+  hasAttribute_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "hasAttribute", [__arg_0]);
 
-  hasAttributeNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "hasAttributeNS", []);
+  hasAttributeNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "hasAttributeNS", []);
 
-  hasAttributeNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "hasAttributeNS", [__arg_0]);
+  hasAttributeNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "hasAttributeNS", [__arg_0]);
 
-  hasAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "hasAttributeNS", [__arg_0, __arg_1]);
+  hasAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "hasAttributeNS", [__arg_0, __arg_1]);
 
-  hasAttributes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "hasAttributes", []);
+  hasAttributes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "hasAttributes", []);
 
-  insertAdjacentElement_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertAdjacentElement", []);
+  insertAdjacentElement_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "insertAdjacentElement", []);
 
-  insertAdjacentElement_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertAdjacentElement", [__arg_0]);
+  insertAdjacentElement_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "insertAdjacentElement", [__arg_0]);
 
-  insertAdjacentElement_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "insertAdjacentElement", [__arg_0, __arg_1]);
+  insertAdjacentElement_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "insertAdjacentElement", [__arg_0, __arg_1]);
 
-  insertAdjacentHTML_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertAdjacentHTML", []);
+  insertAdjacentHTML_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "insertAdjacentHTML", []);
 
-  insertAdjacentHTML_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertAdjacentHTML", [__arg_0]);
+  insertAdjacentHTML_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "insertAdjacentHTML", [__arg_0]);
 
-  insertAdjacentHTML_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "insertAdjacentHTML", [__arg_0, __arg_1]);
+  insertAdjacentHTML_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "insertAdjacentHTML", [__arg_0, __arg_1]);
 
-  insertAdjacentText_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertAdjacentText", []);
+  insertAdjacentText_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "insertAdjacentText", []);
 
-  insertAdjacentText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertAdjacentText", [__arg_0]);
+  insertAdjacentText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "insertAdjacentText", [__arg_0]);
 
-  insertAdjacentText_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "insertAdjacentText", [__arg_0, __arg_1]);
+  insertAdjacentText_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "insertAdjacentText", [__arg_0, __arg_1]);
 
-  matches_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "matches", []);
+  matches_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "matches", []);
 
-  matches_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "matches", [__arg_0]);
+  matches_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "matches", [__arg_0]);
 
-  removeAttribute_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeAttribute", []);
+  removeAttribute_Callback_0_(mthis) native "Blink_Operation_0_Element_removeAttribute";
 
-  removeAttribute_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeAttribute", [__arg_0]);
+  removeAttribute_Callback_1_(mthis, __arg_0) native "Blink_Operation_Element_removeAttribute"; /* __arg_0 */
 
-  removeAttributeNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeAttributeNS", []);
+  removeAttributeNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "removeAttributeNS", []);
 
-  removeAttributeNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeAttributeNS", [__arg_0]);
+  removeAttributeNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "removeAttributeNS", [__arg_0]);
 
-  removeAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "removeAttributeNS", [__arg_0, __arg_1]);
+  removeAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "removeAttributeNS", [__arg_0, __arg_1]);
 
-  removeAttributeNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeAttributeNode", []);
+  removeAttributeNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "removeAttributeNode", []);
 
-  removeAttributeNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeAttributeNode", [__arg_0]);
+  removeAttributeNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "removeAttributeNode", [__arg_0]);
 
-  requestFullscreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "requestFullscreen", []);
+  requestFullscreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "requestFullscreen", []);
 
-  requestPointerLock_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "requestPointerLock", []);
+  requestPointerLock_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "requestPointerLock", []);
 
-  scroll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scroll", []);
+  scroll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "scroll", []);
 
-  scroll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scroll", [__arg_0]);
+  scroll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "scroll", [__arg_0]);
 
-  scroll_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scroll", [__arg_0, __arg_1]);
+  scroll_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "scroll", [__arg_0, __arg_1]);
 
-  scrollBy_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scrollBy", []);
+  scrollBy_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "scrollBy", []);
 
-  scrollBy_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scrollBy", [__arg_0]);
+  scrollBy_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "scrollBy", [__arg_0]);
 
-  scrollBy_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scrollBy", [__arg_0, __arg_1]);
+  scrollBy_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "scrollBy", [__arg_0, __arg_1]);
 
-  scrollIntoView_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scrollIntoView", []);
+  scrollIntoView_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "scrollIntoView", []);
 
-  scrollIntoView_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scrollIntoView", [__arg_0]);
+  scrollIntoView_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "scrollIntoView", [__arg_0]);
 
-  scrollIntoViewIfNeeded_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scrollIntoViewIfNeeded", []);
+  scrollIntoViewIfNeeded_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "scrollIntoViewIfNeeded", []);
 
-  scrollIntoViewIfNeeded_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scrollIntoViewIfNeeded", [__arg_0]);
+  scrollIntoViewIfNeeded_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "scrollIntoViewIfNeeded", [__arg_0]);
 
-  scrollTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scrollTo", []);
+  scrollTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "scrollTo", []);
 
-  scrollTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scrollTo", [__arg_0]);
+  scrollTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "scrollTo", [__arg_0]);
 
-  scrollTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scrollTo", [__arg_0, __arg_1]);
+  scrollTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "scrollTo", [__arg_0, __arg_1]);
 
-  setAttribute_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setAttribute", []);
+  setAttribute_Callback_0_(mthis) native "Blink_Operation_0_Element_setAttribute";
 
-  setAttribute_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setAttribute", [__arg_0]);
+  setAttribute_Callback_1_(mthis, __arg_0) native "Blink_Operation_Element_setAttribute"; /* __arg_0 */
 
-  setAttribute_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setAttribute", [__arg_0, __arg_1]);
+  setAttribute_Callback_2_(mthis, __arg_0, __arg_1) native "Blink_Operation_Element_setAttribute"; /* __arg_0, __arg_1 */
 
-  setAttributeNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setAttributeNS", [__arg_0]);
+  setAttributeNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "setAttributeNS", [__arg_0]);
 
-  setAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setAttributeNS", [__arg_0, __arg_1]);
+  setAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "setAttributeNS", [__arg_0, __arg_1]);
 
-  setAttributeNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setAttributeNS", [__arg_0, __arg_1, __arg_2]);
+  setAttributeNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "setAttributeNS", [__arg_0, __arg_1, __arg_2]);
 
-  setAttributeNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setAttributeNode", []);
+  setAttributeNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "setAttributeNode", []);
 
-  setAttributeNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setAttributeNode", [__arg_0]);
+  setAttributeNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "setAttributeNode", [__arg_0]);
 
-  setAttributeNodeNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setAttributeNodeNS", []);
+  setAttributeNodeNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "setAttributeNodeNS", []);
 
-  setAttributeNodeNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setAttributeNodeNS", [__arg_0]);
+  setAttributeNodeNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "setAttributeNodeNS", [__arg_0]);
 
-  webkitMatchesSelector_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitMatchesSelector", []);
+  webkitMatchesSelector_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "webkitMatchesSelector", []);
 
-  webkitMatchesSelector_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "webkitMatchesSelector", [__arg_0]);
+  webkitMatchesSelector_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "webkitMatchesSelector", [__arg_0]);
 
-  webkitRequestFullScreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitRequestFullScreen", []);
+  webkitRequestFullScreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Element */, "webkitRequestFullScreen", []);
 
-  childElementCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "childElementCount");
+  childElementCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ParentNode */, "childElementCount");
 
-  children_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "children");
+  children_Getter_(mthis) native "Blink_Getter_ParentNode_children";
 
-  firstElementChild_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "firstElementChild");
+  firstElementChild_Getter_(mthis) native "Blink_Getter_ParentNode_firstElementChild";
 
-  lastElementChild_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lastElementChild");
+  lastElementChild_Getter_(mthis) native "Blink_Getter_ParentNode_lastElementChild";
 
-  append_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "append", []);
+  append_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "append", []);
 
-  append_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "append", [__arg_0]);
+  append_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "append", [__arg_0]);
 
-  prepend_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "prepend", []);
+  prepend_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "prepend", []);
 
-  prepend_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "prepend", [__arg_0]);
+  prepend_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "prepend", [__arg_0]);
 
-  querySelector_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "querySelector", []);
+  querySelector_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "querySelector", []);
 
-  querySelector_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "querySelector", [__arg_0]);
+  querySelector_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "querySelector", [__arg_0]);
 
-  querySelectorAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "querySelectorAll", []);
+  querySelectorAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "querySelectorAll", []);
 
-  querySelectorAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "querySelectorAll", [__arg_0]);
+  querySelectorAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "querySelectorAll", [__arg_0]);
 
-  after_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "after", []);
+  after_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "after", []);
 
-  after_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "after", [__arg_0]);
+  after_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "after", [__arg_0]);
 
-  before_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "before", []);
+  before_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "before", []);
 
-  before_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "before", [__arg_0]);
+  before_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "before", [__arg_0]);
 
-  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "remove", []);
+  remove_Callback_0_(mthis) native "Blink_Operation_0_ChildNode_remove";
 
-  replaceWith_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "replaceWith", []);
+  replaceWith_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "replaceWith", []);
 
-  replaceWith_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "replaceWith", [__arg_0]);
+  replaceWith_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ChildNode */, "replaceWith", [__arg_0]);
 
-  nextElementSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "nextElementSibling");
+  nextElementSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NonDocumentTypeChildNode */, "nextElementSibling");
 
-  previousElementSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "previousElementSibling");
+  previousElementSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NonDocumentTypeChildNode */, "previousElementSibling");
 
-  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onabort");
+  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onabort");
 
-  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
+  onabort_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onabort", __arg_0);
 
-  onautocomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onautocomplete");
+  onautocomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onautocomplete");
 
-  onautocomplete_Setter_(mthis, __arg_0) => mthis["onautocomplete"] = __arg_0;
+  onautocomplete_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onautocomplete", __arg_0);
 
-  onautocompleteerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onautocompleteerror");
+  onautocompleteerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onautocompleteerror");
 
-  onautocompleteerror_Setter_(mthis, __arg_0) => mthis["onautocompleteerror"] = __arg_0;
+  onautocompleteerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onautocompleteerror", __arg_0);
 
-  onblur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onblur");
+  onblur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onblur");
 
-  onblur_Setter_(mthis, __arg_0) => mthis["onblur"] = __arg_0;
+  onblur_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onblur", __arg_0);
 
-  oncancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncancel");
+  oncancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncancel");
 
-  oncancel_Setter_(mthis, __arg_0) => mthis["oncancel"] = __arg_0;
+  oncancel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncancel", __arg_0);
 
-  oncanplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncanplay");
+  oncanplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncanplay");
 
-  oncanplay_Setter_(mthis, __arg_0) => mthis["oncanplay"] = __arg_0;
+  oncanplay_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncanplay", __arg_0);
 
-  oncanplaythrough_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncanplaythrough");
+  oncanplaythrough_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncanplaythrough");
 
-  oncanplaythrough_Setter_(mthis, __arg_0) => mthis["oncanplaythrough"] = __arg_0;
+  oncanplaythrough_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncanplaythrough", __arg_0);
 
-  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onchange");
+  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onchange");
 
-  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
+  onchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onchange", __arg_0);
 
-  onclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclick");
+  onclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onclick");
 
-  onclick_Setter_(mthis, __arg_0) => mthis["onclick"] = __arg_0;
+  onclick_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onclick", __arg_0);
 
-  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclose");
+  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onclose");
 
-  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
+  onclose_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onclose", __arg_0);
 
-  oncontextmenu_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncontextmenu");
+  oncontextmenu_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncontextmenu");
 
-  oncontextmenu_Setter_(mthis, __arg_0) => mthis["oncontextmenu"] = __arg_0;
+  oncontextmenu_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncontextmenu", __arg_0);
 
-  oncuechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncuechange");
+  oncuechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncuechange");
 
-  oncuechange_Setter_(mthis, __arg_0) => mthis["oncuechange"] = __arg_0;
+  oncuechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncuechange", __arg_0);
 
-  ondblclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondblclick");
+  ondblclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondblclick");
 
-  ondblclick_Setter_(mthis, __arg_0) => mthis["ondblclick"] = __arg_0;
+  ondblclick_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondblclick", __arg_0);
 
-  ondrag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondrag");
+  ondrag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondrag");
 
-  ondrag_Setter_(mthis, __arg_0) => mthis["ondrag"] = __arg_0;
+  ondrag_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondrag", __arg_0);
 
-  ondragend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragend");
+  ondragend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragend");
 
-  ondragend_Setter_(mthis, __arg_0) => mthis["ondragend"] = __arg_0;
+  ondragend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragend", __arg_0);
 
-  ondragenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragenter");
+  ondragenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragenter");
 
-  ondragenter_Setter_(mthis, __arg_0) => mthis["ondragenter"] = __arg_0;
+  ondragenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragenter", __arg_0);
 
-  ondragleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragleave");
+  ondragleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragleave");
 
-  ondragleave_Setter_(mthis, __arg_0) => mthis["ondragleave"] = __arg_0;
+  ondragleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragleave", __arg_0);
 
-  ondragover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragover");
+  ondragover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragover");
 
-  ondragover_Setter_(mthis, __arg_0) => mthis["ondragover"] = __arg_0;
+  ondragover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragover", __arg_0);
 
-  ondragstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragstart");
+  ondragstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragstart");
 
-  ondragstart_Setter_(mthis, __arg_0) => mthis["ondragstart"] = __arg_0;
+  ondragstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragstart", __arg_0);
 
-  ondrop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondrop");
+  ondrop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondrop");
 
-  ondrop_Setter_(mthis, __arg_0) => mthis["ondrop"] = __arg_0;
+  ondrop_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondrop", __arg_0);
 
-  ondurationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondurationchange");
+  ondurationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondurationchange");
 
-  ondurationchange_Setter_(mthis, __arg_0) => mthis["ondurationchange"] = __arg_0;
+  ondurationchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondurationchange", __arg_0);
 
-  onemptied_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onemptied");
+  onemptied_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onemptied");
 
-  onemptied_Setter_(mthis, __arg_0) => mthis["onemptied"] = __arg_0;
+  onemptied_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onemptied", __arg_0);
 
-  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onended");
+  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onended");
 
-  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
+  onended_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onended", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onerror", __arg_0);
 
-  onfocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onfocus");
+  onfocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onfocus");
 
-  onfocus_Setter_(mthis, __arg_0) => mthis["onfocus"] = __arg_0;
+  onfocus_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onfocus", __arg_0);
 
-  oninput_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oninput");
+  oninput_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oninput");
 
-  oninput_Setter_(mthis, __arg_0) => mthis["oninput"] = __arg_0;
+  oninput_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oninput", __arg_0);
 
-  oninvalid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oninvalid");
+  oninvalid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oninvalid");
 
-  oninvalid_Setter_(mthis, __arg_0) => mthis["oninvalid"] = __arg_0;
+  oninvalid_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oninvalid", __arg_0);
 
-  onkeydown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeydown");
+  onkeydown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeydown");
 
-  onkeydown_Setter_(mthis, __arg_0) => mthis["onkeydown"] = __arg_0;
+  onkeydown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeydown", __arg_0);
 
-  onkeypress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeypress");
+  onkeypress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeypress");
 
-  onkeypress_Setter_(mthis, __arg_0) => mthis["onkeypress"] = __arg_0;
+  onkeypress_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeypress", __arg_0);
 
-  onkeyup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeyup");
+  onkeyup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeyup");
 
-  onkeyup_Setter_(mthis, __arg_0) => mthis["onkeyup"] = __arg_0;
+  onkeyup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeyup", __arg_0);
 
-  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onload");
+  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onload");
 
-  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
+  onload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onload", __arg_0);
 
-  onloadeddata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadeddata");
+  onloadeddata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadeddata");
 
-  onloadeddata_Setter_(mthis, __arg_0) => mthis["onloadeddata"] = __arg_0;
+  onloadeddata_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadeddata", __arg_0);
 
-  onloadedmetadata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadedmetadata");
+  onloadedmetadata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadedmetadata");
 
-  onloadedmetadata_Setter_(mthis, __arg_0) => mthis["onloadedmetadata"] = __arg_0;
+  onloadedmetadata_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadedmetadata", __arg_0);
 
-  onloadstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadstart");
+  onloadstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadstart");
 
-  onloadstart_Setter_(mthis, __arg_0) => mthis["onloadstart"] = __arg_0;
+  onloadstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadstart", __arg_0);
 
-  onmousedown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousedown");
+  onmousedown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousedown");
 
-  onmousedown_Setter_(mthis, __arg_0) => mthis["onmousedown"] = __arg_0;
+  onmousedown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousedown", __arg_0);
 
-  onmouseenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseenter");
+  onmouseenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseenter");
 
-  onmouseenter_Setter_(mthis, __arg_0) => mthis["onmouseenter"] = __arg_0;
+  onmouseenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseenter", __arg_0);
 
-  onmouseleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseleave");
+  onmouseleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseleave");
 
-  onmouseleave_Setter_(mthis, __arg_0) => mthis["onmouseleave"] = __arg_0;
+  onmouseleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseleave", __arg_0);
 
-  onmousemove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousemove");
+  onmousemove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousemove");
 
-  onmousemove_Setter_(mthis, __arg_0) => mthis["onmousemove"] = __arg_0;
+  onmousemove_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousemove", __arg_0);
 
-  onmouseout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseout");
+  onmouseout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseout");
 
-  onmouseout_Setter_(mthis, __arg_0) => mthis["onmouseout"] = __arg_0;
+  onmouseout_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseout", __arg_0);
 
-  onmouseover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseover");
+  onmouseover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseover");
 
-  onmouseover_Setter_(mthis, __arg_0) => mthis["onmouseover"] = __arg_0;
+  onmouseover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseover", __arg_0);
 
-  onmouseup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseup");
+  onmouseup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseup");
 
-  onmouseup_Setter_(mthis, __arg_0) => mthis["onmouseup"] = __arg_0;
+  onmouseup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseup", __arg_0);
 
-  onmousewheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousewheel");
+  onmousewheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousewheel");
 
-  onmousewheel_Setter_(mthis, __arg_0) => mthis["onmousewheel"] = __arg_0;
+  onmousewheel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousewheel", __arg_0);
 
-  onpause_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpause");
+  onpause_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpause");
 
-  onpause_Setter_(mthis, __arg_0) => mthis["onpause"] = __arg_0;
+  onpause_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpause", __arg_0);
 
-  onplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onplay");
+  onplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onplay");
 
-  onplay_Setter_(mthis, __arg_0) => mthis["onplay"] = __arg_0;
+  onplay_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onplay", __arg_0);
 
-  onplaying_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onplaying");
+  onplaying_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onplaying");
 
-  onplaying_Setter_(mthis, __arg_0) => mthis["onplaying"] = __arg_0;
+  onplaying_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onplaying", __arg_0);
 
-  onpointercancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointercancel");
+  onpointercancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointercancel");
 
-  onpointercancel_Setter_(mthis, __arg_0) => mthis["onpointercancel"] = __arg_0;
+  onpointercancel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointercancel", __arg_0);
 
-  onpointerdown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerdown");
+  onpointerdown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerdown");
 
-  onpointerdown_Setter_(mthis, __arg_0) => mthis["onpointerdown"] = __arg_0;
+  onpointerdown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerdown", __arg_0);
 
-  onpointerenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerenter");
+  onpointerenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerenter");
 
-  onpointerenter_Setter_(mthis, __arg_0) => mthis["onpointerenter"] = __arg_0;
+  onpointerenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerenter", __arg_0);
 
-  onpointerleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerleave");
+  onpointerleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerleave");
 
-  onpointerleave_Setter_(mthis, __arg_0) => mthis["onpointerleave"] = __arg_0;
+  onpointerleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerleave", __arg_0);
 
-  onpointermove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointermove");
+  onpointermove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointermove");
 
-  onpointermove_Setter_(mthis, __arg_0) => mthis["onpointermove"] = __arg_0;
+  onpointermove_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointermove", __arg_0);
 
-  onpointerout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerout");
+  onpointerout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerout");
 
-  onpointerout_Setter_(mthis, __arg_0) => mthis["onpointerout"] = __arg_0;
+  onpointerout_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerout", __arg_0);
 
-  onpointerover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerover");
+  onpointerover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerover");
 
-  onpointerover_Setter_(mthis, __arg_0) => mthis["onpointerover"] = __arg_0;
+  onpointerover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerover", __arg_0);
 
-  onpointerup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerup");
+  onpointerup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerup");
 
-  onpointerup_Setter_(mthis, __arg_0) => mthis["onpointerup"] = __arg_0;
+  onpointerup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerup", __arg_0);
 
-  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onprogress");
+  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onprogress");
 
-  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
+  onprogress_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onprogress", __arg_0);
 
-  onratechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onratechange");
+  onratechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onratechange");
 
-  onratechange_Setter_(mthis, __arg_0) => mthis["onratechange"] = __arg_0;
+  onratechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onratechange", __arg_0);
 
-  onreset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onreset");
+  onreset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onreset");
 
-  onreset_Setter_(mthis, __arg_0) => mthis["onreset"] = __arg_0;
+  onreset_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onreset", __arg_0);
 
-  onresize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onresize");
+  onresize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onresize");
 
-  onresize_Setter_(mthis, __arg_0) => mthis["onresize"] = __arg_0;
+  onresize_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onresize", __arg_0);
 
-  onscroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onscroll");
+  onscroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onscroll");
 
-  onscroll_Setter_(mthis, __arg_0) => mthis["onscroll"] = __arg_0;
+  onscroll_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onscroll", __arg_0);
 
-  onseeked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onseeked");
+  onseeked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onseeked");
 
-  onseeked_Setter_(mthis, __arg_0) => mthis["onseeked"] = __arg_0;
+  onseeked_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onseeked", __arg_0);
 
-  onseeking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onseeking");
+  onseeking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onseeking");
 
-  onseeking_Setter_(mthis, __arg_0) => mthis["onseeking"] = __arg_0;
+  onseeking_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onseeking", __arg_0);
 
-  onselect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onselect");
+  onselect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onselect");
 
-  onselect_Setter_(mthis, __arg_0) => mthis["onselect"] = __arg_0;
+  onselect_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onselect", __arg_0);
 
-  onshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onshow");
+  onshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onshow");
 
-  onshow_Setter_(mthis, __arg_0) => mthis["onshow"] = __arg_0;
+  onshow_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onshow", __arg_0);
 
-  onstalled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstalled");
+  onstalled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onstalled");
 
-  onstalled_Setter_(mthis, __arg_0) => mthis["onstalled"] = __arg_0;
+  onstalled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onstalled", __arg_0);
 
-  onsubmit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsubmit");
+  onsubmit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onsubmit");
 
-  onsubmit_Setter_(mthis, __arg_0) => mthis["onsubmit"] = __arg_0;
+  onsubmit_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onsubmit", __arg_0);
 
-  onsuspend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsuspend");
+  onsuspend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onsuspend");
 
-  onsuspend_Setter_(mthis, __arg_0) => mthis["onsuspend"] = __arg_0;
+  onsuspend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onsuspend", __arg_0);
 
-  ontimeupdate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontimeupdate");
+  ontimeupdate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ontimeupdate");
 
-  ontimeupdate_Setter_(mthis, __arg_0) => mthis["ontimeupdate"] = __arg_0;
+  ontimeupdate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ontimeupdate", __arg_0);
 
-  ontoggle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontoggle");
+  ontoggle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ontoggle");
 
-  ontoggle_Setter_(mthis, __arg_0) => mthis["ontoggle"] = __arg_0;
+  ontoggle_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ontoggle", __arg_0);
 
-  onvolumechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onvolumechange");
+  onvolumechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onvolumechange");
 
-  onvolumechange_Setter_(mthis, __arg_0) => mthis["onvolumechange"] = __arg_0;
+  onvolumechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onvolumechange", __arg_0);
 
-  onwaiting_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwaiting");
+  onwaiting_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onwaiting");
 
-  onwaiting_Setter_(mthis, __arg_0) => mthis["onwaiting"] = __arg_0;
+  onwaiting_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onwaiting", __arg_0);
 
 }
 
 class BlinkEntriesCallback {
   static final instance = new BlinkEntriesCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* EntriesCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* EntriesCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkEntry {
   static final instance = new BlinkEntry();
 
-  filesystem_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "filesystem");
+  filesystem_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Entry */, "filesystem");
 
-  fullPath_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fullPath");
+  fullPath_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Entry */, "fullPath");
 
-  isDirectory_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "isDirectory");
+  isDirectory_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Entry */, "isDirectory");
 
-  isFile_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "isFile");
+  isFile_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Entry */, "isFile");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Entry */, "name");
 
-  copyTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "copyTo", []);
+  copyTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "copyTo", []);
 
-  copyTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "copyTo", [__arg_0]);
+  copyTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "copyTo", [__arg_0]);
 
-  copyTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "copyTo", [__arg_0, __arg_1]);
+  copyTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "copyTo", [__arg_0, __arg_1]);
 
-  copyTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "copyTo", [__arg_0, __arg_1, __arg_2]);
+  copyTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "copyTo", [__arg_0, __arg_1, __arg_2]);
 
-  copyTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "copyTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  copyTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "copyTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  getMetadata_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getMetadata", []);
+  getMetadata_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "getMetadata", []);
 
-  getMetadata_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getMetadata", [__arg_0]);
+  getMetadata_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "getMetadata", [__arg_0]);
 
-  getMetadata_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getMetadata", [__arg_0, __arg_1]);
+  getMetadata_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "getMetadata", [__arg_0, __arg_1]);
 
-  getParent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getParent", []);
+  getParent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "getParent", []);
 
-  getParent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getParent", [__arg_0]);
+  getParent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "getParent", [__arg_0]);
 
-  getParent_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getParent", [__arg_0, __arg_1]);
+  getParent_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "getParent", [__arg_0, __arg_1]);
 
-  moveTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", []);
+  moveTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "moveTo", []);
 
-  moveTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", [__arg_0]);
+  moveTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "moveTo", [__arg_0]);
 
-  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", [__arg_0, __arg_1]);
+  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "moveTo", [__arg_0, __arg_1]);
 
-  moveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", [__arg_0, __arg_1, __arg_2]);
+  moveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "moveTo", [__arg_0, __arg_1, __arg_2]);
 
-  moveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  moveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "moveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "remove", []);
+  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "remove", []);
 
-  remove_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "remove", [__arg_0]);
+  remove_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "remove", [__arg_0]);
 
-  remove_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "remove", [__arg_0, __arg_1]);
+  remove_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "remove", [__arg_0, __arg_1]);
 
-  toURL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "toURL", []);
+  toURL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Entry */, "toURL", []);
 
 }
 
 class BlinkEntryCallback {
   static final instance = new BlinkEntryCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* EntryCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* EntryCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkEntrySync {
   static final instance = new BlinkEntrySync();
 
-  filesystem_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "filesystem");
+  filesystem_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* EntrySync */, "filesystem");
 
-  fullPath_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fullPath");
+  fullPath_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* EntrySync */, "fullPath");
 
-  isDirectory_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "isDirectory");
+  isDirectory_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* EntrySync */, "isDirectory");
 
-  isFile_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "isFile");
+  isFile_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* EntrySync */, "isFile");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* EntrySync */, "name");
 
-  copyTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "copyTo", []);
+  copyTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* EntrySync */, "copyTo", []);
 
-  copyTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "copyTo", [__arg_0]);
+  copyTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* EntrySync */, "copyTo", [__arg_0]);
 
-  copyTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "copyTo", [__arg_0, __arg_1]);
+  copyTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* EntrySync */, "copyTo", [__arg_0, __arg_1]);
 
-  getMetadata_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getMetadata", []);
+  getMetadata_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* EntrySync */, "getMetadata", []);
 
-  getParent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getParent", []);
+  getParent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* EntrySync */, "getParent", []);
 
-  moveTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", []);
+  moveTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* EntrySync */, "moveTo", []);
 
-  moveTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", [__arg_0]);
+  moveTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* EntrySync */, "moveTo", [__arg_0]);
 
-  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", [__arg_0, __arg_1]);
+  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* EntrySync */, "moveTo", [__arg_0, __arg_1]);
 
-  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "remove", []);
+  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* EntrySync */, "remove", []);
 
-  toURL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "toURL", []);
+  toURL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* EntrySync */, "toURL", []);
 
 }
 
 class BlinkErrorCallback {
   static final instance = new BlinkErrorCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ErrorCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ErrorCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkErrorEvent extends BlinkEvent {
   static final instance = new BlinkErrorEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ErrorEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("ErrorEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ErrorEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("ErrorEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ErrorEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("ErrorEvent", [__arg_0, __arg_1]);
 
-  colno_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "colno");
+  colno_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ErrorEvent */, "colno");
 
-  error_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "error");
+  error_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ErrorEvent */, "error");
 
-  filename_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "filename");
+  filename_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ErrorEvent */, "filename");
 
-  lineno_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lineno");
+  lineno_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ErrorEvent */, "lineno");
 
-  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "message");
+  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ErrorEvent */, "message");
 
 }
 
 class BlinkEvent {
   static final instance = new BlinkEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Event"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("Event");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Event"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("Event", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Event"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("Event", [__arg_0, __arg_1]);
 
-  bubbles_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "bubbles");
+  bubbles_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Event */, "bubbles");
 
-  cancelBubble_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cancelBubble");
+  cancelBubble_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Event */, "cancelBubble");
 
-  cancelBubble_Setter_(mthis, __arg_0) => mthis["cancelBubble"] = __arg_0;
+  cancelBubble_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Event */, "cancelBubble", __arg_0);
 
-  cancelable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cancelable");
+  cancelable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Event */, "cancelable");
 
-  currentTarget_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "currentTarget");
+  currentTarget_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Event */, "currentTarget");
 
-  defaultPrevented_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "defaultPrevented");
+  defaultPrevented_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Event */, "defaultPrevented");
 
-  eventPhase_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "eventPhase");
+  eventPhase_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Event */, "eventPhase");
 
-  path_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "path");
+  path_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Event */, "path");
 
-  returnValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "returnValue");
+  returnValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Event */, "returnValue");
 
-  returnValue_Setter_(mthis, __arg_0) => mthis["returnValue"] = __arg_0;
+  returnValue_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Event */, "returnValue", __arg_0);
 
-  srcElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "srcElement");
+  srcElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Event */, "srcElement");
 
-  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "target");
+  target_Getter_(mthis) native "Blink_Getter_Event_target";
 
-  timeStamp_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "timeStamp");
+  timeStamp_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Event */, "timeStamp");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Event */, "type");
 
-  initEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "initEvent", [__arg_0]);
+  initEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Event */, "initEvent", [__arg_0]);
 
-  initEvent_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "initEvent", [__arg_0, __arg_1]);
+  initEvent_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Event */, "initEvent", [__arg_0, __arg_1]);
 
-  initEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "initEvent", [__arg_0, __arg_1, __arg_2]);
+  initEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Event */, "initEvent", [__arg_0, __arg_1, __arg_2]);
 
-  preventDefault_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "preventDefault", []);
+  preventDefault_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Event */, "preventDefault", []);
 
-  stopImmediatePropagation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stopImmediatePropagation", []);
+  stopImmediatePropagation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Event */, "stopImmediatePropagation", []);
 
-  stopPropagation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stopPropagation", []);
+  stopPropagation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Event */, "stopPropagation", []);
 
 }
 
 class BlinkEventListener {
   static final instance = new BlinkEventListener();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* EventListener */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* EventListener */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkEventSource extends BlinkEventTarget {
   static final instance = new BlinkEventSource();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "EventSource"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("EventSource");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "EventSource"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("EventSource", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "EventSource"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("EventSource", [__arg_0, __arg_1]);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* EventSource */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* EventSource */, "onerror", __arg_0);
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* EventSource */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* EventSource */, "onmessage", __arg_0);
 
-  onopen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onopen");
+  onopen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* EventSource */, "onopen");
 
-  onopen_Setter_(mthis, __arg_0) => mthis["onopen"] = __arg_0;
+  onopen_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* EventSource */, "onopen", __arg_0);
 
-  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "readyState");
+  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* EventSource */, "readyState");
 
-  url_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "url");
+  url_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* EventSource */, "url");
 
-  withCredentials_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "withCredentials");
+  withCredentials_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* EventSource */, "withCredentials");
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* EventSource */, "close", []);
 
 }
 
 class BlinkEventTarget {
   static final instance = new BlinkEventTarget();
 
-  addEventListener_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "addEventListener", []);
+  addEventListener_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* EventTarget */, "addEventListener", []);
 
-  addEventListener_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addEventListener", [__arg_0]);
+  addEventListener_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* EventTarget */, "addEventListener", [__arg_0]);
 
-  addEventListener_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "addEventListener", [__arg_0, __arg_1]);
+  addEventListener_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* EventTarget */, "addEventListener", [__arg_0, __arg_1]);
 
-  addEventListener_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "addEventListener", [__arg_0, __arg_1, __arg_2]);
+  addEventListener_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* EventTarget */, "addEventListener", [__arg_0, __arg_1, __arg_2]);
 
-  dispatchEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "dispatchEvent", []);
+  dispatchEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* EventTarget */, "dispatchEvent", []);
 
-  dispatchEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "dispatchEvent", [__arg_0]);
+  dispatchEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* EventTarget */, "dispatchEvent", [__arg_0]);
 
-  removeEventListener_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeEventListener", []);
+  removeEventListener_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* EventTarget */, "removeEventListener", []);
 
-  removeEventListener_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeEventListener", [__arg_0]);
+  removeEventListener_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* EventTarget */, "removeEventListener", [__arg_0]);
 
-  removeEventListener_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "removeEventListener", [__arg_0, __arg_1]);
+  removeEventListener_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* EventTarget */, "removeEventListener", [__arg_0, __arg_1]);
 
-  removeEventListener_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "removeEventListener", [__arg_0, __arg_1, __arg_2]);
+  removeEventListener_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* EventTarget */, "removeEventListener", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkExtendableEvent extends BlinkEvent {
   static final instance = new BlinkExtendableEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ExtendableEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("ExtendableEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ExtendableEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("ExtendableEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ExtendableEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("ExtendableEvent", [__arg_0, __arg_1]);
 
-  waitUntil_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "waitUntil", []);
+  waitUntil_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ExtendableEvent */, "waitUntil", []);
 
-  waitUntil_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "waitUntil", [__arg_0]);
+  waitUntil_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ExtendableEvent */, "waitUntil", [__arg_0]);
 
 }
 
 class BlinkFederatedCredential extends BlinkCredential {
   static final instance = new BlinkFederatedCredential();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "FederatedCredential"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("FederatedCredential");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "FederatedCredential"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("FederatedCredential", [__arg_0]);
 
-  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "protocol");
+  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FederatedCredential */, "protocol");
 
-  provider_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "provider");
+  provider_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FederatedCredential */, "provider");
 
 }
 
 class BlinkFetchEvent extends BlinkExtendableEvent {
   static final instance = new BlinkFetchEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "FetchEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("FetchEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "FetchEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("FetchEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "FetchEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("FetchEvent", [__arg_0, __arg_1]);
 
-  isReload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "isReload");
+  isReload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FetchEvent */, "isReload");
 
-  request_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "request");
+  request_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FetchEvent */, "request");
 
-  respondWith_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "respondWith", []);
+  respondWith_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FetchEvent */, "respondWith", []);
 
-  respondWith_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "respondWith", [__arg_0]);
+  respondWith_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FetchEvent */, "respondWith", [__arg_0]);
 
 }
 
 class BlinkFile extends BlinkBlob {
   static final instance = new BlinkFile();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "File"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("File");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "File"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("File", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "File"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("File", [__arg_0, __arg_1]);
 
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "File"), [__arg_0, __arg_1, __arg_2]);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callConstructor("File", [__arg_0, __arg_1, __arg_2]);
 
-  lastModified_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lastModified");
+  lastModified_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* File */, "lastModified");
 
-  lastModifiedDate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lastModifiedDate");
+  lastModifiedDate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* File */, "lastModifiedDate");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* File */, "name");
 
-  webkitRelativePath_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitRelativePath");
+  webkitRelativePath_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* File */, "webkitRelativePath");
 
 }
 
 class BlinkFileCallback {
   static final instance = new BlinkFileCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkFileEntry extends BlinkEntry {
   static final instance = new BlinkFileEntry();
 
-  createWriter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createWriter", []);
+  createWriter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileEntry */, "createWriter", []);
 
-  createWriter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createWriter", [__arg_0]);
+  createWriter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileEntry */, "createWriter", [__arg_0]);
 
-  createWriter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createWriter", [__arg_0, __arg_1]);
+  createWriter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* FileEntry */, "createWriter", [__arg_0, __arg_1]);
 
-  file_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "file", []);
+  file_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileEntry */, "file", []);
 
-  file_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "file", [__arg_0]);
+  file_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileEntry */, "file", [__arg_0]);
 
-  file_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "file", [__arg_0, __arg_1]);
+  file_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* FileEntry */, "file", [__arg_0, __arg_1]);
 
 }
 
 class BlinkFileEntrySync extends BlinkEntrySync {
   static final instance = new BlinkFileEntrySync();
 
-  createWriter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createWriter", []);
+  createWriter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileEntrySync */, "createWriter", []);
 
-  file_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "file", []);
+  file_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileEntrySync */, "file", []);
 
 }
 
 class BlinkFileError extends BlinkDOMError {
   static final instance = new BlinkFileError();
 
-  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "code");
+  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileError */, "code");
 
 }
 
 class BlinkFileList {
   static final instance = new BlinkFileList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileList */, "length");
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileList */, "item", [__arg_0]);
 
 }
 
 class BlinkFileReader extends BlinkEventTarget {
   static final instance = new BlinkFileReader();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "FileReader"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("FileReader");
 
-  error_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "error");
+  error_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileReader */, "error");
 
-  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onabort");
+  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileReader */, "onabort");
 
-  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
+  onabort_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FileReader */, "onabort", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileReader */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FileReader */, "onerror", __arg_0);
 
-  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onload");
+  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileReader */, "onload");
 
-  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
+  onload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FileReader */, "onload", __arg_0);
 
-  onloadend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadend");
+  onloadend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileReader */, "onloadend");
 
-  onloadend_Setter_(mthis, __arg_0) => mthis["onloadend"] = __arg_0;
+  onloadend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FileReader */, "onloadend", __arg_0);
 
-  onloadstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadstart");
+  onloadstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileReader */, "onloadstart");
 
-  onloadstart_Setter_(mthis, __arg_0) => mthis["onloadstart"] = __arg_0;
+  onloadstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FileReader */, "onloadstart", __arg_0);
 
-  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onprogress");
+  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileReader */, "onprogress");
 
-  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
+  onprogress_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FileReader */, "onprogress", __arg_0);
 
-  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "readyState");
+  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileReader */, "readyState");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileReader */, "result");
 
-  abort_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "abort", []);
+  abort_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileReader */, "abort", []);
 
-  readAsArrayBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "readAsArrayBuffer", []);
+  readAsArrayBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileReader */, "readAsArrayBuffer", []);
 
-  readAsArrayBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "readAsArrayBuffer", [__arg_0]);
+  readAsArrayBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileReader */, "readAsArrayBuffer", [__arg_0]);
 
-  readAsBinaryString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "readAsBinaryString", []);
+  readAsBinaryString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileReader */, "readAsBinaryString", []);
 
-  readAsBinaryString_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "readAsBinaryString", [__arg_0]);
+  readAsBinaryString_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileReader */, "readAsBinaryString", [__arg_0]);
 
-  readAsDataURL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "readAsDataURL", []);
+  readAsDataURL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileReader */, "readAsDataURL", []);
 
-  readAsDataURL_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "readAsDataURL", [__arg_0]);
+  readAsDataURL_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileReader */, "readAsDataURL", [__arg_0]);
 
-  readAsText_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "readAsText", []);
+  readAsText_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileReader */, "readAsText", []);
 
-  readAsText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "readAsText", [__arg_0]);
+  readAsText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileReader */, "readAsText", [__arg_0]);
 
-  readAsText_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "readAsText", [__arg_0, __arg_1]);
+  readAsText_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* FileReader */, "readAsText", [__arg_0, __arg_1]);
 
 }
 
 class BlinkFileReaderSync {
   static final instance = new BlinkFileReaderSync();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "FileReaderSync"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("FileReaderSync");
 
-  readAsArrayBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "readAsArrayBuffer", []);
+  readAsArrayBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileReaderSync */, "readAsArrayBuffer", []);
 
-  readAsArrayBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "readAsArrayBuffer", [__arg_0]);
+  readAsArrayBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileReaderSync */, "readAsArrayBuffer", [__arg_0]);
 
-  readAsBinaryString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "readAsBinaryString", []);
+  readAsBinaryString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileReaderSync */, "readAsBinaryString", []);
 
-  readAsBinaryString_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "readAsBinaryString", [__arg_0]);
+  readAsBinaryString_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileReaderSync */, "readAsBinaryString", [__arg_0]);
 
-  readAsDataURL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "readAsDataURL", []);
+  readAsDataURL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileReaderSync */, "readAsDataURL", []);
 
-  readAsDataURL_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "readAsDataURL", [__arg_0]);
+  readAsDataURL_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileReaderSync */, "readAsDataURL", [__arg_0]);
 
-  readAsText_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "readAsText", []);
+  readAsText_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileReaderSync */, "readAsText", []);
 
-  readAsText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "readAsText", [__arg_0]);
+  readAsText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileReaderSync */, "readAsText", [__arg_0]);
 
-  readAsText_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "readAsText", [__arg_0, __arg_1]);
+  readAsText_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* FileReaderSync */, "readAsText", [__arg_0, __arg_1]);
 
 }
 
 class BlinkFileSystemCallback {
   static final instance = new BlinkFileSystemCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileSystemCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileSystemCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkFileWriter extends BlinkEventTarget {
   static final instance = new BlinkFileWriter();
 
-  error_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "error");
+  error_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileWriter */, "error");
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileWriter */, "length");
 
-  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onabort");
+  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileWriter */, "onabort");
 
-  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
+  onabort_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FileWriter */, "onabort", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileWriter */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FileWriter */, "onerror", __arg_0);
 
-  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onprogress");
+  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileWriter */, "onprogress");
 
-  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
+  onprogress_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FileWriter */, "onprogress", __arg_0);
 
-  onwrite_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwrite");
+  onwrite_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileWriter */, "onwrite");
 
-  onwrite_Setter_(mthis, __arg_0) => mthis["onwrite"] = __arg_0;
+  onwrite_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FileWriter */, "onwrite", __arg_0);
 
-  onwriteend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwriteend");
+  onwriteend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileWriter */, "onwriteend");
 
-  onwriteend_Setter_(mthis, __arg_0) => mthis["onwriteend"] = __arg_0;
+  onwriteend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FileWriter */, "onwriteend", __arg_0);
 
-  onwritestart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwritestart");
+  onwritestart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileWriter */, "onwritestart");
 
-  onwritestart_Setter_(mthis, __arg_0) => mthis["onwritestart"] = __arg_0;
+  onwritestart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FileWriter */, "onwritestart", __arg_0);
 
-  position_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "position");
+  position_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileWriter */, "position");
 
-  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "readyState");
+  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileWriter */, "readyState");
 
-  abort_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "abort", []);
+  abort_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileWriter */, "abort", []);
 
-  seek_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "seek", []);
+  seek_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileWriter */, "seek", []);
 
-  seek_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "seek", [__arg_0]);
+  seek_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileWriter */, "seek", [__arg_0]);
 
-  truncate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "truncate", []);
+  truncate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileWriter */, "truncate", []);
 
-  truncate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "truncate", [__arg_0]);
+  truncate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileWriter */, "truncate", [__arg_0]);
 
-  write_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "write", []);
+  write_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileWriter */, "write", []);
 
-  write_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "write", [__arg_0]);
+  write_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileWriter */, "write", [__arg_0]);
 
 }
 
 class BlinkFileWriterCallback {
   static final instance = new BlinkFileWriterCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileWriterCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileWriterCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkFileWriterSync {
   static final instance = new BlinkFileWriterSync();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileWriterSync */, "length");
 
-  position_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "position");
+  position_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FileWriterSync */, "position");
 
-  seek_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "seek", []);
+  seek_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileWriterSync */, "seek", []);
 
-  seek_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "seek", [__arg_0]);
+  seek_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileWriterSync */, "seek", [__arg_0]);
 
-  truncate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "truncate", []);
+  truncate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileWriterSync */, "truncate", []);
 
-  truncate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "truncate", [__arg_0]);
+  truncate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileWriterSync */, "truncate", [__arg_0]);
 
-  write_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "write", []);
+  write_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FileWriterSync */, "write", []);
 
-  write_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "write", [__arg_0]);
+  write_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FileWriterSync */, "write", [__arg_0]);
 
 }
 
@@ -5824,1875 +5824,1875 @@
 class BlinkFocusEvent extends BlinkUIEvent {
   static final instance = new BlinkFocusEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "FocusEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("FocusEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "FocusEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("FocusEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "FocusEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("FocusEvent", [__arg_0, __arg_1]);
 
-  relatedTarget_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "relatedTarget");
+  relatedTarget_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FocusEvent */, "relatedTarget");
 
 }
 
 class BlinkFontFace {
   static final instance = new BlinkFontFace();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "FontFace"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("FontFace");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "FontFace"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("FontFace", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "FontFace"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("FontFace", [__arg_0, __arg_1]);
 
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "FontFace"), [__arg_0, __arg_1, __arg_2]);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callConstructor("FontFace", [__arg_0, __arg_1, __arg_2]);
 
-  family_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "family");
+  family_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FontFace */, "family");
 
-  family_Setter_(mthis, __arg_0) => mthis["family"] = __arg_0;
+  family_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FontFace */, "family", __arg_0);
 
-  featureSettings_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "featureSettings");
+  featureSettings_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FontFace */, "featureSettings");
 
-  featureSettings_Setter_(mthis, __arg_0) => mthis["featureSettings"] = __arg_0;
+  featureSettings_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FontFace */, "featureSettings", __arg_0);
 
-  loaded_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "loaded");
+  loaded_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FontFace */, "loaded");
 
-  status_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "status");
+  status_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FontFace */, "status");
 
-  stretch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "stretch");
+  stretch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FontFace */, "stretch");
 
-  stretch_Setter_(mthis, __arg_0) => mthis["stretch"] = __arg_0;
+  stretch_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FontFace */, "stretch", __arg_0);
 
-  style_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "style");
+  style_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FontFace */, "style");
 
-  style_Setter_(mthis, __arg_0) => mthis["style"] = __arg_0;
+  style_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FontFace */, "style", __arg_0);
 
-  unicodeRange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "unicodeRange");
+  unicodeRange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FontFace */, "unicodeRange");
 
-  unicodeRange_Setter_(mthis, __arg_0) => mthis["unicodeRange"] = __arg_0;
+  unicodeRange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FontFace */, "unicodeRange", __arg_0);
 
-  variant_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "variant");
+  variant_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FontFace */, "variant");
 
-  variant_Setter_(mthis, __arg_0) => mthis["variant"] = __arg_0;
+  variant_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FontFace */, "variant", __arg_0);
 
-  weight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "weight");
+  weight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FontFace */, "weight");
 
-  weight_Setter_(mthis, __arg_0) => mthis["weight"] = __arg_0;
+  weight_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FontFace */, "weight", __arg_0);
 
-  load_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "load", []);
+  load_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FontFace */, "load", []);
 
 }
 
 class BlinkFontFaceSet extends BlinkEventTarget {
   static final instance = new BlinkFontFaceSet();
 
-  onloading_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloading");
+  onloading_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FontFaceSet */, "onloading");
 
-  onloading_Setter_(mthis, __arg_0) => mthis["onloading"] = __arg_0;
+  onloading_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FontFaceSet */, "onloading", __arg_0);
 
-  onloadingdone_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadingdone");
+  onloadingdone_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FontFaceSet */, "onloadingdone");
 
-  onloadingdone_Setter_(mthis, __arg_0) => mthis["onloadingdone"] = __arg_0;
+  onloadingdone_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FontFaceSet */, "onloadingdone", __arg_0);
 
-  onloadingerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadingerror");
+  onloadingerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FontFaceSet */, "onloadingerror");
 
-  onloadingerror_Setter_(mthis, __arg_0) => mthis["onloadingerror"] = __arg_0;
+  onloadingerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* FontFaceSet */, "onloadingerror", __arg_0);
 
-  ready_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ready");
+  ready_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FontFaceSet */, "ready");
 
-  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "size");
+  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FontFaceSet */, "size");
 
-  status_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "status");
+  status_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FontFaceSet */, "status");
 
-  add_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "add", []);
+  add_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSet */, "add", []);
 
-  add_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "add", [__arg_0]);
+  add_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSet */, "add", [__arg_0]);
 
-  check_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "check", []);
+  check_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSet */, "check", []);
 
-  check_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "check", [__arg_0]);
+  check_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSet */, "check", [__arg_0]);
 
-  check_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "check", [__arg_0, __arg_1]);
+  check_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSet */, "check", [__arg_0, __arg_1]);
 
-  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clear", []);
+  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSet */, "clear", []);
 
-  delete_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "delete", []);
+  delete_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSet */, "delete", []);
 
-  delete_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "delete", [__arg_0]);
+  delete_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSet */, "delete", [__arg_0]);
 
-  forEach_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "forEach", []);
+  forEach_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSet */, "forEach", []);
 
-  forEach_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "forEach", [__arg_0]);
+  forEach_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSet */, "forEach", [__arg_0]);
 
-  forEach_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "forEach", [__arg_0, __arg_1]);
+  forEach_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSet */, "forEach", [__arg_0, __arg_1]);
 
-  has_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "has", []);
+  has_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSet */, "has", []);
 
-  has_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "has", [__arg_0]);
+  has_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSet */, "has", [__arg_0]);
 
-  load_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "load", []);
+  load_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSet */, "load", []);
 
-  load_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "load", [__arg_0]);
+  load_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSet */, "load", [__arg_0]);
 
-  load_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "load", [__arg_0, __arg_1]);
+  load_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSet */, "load", [__arg_0, __arg_1]);
 
 }
 
 class BlinkFontFaceSetForEachCallback {
   static final instance = new BlinkFontFaceSetForEachCallback();
 
-  handleItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleItem", [__arg_0]);
+  handleItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSetForEachCallback */, "handleItem", [__arg_0]);
 
-  handleItem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "handleItem", [__arg_0, __arg_1]);
+  handleItem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSetForEachCallback */, "handleItem", [__arg_0, __arg_1]);
 
-  handleItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "handleItem", [__arg_0, __arg_1, __arg_2]);
+  handleItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* FontFaceSetForEachCallback */, "handleItem", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkFontFaceSetLoadEvent extends BlinkEvent {
   static final instance = new BlinkFontFaceSetLoadEvent();
 
-  fontfaces_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fontfaces");
+  fontfaces_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* FontFaceSetLoadEvent */, "fontfaces");
 
 }
 
 class BlinkFormData {
   static final instance = new BlinkFormData();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "FormData"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("FormData");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "FormData"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("FormData", [__arg_0]);
 
-  append_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "append", []);
+  append_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FormData */, "append", []);
 
-  append_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "append", [__arg_0]);
+  append_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FormData */, "append", [__arg_0]);
 
-  append_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "append", [__arg_0, __arg_1]);
+  append_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* FormData */, "append", [__arg_0, __arg_1]);
 
-  append_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "append", [__arg_0, __arg_1, __arg_2]);
+  append_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* FormData */, "append", [__arg_0, __arg_1, __arg_2]);
 
-  delete_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "delete", []);
+  delete_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FormData */, "delete", []);
 
-  delete_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "delete", [__arg_0]);
+  delete_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FormData */, "delete", [__arg_0]);
 
-  get_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "get", []);
+  get_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FormData */, "get", []);
 
-  get_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "get", [__arg_0]);
+  get_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FormData */, "get", [__arg_0]);
 
-  getAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAll", []);
+  getAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FormData */, "getAll", []);
 
-  getAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAll", [__arg_0]);
+  getAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FormData */, "getAll", [__arg_0]);
 
-  has_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "has", []);
+  has_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FormData */, "has", []);
 
-  has_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "has", [__arg_0]);
+  has_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FormData */, "has", [__arg_0]);
 
-  set_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "set", []);
+  set_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FormData */, "set", []);
 
-  set_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "set", [__arg_0]);
+  set_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FormData */, "set", [__arg_0]);
 
-  set_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "set", [__arg_0, __arg_1]);
+  set_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* FormData */, "set", [__arg_0, __arg_1]);
 
-  set_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "set", [__arg_0, __arg_1, __arg_2]);
+  set_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* FormData */, "set", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkFrameRequestCallback {
   static final instance = new BlinkFrameRequestCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* FrameRequestCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* FrameRequestCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkGainNode extends BlinkAudioNode {
   static final instance = new BlinkGainNode();
 
-  gain_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "gain");
+  gain_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GainNode */, "gain");
 
 }
 
 class BlinkGamepad {
   static final instance = new BlinkGamepad();
 
-  axes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "axes");
+  axes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Gamepad */, "axes");
 
-  buttons_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "buttons");
+  buttons_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Gamepad */, "buttons");
 
-  connected_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "connected");
+  connected_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Gamepad */, "connected");
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Gamepad */, "id");
 
-  index_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "index");
+  index_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Gamepad */, "index");
 
-  mapping_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "mapping");
+  mapping_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Gamepad */, "mapping");
 
-  timestamp_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "timestamp");
+  timestamp_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Gamepad */, "timestamp");
 
 }
 
 class BlinkGamepadButton {
   static final instance = new BlinkGamepadButton();
 
-  pressed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pressed");
+  pressed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GamepadButton */, "pressed");
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GamepadButton */, "value");
 
 }
 
 class BlinkGamepadEvent extends BlinkEvent {
   static final instance = new BlinkGamepadEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "GamepadEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("GamepadEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "GamepadEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("GamepadEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "GamepadEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("GamepadEvent", [__arg_0, __arg_1]);
 
-  gamepad_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "gamepad");
+  gamepad_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GamepadEvent */, "gamepad");
 
 }
 
 class BlinkGamepadList {
   static final instance = new BlinkGamepadList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GamepadList */, "length");
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* GamepadList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* GamepadList */, "item", [__arg_0]);
 
 }
 
 class BlinkGeofencing {
   static final instance = new BlinkGeofencing();
 
-  getRegisteredRegions_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getRegisteredRegions", []);
+  getRegisteredRegions_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Geofencing */, "getRegisteredRegions", []);
 
-  registerRegion_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "registerRegion", []);
+  registerRegion_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Geofencing */, "registerRegion", []);
 
-  registerRegion_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "registerRegion", [__arg_0]);
+  registerRegion_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Geofencing */, "registerRegion", [__arg_0]);
 
-  unregisterRegion_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "unregisterRegion", []);
+  unregisterRegion_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Geofencing */, "unregisterRegion", []);
 
-  unregisterRegion_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "unregisterRegion", [__arg_0]);
+  unregisterRegion_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Geofencing */, "unregisterRegion", [__arg_0]);
 
 }
 
 class BlinkGeofencingEvent extends BlinkEvent {
   static final instance = new BlinkGeofencingEvent();
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GeofencingEvent */, "id");
 
-  region_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "region");
+  region_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GeofencingEvent */, "region");
 
 }
 
 class BlinkGeofencingRegion {
   static final instance = new BlinkGeofencingRegion();
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GeofencingRegion */, "id");
 
 }
 
 class BlinkGeolocation {
   static final instance = new BlinkGeolocation();
 
-  clearWatch_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearWatch", []);
+  clearWatch_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Geolocation */, "clearWatch", []);
 
-  clearWatch_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearWatch", [__arg_0]);
+  clearWatch_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Geolocation */, "clearWatch", [__arg_0]);
 
-  getCurrentPosition_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getCurrentPosition", []);
+  getCurrentPosition_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Geolocation */, "getCurrentPosition", []);
 
-  getCurrentPosition_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getCurrentPosition", [__arg_0]);
+  getCurrentPosition_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Geolocation */, "getCurrentPosition", [__arg_0]);
 
-  getCurrentPosition_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getCurrentPosition", [__arg_0, __arg_1]);
+  getCurrentPosition_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Geolocation */, "getCurrentPosition", [__arg_0, __arg_1]);
 
-  getCurrentPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getCurrentPosition", [__arg_0, __arg_1, __arg_2]);
+  getCurrentPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Geolocation */, "getCurrentPosition", [__arg_0, __arg_1, __arg_2]);
 
-  watchPosition_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "watchPosition", []);
+  watchPosition_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Geolocation */, "watchPosition", []);
 
-  watchPosition_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "watchPosition", [__arg_0]);
+  watchPosition_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Geolocation */, "watchPosition", [__arg_0]);
 
-  watchPosition_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "watchPosition", [__arg_0, __arg_1]);
+  watchPosition_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Geolocation */, "watchPosition", [__arg_0, __arg_1]);
 
-  watchPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "watchPosition", [__arg_0, __arg_1, __arg_2]);
+  watchPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Geolocation */, "watchPosition", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkGeoposition {
   static final instance = new BlinkGeoposition();
 
-  coords_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "coords");
+  coords_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Geoposition */, "coords");
 
-  timestamp_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "timestamp");
+  timestamp_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Geoposition */, "timestamp");
 
 }
 
 class BlinkGlobalEventHandlers {
   static final instance = new BlinkGlobalEventHandlers();
 
-  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onabort");
+  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onabort");
 
-  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
+  onabort_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onabort", __arg_0);
 
-  onautocomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onautocomplete");
+  onautocomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onautocomplete");
 
-  onautocomplete_Setter_(mthis, __arg_0) => mthis["onautocomplete"] = __arg_0;
+  onautocomplete_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onautocomplete", __arg_0);
 
-  onautocompleteerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onautocompleteerror");
+  onautocompleteerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onautocompleteerror");
 
-  onautocompleteerror_Setter_(mthis, __arg_0) => mthis["onautocompleteerror"] = __arg_0;
+  onautocompleteerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onautocompleteerror", __arg_0);
 
-  onblur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onblur");
+  onblur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onblur");
 
-  onblur_Setter_(mthis, __arg_0) => mthis["onblur"] = __arg_0;
+  onblur_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onblur", __arg_0);
 
-  oncancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncancel");
+  oncancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncancel");
 
-  oncancel_Setter_(mthis, __arg_0) => mthis["oncancel"] = __arg_0;
+  oncancel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncancel", __arg_0);
 
-  oncanplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncanplay");
+  oncanplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncanplay");
 
-  oncanplay_Setter_(mthis, __arg_0) => mthis["oncanplay"] = __arg_0;
+  oncanplay_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncanplay", __arg_0);
 
-  oncanplaythrough_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncanplaythrough");
+  oncanplaythrough_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncanplaythrough");
 
-  oncanplaythrough_Setter_(mthis, __arg_0) => mthis["oncanplaythrough"] = __arg_0;
+  oncanplaythrough_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncanplaythrough", __arg_0);
 
-  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onchange");
+  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onchange");
 
-  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
+  onchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onchange", __arg_0);
 
-  onclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclick");
+  onclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onclick");
 
-  onclick_Setter_(mthis, __arg_0) => mthis["onclick"] = __arg_0;
+  onclick_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onclick", __arg_0);
 
-  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclose");
+  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onclose");
 
-  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
+  onclose_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onclose", __arg_0);
 
-  oncontextmenu_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncontextmenu");
+  oncontextmenu_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncontextmenu");
 
-  oncontextmenu_Setter_(mthis, __arg_0) => mthis["oncontextmenu"] = __arg_0;
+  oncontextmenu_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncontextmenu", __arg_0);
 
-  oncuechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncuechange");
+  oncuechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncuechange");
 
-  oncuechange_Setter_(mthis, __arg_0) => mthis["oncuechange"] = __arg_0;
+  oncuechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncuechange", __arg_0);
 
-  ondblclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondblclick");
+  ondblclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondblclick");
 
-  ondblclick_Setter_(mthis, __arg_0) => mthis["ondblclick"] = __arg_0;
+  ondblclick_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondblclick", __arg_0);
 
-  ondrag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondrag");
+  ondrag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondrag");
 
-  ondrag_Setter_(mthis, __arg_0) => mthis["ondrag"] = __arg_0;
+  ondrag_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondrag", __arg_0);
 
-  ondragend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragend");
+  ondragend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragend");
 
-  ondragend_Setter_(mthis, __arg_0) => mthis["ondragend"] = __arg_0;
+  ondragend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragend", __arg_0);
 
-  ondragenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragenter");
+  ondragenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragenter");
 
-  ondragenter_Setter_(mthis, __arg_0) => mthis["ondragenter"] = __arg_0;
+  ondragenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragenter", __arg_0);
 
-  ondragleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragleave");
+  ondragleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragleave");
 
-  ondragleave_Setter_(mthis, __arg_0) => mthis["ondragleave"] = __arg_0;
+  ondragleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragleave", __arg_0);
 
-  ondragover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragover");
+  ondragover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragover");
 
-  ondragover_Setter_(mthis, __arg_0) => mthis["ondragover"] = __arg_0;
+  ondragover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragover", __arg_0);
 
-  ondragstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragstart");
+  ondragstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragstart");
 
-  ondragstart_Setter_(mthis, __arg_0) => mthis["ondragstart"] = __arg_0;
+  ondragstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragstart", __arg_0);
 
-  ondrop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondrop");
+  ondrop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondrop");
 
-  ondrop_Setter_(mthis, __arg_0) => mthis["ondrop"] = __arg_0;
+  ondrop_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondrop", __arg_0);
 
-  ondurationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondurationchange");
+  ondurationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondurationchange");
 
-  ondurationchange_Setter_(mthis, __arg_0) => mthis["ondurationchange"] = __arg_0;
+  ondurationchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondurationchange", __arg_0);
 
-  onemptied_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onemptied");
+  onemptied_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onemptied");
 
-  onemptied_Setter_(mthis, __arg_0) => mthis["onemptied"] = __arg_0;
+  onemptied_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onemptied", __arg_0);
 
-  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onended");
+  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onended");
 
-  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
+  onended_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onended", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onerror", __arg_0);
 
-  onfocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onfocus");
+  onfocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onfocus");
 
-  onfocus_Setter_(mthis, __arg_0) => mthis["onfocus"] = __arg_0;
+  onfocus_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onfocus", __arg_0);
 
-  oninput_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oninput");
+  oninput_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oninput");
 
-  oninput_Setter_(mthis, __arg_0) => mthis["oninput"] = __arg_0;
+  oninput_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oninput", __arg_0);
 
-  oninvalid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oninvalid");
+  oninvalid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oninvalid");
 
-  oninvalid_Setter_(mthis, __arg_0) => mthis["oninvalid"] = __arg_0;
+  oninvalid_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oninvalid", __arg_0);
 
-  onkeydown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeydown");
+  onkeydown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeydown");
 
-  onkeydown_Setter_(mthis, __arg_0) => mthis["onkeydown"] = __arg_0;
+  onkeydown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeydown", __arg_0);
 
-  onkeypress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeypress");
+  onkeypress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeypress");
 
-  onkeypress_Setter_(mthis, __arg_0) => mthis["onkeypress"] = __arg_0;
+  onkeypress_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeypress", __arg_0);
 
-  onkeyup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeyup");
+  onkeyup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeyup");
 
-  onkeyup_Setter_(mthis, __arg_0) => mthis["onkeyup"] = __arg_0;
+  onkeyup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeyup", __arg_0);
 
-  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onload");
+  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onload");
 
-  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
+  onload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onload", __arg_0);
 
-  onloadeddata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadeddata");
+  onloadeddata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadeddata");
 
-  onloadeddata_Setter_(mthis, __arg_0) => mthis["onloadeddata"] = __arg_0;
+  onloadeddata_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadeddata", __arg_0);
 
-  onloadedmetadata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadedmetadata");
+  onloadedmetadata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadedmetadata");
 
-  onloadedmetadata_Setter_(mthis, __arg_0) => mthis["onloadedmetadata"] = __arg_0;
+  onloadedmetadata_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadedmetadata", __arg_0);
 
-  onloadstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadstart");
+  onloadstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadstart");
 
-  onloadstart_Setter_(mthis, __arg_0) => mthis["onloadstart"] = __arg_0;
+  onloadstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadstart", __arg_0);
 
-  onmousedown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousedown");
+  onmousedown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousedown");
 
-  onmousedown_Setter_(mthis, __arg_0) => mthis["onmousedown"] = __arg_0;
+  onmousedown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousedown", __arg_0);
 
-  onmouseenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseenter");
+  onmouseenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseenter");
 
-  onmouseenter_Setter_(mthis, __arg_0) => mthis["onmouseenter"] = __arg_0;
+  onmouseenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseenter", __arg_0);
 
-  onmouseleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseleave");
+  onmouseleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseleave");
 
-  onmouseleave_Setter_(mthis, __arg_0) => mthis["onmouseleave"] = __arg_0;
+  onmouseleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseleave", __arg_0);
 
-  onmousemove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousemove");
+  onmousemove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousemove");
 
-  onmousemove_Setter_(mthis, __arg_0) => mthis["onmousemove"] = __arg_0;
+  onmousemove_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousemove", __arg_0);
 
-  onmouseout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseout");
+  onmouseout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseout");
 
-  onmouseout_Setter_(mthis, __arg_0) => mthis["onmouseout"] = __arg_0;
+  onmouseout_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseout", __arg_0);
 
-  onmouseover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseover");
+  onmouseover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseover");
 
-  onmouseover_Setter_(mthis, __arg_0) => mthis["onmouseover"] = __arg_0;
+  onmouseover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseover", __arg_0);
 
-  onmouseup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseup");
+  onmouseup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseup");
 
-  onmouseup_Setter_(mthis, __arg_0) => mthis["onmouseup"] = __arg_0;
+  onmouseup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseup", __arg_0);
 
-  onmousewheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousewheel");
+  onmousewheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousewheel");
 
-  onmousewheel_Setter_(mthis, __arg_0) => mthis["onmousewheel"] = __arg_0;
+  onmousewheel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousewheel", __arg_0);
 
-  onpause_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpause");
+  onpause_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpause");
 
-  onpause_Setter_(mthis, __arg_0) => mthis["onpause"] = __arg_0;
+  onpause_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpause", __arg_0);
 
-  onplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onplay");
+  onplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onplay");
 
-  onplay_Setter_(mthis, __arg_0) => mthis["onplay"] = __arg_0;
+  onplay_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onplay", __arg_0);
 
-  onplaying_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onplaying");
+  onplaying_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onplaying");
 
-  onplaying_Setter_(mthis, __arg_0) => mthis["onplaying"] = __arg_0;
+  onplaying_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onplaying", __arg_0);
 
-  onpointercancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointercancel");
+  onpointercancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointercancel");
 
-  onpointercancel_Setter_(mthis, __arg_0) => mthis["onpointercancel"] = __arg_0;
+  onpointercancel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointercancel", __arg_0);
 
-  onpointerdown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerdown");
+  onpointerdown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerdown");
 
-  onpointerdown_Setter_(mthis, __arg_0) => mthis["onpointerdown"] = __arg_0;
+  onpointerdown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerdown", __arg_0);
 
-  onpointerenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerenter");
+  onpointerenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerenter");
 
-  onpointerenter_Setter_(mthis, __arg_0) => mthis["onpointerenter"] = __arg_0;
+  onpointerenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerenter", __arg_0);
 
-  onpointerleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerleave");
+  onpointerleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerleave");
 
-  onpointerleave_Setter_(mthis, __arg_0) => mthis["onpointerleave"] = __arg_0;
+  onpointerleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerleave", __arg_0);
 
-  onpointermove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointermove");
+  onpointermove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointermove");
 
-  onpointermove_Setter_(mthis, __arg_0) => mthis["onpointermove"] = __arg_0;
+  onpointermove_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointermove", __arg_0);
 
-  onpointerout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerout");
+  onpointerout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerout");
 
-  onpointerout_Setter_(mthis, __arg_0) => mthis["onpointerout"] = __arg_0;
+  onpointerout_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerout", __arg_0);
 
-  onpointerover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerover");
+  onpointerover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerover");
 
-  onpointerover_Setter_(mthis, __arg_0) => mthis["onpointerover"] = __arg_0;
+  onpointerover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerover", __arg_0);
 
-  onpointerup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerup");
+  onpointerup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerup");
 
-  onpointerup_Setter_(mthis, __arg_0) => mthis["onpointerup"] = __arg_0;
+  onpointerup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerup", __arg_0);
 
-  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onprogress");
+  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onprogress");
 
-  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
+  onprogress_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onprogress", __arg_0);
 
-  onratechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onratechange");
+  onratechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onratechange");
 
-  onratechange_Setter_(mthis, __arg_0) => mthis["onratechange"] = __arg_0;
+  onratechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onratechange", __arg_0);
 
-  onreset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onreset");
+  onreset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onreset");
 
-  onreset_Setter_(mthis, __arg_0) => mthis["onreset"] = __arg_0;
+  onreset_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onreset", __arg_0);
 
-  onresize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onresize");
+  onresize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onresize");
 
-  onresize_Setter_(mthis, __arg_0) => mthis["onresize"] = __arg_0;
+  onresize_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onresize", __arg_0);
 
-  onscroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onscroll");
+  onscroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onscroll");
 
-  onscroll_Setter_(mthis, __arg_0) => mthis["onscroll"] = __arg_0;
+  onscroll_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onscroll", __arg_0);
 
-  onseeked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onseeked");
+  onseeked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onseeked");
 
-  onseeked_Setter_(mthis, __arg_0) => mthis["onseeked"] = __arg_0;
+  onseeked_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onseeked", __arg_0);
 
-  onseeking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onseeking");
+  onseeking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onseeking");
 
-  onseeking_Setter_(mthis, __arg_0) => mthis["onseeking"] = __arg_0;
+  onseeking_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onseeking", __arg_0);
 
-  onselect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onselect");
+  onselect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onselect");
 
-  onselect_Setter_(mthis, __arg_0) => mthis["onselect"] = __arg_0;
+  onselect_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onselect", __arg_0);
 
-  onshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onshow");
+  onshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onshow");
 
-  onshow_Setter_(mthis, __arg_0) => mthis["onshow"] = __arg_0;
+  onshow_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onshow", __arg_0);
 
-  onstalled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstalled");
+  onstalled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onstalled");
 
-  onstalled_Setter_(mthis, __arg_0) => mthis["onstalled"] = __arg_0;
+  onstalled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onstalled", __arg_0);
 
-  onsubmit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsubmit");
+  onsubmit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onsubmit");
 
-  onsubmit_Setter_(mthis, __arg_0) => mthis["onsubmit"] = __arg_0;
+  onsubmit_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onsubmit", __arg_0);
 
-  onsuspend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsuspend");
+  onsuspend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onsuspend");
 
-  onsuspend_Setter_(mthis, __arg_0) => mthis["onsuspend"] = __arg_0;
+  onsuspend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onsuspend", __arg_0);
 
-  ontimeupdate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontimeupdate");
+  ontimeupdate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ontimeupdate");
 
-  ontimeupdate_Setter_(mthis, __arg_0) => mthis["ontimeupdate"] = __arg_0;
+  ontimeupdate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ontimeupdate", __arg_0);
 
-  ontoggle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontoggle");
+  ontoggle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ontoggle");
 
-  ontoggle_Setter_(mthis, __arg_0) => mthis["ontoggle"] = __arg_0;
+  ontoggle_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ontoggle", __arg_0);
 
-  onvolumechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onvolumechange");
+  onvolumechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onvolumechange");
 
-  onvolumechange_Setter_(mthis, __arg_0) => mthis["onvolumechange"] = __arg_0;
+  onvolumechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onvolumechange", __arg_0);
 
-  onwaiting_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwaiting");
+  onwaiting_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onwaiting");
 
-  onwaiting_Setter_(mthis, __arg_0) => mthis["onwaiting"] = __arg_0;
+  onwaiting_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onwaiting", __arg_0);
 
 }
 
 class BlinkHMDVRDevice extends BlinkVRDevice {
   static final instance = new BlinkHMDVRDevice();
 
-  getEyeParameters_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getEyeParameters", []);
+  getEyeParameters_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HMDVRDevice */, "getEyeParameters", []);
 
-  getEyeParameters_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getEyeParameters", [__arg_0]);
+  getEyeParameters_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HMDVRDevice */, "getEyeParameters", [__arg_0]);
 
-  setFieldOfView_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setFieldOfView", []);
+  setFieldOfView_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HMDVRDevice */, "setFieldOfView", []);
 
-  setFieldOfView_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setFieldOfView", [__arg_0]);
+  setFieldOfView_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HMDVRDevice */, "setFieldOfView", [__arg_0]);
 
-  setFieldOfView_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setFieldOfView", [__arg_0, __arg_1]);
+  setFieldOfView_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HMDVRDevice */, "setFieldOfView", [__arg_0, __arg_1]);
 
 }
 
 class BlinkHTMLAllCollection {
   static final instance = new BlinkHTMLAllCollection();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAllCollection */, "length");
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLAllCollection */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLAllCollection */, "item", [__arg_0]);
 
-  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", []);
+  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLAllCollection */, "namedItem", []);
 
-  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", [__arg_0]);
+  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLAllCollection */, "namedItem", [__arg_0]);
 
 }
 
 class BlinkHTMLAnchorElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLAnchorElement();
 
-  charset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "charset");
+  charset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAnchorElement */, "charset");
 
-  charset_Setter_(mthis, __arg_0) => mthis["charset"] = __arg_0;
+  charset_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAnchorElement */, "charset", __arg_0);
 
-  coords_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "coords");
+  coords_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAnchorElement */, "coords");
 
-  coords_Setter_(mthis, __arg_0) => mthis["coords"] = __arg_0;
+  coords_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAnchorElement */, "coords", __arg_0);
 
-  download_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "download");
+  download_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAnchorElement */, "download");
 
-  download_Setter_(mthis, __arg_0) => mthis["download"] = __arg_0;
+  download_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAnchorElement */, "download", __arg_0);
 
-  hreflang_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hreflang");
+  hreflang_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAnchorElement */, "hreflang");
 
-  hreflang_Setter_(mthis, __arg_0) => mthis["hreflang"] = __arg_0;
+  hreflang_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAnchorElement */, "hreflang", __arg_0);
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAnchorElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAnchorElement */, "name", __arg_0);
 
-  ping_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ping");
+  ping_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAnchorElement */, "ping");
 
-  ping_Setter_(mthis, __arg_0) => mthis["ping"] = __arg_0;
+  ping_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAnchorElement */, "ping", __arg_0);
 
-  rel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rel");
+  rel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAnchorElement */, "rel");
 
-  rel_Setter_(mthis, __arg_0) => mthis["rel"] = __arg_0;
+  rel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAnchorElement */, "rel", __arg_0);
 
-  rev_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rev");
+  rev_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAnchorElement */, "rev");
 
-  rev_Setter_(mthis, __arg_0) => mthis["rev"] = __arg_0;
+  rev_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAnchorElement */, "rev", __arg_0);
 
-  shape_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "shape");
+  shape_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAnchorElement */, "shape");
 
-  shape_Setter_(mthis, __arg_0) => mthis["shape"] = __arg_0;
+  shape_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAnchorElement */, "shape", __arg_0);
 
-  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "target");
+  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAnchorElement */, "target");
 
-  target_Setter_(mthis, __arg_0) => mthis["target"] = __arg_0;
+  target_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAnchorElement */, "target", __arg_0);
 
-  text_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "text");
+  text_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAnchorElement */, "text");
 
-  text_Setter_(mthis, __arg_0) => mthis["text"] = __arg_0;
+  text_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAnchorElement */, "text", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAnchorElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAnchorElement */, "type", __arg_0);
 
-  hash_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hash");
+  hash_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "hash");
 
-  hash_Setter_(mthis, __arg_0) => mthis["hash"] = __arg_0;
+  hash_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "hash", __arg_0);
 
-  host_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "host");
+  host_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "host");
 
-  host_Setter_(mthis, __arg_0) => mthis["host"] = __arg_0;
+  host_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "host", __arg_0);
 
-  hostname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hostname");
+  hostname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "hostname");
 
-  hostname_Setter_(mthis, __arg_0) => mthis["hostname"] = __arg_0;
+  hostname_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "hostname", __arg_0);
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "href");
 
-  href_Setter_(mthis, __arg_0) => mthis["href"] = __arg_0;
+  href_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "href", __arg_0);
 
-  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "origin");
+  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "origin");
 
-  password_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "password");
+  password_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "password");
 
-  password_Setter_(mthis, __arg_0) => mthis["password"] = __arg_0;
+  password_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "password", __arg_0);
 
-  pathname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pathname");
+  pathname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "pathname");
 
-  pathname_Setter_(mthis, __arg_0) => mthis["pathname"] = __arg_0;
+  pathname_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "pathname", __arg_0);
 
-  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "port");
+  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "port");
 
-  port_Setter_(mthis, __arg_0) => mthis["port"] = __arg_0;
+  port_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "port", __arg_0);
 
-  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "protocol");
+  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "protocol");
 
-  protocol_Setter_(mthis, __arg_0) => mthis["protocol"] = __arg_0;
+  protocol_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "protocol", __arg_0);
 
-  search_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "search");
+  search_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "search");
 
-  search_Setter_(mthis, __arg_0) => mthis["search"] = __arg_0;
+  search_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "search", __arg_0);
 
-  username_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "username");
+  username_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "username");
 
-  username_Setter_(mthis, __arg_0) => mthis["username"] = __arg_0;
+  username_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "username", __arg_0);
 
-  toString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "toString", []);
+  toString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* URLUtils */, "toString", []);
 
 }
 
 class BlinkHTMLAppletElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLAppletElement();
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAppletElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAppletElement */, "align", __arg_0);
 
-  alt_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "alt");
+  alt_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAppletElement */, "alt");
 
-  alt_Setter_(mthis, __arg_0) => mthis["alt"] = __arg_0;
+  alt_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAppletElement */, "alt", __arg_0);
 
-  archive_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "archive");
+  archive_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAppletElement */, "archive");
 
-  archive_Setter_(mthis, __arg_0) => mthis["archive"] = __arg_0;
+  archive_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAppletElement */, "archive", __arg_0);
 
-  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "code");
+  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAppletElement */, "code");
 
-  code_Setter_(mthis, __arg_0) => mthis["code"] = __arg_0;
+  code_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAppletElement */, "code", __arg_0);
 
-  codeBase_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "codeBase");
+  codeBase_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAppletElement */, "codeBase");
 
-  codeBase_Setter_(mthis, __arg_0) => mthis["codeBase"] = __arg_0;
+  codeBase_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAppletElement */, "codeBase", __arg_0);
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAppletElement */, "height");
 
-  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
+  height_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAppletElement */, "height", __arg_0);
 
-  hspace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hspace");
+  hspace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAppletElement */, "hspace");
 
-  hspace_Setter_(mthis, __arg_0) => mthis["hspace"] = __arg_0;
+  hspace_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAppletElement */, "hspace", __arg_0);
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAppletElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAppletElement */, "name", __arg_0);
 
-  object_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "object");
+  object_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAppletElement */, "object");
 
-  object_Setter_(mthis, __arg_0) => mthis["object"] = __arg_0;
+  object_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAppletElement */, "object", __arg_0);
 
-  vspace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "vspace");
+  vspace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAppletElement */, "vspace");
 
-  vspace_Setter_(mthis, __arg_0) => mthis["vspace"] = __arg_0;
+  vspace_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAppletElement */, "vspace", __arg_0);
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAppletElement */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAppletElement */, "width", __arg_0);
 
-  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__getter__", [__arg_0]);
+  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLAppletElement */, "__getter__", [__arg_0]);
 
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "__setter__", [__arg_0, __arg_1]);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLAppletElement */, "__setter__", [__arg_0, __arg_1]);
 
 }
 
 class BlinkHTMLAreaElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLAreaElement();
 
-  alt_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "alt");
+  alt_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAreaElement */, "alt");
 
-  alt_Setter_(mthis, __arg_0) => mthis["alt"] = __arg_0;
+  alt_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAreaElement */, "alt", __arg_0);
 
-  coords_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "coords");
+  coords_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAreaElement */, "coords");
 
-  coords_Setter_(mthis, __arg_0) => mthis["coords"] = __arg_0;
+  coords_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAreaElement */, "coords", __arg_0);
 
-  noHref_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "noHref");
+  noHref_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAreaElement */, "noHref");
 
-  noHref_Setter_(mthis, __arg_0) => mthis["noHref"] = __arg_0;
+  noHref_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAreaElement */, "noHref", __arg_0);
 
-  ping_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ping");
+  ping_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAreaElement */, "ping");
 
-  ping_Setter_(mthis, __arg_0) => mthis["ping"] = __arg_0;
+  ping_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAreaElement */, "ping", __arg_0);
 
-  shape_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "shape");
+  shape_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAreaElement */, "shape");
 
-  shape_Setter_(mthis, __arg_0) => mthis["shape"] = __arg_0;
+  shape_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAreaElement */, "shape", __arg_0);
 
-  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "target");
+  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLAreaElement */, "target");
 
-  target_Setter_(mthis, __arg_0) => mthis["target"] = __arg_0;
+  target_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLAreaElement */, "target", __arg_0);
 
-  hash_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hash");
+  hash_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "hash");
 
-  hash_Setter_(mthis, __arg_0) => mthis["hash"] = __arg_0;
+  hash_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "hash", __arg_0);
 
-  host_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "host");
+  host_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "host");
 
-  host_Setter_(mthis, __arg_0) => mthis["host"] = __arg_0;
+  host_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "host", __arg_0);
 
-  hostname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hostname");
+  hostname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "hostname");
 
-  hostname_Setter_(mthis, __arg_0) => mthis["hostname"] = __arg_0;
+  hostname_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "hostname", __arg_0);
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "href");
 
-  href_Setter_(mthis, __arg_0) => mthis["href"] = __arg_0;
+  href_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "href", __arg_0);
 
-  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "origin");
+  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "origin");
 
-  password_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "password");
+  password_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "password");
 
-  password_Setter_(mthis, __arg_0) => mthis["password"] = __arg_0;
+  password_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "password", __arg_0);
 
-  pathname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pathname");
+  pathname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "pathname");
 
-  pathname_Setter_(mthis, __arg_0) => mthis["pathname"] = __arg_0;
+  pathname_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "pathname", __arg_0);
 
-  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "port");
+  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "port");
 
-  port_Setter_(mthis, __arg_0) => mthis["port"] = __arg_0;
+  port_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "port", __arg_0);
 
-  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "protocol");
+  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "protocol");
 
-  protocol_Setter_(mthis, __arg_0) => mthis["protocol"] = __arg_0;
+  protocol_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "protocol", __arg_0);
 
-  search_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "search");
+  search_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "search");
 
-  search_Setter_(mthis, __arg_0) => mthis["search"] = __arg_0;
+  search_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "search", __arg_0);
 
-  username_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "username");
+  username_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "username");
 
-  username_Setter_(mthis, __arg_0) => mthis["username"] = __arg_0;
+  username_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "username", __arg_0);
 
-  toString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "toString", []);
+  toString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* URLUtils */, "toString", []);
 
 }
 
 class BlinkHTMLAudioElement extends BlinkHTMLMediaElement {
   static final instance = new BlinkHTMLAudioElement();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Audio"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("Audio");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Audio"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("Audio", [__arg_0]);
 
 }
 
 class BlinkHTMLBRElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLBRElement();
 
-  clear_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "clear");
+  clear_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLBRElement */, "clear");
 
-  clear_Setter_(mthis, __arg_0) => mthis["clear"] = __arg_0;
+  clear_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLBRElement */, "clear", __arg_0);
 
 }
 
 class BlinkHTMLBaseElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLBaseElement();
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLBaseElement */, "href");
 
-  href_Setter_(mthis, __arg_0) => mthis["href"] = __arg_0;
+  href_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLBaseElement */, "href", __arg_0);
 
-  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "target");
+  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLBaseElement */, "target");
 
-  target_Setter_(mthis, __arg_0) => mthis["target"] = __arg_0;
+  target_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLBaseElement */, "target", __arg_0);
 
 }
 
 class BlinkHTMLBodyElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLBodyElement();
 
-  aLink_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "aLink");
+  aLink_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLBodyElement */, "aLink");
 
-  aLink_Setter_(mthis, __arg_0) => mthis["aLink"] = __arg_0;
+  aLink_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLBodyElement */, "aLink", __arg_0);
 
-  background_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "background");
+  background_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLBodyElement */, "background");
 
-  background_Setter_(mthis, __arg_0) => mthis["background"] = __arg_0;
+  background_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLBodyElement */, "background", __arg_0);
 
-  bgColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "bgColor");
+  bgColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLBodyElement */, "bgColor");
 
-  bgColor_Setter_(mthis, __arg_0) => mthis["bgColor"] = __arg_0;
+  bgColor_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLBodyElement */, "bgColor", __arg_0);
 
-  link_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "link");
+  link_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLBodyElement */, "link");
 
-  link_Setter_(mthis, __arg_0) => mthis["link"] = __arg_0;
+  link_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLBodyElement */, "link", __arg_0);
 
-  onblur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onblur");
+  onblur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLBodyElement */, "onblur");
 
-  onblur_Setter_(mthis, __arg_0) => mthis["onblur"] = __arg_0;
+  onblur_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLBodyElement */, "onblur", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLBodyElement */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLBodyElement */, "onerror", __arg_0);
 
-  onfocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onfocus");
+  onfocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLBodyElement */, "onfocus");
 
-  onfocus_Setter_(mthis, __arg_0) => mthis["onfocus"] = __arg_0;
+  onfocus_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLBodyElement */, "onfocus", __arg_0);
 
-  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onload");
+  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLBodyElement */, "onload");
 
-  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
+  onload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLBodyElement */, "onload", __arg_0);
 
-  onorientationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onorientationchange");
+  onorientationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLBodyElement */, "onorientationchange");
 
-  onorientationchange_Setter_(mthis, __arg_0) => mthis["onorientationchange"] = __arg_0;
+  onorientationchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLBodyElement */, "onorientationchange", __arg_0);
 
-  onresize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onresize");
+  onresize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLBodyElement */, "onresize");
 
-  onresize_Setter_(mthis, __arg_0) => mthis["onresize"] = __arg_0;
+  onresize_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLBodyElement */, "onresize", __arg_0);
 
-  onscroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onscroll");
+  onscroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLBodyElement */, "onscroll");
 
-  onscroll_Setter_(mthis, __arg_0) => mthis["onscroll"] = __arg_0;
+  onscroll_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLBodyElement */, "onscroll", __arg_0);
 
-  text_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "text");
+  text_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLBodyElement */, "text");
 
-  text_Setter_(mthis, __arg_0) => mthis["text"] = __arg_0;
+  text_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLBodyElement */, "text", __arg_0);
 
-  vLink_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "vLink");
+  vLink_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLBodyElement */, "vLink");
 
-  vLink_Setter_(mthis, __arg_0) => mthis["vLink"] = __arg_0;
+  vLink_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLBodyElement */, "vLink", __arg_0);
 
-  onbeforeunload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onbeforeunload");
+  onbeforeunload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onbeforeunload");
 
-  onbeforeunload_Setter_(mthis, __arg_0) => mthis["onbeforeunload"] = __arg_0;
+  onbeforeunload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onbeforeunload", __arg_0);
 
-  onhashchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onhashchange");
+  onhashchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onhashchange");
 
-  onhashchange_Setter_(mthis, __arg_0) => mthis["onhashchange"] = __arg_0;
+  onhashchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onhashchange", __arg_0);
 
-  onlanguagechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onlanguagechange");
+  onlanguagechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onlanguagechange");
 
-  onlanguagechange_Setter_(mthis, __arg_0) => mthis["onlanguagechange"] = __arg_0;
+  onlanguagechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onlanguagechange", __arg_0);
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onmessage", __arg_0);
 
-  onoffline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onoffline");
+  onoffline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onoffline");
 
-  onoffline_Setter_(mthis, __arg_0) => mthis["onoffline"] = __arg_0;
+  onoffline_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onoffline", __arg_0);
 
-  ononline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ononline");
+  ononline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "ononline");
 
-  ononline_Setter_(mthis, __arg_0) => mthis["ononline"] = __arg_0;
+  ononline_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "ononline", __arg_0);
 
-  onpagehide_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpagehide");
+  onpagehide_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onpagehide");
 
-  onpagehide_Setter_(mthis, __arg_0) => mthis["onpagehide"] = __arg_0;
+  onpagehide_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onpagehide", __arg_0);
 
-  onpageshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpageshow");
+  onpageshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onpageshow");
 
-  onpageshow_Setter_(mthis, __arg_0) => mthis["onpageshow"] = __arg_0;
+  onpageshow_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onpageshow", __arg_0);
 
-  onpopstate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpopstate");
+  onpopstate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onpopstate");
 
-  onpopstate_Setter_(mthis, __arg_0) => mthis["onpopstate"] = __arg_0;
+  onpopstate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onpopstate", __arg_0);
 
-  onrejectionhandled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onrejectionhandled");
+  onrejectionhandled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onrejectionhandled");
 
-  onrejectionhandled_Setter_(mthis, __arg_0) => mthis["onrejectionhandled"] = __arg_0;
+  onrejectionhandled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onrejectionhandled", __arg_0);
 
-  onstorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstorage");
+  onstorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onstorage");
 
-  onstorage_Setter_(mthis, __arg_0) => mthis["onstorage"] = __arg_0;
+  onstorage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onstorage", __arg_0);
 
-  onunhandledrejection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onunhandledrejection");
+  onunhandledrejection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onunhandledrejection");
 
-  onunhandledrejection_Setter_(mthis, __arg_0) => mthis["onunhandledrejection"] = __arg_0;
+  onunhandledrejection_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onunhandledrejection", __arg_0);
 
-  onunload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onunload");
+  onunload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onunload");
 
-  onunload_Setter_(mthis, __arg_0) => mthis["onunload"] = __arg_0;
+  onunload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onunload", __arg_0);
 
 }
 
 class BlinkHTMLButtonElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLButtonElement();
 
-  autofocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "autofocus");
+  autofocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLButtonElement */, "autofocus");
 
-  autofocus_Setter_(mthis, __arg_0) => mthis["autofocus"] = __arg_0;
+  autofocus_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLButtonElement */, "autofocus", __arg_0);
 
-  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "disabled");
+  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLButtonElement */, "disabled");
 
-  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
+  disabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLButtonElement */, "disabled", __arg_0);
 
-  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "form");
+  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLButtonElement */, "form");
 
-  formAction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "formAction");
+  formAction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLButtonElement */, "formAction");
 
-  formAction_Setter_(mthis, __arg_0) => mthis["formAction"] = __arg_0;
+  formAction_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLButtonElement */, "formAction", __arg_0);
 
-  formEnctype_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "formEnctype");
+  formEnctype_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLButtonElement */, "formEnctype");
 
-  formEnctype_Setter_(mthis, __arg_0) => mthis["formEnctype"] = __arg_0;
+  formEnctype_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLButtonElement */, "formEnctype", __arg_0);
 
-  formMethod_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "formMethod");
+  formMethod_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLButtonElement */, "formMethod");
 
-  formMethod_Setter_(mthis, __arg_0) => mthis["formMethod"] = __arg_0;
+  formMethod_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLButtonElement */, "formMethod", __arg_0);
 
-  formNoValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "formNoValidate");
+  formNoValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLButtonElement */, "formNoValidate");
 
-  formNoValidate_Setter_(mthis, __arg_0) => mthis["formNoValidate"] = __arg_0;
+  formNoValidate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLButtonElement */, "formNoValidate", __arg_0);
 
-  formTarget_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "formTarget");
+  formTarget_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLButtonElement */, "formTarget");
 
-  formTarget_Setter_(mthis, __arg_0) => mthis["formTarget"] = __arg_0;
+  formTarget_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLButtonElement */, "formTarget", __arg_0);
 
-  labels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "labels");
+  labels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLButtonElement */, "labels");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLButtonElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLButtonElement */, "name", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLButtonElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLButtonElement */, "type", __arg_0);
 
-  validationMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "validationMessage");
+  validationMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLButtonElement */, "validationMessage");
 
-  validity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "validity");
+  validity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLButtonElement */, "validity");
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLButtonElement */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLButtonElement */, "value", __arg_0);
 
-  willValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "willValidate");
+  willValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLButtonElement */, "willValidate");
 
-  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "checkValidity", []);
+  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLButtonElement */, "checkValidity", []);
 
-  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "reportValidity", []);
+  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLButtonElement */, "reportValidity", []);
 
-  setCustomValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setCustomValidity", []);
+  setCustomValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLButtonElement */, "setCustomValidity", []);
 
-  setCustomValidity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setCustomValidity", [__arg_0]);
+  setCustomValidity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLButtonElement */, "setCustomValidity", [__arg_0]);
 
 }
 
 class BlinkHTMLCanvasElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLCanvasElement();
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLCanvasElement */, "height");
 
-  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
+  height_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLCanvasElement */, "height", __arg_0);
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLCanvasElement */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLCanvasElement */, "width", __arg_0);
 
-  getContext_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getContext", []);
+  getContext_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLCanvasElement */, "getContext", []);
 
-  getContext_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getContext", [__arg_0]);
+  getContext_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLCanvasElement */, "getContext", [__arg_0]);
 
-  getContext_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getContext", [__arg_0, __arg_1]);
+  getContext_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLCanvasElement */, "getContext", [__arg_0, __arg_1]);
 
-  toDataURL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "toDataURL", []);
+  toDataURL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLCanvasElement */, "toDataURL", []);
 
-  toDataURL_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "toDataURL", [__arg_0]);
+  toDataURL_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLCanvasElement */, "toDataURL", [__arg_0]);
 
-  toDataURL_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "toDataURL", [__arg_0, __arg_1]);
+  toDataURL_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLCanvasElement */, "toDataURL", [__arg_0, __arg_1]);
 
 }
 
 class BlinkHTMLCollection {
   static final instance = new BlinkHTMLCollection();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) native "Blink_Getter_HTMLCollection_length";
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) native "Blink_Operation_0_HTMLCollection_item";
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) native "Blink_Operation_HTMLCollection_item"; /* __arg_0 */
 
-  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", []);
+  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLCollection */, "namedItem", []);
 
-  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", [__arg_0]);
+  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLCollection */, "namedItem", [__arg_0]);
 
 }
 
 class BlinkHTMLContentElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLContentElement();
 
-  select_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "select");
+  select_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLContentElement */, "select");
 
-  select_Setter_(mthis, __arg_0) => mthis["select"] = __arg_0;
+  select_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLContentElement */, "select", __arg_0);
 
-  getDistributedNodes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getDistributedNodes", []);
+  getDistributedNodes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLContentElement */, "getDistributedNodes", []);
 
 }
 
 class BlinkHTMLDListElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLDListElement();
 
-  compact_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "compact");
+  compact_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLDListElement */, "compact");
 
-  compact_Setter_(mthis, __arg_0) => mthis["compact"] = __arg_0;
+  compact_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLDListElement */, "compact", __arg_0);
 
 }
 
 class BlinkHTMLDataListElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLDataListElement();
 
-  options_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "options");
+  options_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLDataListElement */, "options");
 
 }
 
 class BlinkHTMLDetailsElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLDetailsElement();
 
-  open_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "open");
+  open_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLDetailsElement */, "open");
 
-  open_Setter_(mthis, __arg_0) => mthis["open"] = __arg_0;
+  open_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLDetailsElement */, "open", __arg_0);
 
 }
 
 class BlinkHTMLDialogElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLDialogElement();
 
-  open_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "open");
+  open_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLDialogElement */, "open");
 
-  open_Setter_(mthis, __arg_0) => mthis["open"] = __arg_0;
+  open_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLDialogElement */, "open", __arg_0);
 
-  returnValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "returnValue");
+  returnValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLDialogElement */, "returnValue");
 
-  returnValue_Setter_(mthis, __arg_0) => mthis["returnValue"] = __arg_0;
+  returnValue_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLDialogElement */, "returnValue", __arg_0);
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLDialogElement */, "close", []);
 
-  close_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "close", [__arg_0]);
+  close_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLDialogElement */, "close", [__arg_0]);
 
-  show_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "show", []);
+  show_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLDialogElement */, "show", []);
 
-  showModal_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "showModal", []);
+  showModal_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLDialogElement */, "showModal", []);
 
 }
 
 class BlinkHTMLDirectoryElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLDirectoryElement();
 
-  compact_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "compact");
+  compact_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLDirectoryElement */, "compact");
 
-  compact_Setter_(mthis, __arg_0) => mthis["compact"] = __arg_0;
+  compact_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLDirectoryElement */, "compact", __arg_0);
 
 }
 
 class BlinkHTMLDivElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLDivElement();
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLDivElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLDivElement */, "align", __arg_0);
 
 }
 
 class BlinkHTMLDocument extends BlinkDocument {
   static final instance = new BlinkHTMLDocument();
 
-  alinkColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "alinkColor");
+  alinkColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLDocument */, "alinkColor");
 
-  alinkColor_Setter_(mthis, __arg_0) => mthis["alinkColor"] = __arg_0;
+  alinkColor_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLDocument */, "alinkColor", __arg_0);
 
-  all_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "all");
+  all_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLDocument */, "all");
 
-  bgColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "bgColor");
+  bgColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLDocument */, "bgColor");
 
-  bgColor_Setter_(mthis, __arg_0) => mthis["bgColor"] = __arg_0;
+  bgColor_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLDocument */, "bgColor", __arg_0);
 
-  fgColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fgColor");
+  fgColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLDocument */, "fgColor");
 
-  fgColor_Setter_(mthis, __arg_0) => mthis["fgColor"] = __arg_0;
+  fgColor_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLDocument */, "fgColor", __arg_0);
 
-  linkColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "linkColor");
+  linkColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLDocument */, "linkColor");
 
-  linkColor_Setter_(mthis, __arg_0) => mthis["linkColor"] = __arg_0;
+  linkColor_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLDocument */, "linkColor", __arg_0);
 
-  vlinkColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "vlinkColor");
+  vlinkColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLDocument */, "vlinkColor");
 
-  vlinkColor_Setter_(mthis, __arg_0) => mthis["vlinkColor"] = __arg_0;
+  vlinkColor_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLDocument */, "vlinkColor", __arg_0);
 
-  captureEvents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "captureEvents", []);
+  captureEvents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLDocument */, "captureEvents", []);
 
-  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clear", []);
+  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLDocument */, "clear", []);
 
-  releaseEvents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "releaseEvents", []);
+  releaseEvents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLDocument */, "releaseEvents", []);
 
 }
 
 class BlinkHTMLElement extends BlinkElement {
   static final instance = new BlinkHTMLElement();
 
-  accessKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "accessKey");
+  accessKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "accessKey");
 
-  accessKey_Setter_(mthis, __arg_0) => mthis["accessKey"] = __arg_0;
+  accessKey_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLElement */, "accessKey", __arg_0);
 
-  contentEditable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "contentEditable");
+  contentEditable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "contentEditable");
 
-  contentEditable_Setter_(mthis, __arg_0) => mthis["contentEditable"] = __arg_0;
+  contentEditable_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLElement */, "contentEditable", __arg_0);
 
-  contextMenu_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "contextMenu");
+  contextMenu_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "contextMenu");
 
-  contextMenu_Setter_(mthis, __arg_0) => mthis["contextMenu"] = __arg_0;
+  contextMenu_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLElement */, "contextMenu", __arg_0);
 
-  dataset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dataset");
+  dataset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "dataset");
 
-  dir_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dir");
+  dir_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "dir");
 
-  dir_Setter_(mthis, __arg_0) => mthis["dir"] = __arg_0;
+  dir_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLElement */, "dir", __arg_0);
 
-  draggable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "draggable");
+  draggable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "draggable");
 
-  draggable_Setter_(mthis, __arg_0) => mthis["draggable"] = __arg_0;
+  draggable_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLElement */, "draggable", __arg_0);
 
-  hidden_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hidden");
+  hidden_Getter_(mthis) native "Blink_Getter_HTMLElement_hidden";
 
-  hidden_Setter_(mthis, __arg_0) => mthis["hidden"] = __arg_0;
+  hidden_Setter_(mthis, __arg_0) native "Blink_Setter_HTMLElement_hidden";
 
-  innerText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "innerText");
+  innerText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "innerText");
 
-  innerText_Setter_(mthis, __arg_0) => mthis["innerText"] = __arg_0;
+  innerText_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLElement */, "innerText", __arg_0);
 
-  isContentEditable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "isContentEditable");
+  isContentEditable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "isContentEditable");
 
-  lang_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lang");
+  lang_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "lang");
 
-  lang_Setter_(mthis, __arg_0) => mthis["lang"] = __arg_0;
+  lang_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLElement */, "lang", __arg_0);
 
-  offsetHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "offsetHeight");
+  offsetHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "offsetHeight");
 
-  offsetLeft_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "offsetLeft");
+  offsetLeft_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "offsetLeft");
 
-  offsetParent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "offsetParent");
+  offsetParent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "offsetParent");
 
-  offsetTop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "offsetTop");
+  offsetTop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "offsetTop");
 
-  offsetWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "offsetWidth");
+  offsetWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "offsetWidth");
 
-  outerText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "outerText");
+  outerText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "outerText");
 
-  outerText_Setter_(mthis, __arg_0) => mthis["outerText"] = __arg_0;
+  outerText_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLElement */, "outerText", __arg_0);
 
-  spellcheck_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "spellcheck");
+  spellcheck_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "spellcheck");
 
-  spellcheck_Setter_(mthis, __arg_0) => mthis["spellcheck"] = __arg_0;
+  spellcheck_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLElement */, "spellcheck", __arg_0);
 
-  style_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "style");
+  style_Getter_(mthis) native "Blink_Getter_HTMLElement_style";
 
-  tabIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "tabIndex");
+  tabIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "tabIndex");
 
-  tabIndex_Setter_(mthis, __arg_0) => mthis["tabIndex"] = __arg_0;
+  tabIndex_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLElement */, "tabIndex", __arg_0);
 
-  title_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "title");
+  title_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "title");
 
-  title_Setter_(mthis, __arg_0) => mthis["title"] = __arg_0;
+  title_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLElement */, "title", __arg_0);
 
-  translate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "translate");
+  translate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "translate");
 
-  translate_Setter_(mthis, __arg_0) => mthis["translate"] = __arg_0;
+  translate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLElement */, "translate", __arg_0);
 
-  webkitdropzone_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitdropzone");
+  webkitdropzone_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLElement */, "webkitdropzone");
 
-  webkitdropzone_Setter_(mthis, __arg_0) => mthis["webkitdropzone"] = __arg_0;
+  webkitdropzone_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLElement */, "webkitdropzone", __arg_0);
 
-  blur_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blur", []);
+  blur_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLElement */, "blur", []);
 
-  click_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "click", []);
+  click_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLElement */, "click", []);
 
-  focus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "focus", []);
+  focus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLElement */, "focus", []);
 
-  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onabort");
+  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onabort");
 
-  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
+  onabort_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onabort", __arg_0);
 
-  onautocomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onautocomplete");
+  onautocomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onautocomplete");
 
-  onautocomplete_Setter_(mthis, __arg_0) => mthis["onautocomplete"] = __arg_0;
+  onautocomplete_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onautocomplete", __arg_0);
 
-  onautocompleteerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onautocompleteerror");
+  onautocompleteerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onautocompleteerror");
 
-  onautocompleteerror_Setter_(mthis, __arg_0) => mthis["onautocompleteerror"] = __arg_0;
+  onautocompleteerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onautocompleteerror", __arg_0);
 
-  onblur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onblur");
+  onblur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onblur");
 
-  onblur_Setter_(mthis, __arg_0) => mthis["onblur"] = __arg_0;
+  onblur_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onblur", __arg_0);
 
-  oncancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncancel");
+  oncancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncancel");
 
-  oncancel_Setter_(mthis, __arg_0) => mthis["oncancel"] = __arg_0;
+  oncancel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncancel", __arg_0);
 
-  oncanplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncanplay");
+  oncanplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncanplay");
 
-  oncanplay_Setter_(mthis, __arg_0) => mthis["oncanplay"] = __arg_0;
+  oncanplay_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncanplay", __arg_0);
 
-  oncanplaythrough_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncanplaythrough");
+  oncanplaythrough_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncanplaythrough");
 
-  oncanplaythrough_Setter_(mthis, __arg_0) => mthis["oncanplaythrough"] = __arg_0;
+  oncanplaythrough_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncanplaythrough", __arg_0);
 
-  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onchange");
+  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onchange");
 
-  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
+  onchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onchange", __arg_0);
 
-  onclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclick");
+  onclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onclick");
 
-  onclick_Setter_(mthis, __arg_0) => mthis["onclick"] = __arg_0;
+  onclick_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onclick", __arg_0);
 
-  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclose");
+  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onclose");
 
-  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
+  onclose_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onclose", __arg_0);
 
-  oncontextmenu_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncontextmenu");
+  oncontextmenu_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncontextmenu");
 
-  oncontextmenu_Setter_(mthis, __arg_0) => mthis["oncontextmenu"] = __arg_0;
+  oncontextmenu_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncontextmenu", __arg_0);
 
-  oncuechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncuechange");
+  oncuechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncuechange");
 
-  oncuechange_Setter_(mthis, __arg_0) => mthis["oncuechange"] = __arg_0;
+  oncuechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncuechange", __arg_0);
 
-  ondblclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondblclick");
+  ondblclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondblclick");
 
-  ondblclick_Setter_(mthis, __arg_0) => mthis["ondblclick"] = __arg_0;
+  ondblclick_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondblclick", __arg_0);
 
-  ondrag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondrag");
+  ondrag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondrag");
 
-  ondrag_Setter_(mthis, __arg_0) => mthis["ondrag"] = __arg_0;
+  ondrag_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondrag", __arg_0);
 
-  ondragend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragend");
+  ondragend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragend");
 
-  ondragend_Setter_(mthis, __arg_0) => mthis["ondragend"] = __arg_0;
+  ondragend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragend", __arg_0);
 
-  ondragenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragenter");
+  ondragenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragenter");
 
-  ondragenter_Setter_(mthis, __arg_0) => mthis["ondragenter"] = __arg_0;
+  ondragenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragenter", __arg_0);
 
-  ondragleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragleave");
+  ondragleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragleave");
 
-  ondragleave_Setter_(mthis, __arg_0) => mthis["ondragleave"] = __arg_0;
+  ondragleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragleave", __arg_0);
 
-  ondragover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragover");
+  ondragover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragover");
 
-  ondragover_Setter_(mthis, __arg_0) => mthis["ondragover"] = __arg_0;
+  ondragover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragover", __arg_0);
 
-  ondragstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragstart");
+  ondragstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragstart");
 
-  ondragstart_Setter_(mthis, __arg_0) => mthis["ondragstart"] = __arg_0;
+  ondragstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragstart", __arg_0);
 
-  ondrop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondrop");
+  ondrop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondrop");
 
-  ondrop_Setter_(mthis, __arg_0) => mthis["ondrop"] = __arg_0;
+  ondrop_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondrop", __arg_0);
 
-  ondurationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondurationchange");
+  ondurationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondurationchange");
 
-  ondurationchange_Setter_(mthis, __arg_0) => mthis["ondurationchange"] = __arg_0;
+  ondurationchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondurationchange", __arg_0);
 
-  onemptied_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onemptied");
+  onemptied_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onemptied");
 
-  onemptied_Setter_(mthis, __arg_0) => mthis["onemptied"] = __arg_0;
+  onemptied_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onemptied", __arg_0);
 
-  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onended");
+  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onended");
 
-  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
+  onended_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onended", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onerror", __arg_0);
 
-  onfocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onfocus");
+  onfocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onfocus");
 
-  onfocus_Setter_(mthis, __arg_0) => mthis["onfocus"] = __arg_0;
+  onfocus_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onfocus", __arg_0);
 
-  oninput_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oninput");
+  oninput_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oninput");
 
-  oninput_Setter_(mthis, __arg_0) => mthis["oninput"] = __arg_0;
+  oninput_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oninput", __arg_0);
 
-  oninvalid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oninvalid");
+  oninvalid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oninvalid");
 
-  oninvalid_Setter_(mthis, __arg_0) => mthis["oninvalid"] = __arg_0;
+  oninvalid_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oninvalid", __arg_0);
 
-  onkeydown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeydown");
+  onkeydown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeydown");
 
-  onkeydown_Setter_(mthis, __arg_0) => mthis["onkeydown"] = __arg_0;
+  onkeydown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeydown", __arg_0);
 
-  onkeypress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeypress");
+  onkeypress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeypress");
 
-  onkeypress_Setter_(mthis, __arg_0) => mthis["onkeypress"] = __arg_0;
+  onkeypress_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeypress", __arg_0);
 
-  onkeyup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeyup");
+  onkeyup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeyup");
 
-  onkeyup_Setter_(mthis, __arg_0) => mthis["onkeyup"] = __arg_0;
+  onkeyup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeyup", __arg_0);
 
-  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onload");
+  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onload");
 
-  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
+  onload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onload", __arg_0);
 
-  onloadeddata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadeddata");
+  onloadeddata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadeddata");
 
-  onloadeddata_Setter_(mthis, __arg_0) => mthis["onloadeddata"] = __arg_0;
+  onloadeddata_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadeddata", __arg_0);
 
-  onloadedmetadata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadedmetadata");
+  onloadedmetadata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadedmetadata");
 
-  onloadedmetadata_Setter_(mthis, __arg_0) => mthis["onloadedmetadata"] = __arg_0;
+  onloadedmetadata_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadedmetadata", __arg_0);
 
-  onloadstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadstart");
+  onloadstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadstart");
 
-  onloadstart_Setter_(mthis, __arg_0) => mthis["onloadstart"] = __arg_0;
+  onloadstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadstart", __arg_0);
 
-  onmousedown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousedown");
+  onmousedown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousedown");
 
-  onmousedown_Setter_(mthis, __arg_0) => mthis["onmousedown"] = __arg_0;
+  onmousedown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousedown", __arg_0);
 
-  onmouseenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseenter");
+  onmouseenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseenter");
 
-  onmouseenter_Setter_(mthis, __arg_0) => mthis["onmouseenter"] = __arg_0;
+  onmouseenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseenter", __arg_0);
 
-  onmouseleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseleave");
+  onmouseleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseleave");
 
-  onmouseleave_Setter_(mthis, __arg_0) => mthis["onmouseleave"] = __arg_0;
+  onmouseleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseleave", __arg_0);
 
-  onmousemove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousemove");
+  onmousemove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousemove");
 
-  onmousemove_Setter_(mthis, __arg_0) => mthis["onmousemove"] = __arg_0;
+  onmousemove_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousemove", __arg_0);
 
-  onmouseout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseout");
+  onmouseout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseout");
 
-  onmouseout_Setter_(mthis, __arg_0) => mthis["onmouseout"] = __arg_0;
+  onmouseout_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseout", __arg_0);
 
-  onmouseover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseover");
+  onmouseover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseover");
 
-  onmouseover_Setter_(mthis, __arg_0) => mthis["onmouseover"] = __arg_0;
+  onmouseover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseover", __arg_0);
 
-  onmouseup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseup");
+  onmouseup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseup");
 
-  onmouseup_Setter_(mthis, __arg_0) => mthis["onmouseup"] = __arg_0;
+  onmouseup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseup", __arg_0);
 
-  onmousewheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousewheel");
+  onmousewheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousewheel");
 
-  onmousewheel_Setter_(mthis, __arg_0) => mthis["onmousewheel"] = __arg_0;
+  onmousewheel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousewheel", __arg_0);
 
-  onpause_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpause");
+  onpause_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpause");
 
-  onpause_Setter_(mthis, __arg_0) => mthis["onpause"] = __arg_0;
+  onpause_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpause", __arg_0);
 
-  onplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onplay");
+  onplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onplay");
 
-  onplay_Setter_(mthis, __arg_0) => mthis["onplay"] = __arg_0;
+  onplay_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onplay", __arg_0);
 
-  onplaying_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onplaying");
+  onplaying_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onplaying");
 
-  onplaying_Setter_(mthis, __arg_0) => mthis["onplaying"] = __arg_0;
+  onplaying_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onplaying", __arg_0);
 
-  onpointercancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointercancel");
+  onpointercancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointercancel");
 
-  onpointercancel_Setter_(mthis, __arg_0) => mthis["onpointercancel"] = __arg_0;
+  onpointercancel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointercancel", __arg_0);
 
-  onpointerdown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerdown");
+  onpointerdown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerdown");
 
-  onpointerdown_Setter_(mthis, __arg_0) => mthis["onpointerdown"] = __arg_0;
+  onpointerdown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerdown", __arg_0);
 
-  onpointerenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerenter");
+  onpointerenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerenter");
 
-  onpointerenter_Setter_(mthis, __arg_0) => mthis["onpointerenter"] = __arg_0;
+  onpointerenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerenter", __arg_0);
 
-  onpointerleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerleave");
+  onpointerleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerleave");
 
-  onpointerleave_Setter_(mthis, __arg_0) => mthis["onpointerleave"] = __arg_0;
+  onpointerleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerleave", __arg_0);
 
-  onpointermove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointermove");
+  onpointermove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointermove");
 
-  onpointermove_Setter_(mthis, __arg_0) => mthis["onpointermove"] = __arg_0;
+  onpointermove_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointermove", __arg_0);
 
-  onpointerout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerout");
+  onpointerout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerout");
 
-  onpointerout_Setter_(mthis, __arg_0) => mthis["onpointerout"] = __arg_0;
+  onpointerout_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerout", __arg_0);
 
-  onpointerover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerover");
+  onpointerover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerover");
 
-  onpointerover_Setter_(mthis, __arg_0) => mthis["onpointerover"] = __arg_0;
+  onpointerover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerover", __arg_0);
 
-  onpointerup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerup");
+  onpointerup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerup");
 
-  onpointerup_Setter_(mthis, __arg_0) => mthis["onpointerup"] = __arg_0;
+  onpointerup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerup", __arg_0);
 
-  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onprogress");
+  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onprogress");
 
-  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
+  onprogress_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onprogress", __arg_0);
 
-  onratechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onratechange");
+  onratechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onratechange");
 
-  onratechange_Setter_(mthis, __arg_0) => mthis["onratechange"] = __arg_0;
+  onratechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onratechange", __arg_0);
 
-  onreset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onreset");
+  onreset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onreset");
 
-  onreset_Setter_(mthis, __arg_0) => mthis["onreset"] = __arg_0;
+  onreset_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onreset", __arg_0);
 
-  onresize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onresize");
+  onresize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onresize");
 
-  onresize_Setter_(mthis, __arg_0) => mthis["onresize"] = __arg_0;
+  onresize_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onresize", __arg_0);
 
-  onscroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onscroll");
+  onscroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onscroll");
 
-  onscroll_Setter_(mthis, __arg_0) => mthis["onscroll"] = __arg_0;
+  onscroll_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onscroll", __arg_0);
 
-  onseeked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onseeked");
+  onseeked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onseeked");
 
-  onseeked_Setter_(mthis, __arg_0) => mthis["onseeked"] = __arg_0;
+  onseeked_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onseeked", __arg_0);
 
-  onseeking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onseeking");
+  onseeking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onseeking");
 
-  onseeking_Setter_(mthis, __arg_0) => mthis["onseeking"] = __arg_0;
+  onseeking_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onseeking", __arg_0);
 
-  onselect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onselect");
+  onselect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onselect");
 
-  onselect_Setter_(mthis, __arg_0) => mthis["onselect"] = __arg_0;
+  onselect_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onselect", __arg_0);
 
-  onshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onshow");
+  onshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onshow");
 
-  onshow_Setter_(mthis, __arg_0) => mthis["onshow"] = __arg_0;
+  onshow_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onshow", __arg_0);
 
-  onstalled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstalled");
+  onstalled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onstalled");
 
-  onstalled_Setter_(mthis, __arg_0) => mthis["onstalled"] = __arg_0;
+  onstalled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onstalled", __arg_0);
 
-  onsubmit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsubmit");
+  onsubmit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onsubmit");
 
-  onsubmit_Setter_(mthis, __arg_0) => mthis["onsubmit"] = __arg_0;
+  onsubmit_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onsubmit", __arg_0);
 
-  onsuspend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsuspend");
+  onsuspend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onsuspend");
 
-  onsuspend_Setter_(mthis, __arg_0) => mthis["onsuspend"] = __arg_0;
+  onsuspend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onsuspend", __arg_0);
 
-  ontimeupdate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontimeupdate");
+  ontimeupdate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ontimeupdate");
 
-  ontimeupdate_Setter_(mthis, __arg_0) => mthis["ontimeupdate"] = __arg_0;
+  ontimeupdate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ontimeupdate", __arg_0);
 
-  ontoggle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontoggle");
+  ontoggle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ontoggle");
 
-  ontoggle_Setter_(mthis, __arg_0) => mthis["ontoggle"] = __arg_0;
+  ontoggle_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ontoggle", __arg_0);
 
-  onvolumechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onvolumechange");
+  onvolumechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onvolumechange");
 
-  onvolumechange_Setter_(mthis, __arg_0) => mthis["onvolumechange"] = __arg_0;
+  onvolumechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onvolumechange", __arg_0);
 
-  onwaiting_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwaiting");
+  onwaiting_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onwaiting");
 
-  onwaiting_Setter_(mthis, __arg_0) => mthis["onwaiting"] = __arg_0;
+  onwaiting_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onwaiting", __arg_0);
 
 }
 
 class BlinkHTMLEmbedElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLEmbedElement();
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLEmbedElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLEmbedElement */, "align", __arg_0);
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLEmbedElement */, "height");
 
-  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
+  height_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLEmbedElement */, "height", __arg_0);
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLEmbedElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLEmbedElement */, "name", __arg_0);
 
-  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "src");
+  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLEmbedElement */, "src");
 
-  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
+  src_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLEmbedElement */, "src", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLEmbedElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLEmbedElement */, "type", __arg_0);
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLEmbedElement */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLEmbedElement */, "width", __arg_0);
 
-  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__getter__", [__arg_0]);
+  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLEmbedElement */, "__getter__", [__arg_0]);
 
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "__setter__", [__arg_0, __arg_1]);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLEmbedElement */, "__setter__", [__arg_0, __arg_1]);
 
-  getSVGDocument_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSVGDocument", []);
+  getSVGDocument_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLEmbedElement */, "getSVGDocument", []);
 
 }
 
 class BlinkHTMLFieldSetElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLFieldSetElement();
 
-  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "disabled");
+  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFieldSetElement */, "disabled");
 
-  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
+  disabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFieldSetElement */, "disabled", __arg_0);
 
-  elements_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "elements");
+  elements_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFieldSetElement */, "elements");
 
-  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "form");
+  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFieldSetElement */, "form");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFieldSetElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFieldSetElement */, "name", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFieldSetElement */, "type");
 
-  validationMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "validationMessage");
+  validationMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFieldSetElement */, "validationMessage");
 
-  validity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "validity");
+  validity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFieldSetElement */, "validity");
 
-  willValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "willValidate");
+  willValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFieldSetElement */, "willValidate");
 
-  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "checkValidity", []);
+  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFieldSetElement */, "checkValidity", []);
 
-  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "reportValidity", []);
+  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFieldSetElement */, "reportValidity", []);
 
-  setCustomValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setCustomValidity", []);
+  setCustomValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFieldSetElement */, "setCustomValidity", []);
 
-  setCustomValidity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setCustomValidity", [__arg_0]);
+  setCustomValidity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFieldSetElement */, "setCustomValidity", [__arg_0]);
 
 }
 
 class BlinkHTMLFontElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLFontElement();
 
-  color_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "color");
+  color_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFontElement */, "color");
 
-  color_Setter_(mthis, __arg_0) => mthis["color"] = __arg_0;
+  color_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFontElement */, "color", __arg_0);
 
-  face_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "face");
+  face_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFontElement */, "face");
 
-  face_Setter_(mthis, __arg_0) => mthis["face"] = __arg_0;
+  face_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFontElement */, "face", __arg_0);
 
-  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "size");
+  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFontElement */, "size");
 
-  size_Setter_(mthis, __arg_0) => mthis["size"] = __arg_0;
+  size_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFontElement */, "size", __arg_0);
 
 }
 
 class BlinkHTMLFormControlsCollection extends BlinkHTMLCollection {
   static final instance = new BlinkHTMLFormControlsCollection();
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFormControlsCollection */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFormControlsCollection */, "item", [__arg_0]);
 
-  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", []);
+  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFormControlsCollection */, "namedItem", []);
 
-  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", [__arg_0]);
+  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFormControlsCollection */, "namedItem", [__arg_0]);
 
 }
 
 class BlinkHTMLFormElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLFormElement();
 
-  acceptCharset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "acceptCharset");
+  acceptCharset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFormElement */, "acceptCharset");
 
-  acceptCharset_Setter_(mthis, __arg_0) => mthis["acceptCharset"] = __arg_0;
+  acceptCharset_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFormElement */, "acceptCharset", __arg_0);
 
-  action_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "action");
+  action_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFormElement */, "action");
 
-  action_Setter_(mthis, __arg_0) => mthis["action"] = __arg_0;
+  action_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFormElement */, "action", __arg_0);
 
-  autocomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "autocomplete");
+  autocomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFormElement */, "autocomplete");
 
-  autocomplete_Setter_(mthis, __arg_0) => mthis["autocomplete"] = __arg_0;
+  autocomplete_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFormElement */, "autocomplete", __arg_0);
 
-  elements_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "elements");
+  elements_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFormElement */, "elements");
 
-  encoding_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "encoding");
+  encoding_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFormElement */, "encoding");
 
-  encoding_Setter_(mthis, __arg_0) => mthis["encoding"] = __arg_0;
+  encoding_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFormElement */, "encoding", __arg_0);
 
-  enctype_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "enctype");
+  enctype_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFormElement */, "enctype");
 
-  enctype_Setter_(mthis, __arg_0) => mthis["enctype"] = __arg_0;
+  enctype_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFormElement */, "enctype", __arg_0);
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFormElement */, "length");
 
-  method_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "method");
+  method_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFormElement */, "method");
 
-  method_Setter_(mthis, __arg_0) => mthis["method"] = __arg_0;
+  method_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFormElement */, "method", __arg_0);
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFormElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFormElement */, "name", __arg_0);
 
-  noValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "noValidate");
+  noValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFormElement */, "noValidate");
 
-  noValidate_Setter_(mthis, __arg_0) => mthis["noValidate"] = __arg_0;
+  noValidate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFormElement */, "noValidate", __arg_0);
 
-  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "target");
+  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFormElement */, "target");
 
-  target_Setter_(mthis, __arg_0) => mthis["target"] = __arg_0;
+  target_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFormElement */, "target", __arg_0);
 
-  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__getter__", [__arg_0]);
+  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFormElement */, "__getter__", [__arg_0]);
 
-  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "checkValidity", []);
+  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFormElement */, "checkValidity", []);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFormElement */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFormElement */, "item", [__arg_0]);
 
-  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "reportValidity", []);
+  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFormElement */, "reportValidity", []);
 
-  requestAutocomplete_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "requestAutocomplete", []);
+  requestAutocomplete_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFormElement */, "requestAutocomplete", []);
 
-  requestAutocomplete_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "requestAutocomplete", [__arg_0]);
+  requestAutocomplete_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFormElement */, "requestAutocomplete", [__arg_0]);
 
-  reset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "reset", []);
+  reset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFormElement */, "reset", []);
 
-  submit_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "submit", []);
+  submit_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFormElement */, "submit", []);
 
 }
 
 class BlinkHTMLFrameElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLFrameElement();
 
-  contentDocument_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "contentDocument");
+  contentDocument_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameElement */, "contentDocument");
 
-  contentWindow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "contentWindow");
+  contentWindow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameElement */, "contentWindow");
 
-  frameBorder_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "frameBorder");
+  frameBorder_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameElement */, "frameBorder");
 
-  frameBorder_Setter_(mthis, __arg_0) => mthis["frameBorder"] = __arg_0;
+  frameBorder_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameElement */, "frameBorder", __arg_0);
 
-  longDesc_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "longDesc");
+  longDesc_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameElement */, "longDesc");
 
-  longDesc_Setter_(mthis, __arg_0) => mthis["longDesc"] = __arg_0;
+  longDesc_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameElement */, "longDesc", __arg_0);
 
-  marginHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "marginHeight");
+  marginHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameElement */, "marginHeight");
 
-  marginHeight_Setter_(mthis, __arg_0) => mthis["marginHeight"] = __arg_0;
+  marginHeight_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameElement */, "marginHeight", __arg_0);
 
-  marginWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "marginWidth");
+  marginWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameElement */, "marginWidth");
 
-  marginWidth_Setter_(mthis, __arg_0) => mthis["marginWidth"] = __arg_0;
+  marginWidth_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameElement */, "marginWidth", __arg_0);
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameElement */, "name", __arg_0);
 
-  noResize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "noResize");
+  noResize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameElement */, "noResize");
 
-  noResize_Setter_(mthis, __arg_0) => mthis["noResize"] = __arg_0;
+  noResize_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameElement */, "noResize", __arg_0);
 
-  scrolling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scrolling");
+  scrolling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameElement */, "scrolling");
 
-  scrolling_Setter_(mthis, __arg_0) => mthis["scrolling"] = __arg_0;
+  scrolling_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameElement */, "scrolling", __arg_0);
 
-  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "src");
+  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameElement */, "src");
 
-  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
+  src_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameElement */, "src", __arg_0);
 
-  getSVGDocument_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSVGDocument", []);
+  getSVGDocument_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFrameElement */, "getSVGDocument", []);
 
 }
 
 class BlinkHTMLFrameSetElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLFrameSetElement();
 
-  cols_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cols");
+  cols_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameSetElement */, "cols");
 
-  cols_Setter_(mthis, __arg_0) => mthis["cols"] = __arg_0;
+  cols_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameSetElement */, "cols", __arg_0);
 
-  onblur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onblur");
+  onblur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameSetElement */, "onblur");
 
-  onblur_Setter_(mthis, __arg_0) => mthis["onblur"] = __arg_0;
+  onblur_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameSetElement */, "onblur", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameSetElement */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameSetElement */, "onerror", __arg_0);
 
-  onfocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onfocus");
+  onfocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameSetElement */, "onfocus");
 
-  onfocus_Setter_(mthis, __arg_0) => mthis["onfocus"] = __arg_0;
+  onfocus_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameSetElement */, "onfocus", __arg_0);
 
-  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onload");
+  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameSetElement */, "onload");
 
-  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
+  onload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameSetElement */, "onload", __arg_0);
 
-  onorientationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onorientationchange");
+  onorientationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameSetElement */, "onorientationchange");
 
-  onorientationchange_Setter_(mthis, __arg_0) => mthis["onorientationchange"] = __arg_0;
+  onorientationchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameSetElement */, "onorientationchange", __arg_0);
 
-  onresize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onresize");
+  onresize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameSetElement */, "onresize");
 
-  onresize_Setter_(mthis, __arg_0) => mthis["onresize"] = __arg_0;
+  onresize_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameSetElement */, "onresize", __arg_0);
 
-  onscroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onscroll");
+  onscroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameSetElement */, "onscroll");
 
-  onscroll_Setter_(mthis, __arg_0) => mthis["onscroll"] = __arg_0;
+  onscroll_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameSetElement */, "onscroll", __arg_0);
 
-  rows_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rows");
+  rows_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLFrameSetElement */, "rows");
 
-  rows_Setter_(mthis, __arg_0) => mthis["rows"] = __arg_0;
+  rows_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLFrameSetElement */, "rows", __arg_0);
 
-  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__getter__", [__arg_0]);
+  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLFrameSetElement */, "__getter__", [__arg_0]);
 
-  onbeforeunload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onbeforeunload");
+  onbeforeunload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onbeforeunload");
 
-  onbeforeunload_Setter_(mthis, __arg_0) => mthis["onbeforeunload"] = __arg_0;
+  onbeforeunload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onbeforeunload", __arg_0);
 
-  onhashchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onhashchange");
+  onhashchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onhashchange");
 
-  onhashchange_Setter_(mthis, __arg_0) => mthis["onhashchange"] = __arg_0;
+  onhashchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onhashchange", __arg_0);
 
-  onlanguagechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onlanguagechange");
+  onlanguagechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onlanguagechange");
 
-  onlanguagechange_Setter_(mthis, __arg_0) => mthis["onlanguagechange"] = __arg_0;
+  onlanguagechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onlanguagechange", __arg_0);
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onmessage", __arg_0);
 
-  onoffline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onoffline");
+  onoffline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onoffline");
 
-  onoffline_Setter_(mthis, __arg_0) => mthis["onoffline"] = __arg_0;
+  onoffline_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onoffline", __arg_0);
 
-  ononline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ononline");
+  ononline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "ononline");
 
-  ononline_Setter_(mthis, __arg_0) => mthis["ononline"] = __arg_0;
+  ononline_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "ononline", __arg_0);
 
-  onpagehide_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpagehide");
+  onpagehide_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onpagehide");
 
-  onpagehide_Setter_(mthis, __arg_0) => mthis["onpagehide"] = __arg_0;
+  onpagehide_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onpagehide", __arg_0);
 
-  onpageshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpageshow");
+  onpageshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onpageshow");
 
-  onpageshow_Setter_(mthis, __arg_0) => mthis["onpageshow"] = __arg_0;
+  onpageshow_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onpageshow", __arg_0);
 
-  onpopstate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpopstate");
+  onpopstate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onpopstate");
 
-  onpopstate_Setter_(mthis, __arg_0) => mthis["onpopstate"] = __arg_0;
+  onpopstate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onpopstate", __arg_0);
 
-  onrejectionhandled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onrejectionhandled");
+  onrejectionhandled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onrejectionhandled");
 
-  onrejectionhandled_Setter_(mthis, __arg_0) => mthis["onrejectionhandled"] = __arg_0;
+  onrejectionhandled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onrejectionhandled", __arg_0);
 
-  onstorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstorage");
+  onstorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onstorage");
 
-  onstorage_Setter_(mthis, __arg_0) => mthis["onstorage"] = __arg_0;
+  onstorage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onstorage", __arg_0);
 
-  onunhandledrejection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onunhandledrejection");
+  onunhandledrejection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onunhandledrejection");
 
-  onunhandledrejection_Setter_(mthis, __arg_0) => mthis["onunhandledrejection"] = __arg_0;
+  onunhandledrejection_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onunhandledrejection", __arg_0);
 
-  onunload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onunload");
+  onunload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onunload");
 
-  onunload_Setter_(mthis, __arg_0) => mthis["onunload"] = __arg_0;
+  onunload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onunload", __arg_0);
 
 }
 
 class BlinkHTMLHRElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLHRElement();
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLHRElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLHRElement */, "align", __arg_0);
 
-  color_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "color");
+  color_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLHRElement */, "color");
 
-  color_Setter_(mthis, __arg_0) => mthis["color"] = __arg_0;
+  color_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLHRElement */, "color", __arg_0);
 
-  noShade_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "noShade");
+  noShade_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLHRElement */, "noShade");
 
-  noShade_Setter_(mthis, __arg_0) => mthis["noShade"] = __arg_0;
+  noShade_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLHRElement */, "noShade", __arg_0);
 
-  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "size");
+  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLHRElement */, "size");
 
-  size_Setter_(mthis, __arg_0) => mthis["size"] = __arg_0;
+  size_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLHRElement */, "size", __arg_0);
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLHRElement */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLHRElement */, "width", __arg_0);
 
 }
 
@@ -7704,1172 +7704,1172 @@
 class BlinkHTMLHeadingElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLHeadingElement();
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLHeadingElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLHeadingElement */, "align", __arg_0);
 
 }
 
 class BlinkHTMLHtmlElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLHtmlElement();
 
-  version_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "version");
+  version_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLHtmlElement */, "version");
 
-  version_Setter_(mthis, __arg_0) => mthis["version"] = __arg_0;
+  version_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLHtmlElement */, "version", __arg_0);
 
 }
 
 class BlinkHTMLIFrameElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLIFrameElement();
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLIFrameElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLIFrameElement */, "align", __arg_0);
 
-  allowFullscreen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "allowFullscreen");
+  allowFullscreen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLIFrameElement */, "allowFullscreen");
 
-  allowFullscreen_Setter_(mthis, __arg_0) => mthis["allowFullscreen"] = __arg_0;
+  allowFullscreen_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLIFrameElement */, "allowFullscreen", __arg_0);
 
-  contentDocument_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "contentDocument");
+  contentDocument_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLIFrameElement */, "contentDocument");
 
-  contentWindow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "contentWindow");
+  contentWindow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLIFrameElement */, "contentWindow");
 
-  frameBorder_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "frameBorder");
+  frameBorder_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLIFrameElement */, "frameBorder");
 
-  frameBorder_Setter_(mthis, __arg_0) => mthis["frameBorder"] = __arg_0;
+  frameBorder_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLIFrameElement */, "frameBorder", __arg_0);
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLIFrameElement */, "height");
 
-  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
+  height_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLIFrameElement */, "height", __arg_0);
 
-  longDesc_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "longDesc");
+  longDesc_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLIFrameElement */, "longDesc");
 
-  longDesc_Setter_(mthis, __arg_0) => mthis["longDesc"] = __arg_0;
+  longDesc_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLIFrameElement */, "longDesc", __arg_0);
 
-  marginHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "marginHeight");
+  marginHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLIFrameElement */, "marginHeight");
 
-  marginHeight_Setter_(mthis, __arg_0) => mthis["marginHeight"] = __arg_0;
+  marginHeight_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLIFrameElement */, "marginHeight", __arg_0);
 
-  marginWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "marginWidth");
+  marginWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLIFrameElement */, "marginWidth");
 
-  marginWidth_Setter_(mthis, __arg_0) => mthis["marginWidth"] = __arg_0;
+  marginWidth_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLIFrameElement */, "marginWidth", __arg_0);
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLIFrameElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLIFrameElement */, "name", __arg_0);
 
-  sandbox_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sandbox");
+  sandbox_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLIFrameElement */, "sandbox");
 
-  scrolling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scrolling");
+  scrolling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLIFrameElement */, "scrolling");
 
-  scrolling_Setter_(mthis, __arg_0) => mthis["scrolling"] = __arg_0;
+  scrolling_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLIFrameElement */, "scrolling", __arg_0);
 
-  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "src");
+  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLIFrameElement */, "src");
 
-  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
+  src_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLIFrameElement */, "src", __arg_0);
 
-  srcdoc_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "srcdoc");
+  srcdoc_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLIFrameElement */, "srcdoc");
 
-  srcdoc_Setter_(mthis, __arg_0) => mthis["srcdoc"] = __arg_0;
+  srcdoc_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLIFrameElement */, "srcdoc", __arg_0);
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLIFrameElement */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLIFrameElement */, "width", __arg_0);
 
-  getSVGDocument_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSVGDocument", []);
+  getSVGDocument_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLIFrameElement */, "getSVGDocument", []);
 
 }
 
 class BlinkHTMLImageElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLImageElement();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Image"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("Image");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Image"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("Image", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Image"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("Image", [__arg_0, __arg_1]);
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLImageElement */, "align", __arg_0);
 
-  alt_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "alt");
+  alt_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "alt");
 
-  alt_Setter_(mthis, __arg_0) => mthis["alt"] = __arg_0;
+  alt_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLImageElement */, "alt", __arg_0);
 
-  border_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "border");
+  border_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "border");
 
-  border_Setter_(mthis, __arg_0) => mthis["border"] = __arg_0;
+  border_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLImageElement */, "border", __arg_0);
 
-  complete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "complete");
+  complete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "complete");
 
-  crossOrigin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "crossOrigin");
+  crossOrigin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "crossOrigin");
 
-  crossOrigin_Setter_(mthis, __arg_0) => mthis["crossOrigin"] = __arg_0;
+  crossOrigin_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLImageElement */, "crossOrigin", __arg_0);
 
-  currentSrc_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "currentSrc");
+  currentSrc_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "currentSrc");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "height");
 
-  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
+  height_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLImageElement */, "height", __arg_0);
 
-  hspace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hspace");
+  hspace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "hspace");
 
-  hspace_Setter_(mthis, __arg_0) => mthis["hspace"] = __arg_0;
+  hspace_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLImageElement */, "hspace", __arg_0);
 
-  isMap_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "isMap");
+  isMap_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "isMap");
 
-  isMap_Setter_(mthis, __arg_0) => mthis["isMap"] = __arg_0;
+  isMap_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLImageElement */, "isMap", __arg_0);
 
-  longDesc_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "longDesc");
+  longDesc_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "longDesc");
 
-  longDesc_Setter_(mthis, __arg_0) => mthis["longDesc"] = __arg_0;
+  longDesc_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLImageElement */, "longDesc", __arg_0);
 
-  lowsrc_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lowsrc");
+  lowsrc_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "lowsrc");
 
-  lowsrc_Setter_(mthis, __arg_0) => mthis["lowsrc"] = __arg_0;
+  lowsrc_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLImageElement */, "lowsrc", __arg_0);
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLImageElement */, "name", __arg_0);
 
-  naturalHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "naturalHeight");
+  naturalHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "naturalHeight");
 
-  naturalWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "naturalWidth");
+  naturalWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "naturalWidth");
 
-  sizes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sizes");
+  sizes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "sizes");
 
-  sizes_Setter_(mthis, __arg_0) => mthis["sizes"] = __arg_0;
+  sizes_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLImageElement */, "sizes", __arg_0);
 
-  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "src");
+  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "src");
 
-  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
+  src_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLImageElement */, "src", __arg_0);
 
-  srcset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "srcset");
+  srcset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "srcset");
 
-  srcset_Setter_(mthis, __arg_0) => mthis["srcset"] = __arg_0;
+  srcset_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLImageElement */, "srcset", __arg_0);
 
-  useMap_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "useMap");
+  useMap_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "useMap");
 
-  useMap_Setter_(mthis, __arg_0) => mthis["useMap"] = __arg_0;
+  useMap_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLImageElement */, "useMap", __arg_0);
 
-  vspace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "vspace");
+  vspace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "vspace");
 
-  vspace_Setter_(mthis, __arg_0) => mthis["vspace"] = __arg_0;
+  vspace_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLImageElement */, "vspace", __arg_0);
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLImageElement */, "width", __arg_0);
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLImageElement */, "y");
 
 }
 
 class BlinkHTMLInputElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLInputElement();
 
-  accept_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "accept");
+  accept_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "accept");
 
-  accept_Setter_(mthis, __arg_0) => mthis["accept"] = __arg_0;
+  accept_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "accept", __arg_0);
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "align", __arg_0);
 
-  alt_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "alt");
+  alt_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "alt");
 
-  alt_Setter_(mthis, __arg_0) => mthis["alt"] = __arg_0;
+  alt_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "alt", __arg_0);
 
-  autocapitalize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "autocapitalize");
+  autocapitalize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "autocapitalize");
 
-  autocapitalize_Setter_(mthis, __arg_0) => mthis["autocapitalize"] = __arg_0;
+  autocapitalize_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "autocapitalize", __arg_0);
 
-  autocomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "autocomplete");
+  autocomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "autocomplete");
 
-  autocomplete_Setter_(mthis, __arg_0) => mthis["autocomplete"] = __arg_0;
+  autocomplete_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "autocomplete", __arg_0);
 
-  autofocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "autofocus");
+  autofocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "autofocus");
 
-  autofocus_Setter_(mthis, __arg_0) => mthis["autofocus"] = __arg_0;
+  autofocus_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "autofocus", __arg_0);
 
-  capture_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "capture");
+  capture_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "capture");
 
-  capture_Setter_(mthis, __arg_0) => mthis["capture"] = __arg_0;
+  capture_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "capture", __arg_0);
 
-  checked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "checked");
+  checked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "checked");
 
-  checked_Setter_(mthis, __arg_0) => mthis["checked"] = __arg_0;
+  checked_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "checked", __arg_0);
 
-  defaultChecked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "defaultChecked");
+  defaultChecked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "defaultChecked");
 
-  defaultChecked_Setter_(mthis, __arg_0) => mthis["defaultChecked"] = __arg_0;
+  defaultChecked_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "defaultChecked", __arg_0);
 
-  defaultValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "defaultValue");
+  defaultValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "defaultValue");
 
-  defaultValue_Setter_(mthis, __arg_0) => mthis["defaultValue"] = __arg_0;
+  defaultValue_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "defaultValue", __arg_0);
 
-  dirName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dirName");
+  dirName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "dirName");
 
-  dirName_Setter_(mthis, __arg_0) => mthis["dirName"] = __arg_0;
+  dirName_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "dirName", __arg_0);
 
-  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "disabled");
+  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "disabled");
 
-  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
+  disabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "disabled", __arg_0);
 
-  files_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "files");
+  files_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "files");
 
-  files_Setter_(mthis, __arg_0) => mthis["files"] = __arg_0;
+  files_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "files", __arg_0);
 
-  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "form");
+  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "form");
 
-  formAction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "formAction");
+  formAction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "formAction");
 
-  formAction_Setter_(mthis, __arg_0) => mthis["formAction"] = __arg_0;
+  formAction_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "formAction", __arg_0);
 
-  formEnctype_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "formEnctype");
+  formEnctype_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "formEnctype");
 
-  formEnctype_Setter_(mthis, __arg_0) => mthis["formEnctype"] = __arg_0;
+  formEnctype_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "formEnctype", __arg_0);
 
-  formMethod_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "formMethod");
+  formMethod_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "formMethod");
 
-  formMethod_Setter_(mthis, __arg_0) => mthis["formMethod"] = __arg_0;
+  formMethod_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "formMethod", __arg_0);
 
-  formNoValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "formNoValidate");
+  formNoValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "formNoValidate");
 
-  formNoValidate_Setter_(mthis, __arg_0) => mthis["formNoValidate"] = __arg_0;
+  formNoValidate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "formNoValidate", __arg_0);
 
-  formTarget_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "formTarget");
+  formTarget_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "formTarget");
 
-  formTarget_Setter_(mthis, __arg_0) => mthis["formTarget"] = __arg_0;
+  formTarget_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "formTarget", __arg_0);
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "height");
 
-  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
+  height_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "height", __arg_0);
 
-  incremental_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "incremental");
+  incremental_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "incremental");
 
-  incremental_Setter_(mthis, __arg_0) => mthis["incremental"] = __arg_0;
+  incremental_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "incremental", __arg_0);
 
-  indeterminate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "indeterminate");
+  indeterminate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "indeterminate");
 
-  indeterminate_Setter_(mthis, __arg_0) => mthis["indeterminate"] = __arg_0;
+  indeterminate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "indeterminate", __arg_0);
 
-  inputMode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "inputMode");
+  inputMode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "inputMode");
 
-  inputMode_Setter_(mthis, __arg_0) => mthis["inputMode"] = __arg_0;
+  inputMode_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "inputMode", __arg_0);
 
-  labels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "labels");
+  labels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "labels");
 
-  list_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "list");
+  list_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "list");
 
-  max_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "max");
+  max_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "max");
 
-  max_Setter_(mthis, __arg_0) => mthis["max"] = __arg_0;
+  max_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "max", __arg_0);
 
-  maxLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "maxLength");
+  maxLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "maxLength");
 
-  maxLength_Setter_(mthis, __arg_0) => mthis["maxLength"] = __arg_0;
+  maxLength_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "maxLength", __arg_0);
 
-  min_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "min");
+  min_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "min");
 
-  min_Setter_(mthis, __arg_0) => mthis["min"] = __arg_0;
+  min_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "min", __arg_0);
 
-  minLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "minLength");
+  minLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "minLength");
 
-  minLength_Setter_(mthis, __arg_0) => mthis["minLength"] = __arg_0;
+  minLength_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "minLength", __arg_0);
 
-  multiple_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "multiple");
+  multiple_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "multiple");
 
-  multiple_Setter_(mthis, __arg_0) => mthis["multiple"] = __arg_0;
+  multiple_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "multiple", __arg_0);
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "name", __arg_0);
 
-  pattern_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pattern");
+  pattern_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "pattern");
 
-  pattern_Setter_(mthis, __arg_0) => mthis["pattern"] = __arg_0;
+  pattern_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "pattern", __arg_0);
 
-  placeholder_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "placeholder");
+  placeholder_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "placeholder");
 
-  placeholder_Setter_(mthis, __arg_0) => mthis["placeholder"] = __arg_0;
+  placeholder_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "placeholder", __arg_0);
 
-  readOnly_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "readOnly");
+  readOnly_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "readOnly");
 
-  readOnly_Setter_(mthis, __arg_0) => mthis["readOnly"] = __arg_0;
+  readOnly_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "readOnly", __arg_0);
 
-  required_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "required");
+  required_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "required");
 
-  required_Setter_(mthis, __arg_0) => mthis["required"] = __arg_0;
+  required_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "required", __arg_0);
 
-  selectionDirection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "selectionDirection");
+  selectionDirection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "selectionDirection");
 
-  selectionDirection_Setter_(mthis, __arg_0) => mthis["selectionDirection"] = __arg_0;
+  selectionDirection_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "selectionDirection", __arg_0);
 
-  selectionEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "selectionEnd");
+  selectionEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "selectionEnd");
 
-  selectionEnd_Setter_(mthis, __arg_0) => mthis["selectionEnd"] = __arg_0;
+  selectionEnd_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "selectionEnd", __arg_0);
 
-  selectionStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "selectionStart");
+  selectionStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "selectionStart");
 
-  selectionStart_Setter_(mthis, __arg_0) => mthis["selectionStart"] = __arg_0;
+  selectionStart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "selectionStart", __arg_0);
 
-  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "size");
+  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "size");
 
-  size_Setter_(mthis, __arg_0) => mthis["size"] = __arg_0;
+  size_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "size", __arg_0);
 
-  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "src");
+  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "src");
 
-  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
+  src_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "src", __arg_0);
 
-  step_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "step");
+  step_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "step");
 
-  step_Setter_(mthis, __arg_0) => mthis["step"] = __arg_0;
+  step_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "step", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "type", __arg_0);
 
-  useMap_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "useMap");
+  useMap_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "useMap");
 
-  useMap_Setter_(mthis, __arg_0) => mthis["useMap"] = __arg_0;
+  useMap_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "useMap", __arg_0);
 
-  validationMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "validationMessage");
+  validationMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "validationMessage");
 
-  validity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "validity");
+  validity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "validity");
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "value", __arg_0);
 
-  valueAsDate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "valueAsDate");
+  valueAsDate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "valueAsDate");
 
-  valueAsDate_Setter_(mthis, __arg_0) => mthis["valueAsDate"] = __arg_0;
+  valueAsDate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "valueAsDate", __arg_0);
 
-  valueAsNumber_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "valueAsNumber");
+  valueAsNumber_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "valueAsNumber");
 
-  valueAsNumber_Setter_(mthis, __arg_0) => mthis["valueAsNumber"] = __arg_0;
+  valueAsNumber_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "valueAsNumber", __arg_0);
 
-  webkitEntries_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitEntries");
+  webkitEntries_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "webkitEntries");
 
-  webkitdirectory_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitdirectory");
+  webkitdirectory_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "webkitdirectory");
 
-  webkitdirectory_Setter_(mthis, __arg_0) => mthis["webkitdirectory"] = __arg_0;
+  webkitdirectory_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "webkitdirectory", __arg_0);
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLInputElement */, "width", __arg_0);
 
-  willValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "willValidate");
+  willValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLInputElement */, "willValidate");
 
-  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "checkValidity", []);
+  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "checkValidity", []);
 
-  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "reportValidity", []);
+  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "reportValidity", []);
 
-  select_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "select", []);
+  select_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "select", []);
 
-  setCustomValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setCustomValidity", []);
+  setCustomValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "setCustomValidity", []);
 
-  setCustomValidity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setCustomValidity", [__arg_0]);
+  setCustomValidity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "setCustomValidity", [__arg_0]);
 
-  setRangeText_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setRangeText", []);
+  setRangeText_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "setRangeText", []);
 
-  setRangeText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setRangeText", [__arg_0]);
+  setRangeText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "setRangeText", [__arg_0]);
 
-  setRangeText_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setRangeText", [__arg_0, __arg_1]);
+  setRangeText_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "setRangeText", [__arg_0, __arg_1]);
 
-  setRangeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setRangeText", [__arg_0, __arg_1, __arg_2]);
+  setRangeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "setRangeText", [__arg_0, __arg_1, __arg_2]);
 
-  setRangeText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "setRangeText", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  setRangeText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "setRangeText", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  setSelectionRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setSelectionRange", []);
+  setSelectionRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "setSelectionRange", []);
 
-  setSelectionRange_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setSelectionRange", [__arg_0]);
+  setSelectionRange_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "setSelectionRange", [__arg_0]);
 
-  setSelectionRange_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setSelectionRange", [__arg_0, __arg_1]);
+  setSelectionRange_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "setSelectionRange", [__arg_0, __arg_1]);
 
-  setSelectionRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setSelectionRange", [__arg_0, __arg_1, __arg_2]);
+  setSelectionRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "setSelectionRange", [__arg_0, __arg_1, __arg_2]);
 
-  stepDown_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stepDown", []);
+  stepDown_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "stepDown", []);
 
-  stepDown_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stepDown", [__arg_0]);
+  stepDown_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "stepDown", [__arg_0]);
 
-  stepUp_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stepUp", []);
+  stepUp_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "stepUp", []);
 
-  stepUp_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stepUp", [__arg_0]);
+  stepUp_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLInputElement */, "stepUp", [__arg_0]);
 
 }
 
 class BlinkHTMLKeygenElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLKeygenElement();
 
-  autofocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "autofocus");
+  autofocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLKeygenElement */, "autofocus");
 
-  autofocus_Setter_(mthis, __arg_0) => mthis["autofocus"] = __arg_0;
+  autofocus_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLKeygenElement */, "autofocus", __arg_0);
 
-  challenge_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "challenge");
+  challenge_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLKeygenElement */, "challenge");
 
-  challenge_Setter_(mthis, __arg_0) => mthis["challenge"] = __arg_0;
+  challenge_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLKeygenElement */, "challenge", __arg_0);
 
-  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "disabled");
+  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLKeygenElement */, "disabled");
 
-  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
+  disabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLKeygenElement */, "disabled", __arg_0);
 
-  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "form");
+  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLKeygenElement */, "form");
 
-  keytype_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "keytype");
+  keytype_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLKeygenElement */, "keytype");
 
-  keytype_Setter_(mthis, __arg_0) => mthis["keytype"] = __arg_0;
+  keytype_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLKeygenElement */, "keytype", __arg_0);
 
-  labels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "labels");
+  labels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLKeygenElement */, "labels");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLKeygenElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLKeygenElement */, "name", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLKeygenElement */, "type");
 
-  validationMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "validationMessage");
+  validationMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLKeygenElement */, "validationMessage");
 
-  validity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "validity");
+  validity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLKeygenElement */, "validity");
 
-  willValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "willValidate");
+  willValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLKeygenElement */, "willValidate");
 
-  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "checkValidity", []);
+  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLKeygenElement */, "checkValidity", []);
 
-  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "reportValidity", []);
+  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLKeygenElement */, "reportValidity", []);
 
-  setCustomValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setCustomValidity", []);
+  setCustomValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLKeygenElement */, "setCustomValidity", []);
 
-  setCustomValidity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setCustomValidity", [__arg_0]);
+  setCustomValidity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLKeygenElement */, "setCustomValidity", [__arg_0]);
 
 }
 
 class BlinkHTMLLIElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLLIElement();
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLIElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLLIElement */, "type", __arg_0);
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLIElement */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLLIElement */, "value", __arg_0);
 
 }
 
 class BlinkHTMLLabelElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLLabelElement();
 
-  control_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "control");
+  control_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLabelElement */, "control");
 
-  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "form");
+  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLabelElement */, "form");
 
-  htmlFor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "htmlFor");
+  htmlFor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLabelElement */, "htmlFor");
 
-  htmlFor_Setter_(mthis, __arg_0) => mthis["htmlFor"] = __arg_0;
+  htmlFor_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLLabelElement */, "htmlFor", __arg_0);
 
 }
 
 class BlinkHTMLLegendElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLLegendElement();
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLegendElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLLegendElement */, "align", __arg_0);
 
-  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "form");
+  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLegendElement */, "form");
 
 }
 
 class BlinkHTMLLinkElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLLinkElement();
 
-  charset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "charset");
+  charset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLinkElement */, "charset");
 
-  charset_Setter_(mthis, __arg_0) => mthis["charset"] = __arg_0;
+  charset_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLLinkElement */, "charset", __arg_0);
 
-  crossOrigin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "crossOrigin");
+  crossOrigin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLinkElement */, "crossOrigin");
 
-  crossOrigin_Setter_(mthis, __arg_0) => mthis["crossOrigin"] = __arg_0;
+  crossOrigin_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLLinkElement */, "crossOrigin", __arg_0);
 
-  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "disabled");
+  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLinkElement */, "disabled");
 
-  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
+  disabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLLinkElement */, "disabled", __arg_0);
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLinkElement */, "href");
 
-  href_Setter_(mthis, __arg_0) => mthis["href"] = __arg_0;
+  href_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLLinkElement */, "href", __arg_0);
 
-  hreflang_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hreflang");
+  hreflang_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLinkElement */, "hreflang");
 
-  hreflang_Setter_(mthis, __arg_0) => mthis["hreflang"] = __arg_0;
+  hreflang_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLLinkElement */, "hreflang", __arg_0);
 
-  import_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "import");
+  import_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLinkElement */, "import");
 
-  integrity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "integrity");
+  integrity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLinkElement */, "integrity");
 
-  integrity_Setter_(mthis, __arg_0) => mthis["integrity"] = __arg_0;
+  integrity_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLLinkElement */, "integrity", __arg_0);
 
-  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "media");
+  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLinkElement */, "media");
 
-  media_Setter_(mthis, __arg_0) => mthis["media"] = __arg_0;
+  media_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLLinkElement */, "media", __arg_0);
 
-  rel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rel");
+  rel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLinkElement */, "rel");
 
-  rel_Setter_(mthis, __arg_0) => mthis["rel"] = __arg_0;
+  rel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLLinkElement */, "rel", __arg_0);
 
-  rev_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rev");
+  rev_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLinkElement */, "rev");
 
-  rev_Setter_(mthis, __arg_0) => mthis["rev"] = __arg_0;
+  rev_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLLinkElement */, "rev", __arg_0);
 
-  sheet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sheet");
+  sheet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLinkElement */, "sheet");
 
-  sizes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sizes");
+  sizes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLinkElement */, "sizes");
 
-  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "target");
+  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLinkElement */, "target");
 
-  target_Setter_(mthis, __arg_0) => mthis["target"] = __arg_0;
+  target_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLLinkElement */, "target", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLLinkElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLLinkElement */, "type", __arg_0);
 
 }
 
 class BlinkHTMLMapElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLMapElement();
 
-  areas_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "areas");
+  areas_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMapElement */, "areas");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMapElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMapElement */, "name", __arg_0);
 
 }
 
 class BlinkHTMLMarqueeElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLMarqueeElement();
 
-  behavior_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "behavior");
+  behavior_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMarqueeElement */, "behavior");
 
-  behavior_Setter_(mthis, __arg_0) => mthis["behavior"] = __arg_0;
+  behavior_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMarqueeElement */, "behavior", __arg_0);
 
-  bgColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "bgColor");
+  bgColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMarqueeElement */, "bgColor");
 
-  bgColor_Setter_(mthis, __arg_0) => mthis["bgColor"] = __arg_0;
+  bgColor_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMarqueeElement */, "bgColor", __arg_0);
 
-  direction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "direction");
+  direction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMarqueeElement */, "direction");
 
-  direction_Setter_(mthis, __arg_0) => mthis["direction"] = __arg_0;
+  direction_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMarqueeElement */, "direction", __arg_0);
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMarqueeElement */, "height");
 
-  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
+  height_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMarqueeElement */, "height", __arg_0);
 
-  hspace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hspace");
+  hspace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMarqueeElement */, "hspace");
 
-  hspace_Setter_(mthis, __arg_0) => mthis["hspace"] = __arg_0;
+  hspace_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMarqueeElement */, "hspace", __arg_0);
 
-  loop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "loop");
+  loop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMarqueeElement */, "loop");
 
-  loop_Setter_(mthis, __arg_0) => mthis["loop"] = __arg_0;
+  loop_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMarqueeElement */, "loop", __arg_0);
 
-  scrollAmount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scrollAmount");
+  scrollAmount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMarqueeElement */, "scrollAmount");
 
-  scrollAmount_Setter_(mthis, __arg_0) => mthis["scrollAmount"] = __arg_0;
+  scrollAmount_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMarqueeElement */, "scrollAmount", __arg_0);
 
-  scrollDelay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scrollDelay");
+  scrollDelay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMarqueeElement */, "scrollDelay");
 
-  scrollDelay_Setter_(mthis, __arg_0) => mthis["scrollDelay"] = __arg_0;
+  scrollDelay_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMarqueeElement */, "scrollDelay", __arg_0);
 
-  trueSpeed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "trueSpeed");
+  trueSpeed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMarqueeElement */, "trueSpeed");
 
-  trueSpeed_Setter_(mthis, __arg_0) => mthis["trueSpeed"] = __arg_0;
+  trueSpeed_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMarqueeElement */, "trueSpeed", __arg_0);
 
-  vspace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "vspace");
+  vspace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMarqueeElement */, "vspace");
 
-  vspace_Setter_(mthis, __arg_0) => mthis["vspace"] = __arg_0;
+  vspace_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMarqueeElement */, "vspace", __arg_0);
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMarqueeElement */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMarqueeElement */, "width", __arg_0);
 
-  attachedCallback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "attachedCallback", []);
+  attachedCallback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMarqueeElement */, "attachedCallback", []);
 
-  attributeChangedCallback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "attributeChangedCallback", [__arg_0]);
+  attributeChangedCallback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMarqueeElement */, "attributeChangedCallback", [__arg_0]);
 
-  attributeChangedCallback_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "attributeChangedCallback", [__arg_0, __arg_1]);
+  attributeChangedCallback_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMarqueeElement */, "attributeChangedCallback", [__arg_0, __arg_1]);
 
-  attributeChangedCallback_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "attributeChangedCallback", [__arg_0, __arg_1, __arg_2]);
+  attributeChangedCallback_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMarqueeElement */, "attributeChangedCallback", [__arg_0, __arg_1, __arg_2]);
 
-  createdCallback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createdCallback", []);
+  createdCallback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMarqueeElement */, "createdCallback", []);
 
-  detachedCallback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "detachedCallback", []);
+  detachedCallback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMarqueeElement */, "detachedCallback", []);
 
-  start_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "start", []);
+  start_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMarqueeElement */, "start", []);
 
-  stop_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stop", []);
+  stop_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMarqueeElement */, "stop", []);
 
 }
 
 class BlinkHTMLMediaElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLMediaElement();
 
-  audioTracks_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "audioTracks");
+  audioTracks_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "audioTracks");
 
-  autoplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "autoplay");
+  autoplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "autoplay");
 
-  autoplay_Setter_(mthis, __arg_0) => mthis["autoplay"] = __arg_0;
+  autoplay_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "autoplay", __arg_0);
 
-  buffered_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "buffered");
+  buffered_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "buffered");
 
-  controller_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "controller");
+  controller_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "controller");
 
-  controller_Setter_(mthis, __arg_0) => mthis["controller"] = __arg_0;
+  controller_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "controller", __arg_0);
 
-  controls_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "controls");
+  controls_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "controls");
 
-  controls_Setter_(mthis, __arg_0) => mthis["controls"] = __arg_0;
+  controls_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "controls", __arg_0);
 
-  crossOrigin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "crossOrigin");
+  crossOrigin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "crossOrigin");
 
-  crossOrigin_Setter_(mthis, __arg_0) => mthis["crossOrigin"] = __arg_0;
+  crossOrigin_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "crossOrigin", __arg_0);
 
-  currentSrc_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "currentSrc");
+  currentSrc_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "currentSrc");
 
-  currentTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "currentTime");
+  currentTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "currentTime");
 
-  currentTime_Setter_(mthis, __arg_0) => mthis["currentTime"] = __arg_0;
+  currentTime_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "currentTime", __arg_0);
 
-  defaultMuted_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "defaultMuted");
+  defaultMuted_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "defaultMuted");
 
-  defaultMuted_Setter_(mthis, __arg_0) => mthis["defaultMuted"] = __arg_0;
+  defaultMuted_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "defaultMuted", __arg_0);
 
-  defaultPlaybackRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "defaultPlaybackRate");
+  defaultPlaybackRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "defaultPlaybackRate");
 
-  defaultPlaybackRate_Setter_(mthis, __arg_0) => mthis["defaultPlaybackRate"] = __arg_0;
+  defaultPlaybackRate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "defaultPlaybackRate", __arg_0);
 
-  duration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "duration");
+  duration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "duration");
 
-  ended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ended");
+  ended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "ended");
 
-  error_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "error");
+  error_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "error");
 
-  loop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "loop");
+  loop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "loop");
 
-  loop_Setter_(mthis, __arg_0) => mthis["loop"] = __arg_0;
+  loop_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "loop", __arg_0);
 
-  mediaGroup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "mediaGroup");
+  mediaGroup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "mediaGroup");
 
-  mediaGroup_Setter_(mthis, __arg_0) => mthis["mediaGroup"] = __arg_0;
+  mediaGroup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "mediaGroup", __arg_0);
 
-  mediaKeys_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "mediaKeys");
+  mediaKeys_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "mediaKeys");
 
-  muted_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "muted");
+  muted_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "muted");
 
-  muted_Setter_(mthis, __arg_0) => mthis["muted"] = __arg_0;
+  muted_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "muted", __arg_0);
 
-  networkState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "networkState");
+  networkState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "networkState");
 
-  onencrypted_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onencrypted");
+  onencrypted_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "onencrypted");
 
-  onencrypted_Setter_(mthis, __arg_0) => mthis["onencrypted"] = __arg_0;
+  onencrypted_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "onencrypted", __arg_0);
 
-  onwebkitkeyadded_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwebkitkeyadded");
+  onwebkitkeyadded_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "onwebkitkeyadded");
 
-  onwebkitkeyadded_Setter_(mthis, __arg_0) => mthis["onwebkitkeyadded"] = __arg_0;
+  onwebkitkeyadded_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "onwebkitkeyadded", __arg_0);
 
-  onwebkitkeyerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwebkitkeyerror");
+  onwebkitkeyerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "onwebkitkeyerror");
 
-  onwebkitkeyerror_Setter_(mthis, __arg_0) => mthis["onwebkitkeyerror"] = __arg_0;
+  onwebkitkeyerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "onwebkitkeyerror", __arg_0);
 
-  onwebkitkeymessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwebkitkeymessage");
+  onwebkitkeymessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "onwebkitkeymessage");
 
-  onwebkitkeymessage_Setter_(mthis, __arg_0) => mthis["onwebkitkeymessage"] = __arg_0;
+  onwebkitkeymessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "onwebkitkeymessage", __arg_0);
 
-  onwebkitneedkey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwebkitneedkey");
+  onwebkitneedkey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "onwebkitneedkey");
 
-  onwebkitneedkey_Setter_(mthis, __arg_0) => mthis["onwebkitneedkey"] = __arg_0;
+  onwebkitneedkey_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "onwebkitneedkey", __arg_0);
 
-  paused_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "paused");
+  paused_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "paused");
 
-  playbackRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "playbackRate");
+  playbackRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "playbackRate");
 
-  playbackRate_Setter_(mthis, __arg_0) => mthis["playbackRate"] = __arg_0;
+  playbackRate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "playbackRate", __arg_0);
 
-  played_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "played");
+  played_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "played");
 
-  preload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "preload");
+  preload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "preload");
 
-  preload_Setter_(mthis, __arg_0) => mthis["preload"] = __arg_0;
+  preload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "preload", __arg_0);
 
-  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "readyState");
+  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "readyState");
 
-  seekable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "seekable");
+  seekable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "seekable");
 
-  seeking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "seeking");
+  seeking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "seeking");
 
-  session_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "session");
+  session_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "session");
 
-  session_Setter_(mthis, __arg_0) => mthis["session"] = __arg_0;
+  session_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "session", __arg_0);
 
-  sinkId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sinkId");
+  sinkId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "sinkId");
 
-  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "src");
+  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "src");
 
-  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
+  src_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "src", __arg_0);
 
-  textTracks_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "textTracks");
+  textTracks_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "textTracks");
 
-  videoTracks_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "videoTracks");
+  videoTracks_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "videoTracks");
 
-  volume_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "volume");
+  volume_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "volume");
 
-  volume_Setter_(mthis, __arg_0) => mthis["volume"] = __arg_0;
+  volume_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMediaElement */, "volume", __arg_0);
 
-  webkitAudioDecodedByteCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitAudioDecodedByteCount");
+  webkitAudioDecodedByteCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "webkitAudioDecodedByteCount");
 
-  webkitVideoDecodedByteCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitVideoDecodedByteCount");
+  webkitVideoDecodedByteCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMediaElement */, "webkitVideoDecodedByteCount");
 
-  addTextTrack_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "addTextTrack", []);
+  addTextTrack_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "addTextTrack", []);
 
-  addTextTrack_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addTextTrack", [__arg_0]);
+  addTextTrack_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "addTextTrack", [__arg_0]);
 
-  addTextTrack_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "addTextTrack", [__arg_0, __arg_1]);
+  addTextTrack_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "addTextTrack", [__arg_0, __arg_1]);
 
-  addTextTrack_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "addTextTrack", [__arg_0, __arg_1, __arg_2]);
+  addTextTrack_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "addTextTrack", [__arg_0, __arg_1, __arg_2]);
 
-  canPlayType_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "canPlayType", []);
+  canPlayType_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "canPlayType", []);
 
-  canPlayType_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "canPlayType", [__arg_0]);
+  canPlayType_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "canPlayType", [__arg_0]);
 
-  canPlayType_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "canPlayType", [__arg_0, __arg_1]);
+  canPlayType_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "canPlayType", [__arg_0, __arg_1]);
 
-  load_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "load", []);
+  load_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "load", []);
 
-  pause_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "pause", []);
+  pause_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "pause", []);
 
-  play_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "play", []);
+  play_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "play", []);
 
-  setMediaKeys_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setMediaKeys", []);
+  setMediaKeys_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "setMediaKeys", []);
 
-  setMediaKeys_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setMediaKeys", [__arg_0]);
+  setMediaKeys_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "setMediaKeys", [__arg_0]);
 
-  setSinkId_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setSinkId", []);
+  setSinkId_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "setSinkId", []);
 
-  setSinkId_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setSinkId", [__arg_0]);
+  setSinkId_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "setSinkId", [__arg_0]);
 
-  webkitAddKey_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitAddKey", []);
+  webkitAddKey_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "webkitAddKey", []);
 
-  webkitAddKey_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "webkitAddKey", [__arg_0]);
+  webkitAddKey_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "webkitAddKey", [__arg_0]);
 
-  webkitAddKey_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "webkitAddKey", [__arg_0, __arg_1]);
+  webkitAddKey_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "webkitAddKey", [__arg_0, __arg_1]);
 
-  webkitAddKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "webkitAddKey", [__arg_0, __arg_1, __arg_2]);
+  webkitAddKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "webkitAddKey", [__arg_0, __arg_1, __arg_2]);
 
-  webkitAddKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "webkitAddKey", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  webkitAddKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "webkitAddKey", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  webkitCancelKeyRequest_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitCancelKeyRequest", []);
+  webkitCancelKeyRequest_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "webkitCancelKeyRequest", []);
 
-  webkitCancelKeyRequest_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "webkitCancelKeyRequest", [__arg_0]);
+  webkitCancelKeyRequest_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "webkitCancelKeyRequest", [__arg_0]);
 
-  webkitCancelKeyRequest_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "webkitCancelKeyRequest", [__arg_0, __arg_1]);
+  webkitCancelKeyRequest_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "webkitCancelKeyRequest", [__arg_0, __arg_1]);
 
-  webkitGenerateKeyRequest_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitGenerateKeyRequest", []);
+  webkitGenerateKeyRequest_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "webkitGenerateKeyRequest", []);
 
-  webkitGenerateKeyRequest_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "webkitGenerateKeyRequest", [__arg_0]);
+  webkitGenerateKeyRequest_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "webkitGenerateKeyRequest", [__arg_0]);
 
-  webkitGenerateKeyRequest_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "webkitGenerateKeyRequest", [__arg_0, __arg_1]);
+  webkitGenerateKeyRequest_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLMediaElement */, "webkitGenerateKeyRequest", [__arg_0, __arg_1]);
 
 }
 
 class BlinkHTMLMenuElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLMenuElement();
 
-  compact_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "compact");
+  compact_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMenuElement */, "compact");
 
-  compact_Setter_(mthis, __arg_0) => mthis["compact"] = __arg_0;
+  compact_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMenuElement */, "compact", __arg_0);
 
-  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "label");
+  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMenuElement */, "label");
 
-  label_Setter_(mthis, __arg_0) => mthis["label"] = __arg_0;
+  label_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMenuElement */, "label", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMenuElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMenuElement */, "type", __arg_0);
 
 }
 
 class BlinkHTMLMenuItemElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLMenuItemElement();
 
-  checked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "checked");
+  checked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMenuItemElement */, "checked");
 
-  checked_Setter_(mthis, __arg_0) => mthis["checked"] = __arg_0;
+  checked_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMenuItemElement */, "checked", __arg_0);
 
-  default_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "default");
+  default_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMenuItemElement */, "default");
 
-  default_Setter_(mthis, __arg_0) => mthis["default"] = __arg_0;
+  default_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMenuItemElement */, "default", __arg_0);
 
-  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "disabled");
+  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMenuItemElement */, "disabled");
 
-  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
+  disabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMenuItemElement */, "disabled", __arg_0);
 
-  icon_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "icon");
+  icon_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMenuItemElement */, "icon");
 
-  icon_Setter_(mthis, __arg_0) => mthis["icon"] = __arg_0;
+  icon_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMenuItemElement */, "icon", __arg_0);
 
-  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "label");
+  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMenuItemElement */, "label");
 
-  label_Setter_(mthis, __arg_0) => mthis["label"] = __arg_0;
+  label_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMenuItemElement */, "label", __arg_0);
 
-  radiogroup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "radiogroup");
+  radiogroup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMenuItemElement */, "radiogroup");
 
-  radiogroup_Setter_(mthis, __arg_0) => mthis["radiogroup"] = __arg_0;
+  radiogroup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMenuItemElement */, "radiogroup", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMenuItemElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMenuItemElement */, "type", __arg_0);
 
 }
 
 class BlinkHTMLMetaElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLMetaElement();
 
-  content_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "content");
+  content_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMetaElement */, "content");
 
-  content_Setter_(mthis, __arg_0) => mthis["content"] = __arg_0;
+  content_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMetaElement */, "content", __arg_0);
 
-  httpEquiv_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "httpEquiv");
+  httpEquiv_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMetaElement */, "httpEquiv");
 
-  httpEquiv_Setter_(mthis, __arg_0) => mthis["httpEquiv"] = __arg_0;
+  httpEquiv_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMetaElement */, "httpEquiv", __arg_0);
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMetaElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMetaElement */, "name", __arg_0);
 
-  scheme_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scheme");
+  scheme_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMetaElement */, "scheme");
 
-  scheme_Setter_(mthis, __arg_0) => mthis["scheme"] = __arg_0;
+  scheme_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMetaElement */, "scheme", __arg_0);
 
 }
 
 class BlinkHTMLMeterElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLMeterElement();
 
-  high_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "high");
+  high_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMeterElement */, "high");
 
-  high_Setter_(mthis, __arg_0) => mthis["high"] = __arg_0;
+  high_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMeterElement */, "high", __arg_0);
 
-  labels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "labels");
+  labels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMeterElement */, "labels");
 
-  low_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "low");
+  low_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMeterElement */, "low");
 
-  low_Setter_(mthis, __arg_0) => mthis["low"] = __arg_0;
+  low_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMeterElement */, "low", __arg_0);
 
-  max_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "max");
+  max_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMeterElement */, "max");
 
-  max_Setter_(mthis, __arg_0) => mthis["max"] = __arg_0;
+  max_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMeterElement */, "max", __arg_0);
 
-  min_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "min");
+  min_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMeterElement */, "min");
 
-  min_Setter_(mthis, __arg_0) => mthis["min"] = __arg_0;
+  min_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMeterElement */, "min", __arg_0);
 
-  optimum_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "optimum");
+  optimum_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMeterElement */, "optimum");
 
-  optimum_Setter_(mthis, __arg_0) => mthis["optimum"] = __arg_0;
+  optimum_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMeterElement */, "optimum", __arg_0);
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLMeterElement */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLMeterElement */, "value", __arg_0);
 
 }
 
 class BlinkHTMLModElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLModElement();
 
-  cite_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cite");
+  cite_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLModElement */, "cite");
 
-  cite_Setter_(mthis, __arg_0) => mthis["cite"] = __arg_0;
+  cite_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLModElement */, "cite", __arg_0);
 
-  dateTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dateTime");
+  dateTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLModElement */, "dateTime");
 
-  dateTime_Setter_(mthis, __arg_0) => mthis["dateTime"] = __arg_0;
+  dateTime_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLModElement */, "dateTime", __arg_0);
 
 }
 
 class BlinkHTMLOListElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLOListElement();
 
-  compact_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "compact");
+  compact_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOListElement */, "compact");
 
-  compact_Setter_(mthis, __arg_0) => mthis["compact"] = __arg_0;
+  compact_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOListElement */, "compact", __arg_0);
 
-  reversed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "reversed");
+  reversed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOListElement */, "reversed");
 
-  reversed_Setter_(mthis, __arg_0) => mthis["reversed"] = __arg_0;
+  reversed_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOListElement */, "reversed", __arg_0);
 
-  start_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "start");
+  start_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOListElement */, "start");
 
-  start_Setter_(mthis, __arg_0) => mthis["start"] = __arg_0;
+  start_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOListElement */, "start", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOListElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOListElement */, "type", __arg_0);
 
 }
 
 class BlinkHTMLObjectElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLObjectElement();
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLObjectElement */, "align", __arg_0);
 
-  archive_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "archive");
+  archive_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "archive");
 
-  archive_Setter_(mthis, __arg_0) => mthis["archive"] = __arg_0;
+  archive_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLObjectElement */, "archive", __arg_0);
 
-  border_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "border");
+  border_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "border");
 
-  border_Setter_(mthis, __arg_0) => mthis["border"] = __arg_0;
+  border_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLObjectElement */, "border", __arg_0);
 
-  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "code");
+  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "code");
 
-  code_Setter_(mthis, __arg_0) => mthis["code"] = __arg_0;
+  code_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLObjectElement */, "code", __arg_0);
 
-  codeBase_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "codeBase");
+  codeBase_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "codeBase");
 
-  codeBase_Setter_(mthis, __arg_0) => mthis["codeBase"] = __arg_0;
+  codeBase_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLObjectElement */, "codeBase", __arg_0);
 
-  codeType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "codeType");
+  codeType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "codeType");
 
-  codeType_Setter_(mthis, __arg_0) => mthis["codeType"] = __arg_0;
+  codeType_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLObjectElement */, "codeType", __arg_0);
 
-  contentDocument_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "contentDocument");
+  contentDocument_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "contentDocument");
 
-  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "data");
+  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "data");
 
-  data_Setter_(mthis, __arg_0) => mthis["data"] = __arg_0;
+  data_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLObjectElement */, "data", __arg_0);
 
-  declare_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "declare");
+  declare_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "declare");
 
-  declare_Setter_(mthis, __arg_0) => mthis["declare"] = __arg_0;
+  declare_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLObjectElement */, "declare", __arg_0);
 
-  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "form");
+  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "form");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "height");
 
-  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
+  height_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLObjectElement */, "height", __arg_0);
 
-  hspace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hspace");
+  hspace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "hspace");
 
-  hspace_Setter_(mthis, __arg_0) => mthis["hspace"] = __arg_0;
+  hspace_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLObjectElement */, "hspace", __arg_0);
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLObjectElement */, "name", __arg_0);
 
-  standby_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "standby");
+  standby_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "standby");
 
-  standby_Setter_(mthis, __arg_0) => mthis["standby"] = __arg_0;
+  standby_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLObjectElement */, "standby", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLObjectElement */, "type", __arg_0);
 
-  useMap_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "useMap");
+  useMap_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "useMap");
 
-  useMap_Setter_(mthis, __arg_0) => mthis["useMap"] = __arg_0;
+  useMap_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLObjectElement */, "useMap", __arg_0);
 
-  validationMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "validationMessage");
+  validationMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "validationMessage");
 
-  validity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "validity");
+  validity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "validity");
 
-  vspace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "vspace");
+  vspace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "vspace");
 
-  vspace_Setter_(mthis, __arg_0) => mthis["vspace"] = __arg_0;
+  vspace_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLObjectElement */, "vspace", __arg_0);
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLObjectElement */, "width", __arg_0);
 
-  willValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "willValidate");
+  willValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLObjectElement */, "willValidate");
 
-  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__getter__", [__arg_0]);
+  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLObjectElement */, "__getter__", [__arg_0]);
 
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "__setter__", [__arg_0, __arg_1]);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLObjectElement */, "__setter__", [__arg_0, __arg_1]);
 
-  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "checkValidity", []);
+  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLObjectElement */, "checkValidity", []);
 
-  getSVGDocument_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSVGDocument", []);
+  getSVGDocument_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLObjectElement */, "getSVGDocument", []);
 
-  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "reportValidity", []);
+  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLObjectElement */, "reportValidity", []);
 
-  setCustomValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setCustomValidity", []);
+  setCustomValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLObjectElement */, "setCustomValidity", []);
 
-  setCustomValidity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setCustomValidity", [__arg_0]);
+  setCustomValidity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLObjectElement */, "setCustomValidity", [__arg_0]);
 
 }
 
 class BlinkHTMLOptGroupElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLOptGroupElement();
 
-  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "disabled");
+  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOptGroupElement */, "disabled");
 
-  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
+  disabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOptGroupElement */, "disabled", __arg_0);
 
-  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "label");
+  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOptGroupElement */, "label");
 
-  label_Setter_(mthis, __arg_0) => mthis["label"] = __arg_0;
+  label_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOptGroupElement */, "label", __arg_0);
 
 }
 
 class BlinkHTMLOptionElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLOptionElement();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Option"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("Option");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Option"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("Option", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Option"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("Option", [__arg_0, __arg_1]);
 
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Option"), [__arg_0, __arg_1, __arg_2]);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callConstructor("Option", [__arg_0, __arg_1, __arg_2]);
 
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Option"), [__arg_0, __arg_1, __arg_2, __arg_3]);
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callConstructor("Option", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  defaultSelected_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "defaultSelected");
+  defaultSelected_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOptionElement */, "defaultSelected");
 
-  defaultSelected_Setter_(mthis, __arg_0) => mthis["defaultSelected"] = __arg_0;
+  defaultSelected_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOptionElement */, "defaultSelected", __arg_0);
 
-  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "disabled");
+  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOptionElement */, "disabled");
 
-  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
+  disabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOptionElement */, "disabled", __arg_0);
 
-  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "form");
+  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOptionElement */, "form");
 
-  index_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "index");
+  index_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOptionElement */, "index");
 
-  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "label");
+  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOptionElement */, "label");
 
-  label_Setter_(mthis, __arg_0) => mthis["label"] = __arg_0;
+  label_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOptionElement */, "label", __arg_0);
 
-  selected_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "selected");
+  selected_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOptionElement */, "selected");
 
-  selected_Setter_(mthis, __arg_0) => mthis["selected"] = __arg_0;
+  selected_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOptionElement */, "selected", __arg_0);
 
-  text_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "text");
+  text_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOptionElement */, "text");
 
-  text_Setter_(mthis, __arg_0) => mthis["text"] = __arg_0;
+  text_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOptionElement */, "text", __arg_0);
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOptionElement */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOptionElement */, "value", __arg_0);
 
 }
 
 class BlinkHTMLOptionsCollection extends BlinkHTMLCollection {
   static final instance = new BlinkHTMLOptionsCollection();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOptionsCollection */, "length");
 
-  length_Setter_(mthis, __arg_0) => mthis["length"] = __arg_0;
+  length_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOptionsCollection */, "length", __arg_0);
 
-  selectedIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "selectedIndex");
+  selectedIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOptionsCollection */, "selectedIndex");
 
-  selectedIndex_Setter_(mthis, __arg_0) => mthis["selectedIndex"] = __arg_0;
+  selectedIndex_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOptionsCollection */, "selectedIndex", __arg_0);
 
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "__setter__", [__arg_0, __arg_1]);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLOptionsCollection */, "__setter__", [__arg_0, __arg_1]);
 
-  add_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "add", []);
+  add_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLOptionsCollection */, "add", []);
 
-  add_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "add", [__arg_0]);
+  add_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLOptionsCollection */, "add", [__arg_0]);
 
-  add_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "add", [__arg_0, __arg_1]);
+  add_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLOptionsCollection */, "add", [__arg_0, __arg_1]);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLOptionsCollection */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLOptionsCollection */, "item", [__arg_0]);
 
-  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", []);
+  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLOptionsCollection */, "namedItem", []);
 
-  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", [__arg_0]);
+  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLOptionsCollection */, "namedItem", [__arg_0]);
 
-  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "remove", []);
+  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLOptionsCollection */, "remove", []);
 
-  remove_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "remove", [__arg_0]);
+  remove_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLOptionsCollection */, "remove", [__arg_0]);
 
 }
 
 class BlinkHTMLOutputElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLOutputElement();
 
-  defaultValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "defaultValue");
+  defaultValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOutputElement */, "defaultValue");
 
-  defaultValue_Setter_(mthis, __arg_0) => mthis["defaultValue"] = __arg_0;
+  defaultValue_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOutputElement */, "defaultValue", __arg_0);
 
-  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "form");
+  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOutputElement */, "form");
 
-  htmlFor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "htmlFor");
+  htmlFor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOutputElement */, "htmlFor");
 
-  labels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "labels");
+  labels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOutputElement */, "labels");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOutputElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOutputElement */, "name", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOutputElement */, "type");
 
-  validationMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "validationMessage");
+  validationMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOutputElement */, "validationMessage");
 
-  validity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "validity");
+  validity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOutputElement */, "validity");
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOutputElement */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLOutputElement */, "value", __arg_0);
 
-  willValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "willValidate");
+  willValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLOutputElement */, "willValidate");
 
-  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "checkValidity", []);
+  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLOutputElement */, "checkValidity", []);
 
-  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "reportValidity", []);
+  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLOutputElement */, "reportValidity", []);
 
-  setCustomValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setCustomValidity", []);
+  setCustomValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLOutputElement */, "setCustomValidity", []);
 
-  setCustomValidity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setCustomValidity", [__arg_0]);
+  setCustomValidity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLOutputElement */, "setCustomValidity", [__arg_0]);
 
 }
 
 class BlinkHTMLParagraphElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLParagraphElement();
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLParagraphElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLParagraphElement */, "align", __arg_0);
 
 }
 
 class BlinkHTMLParamElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLParamElement();
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLParamElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLParamElement */, "name", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLParamElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLParamElement */, "type", __arg_0);
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLParamElement */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLParamElement */, "value", __arg_0);
 
-  valueType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "valueType");
+  valueType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLParamElement */, "valueType");
 
-  valueType_Setter_(mthis, __arg_0) => mthis["valueType"] = __arg_0;
+  valueType_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLParamElement */, "valueType", __arg_0);
 
 }
 
@@ -8881,197 +8881,197 @@
 class BlinkHTMLPreElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLPreElement();
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLPreElement */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLPreElement */, "width", __arg_0);
 
 }
 
 class BlinkHTMLProgressElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLProgressElement();
 
-  labels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "labels");
+  labels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLProgressElement */, "labels");
 
-  max_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "max");
+  max_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLProgressElement */, "max");
 
-  max_Setter_(mthis, __arg_0) => mthis["max"] = __arg_0;
+  max_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLProgressElement */, "max", __arg_0);
 
-  position_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "position");
+  position_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLProgressElement */, "position");
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLProgressElement */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLProgressElement */, "value", __arg_0);
 
 }
 
 class BlinkHTMLQuoteElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLQuoteElement();
 
-  cite_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cite");
+  cite_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLQuoteElement */, "cite");
 
-  cite_Setter_(mthis, __arg_0) => mthis["cite"] = __arg_0;
+  cite_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLQuoteElement */, "cite", __arg_0);
 
 }
 
 class BlinkHTMLScriptElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLScriptElement();
 
-  async_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "async");
+  async_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLScriptElement */, "async");
 
-  async_Setter_(mthis, __arg_0) => mthis["async"] = __arg_0;
+  async_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLScriptElement */, "async", __arg_0);
 
-  charset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "charset");
+  charset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLScriptElement */, "charset");
 
-  charset_Setter_(mthis, __arg_0) => mthis["charset"] = __arg_0;
+  charset_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLScriptElement */, "charset", __arg_0);
 
-  crossOrigin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "crossOrigin");
+  crossOrigin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLScriptElement */, "crossOrigin");
 
-  crossOrigin_Setter_(mthis, __arg_0) => mthis["crossOrigin"] = __arg_0;
+  crossOrigin_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLScriptElement */, "crossOrigin", __arg_0);
 
-  defer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "defer");
+  defer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLScriptElement */, "defer");
 
-  defer_Setter_(mthis, __arg_0) => mthis["defer"] = __arg_0;
+  defer_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLScriptElement */, "defer", __arg_0);
 
-  event_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "event");
+  event_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLScriptElement */, "event");
 
-  event_Setter_(mthis, __arg_0) => mthis["event"] = __arg_0;
+  event_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLScriptElement */, "event", __arg_0);
 
-  htmlFor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "htmlFor");
+  htmlFor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLScriptElement */, "htmlFor");
 
-  htmlFor_Setter_(mthis, __arg_0) => mthis["htmlFor"] = __arg_0;
+  htmlFor_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLScriptElement */, "htmlFor", __arg_0);
 
-  integrity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "integrity");
+  integrity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLScriptElement */, "integrity");
 
-  integrity_Setter_(mthis, __arg_0) => mthis["integrity"] = __arg_0;
+  integrity_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLScriptElement */, "integrity", __arg_0);
 
-  nonce_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "nonce");
+  nonce_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLScriptElement */, "nonce");
 
-  nonce_Setter_(mthis, __arg_0) => mthis["nonce"] = __arg_0;
+  nonce_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLScriptElement */, "nonce", __arg_0);
 
-  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "src");
+  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLScriptElement */, "src");
 
-  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
+  src_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLScriptElement */, "src", __arg_0);
 
-  text_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "text");
+  text_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLScriptElement */, "text");
 
-  text_Setter_(mthis, __arg_0) => mthis["text"] = __arg_0;
+  text_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLScriptElement */, "text", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLScriptElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLScriptElement */, "type", __arg_0);
 
 }
 
 class BlinkHTMLSelectElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLSelectElement();
 
-  autofocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "autofocus");
+  autofocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "autofocus");
 
-  autofocus_Setter_(mthis, __arg_0) => mthis["autofocus"] = __arg_0;
+  autofocus_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLSelectElement */, "autofocus", __arg_0);
 
-  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "disabled");
+  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "disabled");
 
-  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
+  disabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLSelectElement */, "disabled", __arg_0);
 
-  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "form");
+  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "form");
 
-  labels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "labels");
+  labels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "labels");
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "length");
 
-  length_Setter_(mthis, __arg_0) => mthis["length"] = __arg_0;
+  length_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLSelectElement */, "length", __arg_0);
 
-  multiple_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "multiple");
+  multiple_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "multiple");
 
-  multiple_Setter_(mthis, __arg_0) => mthis["multiple"] = __arg_0;
+  multiple_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLSelectElement */, "multiple", __arg_0);
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLSelectElement */, "name", __arg_0);
 
-  options_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "options");
+  options_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "options");
 
-  required_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "required");
+  required_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "required");
 
-  required_Setter_(mthis, __arg_0) => mthis["required"] = __arg_0;
+  required_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLSelectElement */, "required", __arg_0);
 
-  selectedIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "selectedIndex");
+  selectedIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "selectedIndex");
 
-  selectedIndex_Setter_(mthis, __arg_0) => mthis["selectedIndex"] = __arg_0;
+  selectedIndex_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLSelectElement */, "selectedIndex", __arg_0);
 
-  selectedOptions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "selectedOptions");
+  selectedOptions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "selectedOptions");
 
-  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "size");
+  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "size");
 
-  size_Setter_(mthis, __arg_0) => mthis["size"] = __arg_0;
+  size_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLSelectElement */, "size", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "type");
 
-  validationMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "validationMessage");
+  validationMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "validationMessage");
 
-  validity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "validity");
+  validity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "validity");
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLSelectElement */, "value", __arg_0);
 
-  willValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "willValidate");
+  willValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSelectElement */, "willValidate");
 
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "__setter__", [__arg_0, __arg_1]);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLSelectElement */, "__setter__", [__arg_0, __arg_1]);
 
-  add_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "add", []);
+  add_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLSelectElement */, "add", []);
 
-  add_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "add", [__arg_0]);
+  add_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLSelectElement */, "add", [__arg_0]);
 
-  add_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "add", [__arg_0, __arg_1]);
+  add_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLSelectElement */, "add", [__arg_0, __arg_1]);
 
-  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "checkValidity", []);
+  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLSelectElement */, "checkValidity", []);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLSelectElement */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLSelectElement */, "item", [__arg_0]);
 
-  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", []);
+  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLSelectElement */, "namedItem", []);
 
-  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", [__arg_0]);
+  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLSelectElement */, "namedItem", [__arg_0]);
 
-  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "reportValidity", []);
+  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLSelectElement */, "reportValidity", []);
 
-  setCustomValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setCustomValidity", []);
+  setCustomValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLSelectElement */, "setCustomValidity", []);
 
-  setCustomValidity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setCustomValidity", [__arg_0]);
+  setCustomValidity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLSelectElement */, "setCustomValidity", [__arg_0]);
 
 }
 
 class BlinkHTMLShadowElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLShadowElement();
 
-  getDistributedNodes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getDistributedNodes", []);
+  getDistributedNodes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLShadowElement */, "getDistributedNodes", []);
 
 }
 
 class BlinkHTMLSourceElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLSourceElement();
 
-  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "media");
+  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSourceElement */, "media");
 
-  media_Setter_(mthis, __arg_0) => mthis["media"] = __arg_0;
+  media_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLSourceElement */, "media", __arg_0);
 
-  sizes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sizes");
+  sizes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSourceElement */, "sizes");
 
-  sizes_Setter_(mthis, __arg_0) => mthis["sizes"] = __arg_0;
+  sizes_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLSourceElement */, "sizes", __arg_0);
 
-  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "src");
+  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSourceElement */, "src");
 
-  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
+  src_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLSourceElement */, "src", __arg_0);
 
-  srcset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "srcset");
+  srcset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSourceElement */, "srcset");
 
-  srcset_Setter_(mthis, __arg_0) => mthis["srcset"] = __arg_0;
+  srcset_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLSourceElement */, "srcset", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLSourceElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLSourceElement */, "type", __arg_0);
 
 }
 
@@ -9083,450 +9083,450 @@
 class BlinkHTMLStyleElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLStyleElement();
 
-  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "disabled");
+  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLStyleElement */, "disabled");
 
-  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
+  disabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLStyleElement */, "disabled", __arg_0);
 
-  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "media");
+  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLStyleElement */, "media");
 
-  media_Setter_(mthis, __arg_0) => mthis["media"] = __arg_0;
+  media_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLStyleElement */, "media", __arg_0);
 
-  sheet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sheet");
+  sheet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLStyleElement */, "sheet");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLStyleElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLStyleElement */, "type", __arg_0);
 
 }
 
 class BlinkHTMLTableCaptionElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTableCaptionElement();
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableCaptionElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableCaptionElement */, "align", __arg_0);
 
 }
 
 class BlinkHTMLTableCellElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTableCellElement();
 
-  abbr_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "abbr");
+  abbr_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableCellElement */, "abbr");
 
-  abbr_Setter_(mthis, __arg_0) => mthis["abbr"] = __arg_0;
+  abbr_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableCellElement */, "abbr", __arg_0);
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableCellElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableCellElement */, "align", __arg_0);
 
-  axis_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "axis");
+  axis_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableCellElement */, "axis");
 
-  axis_Setter_(mthis, __arg_0) => mthis["axis"] = __arg_0;
+  axis_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableCellElement */, "axis", __arg_0);
 
-  bgColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "bgColor");
+  bgColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableCellElement */, "bgColor");
 
-  bgColor_Setter_(mthis, __arg_0) => mthis["bgColor"] = __arg_0;
+  bgColor_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableCellElement */, "bgColor", __arg_0);
 
-  cellIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cellIndex");
+  cellIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableCellElement */, "cellIndex");
 
-  ch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ch");
+  ch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableCellElement */, "ch");
 
-  ch_Setter_(mthis, __arg_0) => mthis["ch"] = __arg_0;
+  ch_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableCellElement */, "ch", __arg_0);
 
-  chOff_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "chOff");
+  chOff_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableCellElement */, "chOff");
 
-  chOff_Setter_(mthis, __arg_0) => mthis["chOff"] = __arg_0;
+  chOff_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableCellElement */, "chOff", __arg_0);
 
-  colSpan_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "colSpan");
+  colSpan_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableCellElement */, "colSpan");
 
-  colSpan_Setter_(mthis, __arg_0) => mthis["colSpan"] = __arg_0;
+  colSpan_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableCellElement */, "colSpan", __arg_0);
 
-  headers_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "headers");
+  headers_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableCellElement */, "headers");
 
-  headers_Setter_(mthis, __arg_0) => mthis["headers"] = __arg_0;
+  headers_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableCellElement */, "headers", __arg_0);
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableCellElement */, "height");
 
-  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
+  height_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableCellElement */, "height", __arg_0);
 
-  noWrap_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "noWrap");
+  noWrap_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableCellElement */, "noWrap");
 
-  noWrap_Setter_(mthis, __arg_0) => mthis["noWrap"] = __arg_0;
+  noWrap_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableCellElement */, "noWrap", __arg_0);
 
-  rowSpan_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rowSpan");
+  rowSpan_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableCellElement */, "rowSpan");
 
-  rowSpan_Setter_(mthis, __arg_0) => mthis["rowSpan"] = __arg_0;
+  rowSpan_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableCellElement */, "rowSpan", __arg_0);
 
-  scope_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scope");
+  scope_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableCellElement */, "scope");
 
-  scope_Setter_(mthis, __arg_0) => mthis["scope"] = __arg_0;
+  scope_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableCellElement */, "scope", __arg_0);
 
-  vAlign_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "vAlign");
+  vAlign_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableCellElement */, "vAlign");
 
-  vAlign_Setter_(mthis, __arg_0) => mthis["vAlign"] = __arg_0;
+  vAlign_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableCellElement */, "vAlign", __arg_0);
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableCellElement */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableCellElement */, "width", __arg_0);
 
 }
 
 class BlinkHTMLTableColElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTableColElement();
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableColElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableColElement */, "align", __arg_0);
 
-  ch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ch");
+  ch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableColElement */, "ch");
 
-  ch_Setter_(mthis, __arg_0) => mthis["ch"] = __arg_0;
+  ch_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableColElement */, "ch", __arg_0);
 
-  chOff_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "chOff");
+  chOff_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableColElement */, "chOff");
 
-  chOff_Setter_(mthis, __arg_0) => mthis["chOff"] = __arg_0;
+  chOff_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableColElement */, "chOff", __arg_0);
 
-  span_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "span");
+  span_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableColElement */, "span");
 
-  span_Setter_(mthis, __arg_0) => mthis["span"] = __arg_0;
+  span_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableColElement */, "span", __arg_0);
 
-  vAlign_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "vAlign");
+  vAlign_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableColElement */, "vAlign");
 
-  vAlign_Setter_(mthis, __arg_0) => mthis["vAlign"] = __arg_0;
+  vAlign_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableColElement */, "vAlign", __arg_0);
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableColElement */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableColElement */, "width", __arg_0);
 
 }
 
 class BlinkHTMLTableElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTableElement();
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableElement */, "align", __arg_0);
 
-  bgColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "bgColor");
+  bgColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableElement */, "bgColor");
 
-  bgColor_Setter_(mthis, __arg_0) => mthis["bgColor"] = __arg_0;
+  bgColor_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableElement */, "bgColor", __arg_0);
 
-  border_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "border");
+  border_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableElement */, "border");
 
-  border_Setter_(mthis, __arg_0) => mthis["border"] = __arg_0;
+  border_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableElement */, "border", __arg_0);
 
-  caption_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "caption");
+  caption_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableElement */, "caption");
 
-  caption_Setter_(mthis, __arg_0) => mthis["caption"] = __arg_0;
+  caption_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableElement */, "caption", __arg_0);
 
-  cellPadding_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cellPadding");
+  cellPadding_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableElement */, "cellPadding");
 
-  cellPadding_Setter_(mthis, __arg_0) => mthis["cellPadding"] = __arg_0;
+  cellPadding_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableElement */, "cellPadding", __arg_0);
 
-  cellSpacing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cellSpacing");
+  cellSpacing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableElement */, "cellSpacing");
 
-  cellSpacing_Setter_(mthis, __arg_0) => mthis["cellSpacing"] = __arg_0;
+  cellSpacing_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableElement */, "cellSpacing", __arg_0);
 
-  frame_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "frame");
+  frame_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableElement */, "frame");
 
-  frame_Setter_(mthis, __arg_0) => mthis["frame"] = __arg_0;
+  frame_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableElement */, "frame", __arg_0);
 
-  rows_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rows");
+  rows_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableElement */, "rows");
 
-  rules_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rules");
+  rules_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableElement */, "rules");
 
-  rules_Setter_(mthis, __arg_0) => mthis["rules"] = __arg_0;
+  rules_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableElement */, "rules", __arg_0);
 
-  summary_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "summary");
+  summary_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableElement */, "summary");
 
-  summary_Setter_(mthis, __arg_0) => mthis["summary"] = __arg_0;
+  summary_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableElement */, "summary", __arg_0);
 
-  tBodies_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "tBodies");
+  tBodies_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableElement */, "tBodies");
 
-  tFoot_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "tFoot");
+  tFoot_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableElement */, "tFoot");
 
-  tFoot_Setter_(mthis, __arg_0) => mthis["tFoot"] = __arg_0;
+  tFoot_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableElement */, "tFoot", __arg_0);
 
-  tHead_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "tHead");
+  tHead_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableElement */, "tHead");
 
-  tHead_Setter_(mthis, __arg_0) => mthis["tHead"] = __arg_0;
+  tHead_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableElement */, "tHead", __arg_0);
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableElement */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableElement */, "width", __arg_0);
 
-  createCaption_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createCaption", []);
+  createCaption_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableElement */, "createCaption", []);
 
-  createTBody_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createTBody", []);
+  createTBody_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableElement */, "createTBody", []);
 
-  createTFoot_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createTFoot", []);
+  createTFoot_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableElement */, "createTFoot", []);
 
-  createTHead_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createTHead", []);
+  createTHead_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableElement */, "createTHead", []);
 
-  deleteCaption_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteCaption", []);
+  deleteCaption_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableElement */, "deleteCaption", []);
 
-  deleteRow_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteRow", []);
+  deleteRow_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableElement */, "deleteRow", []);
 
-  deleteRow_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteRow", [__arg_0]);
+  deleteRow_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableElement */, "deleteRow", [__arg_0]);
 
-  deleteTFoot_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteTFoot", []);
+  deleteTFoot_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableElement */, "deleteTFoot", []);
 
-  deleteTHead_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteTHead", []);
+  deleteTHead_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableElement */, "deleteTHead", []);
 
-  insertRow_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertRow", []);
+  insertRow_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableElement */, "insertRow", []);
 
-  insertRow_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertRow", [__arg_0]);
+  insertRow_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableElement */, "insertRow", [__arg_0]);
 
 }
 
 class BlinkHTMLTableRowElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTableRowElement();
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableRowElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableRowElement */, "align", __arg_0);
 
-  bgColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "bgColor");
+  bgColor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableRowElement */, "bgColor");
 
-  bgColor_Setter_(mthis, __arg_0) => mthis["bgColor"] = __arg_0;
+  bgColor_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableRowElement */, "bgColor", __arg_0);
 
-  cells_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cells");
+  cells_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableRowElement */, "cells");
 
-  ch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ch");
+  ch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableRowElement */, "ch");
 
-  ch_Setter_(mthis, __arg_0) => mthis["ch"] = __arg_0;
+  ch_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableRowElement */, "ch", __arg_0);
 
-  chOff_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "chOff");
+  chOff_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableRowElement */, "chOff");
 
-  chOff_Setter_(mthis, __arg_0) => mthis["chOff"] = __arg_0;
+  chOff_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableRowElement */, "chOff", __arg_0);
 
-  rowIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rowIndex");
+  rowIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableRowElement */, "rowIndex");
 
-  sectionRowIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sectionRowIndex");
+  sectionRowIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableRowElement */, "sectionRowIndex");
 
-  vAlign_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "vAlign");
+  vAlign_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableRowElement */, "vAlign");
 
-  vAlign_Setter_(mthis, __arg_0) => mthis["vAlign"] = __arg_0;
+  vAlign_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableRowElement */, "vAlign", __arg_0);
 
-  deleteCell_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteCell", []);
+  deleteCell_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableRowElement */, "deleteCell", []);
 
-  deleteCell_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteCell", [__arg_0]);
+  deleteCell_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableRowElement */, "deleteCell", [__arg_0]);
 
-  insertCell_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertCell", []);
+  insertCell_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableRowElement */, "insertCell", []);
 
-  insertCell_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertCell", [__arg_0]);
+  insertCell_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableRowElement */, "insertCell", [__arg_0]);
 
 }
 
 class BlinkHTMLTableSectionElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTableSectionElement();
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableSectionElement */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableSectionElement */, "align", __arg_0);
 
-  ch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ch");
+  ch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableSectionElement */, "ch");
 
-  ch_Setter_(mthis, __arg_0) => mthis["ch"] = __arg_0;
+  ch_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableSectionElement */, "ch", __arg_0);
 
-  chOff_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "chOff");
+  chOff_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableSectionElement */, "chOff");
 
-  chOff_Setter_(mthis, __arg_0) => mthis["chOff"] = __arg_0;
+  chOff_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableSectionElement */, "chOff", __arg_0);
 
-  rows_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rows");
+  rows_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableSectionElement */, "rows");
 
-  vAlign_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "vAlign");
+  vAlign_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTableSectionElement */, "vAlign");
 
-  vAlign_Setter_(mthis, __arg_0) => mthis["vAlign"] = __arg_0;
+  vAlign_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTableSectionElement */, "vAlign", __arg_0);
 
-  deleteRow_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteRow", []);
+  deleteRow_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableSectionElement */, "deleteRow", []);
 
-  deleteRow_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteRow", [__arg_0]);
+  deleteRow_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableSectionElement */, "deleteRow", [__arg_0]);
 
-  insertRow_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertRow", []);
+  insertRow_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableSectionElement */, "insertRow", []);
 
-  insertRow_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertRow", [__arg_0]);
+  insertRow_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTableSectionElement */, "insertRow", [__arg_0]);
 
 }
 
 class BlinkHTMLTemplateElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTemplateElement();
 
-  content_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "content");
+  content_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTemplateElement */, "content");
 
 }
 
 class BlinkHTMLTextAreaElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTextAreaElement();
 
-  autocapitalize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "autocapitalize");
+  autocapitalize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "autocapitalize");
 
-  autocapitalize_Setter_(mthis, __arg_0) => mthis["autocapitalize"] = __arg_0;
+  autocapitalize_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "autocapitalize", __arg_0);
 
-  autofocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "autofocus");
+  autofocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "autofocus");
 
-  autofocus_Setter_(mthis, __arg_0) => mthis["autofocus"] = __arg_0;
+  autofocus_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "autofocus", __arg_0);
 
-  cols_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cols");
+  cols_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "cols");
 
-  cols_Setter_(mthis, __arg_0) => mthis["cols"] = __arg_0;
+  cols_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "cols", __arg_0);
 
-  defaultValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "defaultValue");
+  defaultValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "defaultValue");
 
-  defaultValue_Setter_(mthis, __arg_0) => mthis["defaultValue"] = __arg_0;
+  defaultValue_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "defaultValue", __arg_0);
 
-  dirName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dirName");
+  dirName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "dirName");
 
-  dirName_Setter_(mthis, __arg_0) => mthis["dirName"] = __arg_0;
+  dirName_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "dirName", __arg_0);
 
-  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "disabled");
+  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "disabled");
 
-  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
+  disabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "disabled", __arg_0);
 
-  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "form");
+  form_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "form");
 
-  inputMode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "inputMode");
+  inputMode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "inputMode");
 
-  inputMode_Setter_(mthis, __arg_0) => mthis["inputMode"] = __arg_0;
+  inputMode_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "inputMode", __arg_0);
 
-  labels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "labels");
+  labels_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "labels");
 
-  maxLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "maxLength");
+  maxLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "maxLength");
 
-  maxLength_Setter_(mthis, __arg_0) => mthis["maxLength"] = __arg_0;
+  maxLength_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "maxLength", __arg_0);
 
-  minLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "minLength");
+  minLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "minLength");
 
-  minLength_Setter_(mthis, __arg_0) => mthis["minLength"] = __arg_0;
+  minLength_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "minLength", __arg_0);
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "name", __arg_0);
 
-  placeholder_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "placeholder");
+  placeholder_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "placeholder");
 
-  placeholder_Setter_(mthis, __arg_0) => mthis["placeholder"] = __arg_0;
+  placeholder_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "placeholder", __arg_0);
 
-  readOnly_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "readOnly");
+  readOnly_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "readOnly");
 
-  readOnly_Setter_(mthis, __arg_0) => mthis["readOnly"] = __arg_0;
+  readOnly_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "readOnly", __arg_0);
 
-  required_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "required");
+  required_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "required");
 
-  required_Setter_(mthis, __arg_0) => mthis["required"] = __arg_0;
+  required_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "required", __arg_0);
 
-  rows_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rows");
+  rows_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "rows");
 
-  rows_Setter_(mthis, __arg_0) => mthis["rows"] = __arg_0;
+  rows_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "rows", __arg_0);
 
-  selectionDirection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "selectionDirection");
+  selectionDirection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "selectionDirection");
 
-  selectionDirection_Setter_(mthis, __arg_0) => mthis["selectionDirection"] = __arg_0;
+  selectionDirection_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "selectionDirection", __arg_0);
 
-  selectionEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "selectionEnd");
+  selectionEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "selectionEnd");
 
-  selectionEnd_Setter_(mthis, __arg_0) => mthis["selectionEnd"] = __arg_0;
+  selectionEnd_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "selectionEnd", __arg_0);
 
-  selectionStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "selectionStart");
+  selectionStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "selectionStart");
 
-  selectionStart_Setter_(mthis, __arg_0) => mthis["selectionStart"] = __arg_0;
+  selectionStart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "selectionStart", __arg_0);
 
-  textLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "textLength");
+  textLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "textLength");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "type");
 
-  validationMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "validationMessage");
+  validationMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "validationMessage");
 
-  validity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "validity");
+  validity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "validity");
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "value", __arg_0);
 
-  willValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "willValidate");
+  willValidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "willValidate");
 
-  wrap_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "wrap");
+  wrap_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTextAreaElement */, "wrap");
 
-  wrap_Setter_(mthis, __arg_0) => mthis["wrap"] = __arg_0;
+  wrap_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTextAreaElement */, "wrap", __arg_0);
 
-  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "checkValidity", []);
+  checkValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTextAreaElement */, "checkValidity", []);
 
-  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "reportValidity", []);
+  reportValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTextAreaElement */, "reportValidity", []);
 
-  select_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "select", []);
+  select_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTextAreaElement */, "select", []);
 
-  setCustomValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setCustomValidity", []);
+  setCustomValidity_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTextAreaElement */, "setCustomValidity", []);
 
-  setCustomValidity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setCustomValidity", [__arg_0]);
+  setCustomValidity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTextAreaElement */, "setCustomValidity", [__arg_0]);
 
-  setRangeText_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setRangeText", []);
+  setRangeText_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTextAreaElement */, "setRangeText", []);
 
-  setRangeText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setRangeText", [__arg_0]);
+  setRangeText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTextAreaElement */, "setRangeText", [__arg_0]);
 
-  setRangeText_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setRangeText", [__arg_0, __arg_1]);
+  setRangeText_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTextAreaElement */, "setRangeText", [__arg_0, __arg_1]);
 
-  setRangeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setRangeText", [__arg_0, __arg_1, __arg_2]);
+  setRangeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTextAreaElement */, "setRangeText", [__arg_0, __arg_1, __arg_2]);
 
-  setRangeText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "setRangeText", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  setRangeText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTextAreaElement */, "setRangeText", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  setSelectionRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setSelectionRange", []);
+  setSelectionRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTextAreaElement */, "setSelectionRange", []);
 
-  setSelectionRange_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setSelectionRange", [__arg_0]);
+  setSelectionRange_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTextAreaElement */, "setSelectionRange", [__arg_0]);
 
-  setSelectionRange_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setSelectionRange", [__arg_0, __arg_1]);
+  setSelectionRange_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTextAreaElement */, "setSelectionRange", [__arg_0, __arg_1]);
 
-  setSelectionRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setSelectionRange", [__arg_0, __arg_1, __arg_2]);
+  setSelectionRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* HTMLTextAreaElement */, "setSelectionRange", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkHTMLTitleElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTitleElement();
 
-  text_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "text");
+  text_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTitleElement */, "text");
 
-  text_Setter_(mthis, __arg_0) => mthis["text"] = __arg_0;
+  text_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTitleElement */, "text", __arg_0);
 
 }
 
 class BlinkHTMLTrackElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTrackElement();
 
-  default_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "default");
+  default_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTrackElement */, "default");
 
-  default_Setter_(mthis, __arg_0) => mthis["default"] = __arg_0;
+  default_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTrackElement */, "default", __arg_0);
 
-  kind_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "kind");
+  kind_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTrackElement */, "kind");
 
-  kind_Setter_(mthis, __arg_0) => mthis["kind"] = __arg_0;
+  kind_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTrackElement */, "kind", __arg_0);
 
-  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "label");
+  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTrackElement */, "label");
 
-  label_Setter_(mthis, __arg_0) => mthis["label"] = __arg_0;
+  label_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTrackElement */, "label", __arg_0);
 
-  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "readyState");
+  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTrackElement */, "readyState");
 
-  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "src");
+  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTrackElement */, "src");
 
-  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
+  src_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTrackElement */, "src", __arg_0);
 
-  srclang_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "srclang");
+  srclang_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTrackElement */, "srclang");
 
-  srclang_Setter_(mthis, __arg_0) => mthis["srclang"] = __arg_0;
+  srclang_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLTrackElement */, "srclang", __arg_0);
 
-  track_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "track");
+  track_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLTrackElement */, "track");
 
 }
 
 class BlinkHTMLUListElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLUListElement();
 
-  compact_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "compact");
+  compact_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLUListElement */, "compact");
 
-  compact_Setter_(mthis, __arg_0) => mthis["compact"] = __arg_0;
+  compact_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLUListElement */, "compact", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLUListElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLUListElement */, "type", __arg_0);
 
 }
 
@@ -9538,519 +9538,519 @@
 class BlinkHTMLVideoElement extends BlinkHTMLMediaElement {
   static final instance = new BlinkHTMLVideoElement();
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLVideoElement */, "height");
 
-  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
+  height_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLVideoElement */, "height", __arg_0);
 
-  poster_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "poster");
+  poster_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLVideoElement */, "poster");
 
-  poster_Setter_(mthis, __arg_0) => mthis["poster"] = __arg_0;
+  poster_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLVideoElement */, "poster", __arg_0);
 
-  videoHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "videoHeight");
+  videoHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLVideoElement */, "videoHeight");
 
-  videoWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "videoWidth");
+  videoWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLVideoElement */, "videoWidth");
 
-  webkitDecodedFrameCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitDecodedFrameCount");
+  webkitDecodedFrameCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLVideoElement */, "webkitDecodedFrameCount");
 
-  webkitDisplayingFullscreen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitDisplayingFullscreen");
+  webkitDisplayingFullscreen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLVideoElement */, "webkitDisplayingFullscreen");
 
-  webkitDroppedFrameCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitDroppedFrameCount");
+  webkitDroppedFrameCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLVideoElement */, "webkitDroppedFrameCount");
 
-  webkitSupportsFullscreen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitSupportsFullscreen");
+  webkitSupportsFullscreen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLVideoElement */, "webkitSupportsFullscreen");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HTMLVideoElement */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* HTMLVideoElement */, "width", __arg_0);
 
-  getVideoPlaybackQuality_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getVideoPlaybackQuality", []);
+  getVideoPlaybackQuality_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLVideoElement */, "getVideoPlaybackQuality", []);
 
-  webkitEnterFullScreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitEnterFullScreen", []);
+  webkitEnterFullScreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLVideoElement */, "webkitEnterFullScreen", []);
 
-  webkitEnterFullscreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitEnterFullscreen", []);
+  webkitEnterFullscreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLVideoElement */, "webkitEnterFullscreen", []);
 
-  webkitExitFullScreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitExitFullScreen", []);
+  webkitExitFullScreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLVideoElement */, "webkitExitFullScreen", []);
 
-  webkitExitFullscreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitExitFullscreen", []);
+  webkitExitFullscreen_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* HTMLVideoElement */, "webkitExitFullscreen", []);
 
 }
 
 class BlinkHashChangeEvent extends BlinkEvent {
   static final instance = new BlinkHashChangeEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "HashChangeEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("HashChangeEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "HashChangeEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("HashChangeEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "HashChangeEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("HashChangeEvent", [__arg_0, __arg_1]);
 
-  newURL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "newURL");
+  newURL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HashChangeEvent */, "newURL");
 
-  oldURL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oldURL");
+  oldURL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* HashChangeEvent */, "oldURL");
 
-  initHashChangeEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "initHashChangeEvent", [__arg_0, __arg_1, __arg_2]);
+  initHashChangeEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* HashChangeEvent */, "initHashChangeEvent", [__arg_0, __arg_1, __arg_2]);
 
-  initHashChangeEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "initHashChangeEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  initHashChangeEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* HashChangeEvent */, "initHashChangeEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  initHashChangeEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "initHashChangeEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  initHashChangeEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* HashChangeEvent */, "initHashChangeEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
 }
 
 class BlinkHeaders {
   static final instance = new BlinkHeaders();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Headers"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("Headers");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Headers"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("Headers", [__arg_0]);
 
 }
 
 class BlinkHistory {
   static final instance = new BlinkHistory();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* History */, "length");
 
-  options_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "options");
+  options_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* History */, "options");
 
-  state_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "state");
+  state_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* History */, "state");
 
-  back_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "back", []);
+  back_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* History */, "back", []);
 
-  forward_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "forward", []);
+  forward_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* History */, "forward", []);
 
-  go_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "go", []);
+  go_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* History */, "go", []);
 
-  go_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "go", [__arg_0]);
+  go_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* History */, "go", [__arg_0]);
 
-  pushState_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "pushState", [__arg_0]);
+  pushState_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* History */, "pushState", [__arg_0]);
 
-  pushState_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "pushState", [__arg_0, __arg_1]);
+  pushState_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* History */, "pushState", [__arg_0, __arg_1]);
 
-  pushState_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "pushState", [__arg_0, __arg_1, __arg_2]);
+  pushState_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* History */, "pushState", [__arg_0, __arg_1, __arg_2]);
 
-  pushState_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "pushState", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  pushState_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* History */, "pushState", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  replaceState_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "replaceState", [__arg_0]);
+  replaceState_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* History */, "replaceState", [__arg_0]);
 
-  replaceState_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "replaceState", [__arg_0, __arg_1]);
+  replaceState_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* History */, "replaceState", [__arg_0, __arg_1]);
 
-  replaceState_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "replaceState", [__arg_0, __arg_1, __arg_2]);
+  replaceState_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* History */, "replaceState", [__arg_0, __arg_1, __arg_2]);
 
-  replaceState_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "replaceState", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  replaceState_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* History */, "replaceState", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
 class BlinkIDBCursor {
   static final instance = new BlinkIDBCursor();
 
-  direction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "direction");
+  direction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBCursor */, "direction");
 
-  key_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "key");
+  key_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBCursor */, "key");
 
-  primaryKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "primaryKey");
+  primaryKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBCursor */, "primaryKey");
 
-  source_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "source");
+  source_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBCursor */, "source");
 
-  advance_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "advance", []);
+  advance_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBCursor */, "advance", []);
 
-  advance_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "advance", [__arg_0]);
+  advance_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBCursor */, "advance", [__arg_0]);
 
-  continue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "continue", []);
+  continue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBCursor */, "continue", []);
 
-  continue_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "continue", [__arg_0]);
+  continue_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBCursor */, "continue", [__arg_0]);
 
-  continuePrimaryKey_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "continuePrimaryKey", []);
+  continuePrimaryKey_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBCursor */, "continuePrimaryKey", []);
 
-  continuePrimaryKey_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "continuePrimaryKey", [__arg_0]);
+  continuePrimaryKey_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBCursor */, "continuePrimaryKey", [__arg_0]);
 
-  continuePrimaryKey_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "continuePrimaryKey", [__arg_0, __arg_1]);
+  continuePrimaryKey_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* IDBCursor */, "continuePrimaryKey", [__arg_0, __arg_1]);
 
-  delete_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "delete", []);
+  delete_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBCursor */, "delete", []);
 
-  update_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "update", []);
+  update_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBCursor */, "update", []);
 
-  update_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "update", [__arg_0]);
+  update_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBCursor */, "update", [__arg_0]);
 
 }
 
 class BlinkIDBCursorWithValue extends BlinkIDBCursor {
   static final instance = new BlinkIDBCursorWithValue();
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBCursorWithValue */, "value");
 
 }
 
 class BlinkIDBDatabase extends BlinkEventTarget {
   static final instance = new BlinkIDBDatabase();
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBDatabase */, "name");
 
-  objectStoreNames_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "objectStoreNames");
+  objectStoreNames_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBDatabase */, "objectStoreNames");
 
-  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onabort");
+  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBDatabase */, "onabort");
 
-  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
+  onabort_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* IDBDatabase */, "onabort", __arg_0);
 
-  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclose");
+  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBDatabase */, "onclose");
 
-  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
+  onclose_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* IDBDatabase */, "onclose", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBDatabase */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* IDBDatabase */, "onerror", __arg_0);
 
-  onversionchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onversionchange");
+  onversionchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBDatabase */, "onversionchange");
 
-  onversionchange_Setter_(mthis, __arg_0) => mthis["onversionchange"] = __arg_0;
+  onversionchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* IDBDatabase */, "onversionchange", __arg_0);
 
-  version_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "version");
+  version_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBDatabase */, "version");
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBDatabase */, "close", []);
 
-  createObjectStore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createObjectStore", []);
+  createObjectStore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBDatabase */, "createObjectStore", []);
 
-  createObjectStore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createObjectStore", [__arg_0]);
+  createObjectStore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBDatabase */, "createObjectStore", [__arg_0]);
 
-  createObjectStore_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createObjectStore", [__arg_0, __arg_1]);
+  createObjectStore_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* IDBDatabase */, "createObjectStore", [__arg_0, __arg_1]);
 
-  deleteObjectStore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteObjectStore", []);
+  deleteObjectStore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBDatabase */, "deleteObjectStore", []);
 
-  deleteObjectStore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteObjectStore", [__arg_0]);
+  deleteObjectStore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBDatabase */, "deleteObjectStore", [__arg_0]);
 
-  transaction_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "transaction", []);
+  transaction_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBDatabase */, "transaction", []);
 
-  transaction_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "transaction", [__arg_0]);
+  transaction_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBDatabase */, "transaction", [__arg_0]);
 
-  transaction_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "transaction", [__arg_0, __arg_1]);
+  transaction_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* IDBDatabase */, "transaction", [__arg_0, __arg_1]);
 
 }
 
 class BlinkIDBFactory {
   static final instance = new BlinkIDBFactory();
 
-  cmp_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cmp", []);
+  cmp_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBFactory */, "cmp", []);
 
-  cmp_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "cmp", [__arg_0]);
+  cmp_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBFactory */, "cmp", [__arg_0]);
 
-  cmp_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "cmp", [__arg_0, __arg_1]);
+  cmp_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* IDBFactory */, "cmp", [__arg_0, __arg_1]);
 
-  deleteDatabase_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteDatabase", []);
+  deleteDatabase_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBFactory */, "deleteDatabase", []);
 
-  deleteDatabase_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteDatabase", [__arg_0]);
+  deleteDatabase_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBFactory */, "deleteDatabase", [__arg_0]);
 
-  open_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "open", []);
+  open_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBFactory */, "open", []);
 
-  open_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "open", [__arg_0]);
+  open_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBFactory */, "open", [__arg_0]);
 
-  open_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "open", [__arg_0, __arg_1]);
+  open_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* IDBFactory */, "open", [__arg_0, __arg_1]);
 
-  webkitGetDatabaseNames_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitGetDatabaseNames", []);
+  webkitGetDatabaseNames_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBFactory */, "webkitGetDatabaseNames", []);
 
 }
 
 class BlinkIDBIndex {
   static final instance = new BlinkIDBIndex();
 
-  keyPath_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "keyPath");
+  keyPath_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBIndex */, "keyPath");
 
-  multiEntry_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "multiEntry");
+  multiEntry_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBIndex */, "multiEntry");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBIndex */, "name");
 
-  objectStore_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "objectStore");
+  objectStore_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBIndex */, "objectStore");
 
-  unique_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "unique");
+  unique_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBIndex */, "unique");
 
-  count_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "count", []);
+  count_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "count", []);
 
-  count_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "count", [__arg_0]);
+  count_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "count", [__arg_0]);
 
-  get_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "get", []);
+  get_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "get", []);
 
-  get_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "get", [__arg_0]);
+  get_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "get", [__arg_0]);
 
-  getAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAll", []);
+  getAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "getAll", []);
 
-  getAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAll", [__arg_0]);
+  getAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "getAll", [__arg_0]);
 
-  getAll_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getAll", [__arg_0, __arg_1]);
+  getAll_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "getAll", [__arg_0, __arg_1]);
 
-  getAllKeys_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAllKeys", []);
+  getAllKeys_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "getAllKeys", []);
 
-  getAllKeys_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAllKeys", [__arg_0]);
+  getAllKeys_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "getAllKeys", [__arg_0]);
 
-  getAllKeys_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getAllKeys", [__arg_0, __arg_1]);
+  getAllKeys_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "getAllKeys", [__arg_0, __arg_1]);
 
-  getKey_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getKey", []);
+  getKey_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "getKey", []);
 
-  getKey_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getKey", [__arg_0]);
+  getKey_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "getKey", [__arg_0]);
 
-  openCursor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "openCursor", []);
+  openCursor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "openCursor", []);
 
-  openCursor_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "openCursor", [__arg_0]);
+  openCursor_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "openCursor", [__arg_0]);
 
-  openCursor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "openCursor", [__arg_0, __arg_1]);
+  openCursor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "openCursor", [__arg_0, __arg_1]);
 
-  openKeyCursor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "openKeyCursor", []);
+  openKeyCursor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "openKeyCursor", []);
 
-  openKeyCursor_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "openKeyCursor", [__arg_0]);
+  openKeyCursor_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "openKeyCursor", [__arg_0]);
 
-  openKeyCursor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "openKeyCursor", [__arg_0, __arg_1]);
+  openKeyCursor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* IDBIndex */, "openKeyCursor", [__arg_0, __arg_1]);
 
 }
 
 class BlinkIDBKeyRange {
   static final instance = new BlinkIDBKeyRange();
 
-  lower_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lower");
+  lower_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBKeyRange */, "lower");
 
-  lowerOpen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lowerOpen");
+  lowerOpen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBKeyRange */, "lowerOpen");
 
-  upper_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "upper");
+  upper_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBKeyRange */, "upper");
 
-  upperOpen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "upperOpen");
+  upperOpen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBKeyRange */, "upperOpen");
 
-  bound_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange"), "bound", []);
+  bound_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange") /* IDBKeyRange */, "bound", []);
 
-  bound_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange"), "bound", [__arg_0]);
+  bound_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange") /* IDBKeyRange */, "bound", [__arg_0]);
 
-  bound_Callback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange"), "bound", [__arg_0, __arg_1]);
+  bound_Callback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange") /* IDBKeyRange */, "bound", [__arg_0, __arg_1]);
 
-  bound_Callback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange"), "bound", [__arg_0, __arg_1, __arg_2]);
+  bound_Callback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange") /* IDBKeyRange */, "bound", [__arg_0, __arg_1, __arg_2]);
 
-  bound_Callback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange"), "bound", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  bound_Callback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange") /* IDBKeyRange */, "bound", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  lowerBound_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange"), "lowerBound", []);
+  lowerBound_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange") /* IDBKeyRange */, "lowerBound", []);
 
-  lowerBound_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange"), "lowerBound", [__arg_0]);
+  lowerBound_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange") /* IDBKeyRange */, "lowerBound", [__arg_0]);
 
-  lowerBound_Callback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange"), "lowerBound", [__arg_0, __arg_1]);
+  lowerBound_Callback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange") /* IDBKeyRange */, "lowerBound", [__arg_0, __arg_1]);
 
-  only_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange"), "only", []);
+  only_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange") /* IDBKeyRange */, "only", []);
 
-  only_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange"), "only", [__arg_0]);
+  only_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange") /* IDBKeyRange */, "only", [__arg_0]);
 
-  upperBound_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange"), "upperBound", []);
+  upperBound_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange") /* IDBKeyRange */, "upperBound", []);
 
-  upperBound_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange"), "upperBound", [__arg_0]);
+  upperBound_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange") /* IDBKeyRange */, "upperBound", [__arg_0]);
 
-  upperBound_Callback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange"), "upperBound", [__arg_0, __arg_1]);
+  upperBound_Callback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "IDBKeyRange") /* IDBKeyRange */, "upperBound", [__arg_0, __arg_1]);
 
 }
 
 class BlinkIDBObjectStore {
   static final instance = new BlinkIDBObjectStore();
 
-  autoIncrement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "autoIncrement");
+  autoIncrement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBObjectStore */, "autoIncrement");
 
-  indexNames_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "indexNames");
+  indexNames_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBObjectStore */, "indexNames");
 
-  keyPath_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "keyPath");
+  keyPath_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBObjectStore */, "keyPath");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBObjectStore */, "name");
 
-  transaction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "transaction");
+  transaction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBObjectStore */, "transaction");
 
-  add_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "add", []);
+  add_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "add", []);
 
-  add_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "add", [__arg_0]);
+  add_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "add", [__arg_0]);
 
-  add_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "add", [__arg_0, __arg_1]);
+  add_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "add", [__arg_0, __arg_1]);
 
-  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clear", []);
+  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "clear", []);
 
-  count_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "count", []);
+  count_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "count", []);
 
-  count_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "count", [__arg_0]);
+  count_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "count", [__arg_0]);
 
-  createIndex_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createIndex", []);
+  createIndex_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "createIndex", []);
 
-  createIndex_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createIndex", [__arg_0]);
+  createIndex_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "createIndex", [__arg_0]);
 
-  createIndex_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createIndex", [__arg_0, __arg_1]);
+  createIndex_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "createIndex", [__arg_0, __arg_1]);
 
-  createIndex_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "createIndex", [__arg_0, __arg_1, __arg_2]);
+  createIndex_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "createIndex", [__arg_0, __arg_1, __arg_2]);
 
-  delete_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "delete", []);
+  delete_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "delete", []);
 
-  delete_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "delete", [__arg_0]);
+  delete_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "delete", [__arg_0]);
 
-  deleteIndex_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteIndex", []);
+  deleteIndex_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "deleteIndex", []);
 
-  deleteIndex_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteIndex", [__arg_0]);
+  deleteIndex_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "deleteIndex", [__arg_0]);
 
-  get_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "get", []);
+  get_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "get", []);
 
-  get_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "get", [__arg_0]);
+  get_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "get", [__arg_0]);
 
-  getAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAll", []);
+  getAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "getAll", []);
 
-  getAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAll", [__arg_0]);
+  getAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "getAll", [__arg_0]);
 
-  getAll_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getAll", [__arg_0, __arg_1]);
+  getAll_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "getAll", [__arg_0, __arg_1]);
 
-  getAllKeys_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAllKeys", []);
+  getAllKeys_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "getAllKeys", []);
 
-  getAllKeys_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAllKeys", [__arg_0]);
+  getAllKeys_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "getAllKeys", [__arg_0]);
 
-  getAllKeys_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getAllKeys", [__arg_0, __arg_1]);
+  getAllKeys_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "getAllKeys", [__arg_0, __arg_1]);
 
-  index_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "index", []);
+  index_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "index", []);
 
-  index_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "index", [__arg_0]);
+  index_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "index", [__arg_0]);
 
-  openCursor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "openCursor", []);
+  openCursor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "openCursor", []);
 
-  openCursor_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "openCursor", [__arg_0]);
+  openCursor_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "openCursor", [__arg_0]);
 
-  openCursor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "openCursor", [__arg_0, __arg_1]);
+  openCursor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "openCursor", [__arg_0, __arg_1]);
 
-  openKeyCursor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "openKeyCursor", []);
+  openKeyCursor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "openKeyCursor", []);
 
-  openKeyCursor_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "openKeyCursor", [__arg_0]);
+  openKeyCursor_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "openKeyCursor", [__arg_0]);
 
-  openKeyCursor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "openKeyCursor", [__arg_0, __arg_1]);
+  openKeyCursor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "openKeyCursor", [__arg_0, __arg_1]);
 
-  put_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "put", []);
+  put_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "put", []);
 
-  put_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "put", [__arg_0]);
+  put_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "put", [__arg_0]);
 
-  put_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "put", [__arg_0, __arg_1]);
+  put_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* IDBObjectStore */, "put", [__arg_0, __arg_1]);
 
 }
 
 class BlinkIDBOpenDBRequest extends BlinkIDBRequest {
   static final instance = new BlinkIDBOpenDBRequest();
 
-  onblocked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onblocked");
+  onblocked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBOpenDBRequest */, "onblocked");
 
-  onblocked_Setter_(mthis, __arg_0) => mthis["onblocked"] = __arg_0;
+  onblocked_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* IDBOpenDBRequest */, "onblocked", __arg_0);
 
-  onupgradeneeded_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onupgradeneeded");
+  onupgradeneeded_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBOpenDBRequest */, "onupgradeneeded");
 
-  onupgradeneeded_Setter_(mthis, __arg_0) => mthis["onupgradeneeded"] = __arg_0;
+  onupgradeneeded_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* IDBOpenDBRequest */, "onupgradeneeded", __arg_0);
 
 }
 
 class BlinkIDBRequest extends BlinkEventTarget {
   static final instance = new BlinkIDBRequest();
 
-  error_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "error");
+  error_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBRequest */, "error");
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBRequest */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* IDBRequest */, "onerror", __arg_0);
 
-  onsuccess_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsuccess");
+  onsuccess_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBRequest */, "onsuccess");
 
-  onsuccess_Setter_(mthis, __arg_0) => mthis["onsuccess"] = __arg_0;
+  onsuccess_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* IDBRequest */, "onsuccess", __arg_0);
 
-  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "readyState");
+  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBRequest */, "readyState");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBRequest */, "result");
 
-  source_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "source");
+  source_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBRequest */, "source");
 
-  transaction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "transaction");
+  transaction_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBRequest */, "transaction");
 
 }
 
 class BlinkIDBTransaction extends BlinkEventTarget {
   static final instance = new BlinkIDBTransaction();
 
-  db_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "db");
+  db_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBTransaction */, "db");
 
-  error_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "error");
+  error_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBTransaction */, "error");
 
-  mode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "mode");
+  mode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBTransaction */, "mode");
 
-  objectStoreNames_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "objectStoreNames");
+  objectStoreNames_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBTransaction */, "objectStoreNames");
 
-  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onabort");
+  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBTransaction */, "onabort");
 
-  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
+  onabort_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* IDBTransaction */, "onabort", __arg_0);
 
-  oncomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncomplete");
+  oncomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBTransaction */, "oncomplete");
 
-  oncomplete_Setter_(mthis, __arg_0) => mthis["oncomplete"] = __arg_0;
+  oncomplete_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* IDBTransaction */, "oncomplete", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBTransaction */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* IDBTransaction */, "onerror", __arg_0);
 
-  abort_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "abort", []);
+  abort_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBTransaction */, "abort", []);
 
-  objectStore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "objectStore", []);
+  objectStore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* IDBTransaction */, "objectStore", []);
 
-  objectStore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "objectStore", [__arg_0]);
+  objectStore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* IDBTransaction */, "objectStore", [__arg_0]);
 
 }
 
 class BlinkIDBVersionChangeEvent extends BlinkEvent {
   static final instance = new BlinkIDBVersionChangeEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "IDBVersionChangeEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("IDBVersionChangeEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "IDBVersionChangeEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("IDBVersionChangeEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "IDBVersionChangeEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("IDBVersionChangeEvent", [__arg_0, __arg_1]);
 
-  dataLoss_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dataLoss");
+  dataLoss_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBVersionChangeEvent */, "dataLoss");
 
-  dataLossMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dataLossMessage");
+  dataLossMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBVersionChangeEvent */, "dataLossMessage");
 
-  newVersion_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "newVersion");
+  newVersion_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBVersionChangeEvent */, "newVersion");
 
-  oldVersion_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oldVersion");
+  oldVersion_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* IDBVersionChangeEvent */, "oldVersion");
 
 }
 
 class BlinkImageBitmap {
   static final instance = new BlinkImageBitmap();
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ImageBitmap */, "height");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ImageBitmap */, "width");
 
 }
 
 class BlinkImageData {
   static final instance = new BlinkImageData();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ImageData"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("ImageData");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ImageData"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("ImageData", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ImageData"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("ImageData", [__arg_0, __arg_1]);
 
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ImageData"), [__arg_0, __arg_1, __arg_2]);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callConstructor("ImageData", [__arg_0, __arg_1, __arg_2]);
 
-  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "data");
+  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ImageData */, "data");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ImageData */, "height");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ImageData */, "width");
 
 }
 
 class BlinkInjectedScriptHost {
   static final instance = new BlinkInjectedScriptHost();
 
-  inspect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "inspect", []);
+  inspect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* InjectedScriptHost */, "inspect", []);
 
-  inspect_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "inspect", [__arg_0]);
+  inspect_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* InjectedScriptHost */, "inspect", [__arg_0]);
 
-  inspect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "inspect", [__arg_0, __arg_1]);
+  inspect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* InjectedScriptHost */, "inspect", [__arg_0, __arg_1]);
 
 }
 
 class BlinkInputDevice {
   static final instance = new BlinkInputDevice();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "InputDevice"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("InputDevice");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "InputDevice"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("InputDevice", [__arg_0]);
 
-  firesTouchEvents_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "firesTouchEvents");
+  firesTouchEvents_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* InputDevice */, "firesTouchEvents");
 
 }
 
@@ -10072,1416 +10072,1416 @@
 class BlinkIterator {
   static final instance = new BlinkIterator();
 
-  next_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "next", []);
+  next_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Iterator */, "next", []);
 
-  next_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "next", [__arg_0]);
+  next_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Iterator */, "next", [__arg_0]);
 
 }
 
 class BlinkKeyboardEvent extends BlinkUIEvent {
   static final instance = new BlinkKeyboardEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "KeyboardEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("KeyboardEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "KeyboardEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("KeyboardEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "KeyboardEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("KeyboardEvent", [__arg_0, __arg_1]);
 
-  altKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "altKey");
+  altKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* KeyboardEvent */, "altKey");
 
-  charCode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "charCode");
+  charCode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* KeyboardEvent */, "charCode");
 
-  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "code");
+  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* KeyboardEvent */, "code");
 
-  ctrlKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ctrlKey");
+  ctrlKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* KeyboardEvent */, "ctrlKey");
 
-  key_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "key");
+  key_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* KeyboardEvent */, "key");
 
-  keyCode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "keyCode");
+  keyCode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* KeyboardEvent */, "keyCode");
 
-  keyIdentifier_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "keyIdentifier");
+  keyIdentifier_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* KeyboardEvent */, "keyIdentifier");
 
-  keyLocation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "keyLocation");
+  keyLocation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* KeyboardEvent */, "keyLocation");
 
-  location_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "location");
+  location_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* KeyboardEvent */, "location");
 
-  metaKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "metaKey");
+  metaKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* KeyboardEvent */, "metaKey");
 
-  repeat_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "repeat");
+  repeat_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* KeyboardEvent */, "repeat");
 
-  shiftKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "shiftKey");
+  shiftKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* KeyboardEvent */, "shiftKey");
 
-  which_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "which");
+  which_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* KeyboardEvent */, "which");
 
-  getModifierState_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getModifierState", []);
+  getModifierState_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* KeyboardEvent */, "getModifierState", []);
 
-  getModifierState_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getModifierState", [__arg_0]);
+  getModifierState_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* KeyboardEvent */, "getModifierState", [__arg_0]);
 
-  initKeyboardEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "initKeyboardEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* KeyboardEvent */, "initKeyboardEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  initKeyboardEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "initKeyboardEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* KeyboardEvent */, "initKeyboardEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  initKeyboardEvent_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis, "initKeyboardEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* KeyboardEvent */, "initKeyboardEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
 
 }
 
 class BlinkKeyframeEffect extends BlinkAnimationEffectReadOnly {
   static final instance = new BlinkKeyframeEffect();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "KeyframeEffect"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("KeyframeEffect");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "KeyframeEffect"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("KeyframeEffect", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "KeyframeEffect"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("KeyframeEffect", [__arg_0, __arg_1]);
 
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "KeyframeEffect"), [__arg_0, __arg_1, __arg_2]);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callConstructor("KeyframeEffect", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkLocation {
   static final instance = new BlinkLocation();
 
-  ancestorOrigins_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ancestorOrigins");
+  ancestorOrigins_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Location */, "ancestorOrigins");
 
-  hash_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hash");
+  hash_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Location */, "hash");
 
-  hash_Setter_(mthis, __arg_0) => mthis["hash"] = __arg_0;
+  hash_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Location */, "hash", __arg_0);
 
-  host_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "host");
+  host_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Location */, "host");
 
-  host_Setter_(mthis, __arg_0) => mthis["host"] = __arg_0;
+  host_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Location */, "host", __arg_0);
 
-  hostname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hostname");
+  hostname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Location */, "hostname");
 
-  hostname_Setter_(mthis, __arg_0) => mthis["hostname"] = __arg_0;
+  hostname_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Location */, "hostname", __arg_0);
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) native "Blink_Getter_Location_href";
 
-  href_Setter_(mthis, __arg_0) => mthis["href"] = __arg_0;
+  href_Setter_(mthis, __arg_0) native "Blink_Setter_Location_href";
 
-  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "origin");
+  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Location */, "origin");
 
-  pathname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pathname");
+  pathname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Location */, "pathname");
 
-  pathname_Setter_(mthis, __arg_0) => mthis["pathname"] = __arg_0;
+  pathname_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Location */, "pathname", __arg_0);
 
-  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "port");
+  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Location */, "port");
 
-  port_Setter_(mthis, __arg_0) => mthis["port"] = __arg_0;
+  port_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Location */, "port", __arg_0);
 
-  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "protocol");
+  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Location */, "protocol");
 
-  protocol_Setter_(mthis, __arg_0) => mthis["protocol"] = __arg_0;
+  protocol_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Location */, "protocol", __arg_0);
 
-  search_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "search");
+  search_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Location */, "search");
 
-  search_Setter_(mthis, __arg_0) => mthis["search"] = __arg_0;
+  search_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Location */, "search", __arg_0);
 
-  assign_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "assign", []);
+  assign_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Location */, "assign", []);
 
-  assign_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "assign", [__arg_0]);
+  assign_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Location */, "assign", [__arg_0]);
 
-  reload_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "reload", []);
+  reload_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Location */, "reload", []);
 
-  replace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "replace", []);
+  replace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Location */, "replace", []);
 
-  replace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "replace", [__arg_0]);
+  replace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Location */, "replace", [__arg_0]);
 
-  toString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "toString", []);
+  toString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Location */, "toString", []);
 
-  valueOf_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "valueOf", []);
+  valueOf_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Location */, "valueOf", []);
 
 }
 
 class BlinkMIDIAccess extends BlinkEventTarget {
   static final instance = new BlinkMIDIAccess();
 
-  inputs_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "inputs");
+  inputs_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIAccess */, "inputs");
 
-  onstatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstatechange");
+  onstatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIAccess */, "onstatechange");
 
-  onstatechange_Setter_(mthis, __arg_0) => mthis["onstatechange"] = __arg_0;
+  onstatechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MIDIAccess */, "onstatechange", __arg_0);
 
-  outputs_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "outputs");
+  outputs_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIAccess */, "outputs");
 
-  sysexEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sysexEnabled");
+  sysexEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIAccess */, "sysexEnabled");
 
 }
 
 class BlinkMIDIConnectionEvent extends BlinkEvent {
   static final instance = new BlinkMIDIConnectionEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MIDIConnectionEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("MIDIConnectionEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MIDIConnectionEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("MIDIConnectionEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MIDIConnectionEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("MIDIConnectionEvent", [__arg_0, __arg_1]);
 
-  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "port");
+  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIConnectionEvent */, "port");
 
 }
 
 class BlinkMIDIInput extends BlinkMIDIPort {
   static final instance = new BlinkMIDIInput();
 
-  onmidimessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmidimessage");
+  onmidimessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIInput */, "onmidimessage");
 
-  onmidimessage_Setter_(mthis, __arg_0) => mthis["onmidimessage"] = __arg_0;
+  onmidimessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MIDIInput */, "onmidimessage", __arg_0);
 
 }
 
 class BlinkMIDIInputMap {
   static final instance = new BlinkMIDIInputMap();
 
-  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "size");
+  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIInputMap */, "size");
 
 }
 
 class BlinkMIDIMessageEvent extends BlinkEvent {
   static final instance = new BlinkMIDIMessageEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MIDIMessageEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("MIDIMessageEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MIDIMessageEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("MIDIMessageEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MIDIMessageEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("MIDIMessageEvent", [__arg_0, __arg_1]);
 
-  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "data");
+  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIMessageEvent */, "data");
 
-  receivedTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "receivedTime");
+  receivedTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIMessageEvent */, "receivedTime");
 
 }
 
 class BlinkMIDIOutput extends BlinkMIDIPort {
   static final instance = new BlinkMIDIOutput();
 
-  send_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "send", []);
+  send_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MIDIOutput */, "send", []);
 
-  send_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "send", [__arg_0]);
+  send_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MIDIOutput */, "send", [__arg_0]);
 
-  send_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "send", [__arg_0, __arg_1]);
+  send_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* MIDIOutput */, "send", [__arg_0, __arg_1]);
 
 }
 
 class BlinkMIDIOutputMap {
   static final instance = new BlinkMIDIOutputMap();
 
-  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "size");
+  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIOutputMap */, "size");
 
 }
 
 class BlinkMIDIPort extends BlinkEventTarget {
   static final instance = new BlinkMIDIPort();
 
-  connection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "connection");
+  connection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIPort */, "connection");
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIPort */, "id");
 
-  manufacturer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "manufacturer");
+  manufacturer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIPort */, "manufacturer");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIPort */, "name");
 
-  onstatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstatechange");
+  onstatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIPort */, "onstatechange");
 
-  onstatechange_Setter_(mthis, __arg_0) => mthis["onstatechange"] = __arg_0;
+  onstatechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MIDIPort */, "onstatechange", __arg_0);
 
-  state_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "state");
+  state_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIPort */, "state");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIPort */, "type");
 
-  version_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "version");
+  version_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MIDIPort */, "version");
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MIDIPort */, "close", []);
 
-  open_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "open", []);
+  open_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MIDIPort */, "open", []);
 
 }
 
 class BlinkMediaController extends BlinkEventTarget {
   static final instance = new BlinkMediaController();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaController"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("MediaController");
 
-  buffered_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "buffered");
+  buffered_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaController */, "buffered");
 
-  currentTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "currentTime");
+  currentTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaController */, "currentTime");
 
-  currentTime_Setter_(mthis, __arg_0) => mthis["currentTime"] = __arg_0;
+  currentTime_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaController */, "currentTime", __arg_0);
 
-  defaultPlaybackRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "defaultPlaybackRate");
+  defaultPlaybackRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaController */, "defaultPlaybackRate");
 
-  defaultPlaybackRate_Setter_(mthis, __arg_0) => mthis["defaultPlaybackRate"] = __arg_0;
+  defaultPlaybackRate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaController */, "defaultPlaybackRate", __arg_0);
 
-  duration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "duration");
+  duration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaController */, "duration");
 
-  muted_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "muted");
+  muted_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaController */, "muted");
 
-  muted_Setter_(mthis, __arg_0) => mthis["muted"] = __arg_0;
+  muted_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaController */, "muted", __arg_0);
 
-  paused_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "paused");
+  paused_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaController */, "paused");
 
-  playbackRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "playbackRate");
+  playbackRate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaController */, "playbackRate");
 
-  playbackRate_Setter_(mthis, __arg_0) => mthis["playbackRate"] = __arg_0;
+  playbackRate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaController */, "playbackRate", __arg_0);
 
-  playbackState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "playbackState");
+  playbackState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaController */, "playbackState");
 
-  played_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "played");
+  played_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaController */, "played");
 
-  seekable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "seekable");
+  seekable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaController */, "seekable");
 
-  volume_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "volume");
+  volume_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaController */, "volume");
 
-  volume_Setter_(mthis, __arg_0) => mthis["volume"] = __arg_0;
+  volume_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaController */, "volume", __arg_0);
 
-  pause_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "pause", []);
+  pause_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaController */, "pause", []);
 
-  play_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "play", []);
+  play_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaController */, "play", []);
 
-  unpause_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "unpause", []);
+  unpause_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaController */, "unpause", []);
 
 }
 
 class BlinkMediaDeviceInfo {
   static final instance = new BlinkMediaDeviceInfo();
 
-  deviceId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "deviceId");
+  deviceId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaDeviceInfo */, "deviceId");
 
-  groupId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "groupId");
+  groupId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaDeviceInfo */, "groupId");
 
-  kind_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "kind");
+  kind_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaDeviceInfo */, "kind");
 
-  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "label");
+  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaDeviceInfo */, "label");
 
 }
 
 class BlinkMediaDevices {
   static final instance = new BlinkMediaDevices();
 
-  enumerateDevices_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "enumerateDevices", []);
+  enumerateDevices_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaDevices */, "enumerateDevices", []);
 
-  getUserMedia_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getUserMedia", []);
+  getUserMedia_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaDevices */, "getUserMedia", []);
 
-  getUserMedia_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getUserMedia", [__arg_0]);
+  getUserMedia_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaDevices */, "getUserMedia", [__arg_0]);
 
 }
 
 class BlinkMediaElementAudioSourceNode extends BlinkAudioSourceNode {
   static final instance = new BlinkMediaElementAudioSourceNode();
 
-  mediaElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "mediaElement");
+  mediaElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaElementAudioSourceNode */, "mediaElement");
 
 }
 
 class BlinkMediaEncryptedEvent extends BlinkEvent {
   static final instance = new BlinkMediaEncryptedEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaEncryptedEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("MediaEncryptedEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaEncryptedEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("MediaEncryptedEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaEncryptedEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("MediaEncryptedEvent", [__arg_0, __arg_1]);
 
-  initData_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "initData");
+  initData_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaEncryptedEvent */, "initData");
 
-  initDataType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "initDataType");
+  initDataType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaEncryptedEvent */, "initDataType");
 
 }
 
 class BlinkMediaError {
   static final instance = new BlinkMediaError();
 
-  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "code");
+  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaError */, "code");
 
 }
 
 class BlinkMediaKeyError {
   static final instance = new BlinkMediaKeyError();
 
-  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "code");
+  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeyError */, "code");
 
-  systemCode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "systemCode");
+  systemCode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeyError */, "systemCode");
 
 }
 
 class BlinkMediaKeyEvent extends BlinkEvent {
   static final instance = new BlinkMediaKeyEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaKeyEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("MediaKeyEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaKeyEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("MediaKeyEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaKeyEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("MediaKeyEvent", [__arg_0, __arg_1]);
 
-  defaultURL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "defaultURL");
+  defaultURL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeyEvent */, "defaultURL");
 
-  errorCode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "errorCode");
+  errorCode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeyEvent */, "errorCode");
 
-  initData_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "initData");
+  initData_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeyEvent */, "initData");
 
-  keySystem_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "keySystem");
+  keySystem_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeyEvent */, "keySystem");
 
-  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "message");
+  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeyEvent */, "message");
 
-  sessionId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sessionId");
+  sessionId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeyEvent */, "sessionId");
 
-  systemCode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "systemCode");
+  systemCode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeyEvent */, "systemCode");
 
 }
 
 class BlinkMediaKeyMessageEvent extends BlinkEvent {
   static final instance = new BlinkMediaKeyMessageEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaKeyMessageEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("MediaKeyMessageEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaKeyMessageEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("MediaKeyMessageEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaKeyMessageEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("MediaKeyMessageEvent", [__arg_0, __arg_1]);
 
-  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "message");
+  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeyMessageEvent */, "message");
 
-  messageType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "messageType");
+  messageType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeyMessageEvent */, "messageType");
 
 }
 
 class BlinkMediaKeySession extends BlinkEventTarget {
   static final instance = new BlinkMediaKeySession();
 
-  closed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "closed");
+  closed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeySession */, "closed");
 
-  expiration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "expiration");
+  expiration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeySession */, "expiration");
 
-  keyStatuses_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "keyStatuses");
+  keyStatuses_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeySession */, "keyStatuses");
 
-  sessionId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sessionId");
+  sessionId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeySession */, "sessionId");
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaKeySession */, "close", []);
 
-  generateRequest_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "generateRequest", []);
+  generateRequest_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaKeySession */, "generateRequest", []);
 
-  generateRequest_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "generateRequest", [__arg_0]);
+  generateRequest_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaKeySession */, "generateRequest", [__arg_0]);
 
-  generateRequest_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "generateRequest", [__arg_0, __arg_1]);
+  generateRequest_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* MediaKeySession */, "generateRequest", [__arg_0, __arg_1]);
 
-  load_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "load", []);
+  load_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaKeySession */, "load", []);
 
-  load_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "load", [__arg_0]);
+  load_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaKeySession */, "load", [__arg_0]);
 
-  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "remove", []);
+  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaKeySession */, "remove", []);
 
-  update_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "update", []);
+  update_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaKeySession */, "update", []);
 
-  update_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "update", [__arg_0]);
+  update_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaKeySession */, "update", [__arg_0]);
 
 }
 
 class BlinkMediaKeyStatusMap {
   static final instance = new BlinkMediaKeyStatusMap();
 
-  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "size");
+  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeyStatusMap */, "size");
 
 }
 
 class BlinkMediaKeySystemAccess {
   static final instance = new BlinkMediaKeySystemAccess();
 
-  keySystem_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "keySystem");
+  keySystem_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaKeySystemAccess */, "keySystem");
 
-  createMediaKeys_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createMediaKeys", []);
+  createMediaKeys_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaKeySystemAccess */, "createMediaKeys", []);
 
-  getConfiguration_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getConfiguration", []);
+  getConfiguration_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaKeySystemAccess */, "getConfiguration", []);
 
 }
 
 class BlinkMediaKeys {
   static final instance = new BlinkMediaKeys();
 
-  createSession_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSession", []);
+  createSession_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaKeys */, "createSession", []);
 
-  createSession_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createSession", [__arg_0]);
+  createSession_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaKeys */, "createSession", [__arg_0]);
 
-  setServerCertificate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setServerCertificate", []);
+  setServerCertificate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaKeys */, "setServerCertificate", []);
 
-  setServerCertificate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setServerCertificate", [__arg_0]);
+  setServerCertificate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaKeys */, "setServerCertificate", [__arg_0]);
 
 }
 
 class BlinkMediaList {
   static final instance = new BlinkMediaList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaList */, "length");
 
-  mediaText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "mediaText");
+  mediaText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaList */, "mediaText");
 
-  mediaText_Setter_(mthis, __arg_0) => mthis["mediaText"] = __arg_0;
+  mediaText_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaList */, "mediaText", __arg_0);
 
-  appendMedium_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "appendMedium", []);
+  appendMedium_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaList */, "appendMedium", []);
 
-  appendMedium_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "appendMedium", [__arg_0]);
+  appendMedium_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaList */, "appendMedium", [__arg_0]);
 
-  deleteMedium_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteMedium", []);
+  deleteMedium_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaList */, "deleteMedium", []);
 
-  deleteMedium_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteMedium", [__arg_0]);
+  deleteMedium_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaList */, "deleteMedium", [__arg_0]);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaList */, "item", [__arg_0]);
 
 }
 
 class BlinkMediaQueryList extends BlinkEventTarget {
   static final instance = new BlinkMediaQueryList();
 
-  matches_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "matches");
+  matches_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaQueryList */, "matches");
 
-  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "media");
+  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaQueryList */, "media");
 
-  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onchange");
+  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaQueryList */, "onchange");
 
-  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
+  onchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaQueryList */, "onchange", __arg_0);
 
-  addListener_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "addListener", []);
+  addListener_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaQueryList */, "addListener", []);
 
-  addListener_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addListener", [__arg_0]);
+  addListener_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaQueryList */, "addListener", [__arg_0]);
 
-  removeListener_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeListener", []);
+  removeListener_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaQueryList */, "removeListener", []);
 
-  removeListener_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeListener", [__arg_0]);
+  removeListener_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaQueryList */, "removeListener", [__arg_0]);
 
 }
 
 class BlinkMediaQueryListEvent extends BlinkEvent {
   static final instance = new BlinkMediaQueryListEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaQueryListEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("MediaQueryListEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaQueryListEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("MediaQueryListEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaQueryListEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("MediaQueryListEvent", [__arg_0, __arg_1]);
 
-  matches_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "matches");
+  matches_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaQueryListEvent */, "matches");
 
-  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "media");
+  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaQueryListEvent */, "media");
 
 }
 
 class BlinkMediaSession {
   static final instance = new BlinkMediaSession();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaSession"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("MediaSession");
 
-  activate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "activate", []);
+  activate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaSession */, "activate", []);
 
-  deactivate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deactivate", []);
+  deactivate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaSession */, "deactivate", []);
 
 }
 
 class BlinkMediaSource extends BlinkEventTarget {
   static final instance = new BlinkMediaSource();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaSource"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("MediaSource");
 
-  activeSourceBuffers_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "activeSourceBuffers");
+  activeSourceBuffers_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaSource */, "activeSourceBuffers");
 
-  duration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "duration");
+  duration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaSource */, "duration");
 
-  duration_Setter_(mthis, __arg_0) => mthis["duration"] = __arg_0;
+  duration_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaSource */, "duration", __arg_0);
 
-  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "readyState");
+  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaSource */, "readyState");
 
-  sourceBuffers_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sourceBuffers");
+  sourceBuffers_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaSource */, "sourceBuffers");
 
-  addSourceBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "addSourceBuffer", []);
+  addSourceBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaSource */, "addSourceBuffer", []);
 
-  addSourceBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addSourceBuffer", [__arg_0]);
+  addSourceBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaSource */, "addSourceBuffer", [__arg_0]);
 
-  endOfStream_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "endOfStream", []);
+  endOfStream_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaSource */, "endOfStream", []);
 
-  endOfStream_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "endOfStream", [__arg_0]);
+  endOfStream_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaSource */, "endOfStream", [__arg_0]);
 
-  isTypeSupported_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "MediaSource"), "isTypeSupported", []);
+  isTypeSupported_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "MediaSource") /* MediaSource */, "isTypeSupported", []);
 
-  isTypeSupported_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "MediaSource"), "isTypeSupported", [__arg_0]);
+  isTypeSupported_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "MediaSource") /* MediaSource */, "isTypeSupported", [__arg_0]);
 
-  removeSourceBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeSourceBuffer", []);
+  removeSourceBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaSource */, "removeSourceBuffer", []);
 
-  removeSourceBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeSourceBuffer", [__arg_0]);
+  removeSourceBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaSource */, "removeSourceBuffer", [__arg_0]);
 
 }
 
 class BlinkMediaStream extends BlinkEventTarget {
   static final instance = new BlinkMediaStream();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaStream"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("MediaStream");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaStream"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("MediaStream", [__arg_0]);
 
-  active_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "active");
+  active_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStream */, "active");
 
-  ended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ended");
+  ended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStream */, "ended");
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStream */, "id");
 
-  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "label");
+  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStream */, "label");
 
-  onactive_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onactive");
+  onactive_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStream */, "onactive");
 
-  onactive_Setter_(mthis, __arg_0) => mthis["onactive"] = __arg_0;
+  onactive_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaStream */, "onactive", __arg_0);
 
-  onaddtrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onaddtrack");
+  onaddtrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStream */, "onaddtrack");
 
-  onaddtrack_Setter_(mthis, __arg_0) => mthis["onaddtrack"] = __arg_0;
+  onaddtrack_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaStream */, "onaddtrack", __arg_0);
 
-  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onended");
+  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStream */, "onended");
 
-  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
+  onended_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaStream */, "onended", __arg_0);
 
-  oninactive_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oninactive");
+  oninactive_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStream */, "oninactive");
 
-  oninactive_Setter_(mthis, __arg_0) => mthis["oninactive"] = __arg_0;
+  oninactive_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaStream */, "oninactive", __arg_0);
 
-  onremovetrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onremovetrack");
+  onremovetrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStream */, "onremovetrack");
 
-  onremovetrack_Setter_(mthis, __arg_0) => mthis["onremovetrack"] = __arg_0;
+  onremovetrack_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaStream */, "onremovetrack", __arg_0);
 
-  addTrack_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "addTrack", []);
+  addTrack_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaStream */, "addTrack", []);
 
-  addTrack_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addTrack", [__arg_0]);
+  addTrack_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaStream */, "addTrack", [__arg_0]);
 
-  clone_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clone", []);
+  clone_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaStream */, "clone", []);
 
-  getAudioTracks_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAudioTracks", []);
+  getAudioTracks_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaStream */, "getAudioTracks", []);
 
-  getTrackById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getTrackById", []);
+  getTrackById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaStream */, "getTrackById", []);
 
-  getTrackById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getTrackById", [__arg_0]);
+  getTrackById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaStream */, "getTrackById", [__arg_0]);
 
-  getTracks_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getTracks", []);
+  getTracks_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaStream */, "getTracks", []);
 
-  getVideoTracks_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getVideoTracks", []);
+  getVideoTracks_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaStream */, "getVideoTracks", []);
 
-  removeTrack_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeTrack", []);
+  removeTrack_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaStream */, "removeTrack", []);
 
-  removeTrack_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeTrack", [__arg_0]);
+  removeTrack_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaStream */, "removeTrack", [__arg_0]);
 
-  stop_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stop", []);
+  stop_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaStream */, "stop", []);
 
 }
 
 class BlinkMediaStreamAudioDestinationNode extends BlinkAudioNode {
   static final instance = new BlinkMediaStreamAudioDestinationNode();
 
-  stream_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "stream");
+  stream_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStreamAudioDestinationNode */, "stream");
 
 }
 
 class BlinkMediaStreamAudioSourceNode extends BlinkAudioSourceNode {
   static final instance = new BlinkMediaStreamAudioSourceNode();
 
-  mediaStream_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "mediaStream");
+  mediaStream_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStreamAudioSourceNode */, "mediaStream");
 
 }
 
 class BlinkMediaStreamEvent extends BlinkEvent {
   static final instance = new BlinkMediaStreamEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaStreamEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("MediaStreamEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaStreamEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("MediaStreamEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MediaStreamEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("MediaStreamEvent", [__arg_0, __arg_1]);
 
-  stream_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "stream");
+  stream_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStreamEvent */, "stream");
 
 }
 
 class BlinkMediaStreamTrack extends BlinkEventTarget {
   static final instance = new BlinkMediaStreamTrack();
 
-  enabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "enabled");
+  enabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStreamTrack */, "enabled");
 
-  enabled_Setter_(mthis, __arg_0) => mthis["enabled"] = __arg_0;
+  enabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaStreamTrack */, "enabled", __arg_0);
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStreamTrack */, "id");
 
-  kind_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "kind");
+  kind_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStreamTrack */, "kind");
 
-  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "label");
+  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStreamTrack */, "label");
 
-  muted_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "muted");
+  muted_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStreamTrack */, "muted");
 
-  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onended");
+  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStreamTrack */, "onended");
 
-  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
+  onended_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaStreamTrack */, "onended", __arg_0);
 
-  onmute_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmute");
+  onmute_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStreamTrack */, "onmute");
 
-  onmute_Setter_(mthis, __arg_0) => mthis["onmute"] = __arg_0;
+  onmute_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaStreamTrack */, "onmute", __arg_0);
 
-  onunmute_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onunmute");
+  onunmute_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStreamTrack */, "onunmute");
 
-  onunmute_Setter_(mthis, __arg_0) => mthis["onunmute"] = __arg_0;
+  onunmute_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MediaStreamTrack */, "onunmute", __arg_0);
 
-  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "readyState");
+  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStreamTrack */, "readyState");
 
-  clone_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clone", []);
+  clone_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaStreamTrack */, "clone", []);
 
-  getSources_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "MediaStreamTrack"), "getSources", []);
+  getSources_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "MediaStreamTrack") /* MediaStreamTrack */, "getSources", []);
 
-  getSources_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "MediaStreamTrack"), "getSources", [__arg_0]);
+  getSources_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "MediaStreamTrack") /* MediaStreamTrack */, "getSources", [__arg_0]);
 
-  stop_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stop", []);
+  stop_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaStreamTrack */, "stop", []);
 
 }
 
 class BlinkMediaStreamTrackEvent extends BlinkEvent {
   static final instance = new BlinkMediaStreamTrackEvent();
 
-  track_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "track");
+  track_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MediaStreamTrackEvent */, "track");
 
 }
 
 class BlinkMediaStreamTrackSourcesCallback {
   static final instance = new BlinkMediaStreamTrackSourcesCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MediaStreamTrackSourcesCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MediaStreamTrackSourcesCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkMemoryInfo {
   static final instance = new BlinkMemoryInfo();
 
-  jsHeapSizeLimit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "jsHeapSizeLimit");
+  jsHeapSizeLimit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MemoryInfo */, "jsHeapSizeLimit");
 
-  totalJSHeapSize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "totalJSHeapSize");
+  totalJSHeapSize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MemoryInfo */, "totalJSHeapSize");
 
-  usedJSHeapSize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "usedJSHeapSize");
+  usedJSHeapSize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MemoryInfo */, "usedJSHeapSize");
 
 }
 
 class BlinkMessageChannel {
   static final instance = new BlinkMessageChannel();
 
-  port1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "port1");
+  port1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MessageChannel */, "port1");
 
-  port2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "port2");
+  port2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MessageChannel */, "port2");
 
 }
 
 class BlinkMessageEvent extends BlinkEvent {
   static final instance = new BlinkMessageEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MessageEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("MessageEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MessageEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("MessageEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MessageEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("MessageEvent", [__arg_0, __arg_1]);
 
-  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "data");
+  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MessageEvent */, "data");
 
-  lastEventId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lastEventId");
+  lastEventId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MessageEvent */, "lastEventId");
 
-  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "origin");
+  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MessageEvent */, "origin");
 
-  ports_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ports");
+  ports_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MessageEvent */, "ports");
 
-  source_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "source");
+  source_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MessageEvent */, "source");
 
-  initMessageEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "initMessageEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* MessageEvent */, "initMessageEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  initMessageEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "initMessageEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* MessageEvent */, "initMessageEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  initMessageEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "initMessageEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* MessageEvent */, "initMessageEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
 }
 
 class BlinkMessagePort extends BlinkEventTarget {
   static final instance = new BlinkMessagePort();
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MessagePort */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* MessagePort */, "onmessage", __arg_0);
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MessagePort */, "close", []);
 
-  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", []);
+  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MessagePort */, "postMessage", []);
 
-  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0]);
+  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MessagePort */, "postMessage", [__arg_0]);
 
-  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0, __arg_1]);
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* MessagePort */, "postMessage", [__arg_0, __arg_1]);
 
-  start_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "start", []);
+  start_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MessagePort */, "start", []);
 
 }
 
 class BlinkMetadata {
   static final instance = new BlinkMetadata();
 
-  modificationTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "modificationTime");
+  modificationTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Metadata */, "modificationTime");
 
-  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "size");
+  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Metadata */, "size");
 
 }
 
 class BlinkMetadataCallback {
   static final instance = new BlinkMetadataCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MetadataCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MetadataCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkMimeType {
   static final instance = new BlinkMimeType();
 
-  description_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "description");
+  description_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MimeType */, "description");
 
-  enabledPlugin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "enabledPlugin");
+  enabledPlugin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MimeType */, "enabledPlugin");
 
-  suffixes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "suffixes");
+  suffixes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MimeType */, "suffixes");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MimeType */, "type");
 
 }
 
 class BlinkMimeTypeArray {
   static final instance = new BlinkMimeTypeArray();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MimeTypeArray */, "length");
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MimeTypeArray */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MimeTypeArray */, "item", [__arg_0]);
 
-  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", []);
+  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MimeTypeArray */, "namedItem", []);
 
-  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", [__arg_0]);
+  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MimeTypeArray */, "namedItem", [__arg_0]);
 
 }
 
 class BlinkMouseEvent extends BlinkUIEvent {
   static final instance = new BlinkMouseEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MouseEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("MouseEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MouseEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("MouseEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MouseEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("MouseEvent", [__arg_0, __arg_1]);
 
-  altKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "altKey");
+  altKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "altKey");
 
-  button_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "button");
+  button_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "button");
 
-  buttons_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "buttons");
+  buttons_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "buttons");
 
-  clientX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "clientX");
+  clientX_Getter_(mthis) native "Blink_Getter_MouseEvent_clientX";
 
-  clientY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "clientY");
+  clientY_Getter_(mthis) native "Blink_Getter_MouseEvent_clientY";
 
-  ctrlKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ctrlKey");
+  ctrlKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "ctrlKey");
 
-  dataTransfer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dataTransfer");
+  dataTransfer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "dataTransfer");
 
-  fromElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fromElement");
+  fromElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "fromElement");
 
-  layerX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "layerX");
+  layerX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "layerX");
 
-  layerY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "layerY");
+  layerY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "layerY");
 
-  metaKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "metaKey");
+  metaKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "metaKey");
 
-  movementX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "movementX");
+  movementX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "movementX");
 
-  movementY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "movementY");
+  movementY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "movementY");
 
-  offsetX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "offsetX");
+  offsetX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "offsetX");
 
-  offsetY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "offsetY");
+  offsetY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "offsetY");
 
-  pageX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pageX");
+  pageX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "pageX");
 
-  pageY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pageY");
+  pageY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "pageY");
 
-  region_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "region");
+  region_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "region");
 
-  relatedTarget_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "relatedTarget");
+  relatedTarget_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "relatedTarget");
 
-  screenX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "screenX");
+  screenX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "screenX");
 
-  screenY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "screenY");
+  screenY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "screenY");
 
-  shiftKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "shiftKey");
+  shiftKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "shiftKey");
 
-  toElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "toElement");
+  toElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "toElement");
 
-  webkitMovementX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitMovementX");
+  webkitMovementX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "webkitMovementX");
 
-  webkitMovementY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitMovementY");
+  webkitMovementY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "webkitMovementY");
 
-  which_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "which");
+  which_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "which");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MouseEvent */, "y");
 
-  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) => Blink_JsNative_DomException.callMethod(mthis, "initMouseEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* MouseEvent */, "initMouseEvent", [__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_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) => Blink_JsNative_DomException.callMethod(mthis, "initMouseEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* MouseEvent */, "initMouseEvent", [__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_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) => Blink_JsNative_DomException.callMethod(mthis, "initMouseEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* MouseEvent */, "initMouseEvent", [__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]);
 
 }
 
 class BlinkMutationCallback {
   static final instance = new BlinkMutationCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MutationCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MutationCallback */, "handleEvent", [__arg_0]);
 
-  handleEvent_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0, __arg_1]);
+  handleEvent_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* MutationCallback */, "handleEvent", [__arg_0, __arg_1]);
 
 }
 
 class BlinkMutationEvent extends BlinkEvent {
   static final instance = new BlinkMutationEvent();
 
-  attrChange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "attrChange");
+  attrChange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MutationEvent */, "attrChange");
 
-  attrName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "attrName");
+  attrName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MutationEvent */, "attrName");
 
-  newValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "newValue");
+  newValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MutationEvent */, "newValue");
 
-  prevValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "prevValue");
+  prevValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MutationEvent */, "prevValue");
 
-  relatedNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "relatedNode");
+  relatedNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MutationEvent */, "relatedNode");
 
-  initMutationEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "initMutationEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* MutationEvent */, "initMutationEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  initMutationEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "initMutationEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* MutationEvent */, "initMutationEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  initMutationEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "initMutationEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* MutationEvent */, "initMutationEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
 }
 
 class BlinkMutationObserver {
   static final instance = new BlinkMutationObserver();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MutationObserver"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("MutationObserver");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "MutationObserver"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("MutationObserver", [__arg_0]);
 
-  disconnect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "disconnect", []);
+  disconnect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MutationObserver */, "disconnect", []);
 
-  observe_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "observe", []);
+  observe_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MutationObserver */, "observe", []);
 
-  observe_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "observe", [__arg_0]);
+  observe_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* MutationObserver */, "observe", [__arg_0]);
 
-  observe_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "observe", [__arg_0, __arg_1]);
+  observe_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* MutationObserver */, "observe", [__arg_0, __arg_1]);
 
-  takeRecords_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "takeRecords", []);
+  takeRecords_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* MutationObserver */, "takeRecords", []);
 
 }
 
 class BlinkMutationRecord {
   static final instance = new BlinkMutationRecord();
 
-  addedNodes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "addedNodes");
+  addedNodes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MutationRecord */, "addedNodes");
 
-  attributeName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "attributeName");
+  attributeName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MutationRecord */, "attributeName");
 
-  attributeNamespace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "attributeNamespace");
+  attributeNamespace_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MutationRecord */, "attributeNamespace");
 
-  nextSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "nextSibling");
+  nextSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MutationRecord */, "nextSibling");
 
-  oldValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oldValue");
+  oldValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MutationRecord */, "oldValue");
 
-  previousSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "previousSibling");
+  previousSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MutationRecord */, "previousSibling");
 
-  removedNodes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "removedNodes");
+  removedNodes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MutationRecord */, "removedNodes");
 
-  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "target");
+  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MutationRecord */, "target");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* MutationRecord */, "type");
 
 }
 
 class BlinkNamedNodeMap {
   static final instance = new BlinkNamedNodeMap();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NamedNodeMap */, "length");
 
-  getNamedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getNamedItem", []);
+  getNamedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NamedNodeMap */, "getNamedItem", []);
 
-  getNamedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getNamedItem", [__arg_0]);
+  getNamedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* NamedNodeMap */, "getNamedItem", [__arg_0]);
 
-  getNamedItemNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getNamedItemNS", []);
+  getNamedItemNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NamedNodeMap */, "getNamedItemNS", []);
 
-  getNamedItemNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getNamedItemNS", [__arg_0]);
+  getNamedItemNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* NamedNodeMap */, "getNamedItemNS", [__arg_0]);
 
-  getNamedItemNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getNamedItemNS", [__arg_0, __arg_1]);
+  getNamedItemNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* NamedNodeMap */, "getNamedItemNS", [__arg_0, __arg_1]);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NamedNodeMap */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* NamedNodeMap */, "item", [__arg_0]);
 
-  removeNamedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeNamedItem", []);
+  removeNamedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NamedNodeMap */, "removeNamedItem", []);
 
-  removeNamedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeNamedItem", [__arg_0]);
+  removeNamedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* NamedNodeMap */, "removeNamedItem", [__arg_0]);
 
-  removeNamedItemNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeNamedItemNS", []);
+  removeNamedItemNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NamedNodeMap */, "removeNamedItemNS", []);
 
-  removeNamedItemNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeNamedItemNS", [__arg_0]);
+  removeNamedItemNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* NamedNodeMap */, "removeNamedItemNS", [__arg_0]);
 
-  removeNamedItemNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "removeNamedItemNS", [__arg_0, __arg_1]);
+  removeNamedItemNS_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* NamedNodeMap */, "removeNamedItemNS", [__arg_0, __arg_1]);
 
-  setNamedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setNamedItem", []);
+  setNamedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NamedNodeMap */, "setNamedItem", []);
 
-  setNamedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setNamedItem", [__arg_0]);
+  setNamedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* NamedNodeMap */, "setNamedItem", [__arg_0]);
 
-  setNamedItemNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setNamedItemNS", []);
+  setNamedItemNS_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NamedNodeMap */, "setNamedItemNS", []);
 
-  setNamedItemNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setNamedItemNS", [__arg_0]);
+  setNamedItemNS_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* NamedNodeMap */, "setNamedItemNS", [__arg_0]);
 
 }
 
 class BlinkNavigator {
   static final instance = new BlinkNavigator();
 
-  bluetooth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "bluetooth");
+  bluetooth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "bluetooth");
 
-  connection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "connection");
+  connection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "connection");
 
-  credentials_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "credentials");
+  credentials_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "credentials");
 
-  doNotTrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "doNotTrack");
+  doNotTrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "doNotTrack");
 
-  geolocation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "geolocation");
+  geolocation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "geolocation");
 
-  maxTouchPoints_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "maxTouchPoints");
+  maxTouchPoints_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "maxTouchPoints");
 
-  mediaDevices_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "mediaDevices");
+  mediaDevices_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "mediaDevices");
 
-  mimeTypes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "mimeTypes");
+  mimeTypes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "mimeTypes");
 
-  permissions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "permissions");
+  permissions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "permissions");
 
-  plugins_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "plugins");
+  plugins_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "plugins");
 
-  presentation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "presentation");
+  presentation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "presentation");
 
-  productSub_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "productSub");
+  productSub_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "productSub");
 
-  serviceWorker_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "serviceWorker");
+  serviceWorker_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "serviceWorker");
 
-  services_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "services");
+  services_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "services");
 
-  storageQuota_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "storageQuota");
+  storageQuota_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "storageQuota");
 
-  vendor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "vendor");
+  vendor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "vendor");
 
-  vendorSub_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "vendorSub");
+  vendorSub_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "vendorSub");
 
-  webkitPersistentStorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitPersistentStorage");
+  webkitPersistentStorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "webkitPersistentStorage");
 
-  webkitTemporaryStorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitTemporaryStorage");
+  webkitTemporaryStorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Navigator */, "webkitTemporaryStorage");
 
-  getBattery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getBattery", []);
+  getBattery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "getBattery", []);
 
-  getGamepads_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getGamepads", []);
+  getGamepads_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "getGamepads", []);
 
-  getVRDevices_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getVRDevices", []);
+  getVRDevices_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "getVRDevices", []);
 
-  isProtocolHandlerRegistered_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isProtocolHandlerRegistered", []);
+  isProtocolHandlerRegistered_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "isProtocolHandlerRegistered", []);
 
-  isProtocolHandlerRegistered_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isProtocolHandlerRegistered", [__arg_0]);
+  isProtocolHandlerRegistered_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "isProtocolHandlerRegistered", [__arg_0]);
 
-  isProtocolHandlerRegistered_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "isProtocolHandlerRegistered", [__arg_0, __arg_1]);
+  isProtocolHandlerRegistered_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "isProtocolHandlerRegistered", [__arg_0, __arg_1]);
 
-  javaEnabled_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "javaEnabled", []);
+  javaEnabled_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "javaEnabled", []);
 
-  registerProtocolHandler_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "registerProtocolHandler", [__arg_0]);
+  registerProtocolHandler_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "registerProtocolHandler", [__arg_0]);
 
-  registerProtocolHandler_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "registerProtocolHandler", [__arg_0, __arg_1]);
+  registerProtocolHandler_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "registerProtocolHandler", [__arg_0, __arg_1]);
 
-  registerProtocolHandler_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "registerProtocolHandler", [__arg_0, __arg_1, __arg_2]);
+  registerProtocolHandler_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "registerProtocolHandler", [__arg_0, __arg_1, __arg_2]);
 
-  requestMIDIAccess_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "requestMIDIAccess", []);
+  requestMIDIAccess_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "requestMIDIAccess", []);
 
-  requestMIDIAccess_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "requestMIDIAccess", [__arg_0]);
+  requestMIDIAccess_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "requestMIDIAccess", [__arg_0]);
 
-  requestMediaKeySystemAccess_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "requestMediaKeySystemAccess", []);
+  requestMediaKeySystemAccess_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "requestMediaKeySystemAccess", []);
 
-  requestMediaKeySystemAccess_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "requestMediaKeySystemAccess", [__arg_0]);
+  requestMediaKeySystemAccess_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "requestMediaKeySystemAccess", [__arg_0]);
 
-  requestMediaKeySystemAccess_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "requestMediaKeySystemAccess", [__arg_0, __arg_1]);
+  requestMediaKeySystemAccess_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "requestMediaKeySystemAccess", [__arg_0, __arg_1]);
 
-  sendBeacon_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "sendBeacon", []);
+  sendBeacon_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "sendBeacon", []);
 
-  sendBeacon_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "sendBeacon", [__arg_0]);
+  sendBeacon_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "sendBeacon", [__arg_0]);
 
-  sendBeacon_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "sendBeacon", [__arg_0, __arg_1]);
+  sendBeacon_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "sendBeacon", [__arg_0, __arg_1]);
 
-  unregisterProtocolHandler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "unregisterProtocolHandler", []);
+  unregisterProtocolHandler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "unregisterProtocolHandler", []);
 
-  unregisterProtocolHandler_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "unregisterProtocolHandler", [__arg_0]);
+  unregisterProtocolHandler_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "unregisterProtocolHandler", [__arg_0]);
 
-  unregisterProtocolHandler_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "unregisterProtocolHandler", [__arg_0, __arg_1]);
+  unregisterProtocolHandler_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "unregisterProtocolHandler", [__arg_0, __arg_1]);
 
-  webkitGetUserMedia_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "webkitGetUserMedia", [__arg_0]);
+  webkitGetUserMedia_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "webkitGetUserMedia", [__arg_0]);
 
-  webkitGetUserMedia_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "webkitGetUserMedia", [__arg_0, __arg_1]);
+  webkitGetUserMedia_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "webkitGetUserMedia", [__arg_0, __arg_1]);
 
-  webkitGetUserMedia_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "webkitGetUserMedia", [__arg_0, __arg_1, __arg_2]);
+  webkitGetUserMedia_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Navigator */, "webkitGetUserMedia", [__arg_0, __arg_1, __arg_2]);
 
-  hardwareConcurrency_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hardwareConcurrency");
+  hardwareConcurrency_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorCPU */, "hardwareConcurrency");
 
-  appCodeName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "appCodeName");
+  appCodeName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "appCodeName");
 
-  appName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "appName");
+  appName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "appName");
 
-  appVersion_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "appVersion");
+  appVersion_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "appVersion");
 
-  dartEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dartEnabled");
+  dartEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "dartEnabled");
 
-  platform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "platform");
+  platform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "platform");
 
-  product_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "product");
+  product_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "product");
 
-  userAgent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "userAgent");
+  userAgent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "userAgent");
 
-  language_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "language");
+  language_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorLanguage */, "language");
 
-  languages_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "languages");
+  languages_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorLanguage */, "languages");
 
-  onLine_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onLine");
+  onLine_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorOnLine */, "onLine");
 
-  cookieEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cookieEnabled");
+  cookieEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorStorageUtils */, "cookieEnabled");
 
-  getStorageUpdates_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getStorageUpdates", []);
+  getStorageUpdates_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NavigatorStorageUtils */, "getStorageUpdates", []);
 
 }
 
 class BlinkNavigatorCPU {
   static final instance = new BlinkNavigatorCPU();
 
-  hardwareConcurrency_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hardwareConcurrency");
+  hardwareConcurrency_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorCPU */, "hardwareConcurrency");
 
 }
 
 class BlinkNavigatorID {
   static final instance = new BlinkNavigatorID();
 
-  appCodeName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "appCodeName");
+  appCodeName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "appCodeName");
 
-  appName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "appName");
+  appName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "appName");
 
-  appVersion_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "appVersion");
+  appVersion_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "appVersion");
 
-  dartEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dartEnabled");
+  dartEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "dartEnabled");
 
-  platform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "platform");
+  platform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "platform");
 
-  product_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "product");
+  product_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "product");
 
-  userAgent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "userAgent");
+  userAgent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "userAgent");
 
 }
 
 class BlinkNavigatorLanguage {
   static final instance = new BlinkNavigatorLanguage();
 
-  language_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "language");
+  language_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorLanguage */, "language");
 
-  languages_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "languages");
+  languages_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorLanguage */, "languages");
 
 }
 
 class BlinkNavigatorOnLine {
   static final instance = new BlinkNavigatorOnLine();
 
-  onLine_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onLine");
+  onLine_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorOnLine */, "onLine");
 
 }
 
 class BlinkNavigatorStorageUtils {
   static final instance = new BlinkNavigatorStorageUtils();
 
-  cookieEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cookieEnabled");
+  cookieEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorStorageUtils */, "cookieEnabled");
 
-  getStorageUpdates_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getStorageUpdates", []);
+  getStorageUpdates_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NavigatorStorageUtils */, "getStorageUpdates", []);
 
 }
 
 class BlinkNavigatorUserMediaError {
   static final instance = new BlinkNavigatorUserMediaError();
 
-  constraintName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "constraintName");
+  constraintName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorUserMediaError */, "constraintName");
 
-  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "message");
+  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorUserMediaError */, "message");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorUserMediaError */, "name");
 
 }
 
 class BlinkNavigatorUserMediaErrorCallback {
   static final instance = new BlinkNavigatorUserMediaErrorCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NavigatorUserMediaErrorCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* NavigatorUserMediaErrorCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkNavigatorUserMediaSuccessCallback {
   static final instance = new BlinkNavigatorUserMediaSuccessCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NavigatorUserMediaSuccessCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* NavigatorUserMediaSuccessCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkNetworkInformation extends BlinkEventTarget {
   static final instance = new BlinkNetworkInformation();
 
-  ontypechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontypechange");
+  ontypechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NetworkInformation */, "ontypechange");
 
-  ontypechange_Setter_(mthis, __arg_0) => mthis["ontypechange"] = __arg_0;
+  ontypechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* NetworkInformation */, "ontypechange", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NetworkInformation */, "type");
 
 }
 
 class BlinkNode extends BlinkEventTarget {
   static final instance = new BlinkNode();
 
-  baseURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseURI");
+  baseURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Node */, "baseURI");
 
-  childNodes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "childNodes");
+  childNodes_Getter_(mthis) native "Blink_Getter_Node_childNodes";
 
-  firstChild_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "firstChild");
+  firstChild_Getter_(mthis) native "Blink_Getter_Node_firstChild";
 
-  lastChild_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lastChild");
+  lastChild_Getter_(mthis) native "Blink_Getter_Node_lastChild";
 
-  localName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "localName");
+  localName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Node */, "localName");
 
-  namespaceURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "namespaceURI");
+  namespaceURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Node */, "namespaceURI");
 
-  nextSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "nextSibling");
+  nextSibling_Getter_(mthis) native "Blink_Getter_Node_nextSibling";
 
-  nodeName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "nodeName");
+  nodeName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Node */, "nodeName");
 
-  nodeType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "nodeType");
+  nodeType_Getter_(mthis) native "Blink_Getter_Node_nodeType";
 
-  nodeValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "nodeValue");
+  nodeValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Node */, "nodeValue");
 
-  nodeValue_Setter_(mthis, __arg_0) => mthis["nodeValue"] = __arg_0;
+  nodeValue_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Node */, "nodeValue", __arg_0);
 
-  ownerDocument_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ownerDocument");
+  ownerDocument_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Node */, "ownerDocument");
 
-  parentElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "parentElement");
+  parentElement_Getter_(mthis) native "Blink_Getter_Node_parentElement";
 
-  parentNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "parentNode");
+  parentNode_Getter_(mthis) native "Blink_Getter_Node_parentNode";
 
-  previousSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "previousSibling");
+  previousSibling_Getter_(mthis) native "Blink_Getter_Node_previousSibling";
 
-  textContent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "textContent");
+  textContent_Getter_(mthis) native "Blink_Getter_Node_textContent";
 
-  textContent_Setter_(mthis, __arg_0) => mthis["textContent"] = __arg_0;
+  textContent_Setter_(mthis, __arg_0) native "Blink_Setter_Node_textContent";
 
-  appendChild_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "appendChild", []);
+  appendChild_Callback_0_(mthis) native "Blink_Operation_0_Node_appendChild";
 
-  appendChild_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "appendChild", [__arg_0]);
+  appendChild_Callback_1_(mthis, __arg_0) native "Blink_Operation_Node_appendChild"; /* __arg_0 */
 
-  cloneNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cloneNode", []);
+  cloneNode_Callback_0_(mthis) native "Blink_Operation_0_Node_cloneNode";
 
-  cloneNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "cloneNode", [__arg_0]);
+  cloneNode_Callback_1_(mthis, __arg_0) native "Blink_Operation_Node_cloneNode"; /* __arg_0 */
 
-  compareDocumentPosition_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "compareDocumentPosition", []);
+  compareDocumentPosition_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "compareDocumentPosition", []);
 
-  compareDocumentPosition_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "compareDocumentPosition", [__arg_0]);
+  compareDocumentPosition_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "compareDocumentPosition", [__arg_0]);
 
-  contains_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "contains", []);
+  contains_Callback_0_(mthis) native "Blink_Operation_0_Node_contains";
 
-  contains_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "contains", [__arg_0]);
+  contains_Callback_1_(mthis, __arg_0) native "Blink_Operation_Node_contains"; /* __arg_0 */
 
-  hasChildNodes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "hasChildNodes", []);
+  hasChildNodes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "hasChildNodes", []);
 
-  insertBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertBefore", []);
+  insertBefore_Callback_0_(mthis) native "Blink_Operation_0_Node_insertBefore";
 
-  insertBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertBefore", [__arg_0]);
+  insertBefore_Callback_1_(mthis, __arg_0) native "Blink_Operation_Node_insertBefore"; /* __arg_0 */
 
-  insertBefore_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "insertBefore", [__arg_0, __arg_1]);
+  insertBefore_Callback_2_(mthis, __arg_0, __arg_1) native "Blink_Operation_Node_insertBefore"; /* __arg_0, __arg_1 */
 
-  isDefaultNamespace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isDefaultNamespace", []);
+  isDefaultNamespace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "isDefaultNamespace", []);
 
-  isDefaultNamespace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isDefaultNamespace", [__arg_0]);
+  isDefaultNamespace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "isDefaultNamespace", [__arg_0]);
 
-  isEqualNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isEqualNode", []);
+  isEqualNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "isEqualNode", []);
 
-  isEqualNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isEqualNode", [__arg_0]);
+  isEqualNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "isEqualNode", [__arg_0]);
 
-  isSameNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isSameNode", []);
+  isSameNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "isSameNode", []);
 
-  isSameNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isSameNode", [__arg_0]);
+  isSameNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "isSameNode", [__arg_0]);
 
-  lookupNamespaceURI_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "lookupNamespaceURI", []);
+  lookupNamespaceURI_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "lookupNamespaceURI", []);
 
-  lookupNamespaceURI_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "lookupNamespaceURI", [__arg_0]);
+  lookupNamespaceURI_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "lookupNamespaceURI", [__arg_0]);
 
-  lookupPrefix_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "lookupPrefix", []);
+  lookupPrefix_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "lookupPrefix", []);
 
-  lookupPrefix_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "lookupPrefix", [__arg_0]);
+  lookupPrefix_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "lookupPrefix", [__arg_0]);
 
-  normalize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "normalize", []);
+  normalize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "normalize", []);
 
-  removeChild_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeChild", []);
+  removeChild_Callback_0_(mthis) native "Blink_Operation_0_Node_removeChild";
 
-  removeChild_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeChild", [__arg_0]);
+  removeChild_Callback_1_(mthis, __arg_0) native "Blink_Operation_Node_removeChild"; /* __arg_0 */
 
-  replaceChild_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "replaceChild", []);
+  replaceChild_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "replaceChild", []);
 
-  replaceChild_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "replaceChild", [__arg_0]);
+  replaceChild_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "replaceChild", [__arg_0]);
 
-  replaceChild_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "replaceChild", [__arg_0, __arg_1]);
+  replaceChild_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Node */, "replaceChild", [__arg_0, __arg_1]);
 
 }
 
 class BlinkNodeFilter {
   static final instance = new BlinkNodeFilter();
 
-  acceptNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "acceptNode", []);
+  acceptNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NodeFilter */, "acceptNode", []);
 
-  acceptNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "acceptNode", [__arg_0]);
+  acceptNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* NodeFilter */, "acceptNode", [__arg_0]);
 
 }
 
 class BlinkNodeIterator {
   static final instance = new BlinkNodeIterator();
 
-  filter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "filter");
+  filter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NodeIterator */, "filter");
 
-  pointerBeforeReferenceNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pointerBeforeReferenceNode");
+  pointerBeforeReferenceNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NodeIterator */, "pointerBeforeReferenceNode");
 
-  referenceNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "referenceNode");
+  referenceNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NodeIterator */, "referenceNode");
 
-  root_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "root");
+  root_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NodeIterator */, "root");
 
-  whatToShow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "whatToShow");
+  whatToShow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NodeIterator */, "whatToShow");
 
-  detach_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "detach", []);
+  detach_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NodeIterator */, "detach", []);
 
-  nextNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "nextNode", []);
+  nextNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NodeIterator */, "nextNode", []);
 
-  previousNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "previousNode", []);
+  previousNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NodeIterator */, "previousNode", []);
 
 }
 
 class BlinkNodeList {
   static final instance = new BlinkNodeList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) native "Blink_Getter_NodeList_length";
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) native "Blink_Operation_0_NodeList_item";
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) native "Blink_Operation_NodeList_item"; /* __arg_0 */
 
 }
 
 class BlinkNonDocumentTypeChildNode {
   static final instance = new BlinkNonDocumentTypeChildNode();
 
-  nextElementSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "nextElementSibling");
+  nextElementSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NonDocumentTypeChildNode */, "nextElementSibling");
 
-  previousElementSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "previousElementSibling");
+  previousElementSibling_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NonDocumentTypeChildNode */, "previousElementSibling");
 
 }
 
 class BlinkNonElementParentNode {
   static final instance = new BlinkNonElementParentNode();
 
-  getElementById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getElementById", []);
+  getElementById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NonElementParentNode */, "getElementById", []);
 
-  getElementById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getElementById", [__arg_0]);
+  getElementById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* NonElementParentNode */, "getElementById", [__arg_0]);
 
 }
 
 class BlinkNotification extends BlinkEventTarget {
   static final instance = new BlinkNotification();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Notification"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("Notification");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Notification"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("Notification", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Notification"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("Notification", [__arg_0, __arg_1]);
 
-  body_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "body");
+  body_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Notification */, "body");
 
-  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "data");
+  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Notification */, "data");
 
-  dir_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dir");
+  dir_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Notification */, "dir");
 
-  icon_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "icon");
+  icon_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Notification */, "icon");
 
-  lang_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lang");
+  lang_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Notification */, "lang");
 
-  onclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclick");
+  onclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Notification */, "onclick");
 
-  onclick_Setter_(mthis, __arg_0) => mthis["onclick"] = __arg_0;
+  onclick_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Notification */, "onclick", __arg_0);
 
-  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclose");
+  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Notification */, "onclose");
 
-  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
+  onclose_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Notification */, "onclose", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Notification */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Notification */, "onerror", __arg_0);
 
-  onshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onshow");
+  onshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Notification */, "onshow");
 
-  onshow_Setter_(mthis, __arg_0) => mthis["onshow"] = __arg_0;
+  onshow_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Notification */, "onshow", __arg_0);
 
-  permission_Getter_() => Blink_JsNative_DomException.getProperty(Blink_JsNative_DomException.getProperty(js.context, "Notification"), "permission");
+  permission_Getter_() => Blink_JsNative_DomException.getProperty(Blink_JsNative_DomException.getProperty(js.context, "Notification") /* Notification */, "permission");
 
-  silent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "silent");
+  silent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Notification */, "silent");
 
-  tag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "tag");
+  tag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Notification */, "tag");
 
-  title_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "title");
+  title_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Notification */, "title");
 
-  vibrate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "vibrate");
+  vibrate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Notification */, "vibrate");
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Notification */, "close", []);
 
-  requestPermission_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "Notification"), "requestPermission", []);
+  requestPermission_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "Notification") /* Notification */, "requestPermission", []);
 
-  requestPermission_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "Notification"), "requestPermission", [__arg_0]);
+  requestPermission_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "Notification") /* Notification */, "requestPermission", [__arg_0]);
 
 }
 
 class BlinkNotificationEvent extends BlinkExtendableEvent {
   static final instance = new BlinkNotificationEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "NotificationEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("NotificationEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "NotificationEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("NotificationEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "NotificationEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("NotificationEvent", [__arg_0, __arg_1]);
 
-  notification_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "notification");
+  notification_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NotificationEvent */, "notification");
 
 }
 
 class BlinkNotificationPermissionCallback {
   static final instance = new BlinkNotificationPermissionCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* NotificationPermissionCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* NotificationPermissionCallback */, "handleEvent", [__arg_0]);
 
 }
 
@@ -11518,391 +11518,391 @@
 class BlinkOESVertexArrayObject {
   static final instance = new BlinkOESVertexArrayObject();
 
-  bindVertexArrayOES_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindVertexArrayOES", []);
+  bindVertexArrayOES_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* OESVertexArrayObject */, "bindVertexArrayOES", []);
 
-  bindVertexArrayOES_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindVertexArrayOES", [__arg_0]);
+  bindVertexArrayOES_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* OESVertexArrayObject */, "bindVertexArrayOES", [__arg_0]);
 
-  createVertexArrayOES_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createVertexArrayOES", []);
+  createVertexArrayOES_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* OESVertexArrayObject */, "createVertexArrayOES", []);
 
-  deleteVertexArrayOES_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteVertexArrayOES", []);
+  deleteVertexArrayOES_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* OESVertexArrayObject */, "deleteVertexArrayOES", []);
 
-  deleteVertexArrayOES_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteVertexArrayOES", [__arg_0]);
+  deleteVertexArrayOES_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* OESVertexArrayObject */, "deleteVertexArrayOES", [__arg_0]);
 
-  isVertexArrayOES_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isVertexArrayOES", []);
+  isVertexArrayOES_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* OESVertexArrayObject */, "isVertexArrayOES", []);
 
-  isVertexArrayOES_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isVertexArrayOES", [__arg_0]);
+  isVertexArrayOES_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* OESVertexArrayObject */, "isVertexArrayOES", [__arg_0]);
 
 }
 
 class BlinkOfflineAudioCompletionEvent extends BlinkEvent {
   static final instance = new BlinkOfflineAudioCompletionEvent();
 
-  renderedBuffer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "renderedBuffer");
+  renderedBuffer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* OfflineAudioCompletionEvent */, "renderedBuffer");
 
 }
 
 class BlinkOfflineAudioContext extends BlinkAudioContext {
   static final instance = new BlinkOfflineAudioContext();
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "OfflineAudioContext"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("OfflineAudioContext", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "OfflineAudioContext"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("OfflineAudioContext", [__arg_0, __arg_1]);
 
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "OfflineAudioContext"), [__arg_0, __arg_1, __arg_2]);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callConstructor("OfflineAudioContext", [__arg_0, __arg_1, __arg_2]);
 
-  oncomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncomplete");
+  oncomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* OfflineAudioContext */, "oncomplete");
 
-  oncomplete_Setter_(mthis, __arg_0) => mthis["oncomplete"] = __arg_0;
+  oncomplete_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* OfflineAudioContext */, "oncomplete", __arg_0);
 
-  startRendering_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "startRendering", []);
+  startRendering_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* OfflineAudioContext */, "startRendering", []);
 
 }
 
 class BlinkOscillatorNode extends BlinkAudioSourceNode {
   static final instance = new BlinkOscillatorNode();
 
-  detune_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "detune");
+  detune_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* OscillatorNode */, "detune");
 
-  frequency_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "frequency");
+  frequency_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* OscillatorNode */, "frequency");
 
-  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onended");
+  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* OscillatorNode */, "onended");
 
-  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
+  onended_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* OscillatorNode */, "onended", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* OscillatorNode */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* OscillatorNode */, "type", __arg_0);
 
-  setPeriodicWave_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setPeriodicWave", []);
+  setPeriodicWave_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* OscillatorNode */, "setPeriodicWave", []);
 
-  setPeriodicWave_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setPeriodicWave", [__arg_0]);
+  setPeriodicWave_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* OscillatorNode */, "setPeriodicWave", [__arg_0]);
 
-  start_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "start", []);
+  start_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* OscillatorNode */, "start", []);
 
-  start_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "start", [__arg_0]);
+  start_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* OscillatorNode */, "start", [__arg_0]);
 
-  stop_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stop", []);
+  stop_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* OscillatorNode */, "stop", []);
 
-  stop_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stop", [__arg_0]);
+  stop_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* OscillatorNode */, "stop", [__arg_0]);
 
 }
 
 class BlinkPagePopupController {
   static final instance = new BlinkPagePopupController();
 
-  closePopup_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "closePopup", []);
+  closePopup_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "closePopup", []);
 
-  formatMonth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "formatMonth", []);
+  formatMonth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "formatMonth", []);
 
-  formatMonth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "formatMonth", [__arg_0]);
+  formatMonth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "formatMonth", [__arg_0]);
 
-  formatMonth_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "formatMonth", [__arg_0, __arg_1]);
+  formatMonth_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "formatMonth", [__arg_0, __arg_1]);
 
-  formatShortMonth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "formatShortMonth", []);
+  formatShortMonth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "formatShortMonth", []);
 
-  formatShortMonth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "formatShortMonth", [__arg_0]);
+  formatShortMonth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "formatShortMonth", [__arg_0]);
 
-  formatShortMonth_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "formatShortMonth", [__arg_0, __arg_1]);
+  formatShortMonth_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "formatShortMonth", [__arg_0, __arg_1]);
 
-  formatWeek_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "formatWeek", [__arg_0]);
+  formatWeek_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "formatWeek", [__arg_0]);
 
-  formatWeek_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "formatWeek", [__arg_0, __arg_1]);
+  formatWeek_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "formatWeek", [__arg_0, __arg_1]);
 
-  formatWeek_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "formatWeek", [__arg_0, __arg_1, __arg_2]);
+  formatWeek_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "formatWeek", [__arg_0, __arg_1, __arg_2]);
 
-  histogramEnumeration_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "histogramEnumeration", [__arg_0]);
+  histogramEnumeration_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "histogramEnumeration", [__arg_0]);
 
-  histogramEnumeration_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "histogramEnumeration", [__arg_0, __arg_1]);
+  histogramEnumeration_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "histogramEnumeration", [__arg_0, __arg_1]);
 
-  histogramEnumeration_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "histogramEnumeration", [__arg_0, __arg_1, __arg_2]);
+  histogramEnumeration_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "histogramEnumeration", [__arg_0, __arg_1, __arg_2]);
 
-  localizeNumberString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "localizeNumberString", []);
+  localizeNumberString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "localizeNumberString", []);
 
-  localizeNumberString_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "localizeNumberString", [__arg_0]);
+  localizeNumberString_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "localizeNumberString", [__arg_0]);
 
-  selectFontsFromOwnerDocument_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "selectFontsFromOwnerDocument", []);
+  selectFontsFromOwnerDocument_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "selectFontsFromOwnerDocument", []);
 
-  selectFontsFromOwnerDocument_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "selectFontsFromOwnerDocument", [__arg_0]);
+  selectFontsFromOwnerDocument_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "selectFontsFromOwnerDocument", [__arg_0]);
 
-  setValue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setValue", []);
+  setValue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "setValue", []);
 
-  setValue_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setValue", [__arg_0]);
+  setValue_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "setValue", [__arg_0]);
 
-  setValueAndClosePopup_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setValueAndClosePopup", []);
+  setValueAndClosePopup_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "setValueAndClosePopup", []);
 
-  setValueAndClosePopup_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setValueAndClosePopup", [__arg_0]);
+  setValueAndClosePopup_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "setValueAndClosePopup", [__arg_0]);
 
-  setValueAndClosePopup_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setValueAndClosePopup", [__arg_0, __arg_1]);
+  setValueAndClosePopup_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "setValueAndClosePopup", [__arg_0, __arg_1]);
 
-  setWindowRect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setWindowRect", [__arg_0, __arg_1]);
+  setWindowRect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "setWindowRect", [__arg_0, __arg_1]);
 
-  setWindowRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setWindowRect", [__arg_0, __arg_1, __arg_2]);
+  setWindowRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "setWindowRect", [__arg_0, __arg_1, __arg_2]);
 
-  setWindowRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "setWindowRect", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  setWindowRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* PagePopupController */, "setWindowRect", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
 class BlinkPageTransitionEvent extends BlinkEvent {
   static final instance = new BlinkPageTransitionEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PageTransitionEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("PageTransitionEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PageTransitionEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("PageTransitionEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PageTransitionEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("PageTransitionEvent", [__arg_0, __arg_1]);
 
-  persisted_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "persisted");
+  persisted_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PageTransitionEvent */, "persisted");
 
 }
 
 class BlinkPannerNode extends BlinkAudioNode {
   static final instance = new BlinkPannerNode();
 
-  coneInnerAngle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "coneInnerAngle");
+  coneInnerAngle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PannerNode */, "coneInnerAngle");
 
-  coneInnerAngle_Setter_(mthis, __arg_0) => mthis["coneInnerAngle"] = __arg_0;
+  coneInnerAngle_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* PannerNode */, "coneInnerAngle", __arg_0);
 
-  coneOuterAngle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "coneOuterAngle");
+  coneOuterAngle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PannerNode */, "coneOuterAngle");
 
-  coneOuterAngle_Setter_(mthis, __arg_0) => mthis["coneOuterAngle"] = __arg_0;
+  coneOuterAngle_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* PannerNode */, "coneOuterAngle", __arg_0);
 
-  coneOuterGain_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "coneOuterGain");
+  coneOuterGain_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PannerNode */, "coneOuterGain");
 
-  coneOuterGain_Setter_(mthis, __arg_0) => mthis["coneOuterGain"] = __arg_0;
+  coneOuterGain_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* PannerNode */, "coneOuterGain", __arg_0);
 
-  distanceModel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "distanceModel");
+  distanceModel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PannerNode */, "distanceModel");
 
-  distanceModel_Setter_(mthis, __arg_0) => mthis["distanceModel"] = __arg_0;
+  distanceModel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* PannerNode */, "distanceModel", __arg_0);
 
-  maxDistance_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "maxDistance");
+  maxDistance_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PannerNode */, "maxDistance");
 
-  maxDistance_Setter_(mthis, __arg_0) => mthis["maxDistance"] = __arg_0;
+  maxDistance_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* PannerNode */, "maxDistance", __arg_0);
 
-  panningModel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "panningModel");
+  panningModel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PannerNode */, "panningModel");
 
-  panningModel_Setter_(mthis, __arg_0) => mthis["panningModel"] = __arg_0;
+  panningModel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* PannerNode */, "panningModel", __arg_0);
 
-  refDistance_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "refDistance");
+  refDistance_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PannerNode */, "refDistance");
 
-  refDistance_Setter_(mthis, __arg_0) => mthis["refDistance"] = __arg_0;
+  refDistance_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* PannerNode */, "refDistance", __arg_0);
 
-  rolloffFactor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rolloffFactor");
+  rolloffFactor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PannerNode */, "rolloffFactor");
 
-  rolloffFactor_Setter_(mthis, __arg_0) => mthis["rolloffFactor"] = __arg_0;
+  rolloffFactor_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* PannerNode */, "rolloffFactor", __arg_0);
 
-  setOrientation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setOrientation", [__arg_0]);
+  setOrientation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PannerNode */, "setOrientation", [__arg_0]);
 
-  setOrientation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setOrientation", [__arg_0, __arg_1]);
+  setOrientation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* PannerNode */, "setOrientation", [__arg_0, __arg_1]);
 
-  setOrientation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setOrientation", [__arg_0, __arg_1, __arg_2]);
+  setOrientation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* PannerNode */, "setOrientation", [__arg_0, __arg_1, __arg_2]);
 
-  setPosition_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setPosition", [__arg_0]);
+  setPosition_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PannerNode */, "setPosition", [__arg_0]);
 
-  setPosition_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setPosition", [__arg_0, __arg_1]);
+  setPosition_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* PannerNode */, "setPosition", [__arg_0, __arg_1]);
 
-  setPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setPosition", [__arg_0, __arg_1, __arg_2]);
+  setPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* PannerNode */, "setPosition", [__arg_0, __arg_1, __arg_2]);
 
-  setVelocity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setVelocity", [__arg_0]);
+  setVelocity_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PannerNode */, "setVelocity", [__arg_0]);
 
-  setVelocity_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setVelocity", [__arg_0, __arg_1]);
+  setVelocity_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* PannerNode */, "setVelocity", [__arg_0, __arg_1]);
 
-  setVelocity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setVelocity", [__arg_0, __arg_1, __arg_2]);
+  setVelocity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* PannerNode */, "setVelocity", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkParentNode {
   static final instance = new BlinkParentNode();
 
-  childElementCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "childElementCount");
+  childElementCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ParentNode */, "childElementCount");
 
-  children_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "children");
+  children_Getter_(mthis) native "Blink_Getter_ParentNode_children";
 
-  firstElementChild_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "firstElementChild");
+  firstElementChild_Getter_(mthis) native "Blink_Getter_ParentNode_firstElementChild";
 
-  lastElementChild_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lastElementChild");
+  lastElementChild_Getter_(mthis) native "Blink_Getter_ParentNode_lastElementChild";
 
-  append_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "append", []);
+  append_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "append", []);
 
-  append_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "append", [__arg_0]);
+  append_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "append", [__arg_0]);
 
-  prepend_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "prepend", []);
+  prepend_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "prepend", []);
 
-  prepend_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "prepend", [__arg_0]);
+  prepend_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "prepend", [__arg_0]);
 
-  querySelector_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "querySelector", []);
+  querySelector_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "querySelector", []);
 
-  querySelector_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "querySelector", [__arg_0]);
+  querySelector_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "querySelector", [__arg_0]);
 
-  querySelectorAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "querySelectorAll", []);
+  querySelectorAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "querySelectorAll", []);
 
-  querySelectorAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "querySelectorAll", [__arg_0]);
+  querySelectorAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ParentNode */, "querySelectorAll", [__arg_0]);
 
 }
 
 class BlinkPasswordCredential extends BlinkCredential {
   static final instance = new BlinkPasswordCredential();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PasswordCredential"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("PasswordCredential");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PasswordCredential"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("PasswordCredential", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PasswordCredential"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("PasswordCredential", [__arg_0, __arg_1]);
 
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PasswordCredential"), [__arg_0, __arg_1, __arg_2]);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callConstructor("PasswordCredential", [__arg_0, __arg_1, __arg_2]);
 
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PasswordCredential"), [__arg_0, __arg_1, __arg_2, __arg_3]);
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callConstructor("PasswordCredential", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  formData_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "formData");
+  formData_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PasswordCredential */, "formData");
 
-  password_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "password");
+  password_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PasswordCredential */, "password");
 
 }
 
 class BlinkPath2D {
   static final instance = new BlinkPath2D();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Path2D"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("Path2D");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Path2D"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("Path2D", [__arg_0]);
 
-  addPath_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "addPath", []);
+  addPath_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Path2D */, "addPath", []);
 
-  addPath_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addPath", [__arg_0]);
+  addPath_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Path2D */, "addPath", [__arg_0]);
 
-  addPath_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "addPath", [__arg_0, __arg_1]);
+  addPath_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Path2D */, "addPath", [__arg_0, __arg_1]);
 
-  arc_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "arc", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  arc_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arc", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  arc_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "arc", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  arc_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arc", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  arc_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "arc", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arc", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  arcTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "arcTo", [__arg_0, __arg_1, __arg_2]);
+  arcTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arcTo", [__arg_0, __arg_1, __arg_2]);
 
-  arcTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "arcTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  arcTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arcTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  arcTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "arcTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  arcTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "arcTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  bezierCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  bezierCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  bezierCurveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  bezierCurveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  bezierCurveTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "bezierCurveTo", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  closePath_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "closePath", []);
+  closePath_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "closePath", []);
 
-  ellipse_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "ellipse", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  ellipse_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "ellipse", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  ellipse_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "ellipse", [__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) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  lineTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "lineTo", []);
+  lineTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "lineTo", []);
 
-  lineTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "lineTo", [__arg_0]);
+  lineTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "lineTo", [__arg_0]);
 
-  lineTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "lineTo", [__arg_0, __arg_1]);
+  lineTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "lineTo", [__arg_0, __arg_1]);
 
-  moveTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", []);
+  moveTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "moveTo", []);
 
-  moveTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", [__arg_0]);
+  moveTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "moveTo", [__arg_0]);
 
-  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", [__arg_0, __arg_1]);
+  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "moveTo", [__arg_0, __arg_1]);
 
-  quadraticCurveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "quadraticCurveTo", [__arg_0, __arg_1]);
+  quadraticCurveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "quadraticCurveTo", [__arg_0, __arg_1]);
 
-  quadraticCurveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "quadraticCurveTo", [__arg_0, __arg_1, __arg_2]);
+  quadraticCurveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "quadraticCurveTo", [__arg_0, __arg_1, __arg_2]);
 
-  quadraticCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "quadraticCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  quadraticCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "quadraticCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  rect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "rect", [__arg_0, __arg_1]);
+  rect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "rect", [__arg_0, __arg_1]);
 
-  rect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "rect", [__arg_0, __arg_1, __arg_2]);
+  rect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "rect", [__arg_0, __arg_1, __arg_2]);
 
-  rect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "rect", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  rect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* CanvasPathMethods */, "rect", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
 class BlinkPerformance extends BlinkEventTarget {
   static final instance = new BlinkPerformance();
 
-  memory_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "memory");
+  memory_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Performance */, "memory");
 
-  navigation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "navigation");
+  navigation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Performance */, "navigation");
 
-  onframetimingbufferfull_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onframetimingbufferfull");
+  onframetimingbufferfull_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Performance */, "onframetimingbufferfull");
 
-  onframetimingbufferfull_Setter_(mthis, __arg_0) => mthis["onframetimingbufferfull"] = __arg_0;
+  onframetimingbufferfull_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Performance */, "onframetimingbufferfull", __arg_0);
 
-  onwebkitresourcetimingbufferfull_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwebkitresourcetimingbufferfull");
+  onwebkitresourcetimingbufferfull_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Performance */, "onwebkitresourcetimingbufferfull");
 
-  onwebkitresourcetimingbufferfull_Setter_(mthis, __arg_0) => mthis["onwebkitresourcetimingbufferfull"] = __arg_0;
+  onwebkitresourcetimingbufferfull_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Performance */, "onwebkitresourcetimingbufferfull", __arg_0);
 
-  timing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "timing");
+  timing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Performance */, "timing");
 
-  clearFrameTimings_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearFrameTimings", []);
+  clearFrameTimings_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "clearFrameTimings", []);
 
-  clearMarks_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearMarks", []);
+  clearMarks_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "clearMarks", []);
 
-  clearMarks_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearMarks", [__arg_0]);
+  clearMarks_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "clearMarks", [__arg_0]);
 
-  clearMeasures_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearMeasures", []);
+  clearMeasures_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "clearMeasures", []);
 
-  clearMeasures_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearMeasures", [__arg_0]);
+  clearMeasures_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "clearMeasures", [__arg_0]);
 
-  getEntries_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getEntries", []);
+  getEntries_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "getEntries", []);
 
-  getEntriesByName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getEntriesByName", []);
+  getEntriesByName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "getEntriesByName", []);
 
-  getEntriesByName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getEntriesByName", [__arg_0]);
+  getEntriesByName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "getEntriesByName", [__arg_0]);
 
-  getEntriesByName_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getEntriesByName", [__arg_0, __arg_1]);
+  getEntriesByName_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "getEntriesByName", [__arg_0, __arg_1]);
 
-  getEntriesByType_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getEntriesByType", []);
+  getEntriesByType_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "getEntriesByType", []);
 
-  getEntriesByType_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getEntriesByType", [__arg_0]);
+  getEntriesByType_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "getEntriesByType", [__arg_0]);
 
-  mark_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "mark", []);
+  mark_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "mark", []);
 
-  mark_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "mark", [__arg_0]);
+  mark_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "mark", [__arg_0]);
 
-  measure_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "measure", [__arg_0]);
+  measure_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "measure", [__arg_0]);
 
-  measure_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "measure", [__arg_0, __arg_1]);
+  measure_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "measure", [__arg_0, __arg_1]);
 
-  measure_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "measure", [__arg_0, __arg_1, __arg_2]);
+  measure_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "measure", [__arg_0, __arg_1, __arg_2]);
 
-  now_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "now", []);
+  now_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "now", []);
 
-  setFrameTimingBufferSize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setFrameTimingBufferSize", []);
+  setFrameTimingBufferSize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "setFrameTimingBufferSize", []);
 
-  setFrameTimingBufferSize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setFrameTimingBufferSize", [__arg_0]);
+  setFrameTimingBufferSize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "setFrameTimingBufferSize", [__arg_0]);
 
-  webkitClearResourceTimings_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitClearResourceTimings", []);
+  webkitClearResourceTimings_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "webkitClearResourceTimings", []);
 
-  webkitSetResourceTimingBufferSize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitSetResourceTimingBufferSize", []);
+  webkitSetResourceTimingBufferSize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "webkitSetResourceTimingBufferSize", []);
 
-  webkitSetResourceTimingBufferSize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "webkitSetResourceTimingBufferSize", [__arg_0]);
+  webkitSetResourceTimingBufferSize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Performance */, "webkitSetResourceTimingBufferSize", [__arg_0]);
 
 }
 
 class BlinkPerformanceCompositeTiming extends BlinkPerformanceEntry {
   static final instance = new BlinkPerformanceCompositeTiming();
 
-  sourceFrame_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sourceFrame");
+  sourceFrame_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceCompositeTiming */, "sourceFrame");
 
 }
 
 class BlinkPerformanceEntry {
   static final instance = new BlinkPerformanceEntry();
 
-  duration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "duration");
+  duration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceEntry */, "duration");
 
-  entryType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "entryType");
+  entryType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceEntry */, "entryType");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceEntry */, "name");
 
-  startTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "startTime");
+  startTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceEntry */, "startTime");
 
 }
 
@@ -11919,141 +11919,141 @@
 class BlinkPerformanceNavigation {
   static final instance = new BlinkPerformanceNavigation();
 
-  redirectCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "redirectCount");
+  redirectCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceNavigation */, "redirectCount");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceNavigation */, "type");
 
 }
 
 class BlinkPerformanceRenderTiming extends BlinkPerformanceEntry {
   static final instance = new BlinkPerformanceRenderTiming();
 
-  sourceFrame_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sourceFrame");
+  sourceFrame_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceRenderTiming */, "sourceFrame");
 
 }
 
 class BlinkPerformanceResourceTiming extends BlinkPerformanceEntry {
   static final instance = new BlinkPerformanceResourceTiming();
 
-  connectEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "connectEnd");
+  connectEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceResourceTiming */, "connectEnd");
 
-  connectStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "connectStart");
+  connectStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceResourceTiming */, "connectStart");
 
-  domainLookupEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "domainLookupEnd");
+  domainLookupEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceResourceTiming */, "domainLookupEnd");
 
-  domainLookupStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "domainLookupStart");
+  domainLookupStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceResourceTiming */, "domainLookupStart");
 
-  fetchStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fetchStart");
+  fetchStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceResourceTiming */, "fetchStart");
 
-  initiatorType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "initiatorType");
+  initiatorType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceResourceTiming */, "initiatorType");
 
-  redirectEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "redirectEnd");
+  redirectEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceResourceTiming */, "redirectEnd");
 
-  redirectStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "redirectStart");
+  redirectStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceResourceTiming */, "redirectStart");
 
-  requestStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "requestStart");
+  requestStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceResourceTiming */, "requestStart");
 
-  responseEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "responseEnd");
+  responseEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceResourceTiming */, "responseEnd");
 
-  responseStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "responseStart");
+  responseStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceResourceTiming */, "responseStart");
 
-  secureConnectionStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "secureConnectionStart");
+  secureConnectionStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceResourceTiming */, "secureConnectionStart");
 
-  workerStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "workerStart");
+  workerStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceResourceTiming */, "workerStart");
 
 }
 
 class BlinkPerformanceTiming {
   static final instance = new BlinkPerformanceTiming();
 
-  connectEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "connectEnd");
+  connectEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "connectEnd");
 
-  connectStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "connectStart");
+  connectStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "connectStart");
 
-  domComplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "domComplete");
+  domComplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "domComplete");
 
-  domContentLoadedEventEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "domContentLoadedEventEnd");
+  domContentLoadedEventEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "domContentLoadedEventEnd");
 
-  domContentLoadedEventStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "domContentLoadedEventStart");
+  domContentLoadedEventStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "domContentLoadedEventStart");
 
-  domInteractive_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "domInteractive");
+  domInteractive_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "domInteractive");
 
-  domLoading_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "domLoading");
+  domLoading_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "domLoading");
 
-  domainLookupEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "domainLookupEnd");
+  domainLookupEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "domainLookupEnd");
 
-  domainLookupStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "domainLookupStart");
+  domainLookupStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "domainLookupStart");
 
-  fetchStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fetchStart");
+  fetchStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "fetchStart");
 
-  loadEventEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "loadEventEnd");
+  loadEventEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "loadEventEnd");
 
-  loadEventStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "loadEventStart");
+  loadEventStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "loadEventStart");
 
-  navigationStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "navigationStart");
+  navigationStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "navigationStart");
 
-  redirectEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "redirectEnd");
+  redirectEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "redirectEnd");
 
-  redirectStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "redirectStart");
+  redirectStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "redirectStart");
 
-  requestStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "requestStart");
+  requestStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "requestStart");
 
-  responseEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "responseEnd");
+  responseEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "responseEnd");
 
-  responseStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "responseStart");
+  responseStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "responseStart");
 
-  secureConnectionStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "secureConnectionStart");
+  secureConnectionStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "secureConnectionStart");
 
-  unloadEventEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "unloadEventEnd");
+  unloadEventEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "unloadEventEnd");
 
-  unloadEventStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "unloadEventStart");
+  unloadEventStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PerformanceTiming */, "unloadEventStart");
 
 }
 
 class BlinkPeriodicSyncEvent extends BlinkExtendableEvent {
   static final instance = new BlinkPeriodicSyncEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PeriodicSyncEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("PeriodicSyncEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PeriodicSyncEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("PeriodicSyncEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PeriodicSyncEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("PeriodicSyncEvent", [__arg_0, __arg_1]);
 
-  registration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "registration");
+  registration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PeriodicSyncEvent */, "registration");
 
 }
 
 class BlinkPeriodicSyncManager {
   static final instance = new BlinkPeriodicSyncManager();
 
-  minPossiblePeriod_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "minPossiblePeriod");
+  minPossiblePeriod_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PeriodicSyncManager */, "minPossiblePeriod");
 
-  getRegistration_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getRegistration", []);
+  getRegistration_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PeriodicSyncManager */, "getRegistration", []);
 
-  getRegistration_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getRegistration", [__arg_0]);
+  getRegistration_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PeriodicSyncManager */, "getRegistration", [__arg_0]);
 
-  getRegistrations_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getRegistrations", []);
+  getRegistrations_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PeriodicSyncManager */, "getRegistrations", []);
 
-  permissionState_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "permissionState", []);
+  permissionState_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PeriodicSyncManager */, "permissionState", []);
 
-  register_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "register", []);
+  register_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PeriodicSyncManager */, "register", []);
 
-  register_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "register", [__arg_0]);
+  register_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PeriodicSyncManager */, "register", [__arg_0]);
 
 }
 
 class BlinkPeriodicSyncRegistration {
   static final instance = new BlinkPeriodicSyncRegistration();
 
-  minPeriod_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "minPeriod");
+  minPeriod_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PeriodicSyncRegistration */, "minPeriod");
 
-  networkState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "networkState");
+  networkState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PeriodicSyncRegistration */, "networkState");
 
-  powerState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "powerState");
+  powerState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PeriodicSyncRegistration */, "powerState");
 
-  tag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "tag");
+  tag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PeriodicSyncRegistration */, "tag");
 
-  unregister_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "unregister", []);
+  unregister_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PeriodicSyncRegistration */, "unregister", []);
 
 }
 
@@ -12065,1027 +12065,1027 @@
 class BlinkPermissionStatus extends BlinkEventTarget {
   static final instance = new BlinkPermissionStatus();
 
-  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onchange");
+  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PermissionStatus */, "onchange");
 
-  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
+  onchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* PermissionStatus */, "onchange", __arg_0);
 
-  state_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "state");
+  state_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PermissionStatus */, "state");
 
-  status_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "status");
+  status_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PermissionStatus */, "status");
 
 }
 
 class BlinkPermissions {
   static final instance = new BlinkPermissions();
 
-  query_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "query", []);
+  query_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Permissions */, "query", []);
 
-  query_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "query", [__arg_0]);
+  query_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Permissions */, "query", [__arg_0]);
 
 }
 
 class BlinkPlugin {
   static final instance = new BlinkPlugin();
 
-  description_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "description");
+  description_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Plugin */, "description");
 
-  filename_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "filename");
+  filename_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Plugin */, "filename");
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Plugin */, "length");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Plugin */, "name");
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Plugin */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Plugin */, "item", [__arg_0]);
 
-  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", []);
+  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Plugin */, "namedItem", []);
 
-  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", [__arg_0]);
+  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Plugin */, "namedItem", [__arg_0]);
 
 }
 
 class BlinkPluginArray {
   static final instance = new BlinkPluginArray();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PluginArray */, "length");
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PluginArray */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PluginArray */, "item", [__arg_0]);
 
-  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", []);
+  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PluginArray */, "namedItem", []);
 
-  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", [__arg_0]);
+  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PluginArray */, "namedItem", [__arg_0]);
 
-  refresh_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "refresh", []);
+  refresh_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PluginArray */, "refresh", []);
 
-  refresh_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "refresh", [__arg_0]);
+  refresh_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PluginArray */, "refresh", [__arg_0]);
 
 }
 
 class BlinkPluginPlaceholderElement extends BlinkHTMLDivElement {
   static final instance = new BlinkPluginPlaceholderElement();
 
-  closeable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "closeable");
+  closeable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PluginPlaceholderElement */, "closeable");
 
-  closeable_Setter_(mthis, __arg_0) => mthis["closeable"] = __arg_0;
+  closeable_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* PluginPlaceholderElement */, "closeable", __arg_0);
 
-  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "message");
+  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PluginPlaceholderElement */, "message");
 
-  message_Setter_(mthis, __arg_0) => mthis["message"] = __arg_0;
+  message_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* PluginPlaceholderElement */, "message", __arg_0);
 
-  createdCallback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createdCallback", []);
+  createdCallback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PluginPlaceholderElement */, "createdCallback", []);
 
 }
 
 class BlinkPointerEvent extends BlinkMouseEvent {
   static final instance = new BlinkPointerEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PointerEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("PointerEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PointerEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("PointerEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PointerEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("PointerEvent", [__arg_0, __arg_1]);
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PointerEvent */, "height");
 
-  isPrimary_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "isPrimary");
+  isPrimary_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PointerEvent */, "isPrimary");
 
-  pointerId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pointerId");
+  pointerId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PointerEvent */, "pointerId");
 
-  pointerType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pointerType");
+  pointerType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PointerEvent */, "pointerType");
 
-  pressure_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pressure");
+  pressure_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PointerEvent */, "pressure");
 
-  tiltX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "tiltX");
+  tiltX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PointerEvent */, "tiltX");
 
-  tiltY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "tiltY");
+  tiltY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PointerEvent */, "tiltY");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PointerEvent */, "width");
 
 }
 
 class BlinkPopStateEvent extends BlinkEvent {
   static final instance = new BlinkPopStateEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PopStateEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("PopStateEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PopStateEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("PopStateEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PopStateEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("PopStateEvent", [__arg_0, __arg_1]);
 
-  state_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "state");
+  state_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PopStateEvent */, "state");
 
 }
 
 class BlinkPositionCallback {
   static final instance = new BlinkPositionCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PositionCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PositionCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkPositionError {
   static final instance = new BlinkPositionError();
 
-  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "code");
+  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PositionError */, "code");
 
-  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "message");
+  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PositionError */, "message");
 
 }
 
 class BlinkPositionErrorCallback {
   static final instance = new BlinkPositionErrorCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PositionErrorCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PositionErrorCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkPositionSensorVRDevice extends BlinkVRDevice {
   static final instance = new BlinkPositionSensorVRDevice();
 
-  getImmediateState_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getImmediateState", []);
+  getImmediateState_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PositionSensorVRDevice */, "getImmediateState", []);
 
-  getState_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getState", []);
+  getState_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PositionSensorVRDevice */, "getState", []);
 
-  resetSensor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "resetSensor", []);
+  resetSensor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PositionSensorVRDevice */, "resetSensor", []);
 
 }
 
 class BlinkPresentation extends BlinkEventTarget {
   static final instance = new BlinkPresentation();
 
-  ondefaultsessionstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondefaultsessionstart");
+  ondefaultsessionstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Presentation */, "ondefaultsessionstart");
 
-  ondefaultsessionstart_Setter_(mthis, __arg_0) => mthis["ondefaultsessionstart"] = __arg_0;
+  ondefaultsessionstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Presentation */, "ondefaultsessionstart", __arg_0);
 
-  session_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "session");
+  session_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Presentation */, "session");
 
-  getAvailability_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAvailability", []);
+  getAvailability_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Presentation */, "getAvailability", []);
 
-  getAvailability_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAvailability", [__arg_0]);
+  getAvailability_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Presentation */, "getAvailability", [__arg_0]);
 
-  joinSession_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "joinSession", []);
+  joinSession_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Presentation */, "joinSession", []);
 
-  joinSession_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "joinSession", [__arg_0]);
+  joinSession_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Presentation */, "joinSession", [__arg_0]);
 
-  joinSession_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "joinSession", [__arg_0, __arg_1]);
+  joinSession_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Presentation */, "joinSession", [__arg_0, __arg_1]);
 
-  startSession_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "startSession", []);
+  startSession_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Presentation */, "startSession", []);
 
-  startSession_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "startSession", [__arg_0]);
+  startSession_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Presentation */, "startSession", [__arg_0]);
 
 }
 
 class BlinkPresentationAvailability extends BlinkEventTarget {
   static final instance = new BlinkPresentationAvailability();
 
-  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onchange");
+  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PresentationAvailability */, "onchange");
 
-  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
+  onchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* PresentationAvailability */, "onchange", __arg_0);
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PresentationAvailability */, "value");
 
 }
 
 class BlinkPresentationSession extends BlinkEventTarget {
   static final instance = new BlinkPresentationSession();
 
-  binaryType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "binaryType");
+  binaryType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PresentationSession */, "binaryType");
 
-  binaryType_Setter_(mthis, __arg_0) => mthis["binaryType"] = __arg_0;
+  binaryType_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* PresentationSession */, "binaryType", __arg_0);
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PresentationSession */, "id");
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PresentationSession */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* PresentationSession */, "onmessage", __arg_0);
 
-  onstatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstatechange");
+  onstatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PresentationSession */, "onstatechange");
 
-  onstatechange_Setter_(mthis, __arg_0) => mthis["onstatechange"] = __arg_0;
+  onstatechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* PresentationSession */, "onstatechange", __arg_0);
 
-  state_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "state");
+  state_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PresentationSession */, "state");
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PresentationSession */, "close", []);
 
-  send_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "send", []);
+  send_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PresentationSession */, "send", []);
 
-  send_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "send", [__arg_0]);
+  send_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PresentationSession */, "send", [__arg_0]);
 
 }
 
 class BlinkProcessingInstruction extends BlinkCharacterData {
   static final instance = new BlinkProcessingInstruction();
 
-  sheet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sheet");
+  sheet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ProcessingInstruction */, "sheet");
 
-  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "target");
+  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ProcessingInstruction */, "target");
 
 }
 
 class BlinkProgressEvent extends BlinkEvent {
   static final instance = new BlinkProgressEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ProgressEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("ProgressEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ProgressEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("ProgressEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ProgressEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("ProgressEvent", [__arg_0, __arg_1]);
 
-  lengthComputable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lengthComputable");
+  lengthComputable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ProgressEvent */, "lengthComputable");
 
-  loaded_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "loaded");
+  loaded_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ProgressEvent */, "loaded");
 
-  total_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "total");
+  total_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ProgressEvent */, "total");
 
 }
 
 class BlinkPromiseRejectionEvent extends BlinkEvent {
   static final instance = new BlinkPromiseRejectionEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PromiseRejectionEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("PromiseRejectionEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PromiseRejectionEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("PromiseRejectionEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PromiseRejectionEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("PromiseRejectionEvent", [__arg_0, __arg_1]);
 
-  promise_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "promise");
+  promise_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PromiseRejectionEvent */, "promise");
 
-  reason_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "reason");
+  reason_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PromiseRejectionEvent */, "reason");
 
 }
 
 class BlinkPushEvent extends BlinkExtendableEvent {
   static final instance = new BlinkPushEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PushEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("PushEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PushEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("PushEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PushEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("PushEvent", [__arg_0, __arg_1]);
 
-  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "data");
+  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PushEvent */, "data");
 
 }
 
 class BlinkPushManager {
   static final instance = new BlinkPushManager();
 
-  getSubscription_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSubscription", []);
+  getSubscription_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PushManager */, "getSubscription", []);
 
-  permissionState_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "permissionState", []);
+  permissionState_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PushManager */, "permissionState", []);
 
-  permissionState_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "permissionState", [__arg_0]);
+  permissionState_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PushManager */, "permissionState", [__arg_0]);
 
-  subscribe_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "subscribe", []);
+  subscribe_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PushManager */, "subscribe", []);
 
-  subscribe_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "subscribe", [__arg_0]);
+  subscribe_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* PushManager */, "subscribe", [__arg_0]);
 
 }
 
 class BlinkPushMessageData {
   static final instance = new BlinkPushMessageData();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PushMessageData"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("PushMessageData");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "PushMessageData"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("PushMessageData", [__arg_0]);
 
-  arrayBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "arrayBuffer", []);
+  arrayBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PushMessageData */, "arrayBuffer", []);
 
-  blob_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blob", []);
+  blob_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PushMessageData */, "blob", []);
 
-  json_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "json", []);
+  json_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PushMessageData */, "json", []);
 
-  text_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "text", []);
+  text_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PushMessageData */, "text", []);
 
 }
 
 class BlinkPushSubscription {
   static final instance = new BlinkPushSubscription();
 
-  endpoint_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "endpoint");
+  endpoint_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* PushSubscription */, "endpoint");
 
-  unsubscribe_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "unsubscribe", []);
+  unsubscribe_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* PushSubscription */, "unsubscribe", []);
 
 }
 
 class BlinkRTCDTMFSender extends BlinkEventTarget {
   static final instance = new BlinkRTCDTMFSender();
 
-  canInsertDTMF_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "canInsertDTMF");
+  canInsertDTMF_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDTMFSender */, "canInsertDTMF");
 
-  duration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "duration");
+  duration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDTMFSender */, "duration");
 
-  interToneGap_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "interToneGap");
+  interToneGap_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDTMFSender */, "interToneGap");
 
-  ontonechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontonechange");
+  ontonechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDTMFSender */, "ontonechange");
 
-  ontonechange_Setter_(mthis, __arg_0) => mthis["ontonechange"] = __arg_0;
+  ontonechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCDTMFSender */, "ontonechange", __arg_0);
 
-  toneBuffer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "toneBuffer");
+  toneBuffer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDTMFSender */, "toneBuffer");
 
-  track_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "track");
+  track_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDTMFSender */, "track");
 
-  insertDTMF_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertDTMF", []);
+  insertDTMF_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCDTMFSender */, "insertDTMF", []);
 
-  insertDTMF_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertDTMF", [__arg_0]);
+  insertDTMF_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCDTMFSender */, "insertDTMF", [__arg_0]);
 
-  insertDTMF_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "insertDTMF", [__arg_0, __arg_1]);
+  insertDTMF_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* RTCDTMFSender */, "insertDTMF", [__arg_0, __arg_1]);
 
-  insertDTMF_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "insertDTMF", [__arg_0, __arg_1, __arg_2]);
+  insertDTMF_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* RTCDTMFSender */, "insertDTMF", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkRTCDTMFToneChangeEvent extends BlinkEvent {
   static final instance = new BlinkRTCDTMFToneChangeEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "RTCDTMFToneChangeEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("RTCDTMFToneChangeEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "RTCDTMFToneChangeEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("RTCDTMFToneChangeEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "RTCDTMFToneChangeEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("RTCDTMFToneChangeEvent", [__arg_0, __arg_1]);
 
-  tone_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "tone");
+  tone_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDTMFToneChangeEvent */, "tone");
 
 }
 
 class BlinkRTCDataChannel extends BlinkEventTarget {
   static final instance = new BlinkRTCDataChannel();
 
-  binaryType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "binaryType");
+  binaryType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDataChannel */, "binaryType");
 
-  binaryType_Setter_(mthis, __arg_0) => mthis["binaryType"] = __arg_0;
+  binaryType_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCDataChannel */, "binaryType", __arg_0);
 
-  bufferedAmount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "bufferedAmount");
+  bufferedAmount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDataChannel */, "bufferedAmount");
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDataChannel */, "id");
 
-  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "label");
+  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDataChannel */, "label");
 
-  maxRetransmitTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "maxRetransmitTime");
+  maxRetransmitTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDataChannel */, "maxRetransmitTime");
 
-  maxRetransmits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "maxRetransmits");
+  maxRetransmits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDataChannel */, "maxRetransmits");
 
-  negotiated_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "negotiated");
+  negotiated_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDataChannel */, "negotiated");
 
-  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclose");
+  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDataChannel */, "onclose");
 
-  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
+  onclose_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCDataChannel */, "onclose", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDataChannel */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCDataChannel */, "onerror", __arg_0);
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDataChannel */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCDataChannel */, "onmessage", __arg_0);
 
-  onopen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onopen");
+  onopen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDataChannel */, "onopen");
 
-  onopen_Setter_(mthis, __arg_0) => mthis["onopen"] = __arg_0;
+  onopen_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCDataChannel */, "onopen", __arg_0);
 
-  ordered_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ordered");
+  ordered_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDataChannel */, "ordered");
 
-  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "protocol");
+  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDataChannel */, "protocol");
 
-  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "readyState");
+  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDataChannel */, "readyState");
 
-  reliable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "reliable");
+  reliable_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDataChannel */, "reliable");
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCDataChannel */, "close", []);
 
-  send_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "send", []);
+  send_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCDataChannel */, "send", []);
 
-  send_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "send", [__arg_0]);
+  send_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCDataChannel */, "send", [__arg_0]);
 
 }
 
 class BlinkRTCDataChannelEvent extends BlinkEvent {
   static final instance = new BlinkRTCDataChannelEvent();
 
-  channel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "channel");
+  channel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCDataChannelEvent */, "channel");
 
 }
 
 class BlinkRTCErrorCallback {
   static final instance = new BlinkRTCErrorCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCErrorCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCErrorCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkRTCIceCandidate {
   static final instance = new BlinkRTCIceCandidate();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "RTCIceCandidate"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("RTCIceCandidate");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "RTCIceCandidate"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("RTCIceCandidate", [__arg_0]);
 
-  candidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "candidate");
+  candidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCIceCandidate */, "candidate");
 
-  candidate_Setter_(mthis, __arg_0) => mthis["candidate"] = __arg_0;
+  candidate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCIceCandidate */, "candidate", __arg_0);
 
-  sdpMLineIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sdpMLineIndex");
+  sdpMLineIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCIceCandidate */, "sdpMLineIndex");
 
-  sdpMLineIndex_Setter_(mthis, __arg_0) => mthis["sdpMLineIndex"] = __arg_0;
+  sdpMLineIndex_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCIceCandidate */, "sdpMLineIndex", __arg_0);
 
-  sdpMid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sdpMid");
+  sdpMid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCIceCandidate */, "sdpMid");
 
-  sdpMid_Setter_(mthis, __arg_0) => mthis["sdpMid"] = __arg_0;
+  sdpMid_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCIceCandidate */, "sdpMid", __arg_0);
 
 }
 
 class BlinkRTCIceCandidateEvent extends BlinkEvent {
   static final instance = new BlinkRTCIceCandidateEvent();
 
-  candidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "candidate");
+  candidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCIceCandidateEvent */, "candidate");
 
 }
 
 class BlinkRTCPeerConnection extends BlinkEventTarget {
   static final instance = new BlinkRTCPeerConnection();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "webkitRTCPeerConnection"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("webkitRTCPeerConnection");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "webkitRTCPeerConnection"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("webkitRTCPeerConnection", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "webkitRTCPeerConnection"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("webkitRTCPeerConnection", [__arg_0, __arg_1]);
 
-  iceConnectionState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "iceConnectionState");
+  iceConnectionState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCPeerConnection */, "iceConnectionState");
 
-  iceGatheringState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "iceGatheringState");
+  iceGatheringState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCPeerConnection */, "iceGatheringState");
 
-  localDescription_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "localDescription");
+  localDescription_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCPeerConnection */, "localDescription");
 
-  onaddstream_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onaddstream");
+  onaddstream_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCPeerConnection */, "onaddstream");
 
-  onaddstream_Setter_(mthis, __arg_0) => mthis["onaddstream"] = __arg_0;
+  onaddstream_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCPeerConnection */, "onaddstream", __arg_0);
 
-  ondatachannel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondatachannel");
+  ondatachannel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCPeerConnection */, "ondatachannel");
 
-  ondatachannel_Setter_(mthis, __arg_0) => mthis["ondatachannel"] = __arg_0;
+  ondatachannel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCPeerConnection */, "ondatachannel", __arg_0);
 
-  onicecandidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onicecandidate");
+  onicecandidate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCPeerConnection */, "onicecandidate");
 
-  onicecandidate_Setter_(mthis, __arg_0) => mthis["onicecandidate"] = __arg_0;
+  onicecandidate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCPeerConnection */, "onicecandidate", __arg_0);
 
-  oniceconnectionstatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oniceconnectionstatechange");
+  oniceconnectionstatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCPeerConnection */, "oniceconnectionstatechange");
 
-  oniceconnectionstatechange_Setter_(mthis, __arg_0) => mthis["oniceconnectionstatechange"] = __arg_0;
+  oniceconnectionstatechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCPeerConnection */, "oniceconnectionstatechange", __arg_0);
 
-  onnegotiationneeded_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onnegotiationneeded");
+  onnegotiationneeded_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCPeerConnection */, "onnegotiationneeded");
 
-  onnegotiationneeded_Setter_(mthis, __arg_0) => mthis["onnegotiationneeded"] = __arg_0;
+  onnegotiationneeded_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCPeerConnection */, "onnegotiationneeded", __arg_0);
 
-  onremovestream_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onremovestream");
+  onremovestream_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCPeerConnection */, "onremovestream");
 
-  onremovestream_Setter_(mthis, __arg_0) => mthis["onremovestream"] = __arg_0;
+  onremovestream_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCPeerConnection */, "onremovestream", __arg_0);
 
-  onsignalingstatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsignalingstatechange");
+  onsignalingstatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCPeerConnection */, "onsignalingstatechange");
 
-  onsignalingstatechange_Setter_(mthis, __arg_0) => mthis["onsignalingstatechange"] = __arg_0;
+  onsignalingstatechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCPeerConnection */, "onsignalingstatechange", __arg_0);
 
-  remoteDescription_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "remoteDescription");
+  remoteDescription_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCPeerConnection */, "remoteDescription");
 
-  signalingState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "signalingState");
+  signalingState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCPeerConnection */, "signalingState");
 
-  addIceCandidate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addIceCandidate", [__arg_0]);
+  addIceCandidate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "addIceCandidate", [__arg_0]);
 
-  addIceCandidate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "addIceCandidate", [__arg_0, __arg_1]);
+  addIceCandidate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "addIceCandidate", [__arg_0, __arg_1]);
 
-  addIceCandidate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "addIceCandidate", [__arg_0, __arg_1, __arg_2]);
+  addIceCandidate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "addIceCandidate", [__arg_0, __arg_1, __arg_2]);
 
-  addStream_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "addStream", []);
+  addStream_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "addStream", []);
 
-  addStream_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addStream", [__arg_0]);
+  addStream_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "addStream", [__arg_0]);
 
-  addStream_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "addStream", [__arg_0, __arg_1]);
+  addStream_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "addStream", [__arg_0, __arg_1]);
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "close", []);
 
-  createAnswer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createAnswer", []);
+  createAnswer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "createAnswer", []);
 
-  createAnswer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createAnswer", [__arg_0]);
+  createAnswer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "createAnswer", [__arg_0]);
 
-  createAnswer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createAnswer", [__arg_0, __arg_1]);
+  createAnswer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "createAnswer", [__arg_0, __arg_1]);
 
-  createAnswer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "createAnswer", [__arg_0, __arg_1, __arg_2]);
+  createAnswer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "createAnswer", [__arg_0, __arg_1, __arg_2]);
 
-  createDTMFSender_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createDTMFSender", []);
+  createDTMFSender_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "createDTMFSender", []);
 
-  createDTMFSender_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createDTMFSender", [__arg_0]);
+  createDTMFSender_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "createDTMFSender", [__arg_0]);
 
-  createDataChannel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createDataChannel", []);
+  createDataChannel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "createDataChannel", []);
 
-  createDataChannel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createDataChannel", [__arg_0]);
+  createDataChannel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "createDataChannel", [__arg_0]);
 
-  createDataChannel_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createDataChannel", [__arg_0, __arg_1]);
+  createDataChannel_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "createDataChannel", [__arg_0, __arg_1]);
 
-  createOffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createOffer", []);
+  createOffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "createOffer", []);
 
-  createOffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createOffer", [__arg_0]);
+  createOffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "createOffer", [__arg_0]);
 
-  createOffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createOffer", [__arg_0, __arg_1]);
+  createOffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "createOffer", [__arg_0, __arg_1]);
 
-  createOffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "createOffer", [__arg_0, __arg_1, __arg_2]);
+  createOffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "createOffer", [__arg_0, __arg_1, __arg_2]);
 
-  getLocalStreams_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getLocalStreams", []);
+  getLocalStreams_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "getLocalStreams", []);
 
-  getRemoteStreams_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getRemoteStreams", []);
+  getRemoteStreams_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "getRemoteStreams", []);
 
-  getStats_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getStats", []);
+  getStats_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "getStats", []);
 
-  getStats_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getStats", [__arg_0]);
+  getStats_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "getStats", [__arg_0]);
 
-  getStats_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getStats", [__arg_0, __arg_1]);
+  getStats_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "getStats", [__arg_0, __arg_1]);
 
-  getStreamById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getStreamById", []);
+  getStreamById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "getStreamById", []);
 
-  getStreamById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getStreamById", [__arg_0]);
+  getStreamById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "getStreamById", [__arg_0]);
 
-  removeStream_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeStream", []);
+  removeStream_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "removeStream", []);
 
-  removeStream_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeStream", [__arg_0]);
+  removeStream_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "removeStream", [__arg_0]);
 
-  setLocalDescription_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setLocalDescription", []);
+  setLocalDescription_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "setLocalDescription", []);
 
-  setLocalDescription_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setLocalDescription", [__arg_0]);
+  setLocalDescription_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "setLocalDescription", [__arg_0]);
 
-  setLocalDescription_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setLocalDescription", [__arg_0, __arg_1]);
+  setLocalDescription_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "setLocalDescription", [__arg_0, __arg_1]);
 
-  setLocalDescription_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setLocalDescription", [__arg_0, __arg_1, __arg_2]);
+  setLocalDescription_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "setLocalDescription", [__arg_0, __arg_1, __arg_2]);
 
-  setRemoteDescription_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setRemoteDescription", []);
+  setRemoteDescription_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "setRemoteDescription", []);
 
-  setRemoteDescription_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setRemoteDescription", [__arg_0]);
+  setRemoteDescription_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "setRemoteDescription", [__arg_0]);
 
-  setRemoteDescription_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setRemoteDescription", [__arg_0, __arg_1]);
+  setRemoteDescription_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "setRemoteDescription", [__arg_0, __arg_1]);
 
-  setRemoteDescription_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setRemoteDescription", [__arg_0, __arg_1, __arg_2]);
+  setRemoteDescription_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "setRemoteDescription", [__arg_0, __arg_1, __arg_2]);
 
-  updateIce_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "updateIce", []);
+  updateIce_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "updateIce", []);
 
-  updateIce_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "updateIce", [__arg_0]);
+  updateIce_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "updateIce", [__arg_0]);
 
-  updateIce_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "updateIce", [__arg_0, __arg_1]);
+  updateIce_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* RTCPeerConnection */, "updateIce", [__arg_0, __arg_1]);
 
 }
 
 class BlinkRTCSessionDescription {
   static final instance = new BlinkRTCSessionDescription();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "RTCSessionDescription"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("RTCSessionDescription");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "RTCSessionDescription"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("RTCSessionDescription", [__arg_0]);
 
-  sdp_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sdp");
+  sdp_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCSessionDescription */, "sdp");
 
-  sdp_Setter_(mthis, __arg_0) => mthis["sdp"] = __arg_0;
+  sdp_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCSessionDescription */, "sdp", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCSessionDescription */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RTCSessionDescription */, "type", __arg_0);
 
 }
 
 class BlinkRTCSessionDescriptionCallback {
   static final instance = new BlinkRTCSessionDescriptionCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCSessionDescriptionCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCSessionDescriptionCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkRTCStatsCallback {
   static final instance = new BlinkRTCStatsCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCStatsCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCStatsCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkRTCStatsReport {
   static final instance = new BlinkRTCStatsReport();
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCStatsReport */, "id");
 
-  timestamp_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "timestamp");
+  timestamp_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCStatsReport */, "timestamp");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RTCStatsReport */, "type");
 
-  names_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "names", []);
+  names_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCStatsReport */, "names", []);
 
-  stat_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stat", []);
+  stat_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCStatsReport */, "stat", []);
 
-  stat_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stat", [__arg_0]);
+  stat_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCStatsReport */, "stat", [__arg_0]);
 
 }
 
 class BlinkRTCStatsResponse {
   static final instance = new BlinkRTCStatsResponse();
 
-  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", []);
+  namedItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCStatsResponse */, "namedItem", []);
 
-  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "namedItem", [__arg_0]);
+  namedItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RTCStatsResponse */, "namedItem", [__arg_0]);
 
-  result_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "result", []);
+  result_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RTCStatsResponse */, "result", []);
 
 }
 
 class BlinkRadioNodeList extends BlinkNodeList {
   static final instance = new BlinkRadioNodeList();
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RadioNodeList */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* RadioNodeList */, "value", __arg_0);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RadioNodeList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RadioNodeList */, "item", [__arg_0]);
 
 }
 
 class BlinkRange {
   static final instance = new BlinkRange();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Range"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("Range");
 
-  collapsed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "collapsed");
+  collapsed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Range */, "collapsed");
 
-  commonAncestorContainer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "commonAncestorContainer");
+  commonAncestorContainer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Range */, "commonAncestorContainer");
 
-  endContainer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "endContainer");
+  endContainer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Range */, "endContainer");
 
-  endOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "endOffset");
+  endOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Range */, "endOffset");
 
-  startContainer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "startContainer");
+  startContainer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Range */, "startContainer");
 
-  startOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "startOffset");
+  startOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Range */, "startOffset");
 
-  cloneContents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cloneContents", []);
+  cloneContents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "cloneContents", []);
 
-  cloneRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cloneRange", []);
+  cloneRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "cloneRange", []);
 
-  collapse_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "collapse", []);
+  collapse_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "collapse", []);
 
-  collapse_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "collapse", [__arg_0]);
+  collapse_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "collapse", [__arg_0]);
 
-  compareBoundaryPoints_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "compareBoundaryPoints", []);
+  compareBoundaryPoints_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "compareBoundaryPoints", []);
 
-  compareBoundaryPoints_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "compareBoundaryPoints", [__arg_0]);
+  compareBoundaryPoints_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "compareBoundaryPoints", [__arg_0]);
 
-  compareBoundaryPoints_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "compareBoundaryPoints", [__arg_0, __arg_1]);
+  compareBoundaryPoints_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "compareBoundaryPoints", [__arg_0, __arg_1]);
 
-  comparePoint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "comparePoint", []);
+  comparePoint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "comparePoint", []);
 
-  comparePoint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "comparePoint", [__arg_0]);
+  comparePoint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "comparePoint", [__arg_0]);
 
-  comparePoint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "comparePoint", [__arg_0, __arg_1]);
+  comparePoint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "comparePoint", [__arg_0, __arg_1]);
 
-  createContextualFragment_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createContextualFragment", []);
+  createContextualFragment_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "createContextualFragment", []);
 
-  createContextualFragment_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createContextualFragment", [__arg_0]);
+  createContextualFragment_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "createContextualFragment", [__arg_0]);
 
-  deleteContents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteContents", []);
+  deleteContents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "deleteContents", []);
 
-  detach_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "detach", []);
+  detach_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "detach", []);
 
-  expand_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "expand", []);
+  expand_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "expand", []);
 
-  expand_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "expand", [__arg_0]);
+  expand_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "expand", [__arg_0]);
 
-  extractContents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "extractContents", []);
+  extractContents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "extractContents", []);
 
-  getBoundingClientRect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getBoundingClientRect", []);
+  getBoundingClientRect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "getBoundingClientRect", []);
 
-  getClientRects_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getClientRects", []);
+  getClientRects_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "getClientRects", []);
 
-  insertNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertNode", []);
+  insertNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "insertNode", []);
 
-  insertNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertNode", [__arg_0]);
+  insertNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "insertNode", [__arg_0]);
 
-  intersectsNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "intersectsNode", []);
+  intersectsNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "intersectsNode", []);
 
-  intersectsNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "intersectsNode", [__arg_0]);
+  intersectsNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "intersectsNode", [__arg_0]);
 
-  isPointInRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isPointInRange", []);
+  isPointInRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "isPointInRange", []);
 
-  isPointInRange_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isPointInRange", [__arg_0]);
+  isPointInRange_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "isPointInRange", [__arg_0]);
 
-  isPointInRange_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "isPointInRange", [__arg_0, __arg_1]);
+  isPointInRange_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "isPointInRange", [__arg_0, __arg_1]);
 
-  selectNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "selectNode", []);
+  selectNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "selectNode", []);
 
-  selectNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "selectNode", [__arg_0]);
+  selectNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "selectNode", [__arg_0]);
 
-  selectNodeContents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "selectNodeContents", []);
+  selectNodeContents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "selectNodeContents", []);
 
-  selectNodeContents_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "selectNodeContents", [__arg_0]);
+  selectNodeContents_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "selectNodeContents", [__arg_0]);
 
-  setEnd_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setEnd", []);
+  setEnd_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "setEnd", []);
 
-  setEnd_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setEnd", [__arg_0]);
+  setEnd_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "setEnd", [__arg_0]);
 
-  setEnd_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setEnd", [__arg_0, __arg_1]);
+  setEnd_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "setEnd", [__arg_0, __arg_1]);
 
-  setEndAfter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setEndAfter", []);
+  setEndAfter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "setEndAfter", []);
 
-  setEndAfter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setEndAfter", [__arg_0]);
+  setEndAfter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "setEndAfter", [__arg_0]);
 
-  setEndBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setEndBefore", []);
+  setEndBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "setEndBefore", []);
 
-  setEndBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setEndBefore", [__arg_0]);
+  setEndBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "setEndBefore", [__arg_0]);
 
-  setStart_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setStart", []);
+  setStart_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "setStart", []);
 
-  setStart_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setStart", [__arg_0]);
+  setStart_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "setStart", [__arg_0]);
 
-  setStart_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setStart", [__arg_0, __arg_1]);
+  setStart_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "setStart", [__arg_0, __arg_1]);
 
-  setStartAfter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setStartAfter", []);
+  setStartAfter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "setStartAfter", []);
 
-  setStartAfter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setStartAfter", [__arg_0]);
+  setStartAfter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "setStartAfter", [__arg_0]);
 
-  setStartBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setStartBefore", []);
+  setStartBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "setStartBefore", []);
 
-  setStartBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setStartBefore", [__arg_0]);
+  setStartBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "setStartBefore", [__arg_0]);
 
-  surroundContents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "surroundContents", []);
+  surroundContents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "surroundContents", []);
 
-  surroundContents_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "surroundContents", [__arg_0]);
+  surroundContents_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Range */, "surroundContents", [__arg_0]);
 
 }
 
 class BlinkReadableByteStream {
   static final instance = new BlinkReadableByteStream();
 
-  cancel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cancel", []);
+  cancel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ReadableByteStream */, "cancel", []);
 
-  cancel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "cancel", [__arg_0]);
+  cancel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ReadableByteStream */, "cancel", [__arg_0]);
 
-  getReader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getReader", []);
+  getReader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ReadableByteStream */, "getReader", []);
 
 }
 
 class BlinkReadableByteStreamReader {
   static final instance = new BlinkReadableByteStreamReader();
 
-  closed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "closed");
+  closed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ReadableByteStreamReader */, "closed");
 
-  cancel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cancel", []);
+  cancel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ReadableByteStreamReader */, "cancel", []);
 
-  cancel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "cancel", [__arg_0]);
+  cancel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ReadableByteStreamReader */, "cancel", [__arg_0]);
 
-  read_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "read", []);
+  read_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ReadableByteStreamReader */, "read", []);
 
-  releaseLock_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "releaseLock", []);
+  releaseLock_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ReadableByteStreamReader */, "releaseLock", []);
 
 }
 
 class BlinkReadableStream {
   static final instance = new BlinkReadableStream();
 
-  cancel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cancel", []);
+  cancel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ReadableStream */, "cancel", []);
 
-  cancel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "cancel", [__arg_0]);
+  cancel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ReadableStream */, "cancel", [__arg_0]);
 
-  getReader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getReader", []);
+  getReader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ReadableStream */, "getReader", []);
 
 }
 
 class BlinkReadableStreamReader {
   static final instance = new BlinkReadableStreamReader();
 
-  closed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "closed");
+  closed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ReadableStreamReader */, "closed");
 
-  cancel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cancel", []);
+  cancel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ReadableStreamReader */, "cancel", []);
 
-  cancel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "cancel", [__arg_0]);
+  cancel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ReadableStreamReader */, "cancel", [__arg_0]);
 
-  read_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "read", []);
+  read_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ReadableStreamReader */, "read", []);
 
-  releaseLock_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "releaseLock", []);
+  releaseLock_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ReadableStreamReader */, "releaseLock", []);
 
 }
 
 class BlinkRelatedEvent extends BlinkEvent {
   static final instance = new BlinkRelatedEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "RelatedEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("RelatedEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "RelatedEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("RelatedEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "RelatedEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("RelatedEvent", [__arg_0, __arg_1]);
 
-  relatedTarget_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "relatedTarget");
+  relatedTarget_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* RelatedEvent */, "relatedTarget");
 
 }
 
 class BlinkRequest {
   static final instance = new BlinkRequest();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Request"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("Request");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Request"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("Request", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Request"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("Request", [__arg_0, __arg_1]);
 
-  context_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "context");
+  context_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Request */, "context");
 
-  credentials_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "credentials");
+  credentials_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Request */, "credentials");
 
-  headers_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "headers");
+  headers_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Request */, "headers");
 
-  mode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "mode");
+  mode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Request */, "mode");
 
-  referrer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "referrer");
+  referrer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Request */, "referrer");
 
-  url_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "url");
+  url_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Request */, "url");
 
-  clone_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clone", []);
+  clone_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Request */, "clone", []);
 
 }
 
 class BlinkRequestAnimationFrameCallback {
   static final instance = new BlinkRequestAnimationFrameCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* RequestAnimationFrameCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* RequestAnimationFrameCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkResourceProgressEvent extends BlinkProgressEvent {
   static final instance = new BlinkResourceProgressEvent();
 
-  url_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "url");
+  url_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ResourceProgressEvent */, "url");
 
 }
 
 class BlinkResponse {
   static final instance = new BlinkResponse();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Response"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("Response");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Response"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("Response", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Response"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("Response", [__arg_0, __arg_1]);
 
-  body_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "body");
+  body_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Response */, "body");
 
-  headers_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "headers");
+  headers_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Response */, "headers");
 
-  ok_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ok");
+  ok_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Response */, "ok");
 
-  status_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "status");
+  status_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Response */, "status");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Response */, "type");
 
-  url_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "url");
+  url_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Response */, "url");
 
-  clone_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clone", []);
+  clone_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Response */, "clone", []);
 
-  error_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "Response"), "error", []);
+  error_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "Response") /* Response */, "error", []);
 
-  redirect_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "Response"), "redirect", []);
+  redirect_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "Response") /* Response */, "redirect", []);
 
-  redirect_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "Response"), "redirect", [__arg_0]);
+  redirect_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "Response") /* Response */, "redirect", [__arg_0]);
 
-  redirect_Callback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "Response"), "redirect", [__arg_0, __arg_1]);
+  redirect_Callback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "Response") /* Response */, "redirect", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSQLError {
   static final instance = new BlinkSQLError();
 
-  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "code");
+  code_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SQLError */, "code");
 
-  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "message");
+  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SQLError */, "message");
 
 }
 
 class BlinkSQLResultSet {
   static final instance = new BlinkSQLResultSet();
 
-  insertId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "insertId");
+  insertId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SQLResultSet */, "insertId");
 
-  rows_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rows");
+  rows_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SQLResultSet */, "rows");
 
-  rowsAffected_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rowsAffected");
+  rowsAffected_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SQLResultSet */, "rowsAffected");
 
 }
 
 class BlinkSQLResultSetRowList {
   static final instance = new BlinkSQLResultSetRowList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SQLResultSetRowList */, "length");
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SQLResultSetRowList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SQLResultSetRowList */, "item", [__arg_0]);
 
 }
 
 class BlinkSQLStatementCallback {
   static final instance = new BlinkSQLStatementCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SQLStatementCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SQLStatementCallback */, "handleEvent", [__arg_0]);
 
-  handleEvent_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0, __arg_1]);
+  handleEvent_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SQLStatementCallback */, "handleEvent", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSQLStatementErrorCallback {
   static final instance = new BlinkSQLStatementErrorCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SQLStatementErrorCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SQLStatementErrorCallback */, "handleEvent", [__arg_0]);
 
-  handleEvent_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0, __arg_1]);
+  handleEvent_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SQLStatementErrorCallback */, "handleEvent", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSQLTransaction {
   static final instance = new BlinkSQLTransaction();
 
-  executeSql_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "executeSql", []);
+  executeSql_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SQLTransaction */, "executeSql", []);
 
-  executeSql_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "executeSql", [__arg_0]);
+  executeSql_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SQLTransaction */, "executeSql", [__arg_0]);
 
-  executeSql_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "executeSql", [__arg_0, __arg_1]);
+  executeSql_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SQLTransaction */, "executeSql", [__arg_0, __arg_1]);
 
-  executeSql_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "executeSql", [__arg_0, __arg_1, __arg_2]);
+  executeSql_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* SQLTransaction */, "executeSql", [__arg_0, __arg_1, __arg_2]);
 
-  executeSql_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "executeSql", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  executeSql_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* SQLTransaction */, "executeSql", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
 class BlinkSQLTransactionCallback {
   static final instance = new BlinkSQLTransactionCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SQLTransactionCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SQLTransactionCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkSQLTransactionErrorCallback {
   static final instance = new BlinkSQLTransactionErrorCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SQLTransactionErrorCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SQLTransactionErrorCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkSVGAElement extends BlinkSVGGraphicsElement {
   static final instance = new BlinkSVGAElement();
 
-  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "target");
+  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAElement */, "target");
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGURIReference */, "href");
 
 }
 
 class BlinkSVGAngle {
   static final instance = new BlinkSVGAngle();
 
-  unitType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "unitType");
+  unitType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAngle */, "unitType");
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAngle */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGAngle */, "value", __arg_0);
 
-  valueAsString_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "valueAsString");
+  valueAsString_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAngle */, "valueAsString");
 
-  valueAsString_Setter_(mthis, __arg_0) => mthis["valueAsString"] = __arg_0;
+  valueAsString_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGAngle */, "valueAsString", __arg_0);
 
-  valueInSpecifiedUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "valueInSpecifiedUnits");
+  valueInSpecifiedUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAngle */, "valueInSpecifiedUnits");
 
-  valueInSpecifiedUnits_Setter_(mthis, __arg_0) => mthis["valueInSpecifiedUnits"] = __arg_0;
+  valueInSpecifiedUnits_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGAngle */, "valueInSpecifiedUnits", __arg_0);
 
-  convertToSpecifiedUnits_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "convertToSpecifiedUnits", []);
+  convertToSpecifiedUnits_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGAngle */, "convertToSpecifiedUnits", []);
 
-  convertToSpecifiedUnits_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "convertToSpecifiedUnits", [__arg_0]);
+  convertToSpecifiedUnits_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGAngle */, "convertToSpecifiedUnits", [__arg_0]);
 
-  newValueSpecifiedUnits_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "newValueSpecifiedUnits", []);
+  newValueSpecifiedUnits_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGAngle */, "newValueSpecifiedUnits", []);
 
-  newValueSpecifiedUnits_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "newValueSpecifiedUnits", [__arg_0]);
+  newValueSpecifiedUnits_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGAngle */, "newValueSpecifiedUnits", [__arg_0]);
 
-  newValueSpecifiedUnits_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "newValueSpecifiedUnits", [__arg_0, __arg_1]);
+  newValueSpecifiedUnits_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGAngle */, "newValueSpecifiedUnits", [__arg_0, __arg_1]);
 
 }
 
@@ -13107,223 +13107,223 @@
 class BlinkSVGAnimatedAngle {
   static final instance = new BlinkSVGAnimatedAngle();
 
-  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animVal");
+  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedAngle */, "animVal");
 
-  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseVal");
+  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedAngle */, "baseVal");
 
 }
 
 class BlinkSVGAnimatedBoolean {
   static final instance = new BlinkSVGAnimatedBoolean();
 
-  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animVal");
+  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedBoolean */, "animVal");
 
-  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseVal");
+  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedBoolean */, "baseVal");
 
-  baseVal_Setter_(mthis, __arg_0) => mthis["baseVal"] = __arg_0;
+  baseVal_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGAnimatedBoolean */, "baseVal", __arg_0);
 
 }
 
 class BlinkSVGAnimatedEnumeration {
   static final instance = new BlinkSVGAnimatedEnumeration();
 
-  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animVal");
+  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedEnumeration */, "animVal");
 
-  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseVal");
+  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedEnumeration */, "baseVal");
 
-  baseVal_Setter_(mthis, __arg_0) => mthis["baseVal"] = __arg_0;
+  baseVal_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGAnimatedEnumeration */, "baseVal", __arg_0);
 
 }
 
 class BlinkSVGAnimatedInteger {
   static final instance = new BlinkSVGAnimatedInteger();
 
-  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animVal");
+  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedInteger */, "animVal");
 
-  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseVal");
+  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedInteger */, "baseVal");
 
-  baseVal_Setter_(mthis, __arg_0) => mthis["baseVal"] = __arg_0;
+  baseVal_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGAnimatedInteger */, "baseVal", __arg_0);
 
 }
 
 class BlinkSVGAnimatedLength {
   static final instance = new BlinkSVGAnimatedLength();
 
-  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animVal");
+  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedLength */, "animVal");
 
-  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseVal");
+  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedLength */, "baseVal");
 
 }
 
 class BlinkSVGAnimatedLengthList {
   static final instance = new BlinkSVGAnimatedLengthList();
 
-  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animVal");
+  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedLengthList */, "animVal");
 
-  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseVal");
+  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedLengthList */, "baseVal");
 
 }
 
 class BlinkSVGAnimatedNumber {
   static final instance = new BlinkSVGAnimatedNumber();
 
-  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animVal");
+  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedNumber */, "animVal");
 
-  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseVal");
+  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedNumber */, "baseVal");
 
-  baseVal_Setter_(mthis, __arg_0) => mthis["baseVal"] = __arg_0;
+  baseVal_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGAnimatedNumber */, "baseVal", __arg_0);
 
 }
 
 class BlinkSVGAnimatedNumberList {
   static final instance = new BlinkSVGAnimatedNumberList();
 
-  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animVal");
+  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedNumberList */, "animVal");
 
-  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseVal");
+  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedNumberList */, "baseVal");
 
 }
 
 class BlinkSVGAnimatedPreserveAspectRatio {
   static final instance = new BlinkSVGAnimatedPreserveAspectRatio();
 
-  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animVal");
+  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedPreserveAspectRatio */, "animVal");
 
-  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseVal");
+  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedPreserveAspectRatio */, "baseVal");
 
 }
 
 class BlinkSVGAnimatedRect {
   static final instance = new BlinkSVGAnimatedRect();
 
-  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animVal");
+  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedRect */, "animVal");
 
-  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseVal");
+  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedRect */, "baseVal");
 
 }
 
 class BlinkSVGAnimatedString {
   static final instance = new BlinkSVGAnimatedString();
 
-  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animVal");
+  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedString */, "animVal");
 
-  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseVal");
+  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedString */, "baseVal");
 
-  baseVal_Setter_(mthis, __arg_0) => mthis["baseVal"] = __arg_0;
+  baseVal_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGAnimatedString */, "baseVal", __arg_0);
 
 }
 
 class BlinkSVGAnimatedTransformList {
   static final instance = new BlinkSVGAnimatedTransformList();
 
-  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animVal");
+  animVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedTransformList */, "animVal");
 
-  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseVal");
+  baseVal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimatedTransformList */, "baseVal");
 
 }
 
 class BlinkSVGAnimationElement extends BlinkSVGElement {
   static final instance = new BlinkSVGAnimationElement();
 
-  onbegin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onbegin");
+  onbegin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimationElement */, "onbegin");
 
-  onbegin_Setter_(mthis, __arg_0) => mthis["onbegin"] = __arg_0;
+  onbegin_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGAnimationElement */, "onbegin", __arg_0);
 
-  onend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onend");
+  onend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimationElement */, "onend");
 
-  onend_Setter_(mthis, __arg_0) => mthis["onend"] = __arg_0;
+  onend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGAnimationElement */, "onend", __arg_0);
 
-  onrepeat_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onrepeat");
+  onrepeat_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimationElement */, "onrepeat");
 
-  onrepeat_Setter_(mthis, __arg_0) => mthis["onrepeat"] = __arg_0;
+  onrepeat_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGAnimationElement */, "onrepeat", __arg_0);
 
-  targetElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "targetElement");
+  targetElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGAnimationElement */, "targetElement");
 
-  beginElement_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "beginElement", []);
+  beginElement_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGAnimationElement */, "beginElement", []);
 
-  beginElementAt_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "beginElementAt", []);
+  beginElementAt_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGAnimationElement */, "beginElementAt", []);
 
-  beginElementAt_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "beginElementAt", [__arg_0]);
+  beginElementAt_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGAnimationElement */, "beginElementAt", [__arg_0]);
 
-  endElement_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "endElement", []);
+  endElement_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGAnimationElement */, "endElement", []);
 
-  endElementAt_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "endElementAt", []);
+  endElementAt_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGAnimationElement */, "endElementAt", []);
 
-  endElementAt_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "endElementAt", [__arg_0]);
+  endElementAt_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGAnimationElement */, "endElementAt", [__arg_0]);
 
-  getCurrentTime_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getCurrentTime", []);
+  getCurrentTime_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGAnimationElement */, "getCurrentTime", []);
 
-  getSimpleDuration_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSimpleDuration", []);
+  getSimpleDuration_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGAnimationElement */, "getSimpleDuration", []);
 
-  getStartTime_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getStartTime", []);
+  getStartTime_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGAnimationElement */, "getStartTime", []);
 
-  requiredExtensions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "requiredExtensions");
+  requiredExtensions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "requiredExtensions");
 
-  requiredFeatures_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "requiredFeatures");
+  requiredFeatures_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "requiredFeatures");
 
-  systemLanguage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "systemLanguage");
+  systemLanguage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "systemLanguage");
 
-  hasExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "hasExtension", []);
+  hasExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTests */, "hasExtension", []);
 
-  hasExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "hasExtension", [__arg_0]);
+  hasExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTests */, "hasExtension", [__arg_0]);
 
 }
 
 class BlinkSVGCircleElement extends BlinkSVGGeometryElement {
   static final instance = new BlinkSVGCircleElement();
 
-  cx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cx");
+  cx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGCircleElement */, "cx");
 
-  cy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cy");
+  cy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGCircleElement */, "cy");
 
-  r_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "r");
+  r_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGCircleElement */, "r");
 
 }
 
 class BlinkSVGClipPathElement extends BlinkSVGGraphicsElement {
   static final instance = new BlinkSVGClipPathElement();
 
-  clipPathUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "clipPathUnits");
+  clipPathUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGClipPathElement */, "clipPathUnits");
 
 }
 
 class BlinkSVGComponentTransferFunctionElement extends BlinkSVGElement {
   static final instance = new BlinkSVGComponentTransferFunctionElement();
 
-  amplitude_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "amplitude");
+  amplitude_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGComponentTransferFunctionElement */, "amplitude");
 
-  exponent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "exponent");
+  exponent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGComponentTransferFunctionElement */, "exponent");
 
-  intercept_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "intercept");
+  intercept_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGComponentTransferFunctionElement */, "intercept");
 
-  offset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "offset");
+  offset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGComponentTransferFunctionElement */, "offset");
 
-  slope_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "slope");
+  slope_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGComponentTransferFunctionElement */, "slope");
 
-  tableValues_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "tableValues");
+  tableValues_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGComponentTransferFunctionElement */, "tableValues");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGComponentTransferFunctionElement */, "type");
 
 }
 
 class BlinkSVGCursorElement extends BlinkSVGElement {
   static final instance = new BlinkSVGCursorElement();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGCursorElement */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGCursorElement */, "y");
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGURIReference */, "href");
 
-  requiredExtensions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "requiredExtensions");
+  requiredExtensions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "requiredExtensions");
 
-  requiredFeatures_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "requiredFeatures");
+  requiredFeatures_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "requiredFeatures");
 
-  systemLanguage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "systemLanguage");
+  systemLanguage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "systemLanguage");
 
-  hasExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "hasExtension", []);
+  hasExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTests */, "hasExtension", []);
 
-  hasExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "hasExtension", [__arg_0]);
+  hasExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTests */, "hasExtension", [__arg_0]);
 
 }
 
@@ -13345,542 +13345,542 @@
 class BlinkSVGElement extends BlinkElement {
   static final instance = new BlinkSVGElement();
 
-  className_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "className");
+  className_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGElement */, "className");
 
-  ownerSVGElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ownerSVGElement");
+  ownerSVGElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGElement */, "ownerSVGElement");
 
-  style_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "style");
+  style_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGElement */, "style");
 
-  tabIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "tabIndex");
+  tabIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGElement */, "tabIndex");
 
-  tabIndex_Setter_(mthis, __arg_0) => mthis["tabIndex"] = __arg_0;
+  tabIndex_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGElement */, "tabIndex", __arg_0);
 
-  viewportElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "viewportElement");
+  viewportElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGElement */, "viewportElement");
 
-  blur_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blur", []);
+  blur_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGElement */, "blur", []);
 
-  focus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "focus", []);
+  focus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGElement */, "focus", []);
 
-  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onabort");
+  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onabort");
 
-  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
+  onabort_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onabort", __arg_0);
 
-  onautocomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onautocomplete");
+  onautocomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onautocomplete");
 
-  onautocomplete_Setter_(mthis, __arg_0) => mthis["onautocomplete"] = __arg_0;
+  onautocomplete_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onautocomplete", __arg_0);
 
-  onautocompleteerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onautocompleteerror");
+  onautocompleteerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onautocompleteerror");
 
-  onautocompleteerror_Setter_(mthis, __arg_0) => mthis["onautocompleteerror"] = __arg_0;
+  onautocompleteerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onautocompleteerror", __arg_0);
 
-  onblur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onblur");
+  onblur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onblur");
 
-  onblur_Setter_(mthis, __arg_0) => mthis["onblur"] = __arg_0;
+  onblur_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onblur", __arg_0);
 
-  oncancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncancel");
+  oncancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncancel");
 
-  oncancel_Setter_(mthis, __arg_0) => mthis["oncancel"] = __arg_0;
+  oncancel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncancel", __arg_0);
 
-  oncanplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncanplay");
+  oncanplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncanplay");
 
-  oncanplay_Setter_(mthis, __arg_0) => mthis["oncanplay"] = __arg_0;
+  oncanplay_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncanplay", __arg_0);
 
-  oncanplaythrough_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncanplaythrough");
+  oncanplaythrough_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncanplaythrough");
 
-  oncanplaythrough_Setter_(mthis, __arg_0) => mthis["oncanplaythrough"] = __arg_0;
+  oncanplaythrough_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncanplaythrough", __arg_0);
 
-  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onchange");
+  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onchange");
 
-  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
+  onchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onchange", __arg_0);
 
-  onclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclick");
+  onclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onclick");
 
-  onclick_Setter_(mthis, __arg_0) => mthis["onclick"] = __arg_0;
+  onclick_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onclick", __arg_0);
 
-  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclose");
+  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onclose");
 
-  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
+  onclose_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onclose", __arg_0);
 
-  oncontextmenu_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncontextmenu");
+  oncontextmenu_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncontextmenu");
 
-  oncontextmenu_Setter_(mthis, __arg_0) => mthis["oncontextmenu"] = __arg_0;
+  oncontextmenu_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncontextmenu", __arg_0);
 
-  oncuechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncuechange");
+  oncuechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncuechange");
 
-  oncuechange_Setter_(mthis, __arg_0) => mthis["oncuechange"] = __arg_0;
+  oncuechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncuechange", __arg_0);
 
-  ondblclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondblclick");
+  ondblclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondblclick");
 
-  ondblclick_Setter_(mthis, __arg_0) => mthis["ondblclick"] = __arg_0;
+  ondblclick_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondblclick", __arg_0);
 
-  ondrag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondrag");
+  ondrag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondrag");
 
-  ondrag_Setter_(mthis, __arg_0) => mthis["ondrag"] = __arg_0;
+  ondrag_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondrag", __arg_0);
 
-  ondragend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragend");
+  ondragend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragend");
 
-  ondragend_Setter_(mthis, __arg_0) => mthis["ondragend"] = __arg_0;
+  ondragend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragend", __arg_0);
 
-  ondragenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragenter");
+  ondragenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragenter");
 
-  ondragenter_Setter_(mthis, __arg_0) => mthis["ondragenter"] = __arg_0;
+  ondragenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragenter", __arg_0);
 
-  ondragleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragleave");
+  ondragleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragleave");
 
-  ondragleave_Setter_(mthis, __arg_0) => mthis["ondragleave"] = __arg_0;
+  ondragleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragleave", __arg_0);
 
-  ondragover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragover");
+  ondragover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragover");
 
-  ondragover_Setter_(mthis, __arg_0) => mthis["ondragover"] = __arg_0;
+  ondragover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragover", __arg_0);
 
-  ondragstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragstart");
+  ondragstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragstart");
 
-  ondragstart_Setter_(mthis, __arg_0) => mthis["ondragstart"] = __arg_0;
+  ondragstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragstart", __arg_0);
 
-  ondrop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondrop");
+  ondrop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondrop");
 
-  ondrop_Setter_(mthis, __arg_0) => mthis["ondrop"] = __arg_0;
+  ondrop_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondrop", __arg_0);
 
-  ondurationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondurationchange");
+  ondurationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondurationchange");
 
-  ondurationchange_Setter_(mthis, __arg_0) => mthis["ondurationchange"] = __arg_0;
+  ondurationchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondurationchange", __arg_0);
 
-  onemptied_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onemptied");
+  onemptied_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onemptied");
 
-  onemptied_Setter_(mthis, __arg_0) => mthis["onemptied"] = __arg_0;
+  onemptied_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onemptied", __arg_0);
 
-  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onended");
+  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onended");
 
-  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
+  onended_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onended", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onerror", __arg_0);
 
-  onfocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onfocus");
+  onfocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onfocus");
 
-  onfocus_Setter_(mthis, __arg_0) => mthis["onfocus"] = __arg_0;
+  onfocus_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onfocus", __arg_0);
 
-  oninput_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oninput");
+  oninput_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oninput");
 
-  oninput_Setter_(mthis, __arg_0) => mthis["oninput"] = __arg_0;
+  oninput_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oninput", __arg_0);
 
-  oninvalid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oninvalid");
+  oninvalid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oninvalid");
 
-  oninvalid_Setter_(mthis, __arg_0) => mthis["oninvalid"] = __arg_0;
+  oninvalid_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oninvalid", __arg_0);
 
-  onkeydown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeydown");
+  onkeydown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeydown");
 
-  onkeydown_Setter_(mthis, __arg_0) => mthis["onkeydown"] = __arg_0;
+  onkeydown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeydown", __arg_0);
 
-  onkeypress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeypress");
+  onkeypress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeypress");
 
-  onkeypress_Setter_(mthis, __arg_0) => mthis["onkeypress"] = __arg_0;
+  onkeypress_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeypress", __arg_0);
 
-  onkeyup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeyup");
+  onkeyup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeyup");
 
-  onkeyup_Setter_(mthis, __arg_0) => mthis["onkeyup"] = __arg_0;
+  onkeyup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeyup", __arg_0);
 
-  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onload");
+  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onload");
 
-  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
+  onload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onload", __arg_0);
 
-  onloadeddata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadeddata");
+  onloadeddata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadeddata");
 
-  onloadeddata_Setter_(mthis, __arg_0) => mthis["onloadeddata"] = __arg_0;
+  onloadeddata_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadeddata", __arg_0);
 
-  onloadedmetadata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadedmetadata");
+  onloadedmetadata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadedmetadata");
 
-  onloadedmetadata_Setter_(mthis, __arg_0) => mthis["onloadedmetadata"] = __arg_0;
+  onloadedmetadata_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadedmetadata", __arg_0);
 
-  onloadstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadstart");
+  onloadstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadstart");
 
-  onloadstart_Setter_(mthis, __arg_0) => mthis["onloadstart"] = __arg_0;
+  onloadstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadstart", __arg_0);
 
-  onmousedown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousedown");
+  onmousedown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousedown");
 
-  onmousedown_Setter_(mthis, __arg_0) => mthis["onmousedown"] = __arg_0;
+  onmousedown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousedown", __arg_0);
 
-  onmouseenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseenter");
+  onmouseenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseenter");
 
-  onmouseenter_Setter_(mthis, __arg_0) => mthis["onmouseenter"] = __arg_0;
+  onmouseenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseenter", __arg_0);
 
-  onmouseleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseleave");
+  onmouseleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseleave");
 
-  onmouseleave_Setter_(mthis, __arg_0) => mthis["onmouseleave"] = __arg_0;
+  onmouseleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseleave", __arg_0);
 
-  onmousemove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousemove");
+  onmousemove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousemove");
 
-  onmousemove_Setter_(mthis, __arg_0) => mthis["onmousemove"] = __arg_0;
+  onmousemove_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousemove", __arg_0);
 
-  onmouseout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseout");
+  onmouseout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseout");
 
-  onmouseout_Setter_(mthis, __arg_0) => mthis["onmouseout"] = __arg_0;
+  onmouseout_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseout", __arg_0);
 
-  onmouseover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseover");
+  onmouseover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseover");
 
-  onmouseover_Setter_(mthis, __arg_0) => mthis["onmouseover"] = __arg_0;
+  onmouseover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseover", __arg_0);
 
-  onmouseup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseup");
+  onmouseup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseup");
 
-  onmouseup_Setter_(mthis, __arg_0) => mthis["onmouseup"] = __arg_0;
+  onmouseup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseup", __arg_0);
 
-  onmousewheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousewheel");
+  onmousewheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousewheel");
 
-  onmousewheel_Setter_(mthis, __arg_0) => mthis["onmousewheel"] = __arg_0;
+  onmousewheel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousewheel", __arg_0);
 
-  onpause_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpause");
+  onpause_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpause");
 
-  onpause_Setter_(mthis, __arg_0) => mthis["onpause"] = __arg_0;
+  onpause_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpause", __arg_0);
 
-  onplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onplay");
+  onplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onplay");
 
-  onplay_Setter_(mthis, __arg_0) => mthis["onplay"] = __arg_0;
+  onplay_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onplay", __arg_0);
 
-  onplaying_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onplaying");
+  onplaying_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onplaying");
 
-  onplaying_Setter_(mthis, __arg_0) => mthis["onplaying"] = __arg_0;
+  onplaying_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onplaying", __arg_0);
 
-  onpointercancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointercancel");
+  onpointercancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointercancel");
 
-  onpointercancel_Setter_(mthis, __arg_0) => mthis["onpointercancel"] = __arg_0;
+  onpointercancel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointercancel", __arg_0);
 
-  onpointerdown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerdown");
+  onpointerdown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerdown");
 
-  onpointerdown_Setter_(mthis, __arg_0) => mthis["onpointerdown"] = __arg_0;
+  onpointerdown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerdown", __arg_0);
 
-  onpointerenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerenter");
+  onpointerenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerenter");
 
-  onpointerenter_Setter_(mthis, __arg_0) => mthis["onpointerenter"] = __arg_0;
+  onpointerenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerenter", __arg_0);
 
-  onpointerleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerleave");
+  onpointerleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerleave");
 
-  onpointerleave_Setter_(mthis, __arg_0) => mthis["onpointerleave"] = __arg_0;
+  onpointerleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerleave", __arg_0);
 
-  onpointermove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointermove");
+  onpointermove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointermove");
 
-  onpointermove_Setter_(mthis, __arg_0) => mthis["onpointermove"] = __arg_0;
+  onpointermove_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointermove", __arg_0);
 
-  onpointerout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerout");
+  onpointerout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerout");
 
-  onpointerout_Setter_(mthis, __arg_0) => mthis["onpointerout"] = __arg_0;
+  onpointerout_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerout", __arg_0);
 
-  onpointerover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerover");
+  onpointerover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerover");
 
-  onpointerover_Setter_(mthis, __arg_0) => mthis["onpointerover"] = __arg_0;
+  onpointerover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerover", __arg_0);
 
-  onpointerup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerup");
+  onpointerup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerup");
 
-  onpointerup_Setter_(mthis, __arg_0) => mthis["onpointerup"] = __arg_0;
+  onpointerup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerup", __arg_0);
 
-  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onprogress");
+  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onprogress");
 
-  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
+  onprogress_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onprogress", __arg_0);
 
-  onratechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onratechange");
+  onratechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onratechange");
 
-  onratechange_Setter_(mthis, __arg_0) => mthis["onratechange"] = __arg_0;
+  onratechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onratechange", __arg_0);
 
-  onreset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onreset");
+  onreset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onreset");
 
-  onreset_Setter_(mthis, __arg_0) => mthis["onreset"] = __arg_0;
+  onreset_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onreset", __arg_0);
 
-  onresize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onresize");
+  onresize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onresize");
 
-  onresize_Setter_(mthis, __arg_0) => mthis["onresize"] = __arg_0;
+  onresize_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onresize", __arg_0);
 
-  onscroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onscroll");
+  onscroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onscroll");
 
-  onscroll_Setter_(mthis, __arg_0) => mthis["onscroll"] = __arg_0;
+  onscroll_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onscroll", __arg_0);
 
-  onseeked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onseeked");
+  onseeked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onseeked");
 
-  onseeked_Setter_(mthis, __arg_0) => mthis["onseeked"] = __arg_0;
+  onseeked_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onseeked", __arg_0);
 
-  onseeking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onseeking");
+  onseeking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onseeking");
 
-  onseeking_Setter_(mthis, __arg_0) => mthis["onseeking"] = __arg_0;
+  onseeking_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onseeking", __arg_0);
 
-  onselect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onselect");
+  onselect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onselect");
 
-  onselect_Setter_(mthis, __arg_0) => mthis["onselect"] = __arg_0;
+  onselect_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onselect", __arg_0);
 
-  onshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onshow");
+  onshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onshow");
 
-  onshow_Setter_(mthis, __arg_0) => mthis["onshow"] = __arg_0;
+  onshow_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onshow", __arg_0);
 
-  onstalled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstalled");
+  onstalled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onstalled");
 
-  onstalled_Setter_(mthis, __arg_0) => mthis["onstalled"] = __arg_0;
+  onstalled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onstalled", __arg_0);
 
-  onsubmit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsubmit");
+  onsubmit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onsubmit");
 
-  onsubmit_Setter_(mthis, __arg_0) => mthis["onsubmit"] = __arg_0;
+  onsubmit_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onsubmit", __arg_0);
 
-  onsuspend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsuspend");
+  onsuspend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onsuspend");
 
-  onsuspend_Setter_(mthis, __arg_0) => mthis["onsuspend"] = __arg_0;
+  onsuspend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onsuspend", __arg_0);
 
-  ontimeupdate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontimeupdate");
+  ontimeupdate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ontimeupdate");
 
-  ontimeupdate_Setter_(mthis, __arg_0) => mthis["ontimeupdate"] = __arg_0;
+  ontimeupdate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ontimeupdate", __arg_0);
 
-  ontoggle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontoggle");
+  ontoggle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ontoggle");
 
-  ontoggle_Setter_(mthis, __arg_0) => mthis["ontoggle"] = __arg_0;
+  ontoggle_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ontoggle", __arg_0);
 
-  onvolumechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onvolumechange");
+  onvolumechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onvolumechange");
 
-  onvolumechange_Setter_(mthis, __arg_0) => mthis["onvolumechange"] = __arg_0;
+  onvolumechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onvolumechange", __arg_0);
 
-  onwaiting_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwaiting");
+  onwaiting_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onwaiting");
 
-  onwaiting_Setter_(mthis, __arg_0) => mthis["onwaiting"] = __arg_0;
+  onwaiting_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onwaiting", __arg_0);
 
 }
 
 class BlinkSVGEllipseElement extends BlinkSVGGeometryElement {
   static final instance = new BlinkSVGEllipseElement();
 
-  cx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cx");
+  cx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGEllipseElement */, "cx");
 
-  cy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cy");
+  cy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGEllipseElement */, "cy");
 
-  rx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rx");
+  rx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGEllipseElement */, "rx");
 
-  ry_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ry");
+  ry_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGEllipseElement */, "ry");
 
 }
 
 class BlinkSVGFEBlendElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEBlendElement();
 
-  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in1");
+  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEBlendElement */, "in1");
 
-  in2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in2");
+  in2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEBlendElement */, "in2");
 
-  mode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "mode");
+  mode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEBlendElement */, "mode");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
 class BlinkSVGFEColorMatrixElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEColorMatrixElement();
 
-  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in1");
+  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEColorMatrixElement */, "in1");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEColorMatrixElement */, "type");
 
-  values_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "values");
+  values_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEColorMatrixElement */, "values");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
 class BlinkSVGFEComponentTransferElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEComponentTransferElement();
 
-  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in1");
+  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEComponentTransferElement */, "in1");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
 class BlinkSVGFECompositeElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFECompositeElement();
 
-  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in1");
+  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFECompositeElement */, "in1");
 
-  in2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in2");
+  in2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFECompositeElement */, "in2");
 
-  k1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "k1");
+  k1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFECompositeElement */, "k1");
 
-  k2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "k2");
+  k2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFECompositeElement */, "k2");
 
-  k3_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "k3");
+  k3_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFECompositeElement */, "k3");
 
-  k4_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "k4");
+  k4_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFECompositeElement */, "k4");
 
-  operator_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "operator");
+  operator_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFECompositeElement */, "operator");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
 class BlinkSVGFEConvolveMatrixElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEConvolveMatrixElement();
 
-  bias_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "bias");
+  bias_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEConvolveMatrixElement */, "bias");
 
-  divisor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "divisor");
+  divisor_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEConvolveMatrixElement */, "divisor");
 
-  edgeMode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "edgeMode");
+  edgeMode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEConvolveMatrixElement */, "edgeMode");
 
-  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in1");
+  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEConvolveMatrixElement */, "in1");
 
-  kernelMatrix_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "kernelMatrix");
+  kernelMatrix_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEConvolveMatrixElement */, "kernelMatrix");
 
-  kernelUnitLengthX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "kernelUnitLengthX");
+  kernelUnitLengthX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEConvolveMatrixElement */, "kernelUnitLengthX");
 
-  kernelUnitLengthY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "kernelUnitLengthY");
+  kernelUnitLengthY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEConvolveMatrixElement */, "kernelUnitLengthY");
 
-  orderX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "orderX");
+  orderX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEConvolveMatrixElement */, "orderX");
 
-  orderY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "orderY");
+  orderY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEConvolveMatrixElement */, "orderY");
 
-  preserveAlpha_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "preserveAlpha");
+  preserveAlpha_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEConvolveMatrixElement */, "preserveAlpha");
 
-  targetX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "targetX");
+  targetX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEConvolveMatrixElement */, "targetX");
 
-  targetY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "targetY");
+  targetY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEConvolveMatrixElement */, "targetY");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
 class BlinkSVGFEDiffuseLightingElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEDiffuseLightingElement();
 
-  diffuseConstant_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "diffuseConstant");
+  diffuseConstant_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDiffuseLightingElement */, "diffuseConstant");
 
-  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in1");
+  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDiffuseLightingElement */, "in1");
 
-  kernelUnitLengthX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "kernelUnitLengthX");
+  kernelUnitLengthX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDiffuseLightingElement */, "kernelUnitLengthX");
 
-  kernelUnitLengthY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "kernelUnitLengthY");
+  kernelUnitLengthY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDiffuseLightingElement */, "kernelUnitLengthY");
 
-  surfaceScale_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "surfaceScale");
+  surfaceScale_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDiffuseLightingElement */, "surfaceScale");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
 class BlinkSVGFEDisplacementMapElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEDisplacementMapElement();
 
-  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in1");
+  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDisplacementMapElement */, "in1");
 
-  in2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in2");
+  in2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDisplacementMapElement */, "in2");
 
-  scale_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scale");
+  scale_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDisplacementMapElement */, "scale");
 
-  xChannelSelector_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "xChannelSelector");
+  xChannelSelector_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDisplacementMapElement */, "xChannelSelector");
 
-  yChannelSelector_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "yChannelSelector");
+  yChannelSelector_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDisplacementMapElement */, "yChannelSelector");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
 class BlinkSVGFEDistantLightElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEDistantLightElement();
 
-  azimuth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "azimuth");
+  azimuth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDistantLightElement */, "azimuth");
 
-  elevation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "elevation");
+  elevation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDistantLightElement */, "elevation");
 
 }
 
 class BlinkSVGFEDropShadowElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEDropShadowElement();
 
-  dx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dx");
+  dx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDropShadowElement */, "dx");
 
-  dy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dy");
+  dy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDropShadowElement */, "dy");
 
-  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in1");
+  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDropShadowElement */, "in1");
 
-  stdDeviationX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "stdDeviationX");
+  stdDeviationX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDropShadowElement */, "stdDeviationX");
 
-  stdDeviationY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "stdDeviationY");
+  stdDeviationY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEDropShadowElement */, "stdDeviationY");
 
-  setStdDeviation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setStdDeviation", []);
+  setStdDeviation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGFEDropShadowElement */, "setStdDeviation", []);
 
-  setStdDeviation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setStdDeviation", [__arg_0]);
+  setStdDeviation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGFEDropShadowElement */, "setStdDeviation", [__arg_0]);
 
-  setStdDeviation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setStdDeviation", [__arg_0, __arg_1]);
+  setStdDeviation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGFEDropShadowElement */, "setStdDeviation", [__arg_0, __arg_1]);
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
 class BlinkSVGFEFloodElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEFloodElement();
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
@@ -13907,271 +13907,271 @@
 class BlinkSVGFEGaussianBlurElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEGaussianBlurElement();
 
-  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in1");
+  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEGaussianBlurElement */, "in1");
 
-  stdDeviationX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "stdDeviationX");
+  stdDeviationX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEGaussianBlurElement */, "stdDeviationX");
 
-  stdDeviationY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "stdDeviationY");
+  stdDeviationY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEGaussianBlurElement */, "stdDeviationY");
 
-  setStdDeviation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setStdDeviation", []);
+  setStdDeviation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGFEGaussianBlurElement */, "setStdDeviation", []);
 
-  setStdDeviation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setStdDeviation", [__arg_0]);
+  setStdDeviation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGFEGaussianBlurElement */, "setStdDeviation", [__arg_0]);
 
-  setStdDeviation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setStdDeviation", [__arg_0, __arg_1]);
+  setStdDeviation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGFEGaussianBlurElement */, "setStdDeviation", [__arg_0, __arg_1]);
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
 class BlinkSVGFEImageElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEImageElement();
 
-  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "preserveAspectRatio");
+  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEImageElement */, "preserveAspectRatio");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGURIReference */, "href");
 
 }
 
 class BlinkSVGFEMergeElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEMergeElement();
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
 class BlinkSVGFEMergeNodeElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEMergeNodeElement();
 
-  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in1");
+  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEMergeNodeElement */, "in1");
 
 }
 
 class BlinkSVGFEMorphologyElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEMorphologyElement();
 
-  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in1");
+  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEMorphologyElement */, "in1");
 
-  operator_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "operator");
+  operator_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEMorphologyElement */, "operator");
 
-  radiusX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "radiusX");
+  radiusX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEMorphologyElement */, "radiusX");
 
-  radiusY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "radiusY");
+  radiusY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEMorphologyElement */, "radiusY");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
 class BlinkSVGFEOffsetElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEOffsetElement();
 
-  dx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dx");
+  dx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEOffsetElement */, "dx");
 
-  dy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dy");
+  dy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEOffsetElement */, "dy");
 
-  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in1");
+  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEOffsetElement */, "in1");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
 class BlinkSVGFEPointLightElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEPointLightElement();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEPointLightElement */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEPointLightElement */, "y");
 
-  z_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "z");
+  z_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFEPointLightElement */, "z");
 
 }
 
 class BlinkSVGFESpecularLightingElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFESpecularLightingElement();
 
-  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in1");
+  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFESpecularLightingElement */, "in1");
 
-  kernelUnitLengthX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "kernelUnitLengthX");
+  kernelUnitLengthX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFESpecularLightingElement */, "kernelUnitLengthX");
 
-  kernelUnitLengthY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "kernelUnitLengthY");
+  kernelUnitLengthY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFESpecularLightingElement */, "kernelUnitLengthY");
 
-  specularConstant_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "specularConstant");
+  specularConstant_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFESpecularLightingElement */, "specularConstant");
 
-  specularExponent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "specularExponent");
+  specularExponent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFESpecularLightingElement */, "specularExponent");
 
-  surfaceScale_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "surfaceScale");
+  surfaceScale_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFESpecularLightingElement */, "surfaceScale");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
 class BlinkSVGFESpotLightElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFESpotLightElement();
 
-  limitingConeAngle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "limitingConeAngle");
+  limitingConeAngle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFESpotLightElement */, "limitingConeAngle");
 
-  pointsAtX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pointsAtX");
+  pointsAtX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFESpotLightElement */, "pointsAtX");
 
-  pointsAtY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pointsAtY");
+  pointsAtY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFESpotLightElement */, "pointsAtY");
 
-  pointsAtZ_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pointsAtZ");
+  pointsAtZ_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFESpotLightElement */, "pointsAtZ");
 
-  specularExponent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "specularExponent");
+  specularExponent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFESpotLightElement */, "specularExponent");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFESpotLightElement */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFESpotLightElement */, "y");
 
-  z_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "z");
+  z_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFESpotLightElement */, "z");
 
 }
 
 class BlinkSVGFETileElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFETileElement();
 
-  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "in1");
+  in1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFETileElement */, "in1");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
 class BlinkSVGFETurbulenceElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFETurbulenceElement();
 
-  baseFrequencyX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseFrequencyX");
+  baseFrequencyX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFETurbulenceElement */, "baseFrequencyX");
 
-  baseFrequencyY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseFrequencyY");
+  baseFrequencyY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFETurbulenceElement */, "baseFrequencyY");
 
-  numOctaves_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "numOctaves");
+  numOctaves_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFETurbulenceElement */, "numOctaves");
 
-  seed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "seed");
+  seed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFETurbulenceElement */, "seed");
 
-  stitchTiles_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "stitchTiles");
+  stitchTiles_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFETurbulenceElement */, "stitchTiles");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFETurbulenceElement */, "type");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
 class BlinkSVGFilterElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFilterElement();
 
-  filterUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "filterUnits");
+  filterUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterElement */, "filterUnits");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterElement */, "height");
 
-  primitiveUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "primitiveUnits");
+  primitiveUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterElement */, "primitiveUnits");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterElement */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterElement */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterElement */, "y");
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGURIReference */, "href");
 
 }
 
 class BlinkSVGFilterPrimitiveStandardAttributes {
   static final instance = new BlinkSVGFilterPrimitiveStandardAttributes();
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "height");
 
-  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "result");
+  result_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "result");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFilterPrimitiveStandardAttributes */, "y");
 
 }
 
 class BlinkSVGFitToViewBox {
   static final instance = new BlinkSVGFitToViewBox();
 
-  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "preserveAspectRatio");
+  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFitToViewBox */, "preserveAspectRatio");
 
-  viewBox_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "viewBox");
+  viewBox_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFitToViewBox */, "viewBox");
 
 }
 
 class BlinkSVGForeignObjectElement extends BlinkSVGGraphicsElement {
   static final instance = new BlinkSVGForeignObjectElement();
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGForeignObjectElement */, "height");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGForeignObjectElement */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGForeignObjectElement */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGForeignObjectElement */, "y");
 
 }
 
@@ -14183,306 +14183,306 @@
 class BlinkSVGGeometryElement extends BlinkSVGGraphicsElement {
   static final instance = new BlinkSVGGeometryElement();
 
-  isPointInFill_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isPointInFill", []);
+  isPointInFill_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGGeometryElement */, "isPointInFill", []);
 
-  isPointInFill_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isPointInFill", [__arg_0]);
+  isPointInFill_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGGeometryElement */, "isPointInFill", [__arg_0]);
 
-  isPointInStroke_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isPointInStroke", []);
+  isPointInStroke_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGGeometryElement */, "isPointInStroke", []);
 
-  isPointInStroke_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isPointInStroke", [__arg_0]);
+  isPointInStroke_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGGeometryElement */, "isPointInStroke", [__arg_0]);
 
 }
 
 class BlinkSVGGradientElement extends BlinkSVGElement {
   static final instance = new BlinkSVGGradientElement();
 
-  gradientTransform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "gradientTransform");
+  gradientTransform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGGradientElement */, "gradientTransform");
 
-  gradientUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "gradientUnits");
+  gradientUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGGradientElement */, "gradientUnits");
 
-  spreadMethod_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "spreadMethod");
+  spreadMethod_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGGradientElement */, "spreadMethod");
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGURIReference */, "href");
 
 }
 
 class BlinkSVGGraphicsElement extends BlinkSVGElement {
   static final instance = new BlinkSVGGraphicsElement();
 
-  farthestViewportElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "farthestViewportElement");
+  farthestViewportElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGGraphicsElement */, "farthestViewportElement");
 
-  nearestViewportElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "nearestViewportElement");
+  nearestViewportElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGGraphicsElement */, "nearestViewportElement");
 
-  transform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "transform");
+  transform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGGraphicsElement */, "transform");
 
-  getBBox_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getBBox", []);
+  getBBox_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGGraphicsElement */, "getBBox", []);
 
-  getCTM_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getCTM", []);
+  getCTM_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGGraphicsElement */, "getCTM", []);
 
-  getScreenCTM_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getScreenCTM", []);
+  getScreenCTM_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGGraphicsElement */, "getScreenCTM", []);
 
-  getTransformToElement_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getTransformToElement", []);
+  getTransformToElement_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGGraphicsElement */, "getTransformToElement", []);
 
-  getTransformToElement_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getTransformToElement", [__arg_0]);
+  getTransformToElement_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGGraphicsElement */, "getTransformToElement", [__arg_0]);
 
-  requiredExtensions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "requiredExtensions");
+  requiredExtensions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "requiredExtensions");
 
-  requiredFeatures_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "requiredFeatures");
+  requiredFeatures_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "requiredFeatures");
 
-  systemLanguage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "systemLanguage");
+  systemLanguage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "systemLanguage");
 
-  hasExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "hasExtension", []);
+  hasExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTests */, "hasExtension", []);
 
-  hasExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "hasExtension", [__arg_0]);
+  hasExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTests */, "hasExtension", [__arg_0]);
 
 }
 
 class BlinkSVGImageElement extends BlinkSVGGraphicsElement {
   static final instance = new BlinkSVGImageElement();
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGImageElement */, "height");
 
-  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "preserveAspectRatio");
+  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGImageElement */, "preserveAspectRatio");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGImageElement */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGImageElement */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGImageElement */, "y");
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGURIReference */, "href");
 
 }
 
 class BlinkSVGLength {
   static final instance = new BlinkSVGLength();
 
-  unitType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "unitType");
+  unitType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGLength */, "unitType");
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGLength */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGLength */, "value", __arg_0);
 
-  valueAsString_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "valueAsString");
+  valueAsString_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGLength */, "valueAsString");
 
-  valueAsString_Setter_(mthis, __arg_0) => mthis["valueAsString"] = __arg_0;
+  valueAsString_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGLength */, "valueAsString", __arg_0);
 
-  valueInSpecifiedUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "valueInSpecifiedUnits");
+  valueInSpecifiedUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGLength */, "valueInSpecifiedUnits");
 
-  valueInSpecifiedUnits_Setter_(mthis, __arg_0) => mthis["valueInSpecifiedUnits"] = __arg_0;
+  valueInSpecifiedUnits_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGLength */, "valueInSpecifiedUnits", __arg_0);
 
-  convertToSpecifiedUnits_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "convertToSpecifiedUnits", []);
+  convertToSpecifiedUnits_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGLength */, "convertToSpecifiedUnits", []);
 
-  convertToSpecifiedUnits_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "convertToSpecifiedUnits", [__arg_0]);
+  convertToSpecifiedUnits_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGLength */, "convertToSpecifiedUnits", [__arg_0]);
 
-  newValueSpecifiedUnits_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "newValueSpecifiedUnits", []);
+  newValueSpecifiedUnits_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGLength */, "newValueSpecifiedUnits", []);
 
-  newValueSpecifiedUnits_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "newValueSpecifiedUnits", [__arg_0]);
+  newValueSpecifiedUnits_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGLength */, "newValueSpecifiedUnits", [__arg_0]);
 
-  newValueSpecifiedUnits_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "newValueSpecifiedUnits", [__arg_0, __arg_1]);
+  newValueSpecifiedUnits_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGLength */, "newValueSpecifiedUnits", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSVGLengthList {
   static final instance = new BlinkSVGLengthList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGLengthList */, "length");
 
-  numberOfItems_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "numberOfItems");
+  numberOfItems_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGLengthList */, "numberOfItems");
 
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "__setter__", [__arg_0, __arg_1]);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGLengthList */, "__setter__", [__arg_0, __arg_1]);
 
-  appendItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "appendItem", []);
+  appendItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGLengthList */, "appendItem", []);
 
-  appendItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "appendItem", [__arg_0]);
+  appendItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGLengthList */, "appendItem", [__arg_0]);
 
-  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clear", []);
+  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGLengthList */, "clear", []);
 
-  getItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getItem", []);
+  getItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGLengthList */, "getItem", []);
 
-  getItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getItem", [__arg_0]);
+  getItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGLengthList */, "getItem", [__arg_0]);
 
-  initialize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "initialize", []);
+  initialize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGLengthList */, "initialize", []);
 
-  initialize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "initialize", [__arg_0]);
+  initialize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGLengthList */, "initialize", [__arg_0]);
 
-  insertItemBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", []);
+  insertItemBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGLengthList */, "insertItemBefore", []);
 
-  insertItemBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", [__arg_0]);
+  insertItemBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGLengthList */, "insertItemBefore", [__arg_0]);
 
-  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", [__arg_0, __arg_1]);
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGLengthList */, "insertItemBefore", [__arg_0, __arg_1]);
 
-  removeItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeItem", []);
+  removeItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGLengthList */, "removeItem", []);
 
-  removeItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeItem", [__arg_0]);
+  removeItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGLengthList */, "removeItem", [__arg_0]);
 
-  replaceItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", []);
+  replaceItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGLengthList */, "replaceItem", []);
 
-  replaceItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", [__arg_0]);
+  replaceItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGLengthList */, "replaceItem", [__arg_0]);
 
-  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", [__arg_0, __arg_1]);
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGLengthList */, "replaceItem", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSVGLineElement extends BlinkSVGGeometryElement {
   static final instance = new BlinkSVGLineElement();
 
-  x1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x1");
+  x1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGLineElement */, "x1");
 
-  x2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x2");
+  x2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGLineElement */, "x2");
 
-  y1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y1");
+  y1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGLineElement */, "y1");
 
-  y2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y2");
+  y2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGLineElement */, "y2");
 
 }
 
 class BlinkSVGLinearGradientElement extends BlinkSVGGradientElement {
   static final instance = new BlinkSVGLinearGradientElement();
 
-  x1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x1");
+  x1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGLinearGradientElement */, "x1");
 
-  x2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x2");
+  x2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGLinearGradientElement */, "x2");
 
-  y1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y1");
+  y1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGLinearGradientElement */, "y1");
 
-  y2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y2");
+  y2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGLinearGradientElement */, "y2");
 
 }
 
 class BlinkSVGMPathElement extends BlinkSVGElement {
   static final instance = new BlinkSVGMPathElement();
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGURIReference */, "href");
 
 }
 
 class BlinkSVGMarkerElement extends BlinkSVGElement {
   static final instance = new BlinkSVGMarkerElement();
 
-  markerHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "markerHeight");
+  markerHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMarkerElement */, "markerHeight");
 
-  markerUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "markerUnits");
+  markerUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMarkerElement */, "markerUnits");
 
-  markerWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "markerWidth");
+  markerWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMarkerElement */, "markerWidth");
 
-  orientAngle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "orientAngle");
+  orientAngle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMarkerElement */, "orientAngle");
 
-  orientType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "orientType");
+  orientType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMarkerElement */, "orientType");
 
-  refX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "refX");
+  refX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMarkerElement */, "refX");
 
-  refY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "refY");
+  refY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMarkerElement */, "refY");
 
-  setOrientToAngle_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setOrientToAngle", []);
+  setOrientToAngle_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGMarkerElement */, "setOrientToAngle", []);
 
-  setOrientToAngle_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setOrientToAngle", [__arg_0]);
+  setOrientToAngle_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGMarkerElement */, "setOrientToAngle", [__arg_0]);
 
-  setOrientToAuto_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setOrientToAuto", []);
+  setOrientToAuto_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGMarkerElement */, "setOrientToAuto", []);
 
-  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "preserveAspectRatio");
+  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFitToViewBox */, "preserveAspectRatio");
 
-  viewBox_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "viewBox");
+  viewBox_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFitToViewBox */, "viewBox");
 
 }
 
 class BlinkSVGMaskElement extends BlinkSVGElement {
   static final instance = new BlinkSVGMaskElement();
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMaskElement */, "height");
 
-  maskContentUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "maskContentUnits");
+  maskContentUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMaskElement */, "maskContentUnits");
 
-  maskUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "maskUnits");
+  maskUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMaskElement */, "maskUnits");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMaskElement */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMaskElement */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMaskElement */, "y");
 
-  requiredExtensions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "requiredExtensions");
+  requiredExtensions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "requiredExtensions");
 
-  requiredFeatures_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "requiredFeatures");
+  requiredFeatures_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "requiredFeatures");
 
-  systemLanguage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "systemLanguage");
+  systemLanguage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "systemLanguage");
 
-  hasExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "hasExtension", []);
+  hasExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTests */, "hasExtension", []);
 
-  hasExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "hasExtension", [__arg_0]);
+  hasExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTests */, "hasExtension", [__arg_0]);
 
 }
 
 class BlinkSVGMatrix {
   static final instance = new BlinkSVGMatrix();
 
-  a_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "a");
+  a_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMatrix */, "a");
 
-  a_Setter_(mthis, __arg_0) => mthis["a"] = __arg_0;
+  a_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGMatrix */, "a", __arg_0);
 
-  b_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "b");
+  b_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMatrix */, "b");
 
-  b_Setter_(mthis, __arg_0) => mthis["b"] = __arg_0;
+  b_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGMatrix */, "b", __arg_0);
 
-  c_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "c");
+  c_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMatrix */, "c");
 
-  c_Setter_(mthis, __arg_0) => mthis["c"] = __arg_0;
+  c_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGMatrix */, "c", __arg_0);
 
-  d_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "d");
+  d_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMatrix */, "d");
 
-  d_Setter_(mthis, __arg_0) => mthis["d"] = __arg_0;
+  d_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGMatrix */, "d", __arg_0);
 
-  e_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "e");
+  e_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMatrix */, "e");
 
-  e_Setter_(mthis, __arg_0) => mthis["e"] = __arg_0;
+  e_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGMatrix */, "e", __arg_0);
 
-  f_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "f");
+  f_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGMatrix */, "f");
 
-  f_Setter_(mthis, __arg_0) => mthis["f"] = __arg_0;
+  f_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGMatrix */, "f", __arg_0);
 
-  flipX_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "flipX", []);
+  flipX_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "flipX", []);
 
-  flipY_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "flipY", []);
+  flipY_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "flipY", []);
 
-  inverse_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "inverse", []);
+  inverse_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "inverse", []);
 
-  multiply_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "multiply", []);
+  multiply_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "multiply", []);
 
-  multiply_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "multiply", [__arg_0]);
+  multiply_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "multiply", [__arg_0]);
 
-  rotate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "rotate", []);
+  rotate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "rotate", []);
 
-  rotate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "rotate", [__arg_0]);
+  rotate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "rotate", [__arg_0]);
 
-  rotateFromVector_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "rotateFromVector", []);
+  rotateFromVector_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "rotateFromVector", []);
 
-  rotateFromVector_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "rotateFromVector", [__arg_0]);
+  rotateFromVector_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "rotateFromVector", [__arg_0]);
 
-  rotateFromVector_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "rotateFromVector", [__arg_0, __arg_1]);
+  rotateFromVector_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "rotateFromVector", [__arg_0, __arg_1]);
 
-  scale_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scale", []);
+  scale_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "scale", []);
 
-  scale_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scale", [__arg_0]);
+  scale_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "scale", [__arg_0]);
 
-  scaleNonUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniform", []);
+  scaleNonUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "scaleNonUniform", []);
 
-  scaleNonUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniform", [__arg_0]);
+  scaleNonUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "scaleNonUniform", [__arg_0]);
 
-  scaleNonUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scaleNonUniform", [__arg_0, __arg_1]);
+  scaleNonUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "scaleNonUniform", [__arg_0, __arg_1]);
 
-  skewX_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "skewX", []);
+  skewX_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "skewX", []);
 
-  skewX_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "skewX", [__arg_0]);
+  skewX_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "skewX", [__arg_0]);
 
-  skewY_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "skewY", []);
+  skewY_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "skewY", []);
 
-  skewY_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "skewY", [__arg_0]);
+  skewY_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "skewY", [__arg_0]);
 
-  translate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "translate", []);
+  translate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "translate", []);
 
-  translate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "translate", [__arg_0]);
+  translate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "translate", [__arg_0]);
 
-  translate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "translate", [__arg_0, __arg_1]);
+  translate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGMatrix */, "translate", [__arg_0, __arg_1]);
 
 }
 
@@ -14494,252 +14494,252 @@
 class BlinkSVGNumber {
   static final instance = new BlinkSVGNumber();
 
-  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "value");
+  value_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGNumber */, "value");
 
-  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
+  value_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGNumber */, "value", __arg_0);
 
 }
 
 class BlinkSVGNumberList {
   static final instance = new BlinkSVGNumberList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGNumberList */, "length");
 
-  numberOfItems_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "numberOfItems");
+  numberOfItems_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGNumberList */, "numberOfItems");
 
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "__setter__", [__arg_0, __arg_1]);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGNumberList */, "__setter__", [__arg_0, __arg_1]);
 
-  appendItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "appendItem", []);
+  appendItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGNumberList */, "appendItem", []);
 
-  appendItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "appendItem", [__arg_0]);
+  appendItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGNumberList */, "appendItem", [__arg_0]);
 
-  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clear", []);
+  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGNumberList */, "clear", []);
 
-  getItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getItem", []);
+  getItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGNumberList */, "getItem", []);
 
-  getItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getItem", [__arg_0]);
+  getItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGNumberList */, "getItem", [__arg_0]);
 
-  initialize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "initialize", []);
+  initialize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGNumberList */, "initialize", []);
 
-  initialize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "initialize", [__arg_0]);
+  initialize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGNumberList */, "initialize", [__arg_0]);
 
-  insertItemBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", []);
+  insertItemBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGNumberList */, "insertItemBefore", []);
 
-  insertItemBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", [__arg_0]);
+  insertItemBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGNumberList */, "insertItemBefore", [__arg_0]);
 
-  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", [__arg_0, __arg_1]);
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGNumberList */, "insertItemBefore", [__arg_0, __arg_1]);
 
-  removeItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeItem", []);
+  removeItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGNumberList */, "removeItem", []);
 
-  removeItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeItem", [__arg_0]);
+  removeItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGNumberList */, "removeItem", [__arg_0]);
 
-  replaceItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", []);
+  replaceItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGNumberList */, "replaceItem", []);
 
-  replaceItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", [__arg_0]);
+  replaceItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGNumberList */, "replaceItem", [__arg_0]);
 
-  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", [__arg_0, __arg_1]);
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGNumberList */, "replaceItem", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSVGPathElement extends BlinkSVGGeometryElement {
   static final instance = new BlinkSVGPathElement();
 
-  animatedNormalizedPathSegList_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animatedNormalizedPathSegList");
+  animatedNormalizedPathSegList_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathElement */, "animatedNormalizedPathSegList");
 
-  animatedPathSegList_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animatedPathSegList");
+  animatedPathSegList_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathElement */, "animatedPathSegList");
 
-  normalizedPathSegList_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "normalizedPathSegList");
+  normalizedPathSegList_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathElement */, "normalizedPathSegList");
 
-  pathLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pathLength");
+  pathLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathElement */, "pathLength");
 
-  pathSegList_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pathSegList");
+  pathSegList_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathElement */, "pathSegList");
 
-  createSVGPathSegArcAbs_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegArcAbs", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  createSVGPathSegArcAbs_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegArcAbs", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  createSVGPathSegArcAbs_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegArcAbs", [__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) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegArcAbs", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  createSVGPathSegArcAbs_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegArcAbs", [__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) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegArcAbs", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  createSVGPathSegArcRel_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegArcRel", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  createSVGPathSegArcRel_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegArcRel", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  createSVGPathSegArcRel_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegArcRel", [__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) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegArcRel", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  createSVGPathSegArcRel_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegArcRel", [__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) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegArcRel", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  createSVGPathSegClosePath_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegClosePath", []);
+  createSVGPathSegClosePath_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegClosePath", []);
 
-  createSVGPathSegCurvetoCubicAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoCubicAbs", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  createSVGPathSegCurvetoCubicAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoCubicAbs", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  createSVGPathSegCurvetoCubicAbs_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoCubicAbs", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  createSVGPathSegCurvetoCubicAbs_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoCubicAbs", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  createSVGPathSegCurvetoCubicAbs_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoCubicAbs", [__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) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoCubicAbs", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  createSVGPathSegCurvetoCubicRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoCubicRel", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  createSVGPathSegCurvetoCubicRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoCubicRel", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  createSVGPathSegCurvetoCubicRel_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoCubicRel", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  createSVGPathSegCurvetoCubicRel_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoCubicRel", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  createSVGPathSegCurvetoCubicRel_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoCubicRel", [__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) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoCubicRel", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  createSVGPathSegCurvetoCubicSmoothAbs_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoCubicSmoothAbs", [__arg_0, __arg_1]);
+  createSVGPathSegCurvetoCubicSmoothAbs_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoCubicSmoothAbs", [__arg_0, __arg_1]);
 
-  createSVGPathSegCurvetoCubicSmoothAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoCubicSmoothAbs", [__arg_0, __arg_1, __arg_2]);
+  createSVGPathSegCurvetoCubicSmoothAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoCubicSmoothAbs", [__arg_0, __arg_1, __arg_2]);
 
-  createSVGPathSegCurvetoCubicSmoothAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoCubicSmoothAbs", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  createSVGPathSegCurvetoCubicSmoothAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoCubicSmoothAbs", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  createSVGPathSegCurvetoCubicSmoothRel_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoCubicSmoothRel", [__arg_0, __arg_1]);
+  createSVGPathSegCurvetoCubicSmoothRel_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoCubicSmoothRel", [__arg_0, __arg_1]);
 
-  createSVGPathSegCurvetoCubicSmoothRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoCubicSmoothRel", [__arg_0, __arg_1, __arg_2]);
+  createSVGPathSegCurvetoCubicSmoothRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoCubicSmoothRel", [__arg_0, __arg_1, __arg_2]);
 
-  createSVGPathSegCurvetoCubicSmoothRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoCubicSmoothRel", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  createSVGPathSegCurvetoCubicSmoothRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoCubicSmoothRel", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  createSVGPathSegCurvetoQuadraticAbs_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoQuadraticAbs", [__arg_0, __arg_1]);
+  createSVGPathSegCurvetoQuadraticAbs_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoQuadraticAbs", [__arg_0, __arg_1]);
 
-  createSVGPathSegCurvetoQuadraticAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoQuadraticAbs", [__arg_0, __arg_1, __arg_2]);
+  createSVGPathSegCurvetoQuadraticAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoQuadraticAbs", [__arg_0, __arg_1, __arg_2]);
 
-  createSVGPathSegCurvetoQuadraticAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoQuadraticAbs", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  createSVGPathSegCurvetoQuadraticAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoQuadraticAbs", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  createSVGPathSegCurvetoQuadraticRel_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoQuadraticRel", [__arg_0, __arg_1]);
+  createSVGPathSegCurvetoQuadraticRel_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoQuadraticRel", [__arg_0, __arg_1]);
 
-  createSVGPathSegCurvetoQuadraticRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoQuadraticRel", [__arg_0, __arg_1, __arg_2]);
+  createSVGPathSegCurvetoQuadraticRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoQuadraticRel", [__arg_0, __arg_1, __arg_2]);
 
-  createSVGPathSegCurvetoQuadraticRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoQuadraticRel", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  createSVGPathSegCurvetoQuadraticRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoQuadraticRel", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoQuadraticSmoothAbs", []);
+  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoQuadraticSmoothAbs", []);
 
-  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoQuadraticSmoothAbs", [__arg_0]);
+  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoQuadraticSmoothAbs", [__arg_0]);
 
-  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoQuadraticSmoothAbs", [__arg_0, __arg_1]);
+  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoQuadraticSmoothAbs", [__arg_0, __arg_1]);
 
-  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoQuadraticSmoothRel", []);
+  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoQuadraticSmoothRel", []);
 
-  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoQuadraticSmoothRel", [__arg_0]);
+  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoQuadraticSmoothRel", [__arg_0]);
 
-  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegCurvetoQuadraticSmoothRel", [__arg_0, __arg_1]);
+  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegCurvetoQuadraticSmoothRel", [__arg_0, __arg_1]);
 
-  createSVGPathSegLinetoAbs_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegLinetoAbs", []);
+  createSVGPathSegLinetoAbs_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegLinetoAbs", []);
 
-  createSVGPathSegLinetoAbs_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegLinetoAbs", [__arg_0]);
+  createSVGPathSegLinetoAbs_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegLinetoAbs", [__arg_0]);
 
-  createSVGPathSegLinetoAbs_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegLinetoAbs", [__arg_0, __arg_1]);
+  createSVGPathSegLinetoAbs_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegLinetoAbs", [__arg_0, __arg_1]);
 
-  createSVGPathSegLinetoHorizontalAbs_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegLinetoHorizontalAbs", []);
+  createSVGPathSegLinetoHorizontalAbs_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegLinetoHorizontalAbs", []);
 
-  createSVGPathSegLinetoHorizontalAbs_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegLinetoHorizontalAbs", [__arg_0]);
+  createSVGPathSegLinetoHorizontalAbs_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegLinetoHorizontalAbs", [__arg_0]);
 
-  createSVGPathSegLinetoHorizontalRel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegLinetoHorizontalRel", []);
+  createSVGPathSegLinetoHorizontalRel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegLinetoHorizontalRel", []);
 
-  createSVGPathSegLinetoHorizontalRel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegLinetoHorizontalRel", [__arg_0]);
+  createSVGPathSegLinetoHorizontalRel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegLinetoHorizontalRel", [__arg_0]);
 
-  createSVGPathSegLinetoRel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegLinetoRel", []);
+  createSVGPathSegLinetoRel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegLinetoRel", []);
 
-  createSVGPathSegLinetoRel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegLinetoRel", [__arg_0]);
+  createSVGPathSegLinetoRel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegLinetoRel", [__arg_0]);
 
-  createSVGPathSegLinetoRel_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegLinetoRel", [__arg_0, __arg_1]);
+  createSVGPathSegLinetoRel_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegLinetoRel", [__arg_0, __arg_1]);
 
-  createSVGPathSegLinetoVerticalAbs_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegLinetoVerticalAbs", []);
+  createSVGPathSegLinetoVerticalAbs_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegLinetoVerticalAbs", []);
 
-  createSVGPathSegLinetoVerticalAbs_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegLinetoVerticalAbs", [__arg_0]);
+  createSVGPathSegLinetoVerticalAbs_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegLinetoVerticalAbs", [__arg_0]);
 
-  createSVGPathSegLinetoVerticalRel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegLinetoVerticalRel", []);
+  createSVGPathSegLinetoVerticalRel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegLinetoVerticalRel", []);
 
-  createSVGPathSegLinetoVerticalRel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegLinetoVerticalRel", [__arg_0]);
+  createSVGPathSegLinetoVerticalRel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegLinetoVerticalRel", [__arg_0]);
 
-  createSVGPathSegMovetoAbs_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegMovetoAbs", []);
+  createSVGPathSegMovetoAbs_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegMovetoAbs", []);
 
-  createSVGPathSegMovetoAbs_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegMovetoAbs", [__arg_0]);
+  createSVGPathSegMovetoAbs_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegMovetoAbs", [__arg_0]);
 
-  createSVGPathSegMovetoAbs_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegMovetoAbs", [__arg_0, __arg_1]);
+  createSVGPathSegMovetoAbs_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegMovetoAbs", [__arg_0, __arg_1]);
 
-  createSVGPathSegMovetoRel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegMovetoRel", []);
+  createSVGPathSegMovetoRel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegMovetoRel", []);
 
-  createSVGPathSegMovetoRel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegMovetoRel", [__arg_0]);
+  createSVGPathSegMovetoRel_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegMovetoRel", [__arg_0]);
 
-  createSVGPathSegMovetoRel_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPathSegMovetoRel", [__arg_0, __arg_1]);
+  createSVGPathSegMovetoRel_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "createSVGPathSegMovetoRel", [__arg_0, __arg_1]);
 
-  getPathSegAtLength_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getPathSegAtLength", []);
+  getPathSegAtLength_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "getPathSegAtLength", []);
 
-  getPathSegAtLength_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getPathSegAtLength", [__arg_0]);
+  getPathSegAtLength_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "getPathSegAtLength", [__arg_0]);
 
-  getPointAtLength_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getPointAtLength", []);
+  getPointAtLength_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "getPointAtLength", []);
 
-  getPointAtLength_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getPointAtLength", [__arg_0]);
+  getPointAtLength_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "getPointAtLength", [__arg_0]);
 
-  getTotalLength_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getTotalLength", []);
+  getTotalLength_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathElement */, "getTotalLength", []);
 
 }
 
 class BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSeg();
 
-  pathSegType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pathSegType");
+  pathSegType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSeg */, "pathSegType");
 
-  pathSegTypeAsLetter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pathSegTypeAsLetter");
+  pathSegTypeAsLetter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSeg */, "pathSegTypeAsLetter");
 
 }
 
 class BlinkSVGPathSegArcAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegArcAbs();
 
-  angle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "angle");
+  angle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegArcAbs */, "angle");
 
-  angle_Setter_(mthis, __arg_0) => mthis["angle"] = __arg_0;
+  angle_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegArcAbs */, "angle", __arg_0);
 
-  largeArcFlag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "largeArcFlag");
+  largeArcFlag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegArcAbs */, "largeArcFlag");
 
-  largeArcFlag_Setter_(mthis, __arg_0) => mthis["largeArcFlag"] = __arg_0;
+  largeArcFlag_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegArcAbs */, "largeArcFlag", __arg_0);
 
-  r1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "r1");
+  r1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegArcAbs */, "r1");
 
-  r1_Setter_(mthis, __arg_0) => mthis["r1"] = __arg_0;
+  r1_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegArcAbs */, "r1", __arg_0);
 
-  r2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "r2");
+  r2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegArcAbs */, "r2");
 
-  r2_Setter_(mthis, __arg_0) => mthis["r2"] = __arg_0;
+  r2_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegArcAbs */, "r2", __arg_0);
 
-  sweepFlag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sweepFlag");
+  sweepFlag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegArcAbs */, "sweepFlag");
 
-  sweepFlag_Setter_(mthis, __arg_0) => mthis["sweepFlag"] = __arg_0;
+  sweepFlag_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegArcAbs */, "sweepFlag", __arg_0);
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegArcAbs */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegArcAbs */, "x", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegArcAbs */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegArcAbs */, "y", __arg_0);
 
 }
 
 class BlinkSVGPathSegArcRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegArcRel();
 
-  angle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "angle");
+  angle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegArcRel */, "angle");
 
-  angle_Setter_(mthis, __arg_0) => mthis["angle"] = __arg_0;
+  angle_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegArcRel */, "angle", __arg_0);
 
-  largeArcFlag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "largeArcFlag");
+  largeArcFlag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegArcRel */, "largeArcFlag");
 
-  largeArcFlag_Setter_(mthis, __arg_0) => mthis["largeArcFlag"] = __arg_0;
+  largeArcFlag_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegArcRel */, "largeArcFlag", __arg_0);
 
-  r1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "r1");
+  r1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegArcRel */, "r1");
 
-  r1_Setter_(mthis, __arg_0) => mthis["r1"] = __arg_0;
+  r1_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegArcRel */, "r1", __arg_0);
 
-  r2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "r2");
+  r2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegArcRel */, "r2");
 
-  r2_Setter_(mthis, __arg_0) => mthis["r2"] = __arg_0;
+  r2_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegArcRel */, "r2", __arg_0);
 
-  sweepFlag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sweepFlag");
+  sweepFlag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegArcRel */, "sweepFlag");
 
-  sweepFlag_Setter_(mthis, __arg_0) => mthis["sweepFlag"] = __arg_0;
+  sweepFlag_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegArcRel */, "sweepFlag", __arg_0);
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegArcRel */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegArcRel */, "x", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegArcRel */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegArcRel */, "y", __arg_0);
 
 }
 
@@ -14751,600 +14751,600 @@
 class BlinkSVGPathSegCurvetoCubicAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegCurvetoCubicAbs();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicAbs */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicAbs */, "x", __arg_0);
 
-  x1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x1");
+  x1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicAbs */, "x1");
 
-  x1_Setter_(mthis, __arg_0) => mthis["x1"] = __arg_0;
+  x1_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicAbs */, "x1", __arg_0);
 
-  x2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x2");
+  x2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicAbs */, "x2");
 
-  x2_Setter_(mthis, __arg_0) => mthis["x2"] = __arg_0;
+  x2_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicAbs */, "x2", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicAbs */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicAbs */, "y", __arg_0);
 
-  y1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y1");
+  y1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicAbs */, "y1");
 
-  y1_Setter_(mthis, __arg_0) => mthis["y1"] = __arg_0;
+  y1_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicAbs */, "y1", __arg_0);
 
-  y2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y2");
+  y2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicAbs */, "y2");
 
-  y2_Setter_(mthis, __arg_0) => mthis["y2"] = __arg_0;
+  y2_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicAbs */, "y2", __arg_0);
 
 }
 
 class BlinkSVGPathSegCurvetoCubicRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegCurvetoCubicRel();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicRel */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicRel */, "x", __arg_0);
 
-  x1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x1");
+  x1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicRel */, "x1");
 
-  x1_Setter_(mthis, __arg_0) => mthis["x1"] = __arg_0;
+  x1_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicRel */, "x1", __arg_0);
 
-  x2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x2");
+  x2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicRel */, "x2");
 
-  x2_Setter_(mthis, __arg_0) => mthis["x2"] = __arg_0;
+  x2_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicRel */, "x2", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicRel */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicRel */, "y", __arg_0);
 
-  y1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y1");
+  y1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicRel */, "y1");
 
-  y1_Setter_(mthis, __arg_0) => mthis["y1"] = __arg_0;
+  y1_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicRel */, "y1", __arg_0);
 
-  y2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y2");
+  y2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicRel */, "y2");
 
-  y2_Setter_(mthis, __arg_0) => mthis["y2"] = __arg_0;
+  y2_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicRel */, "y2", __arg_0);
 
 }
 
 class BlinkSVGPathSegCurvetoCubicSmoothAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegCurvetoCubicSmoothAbs();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicSmoothAbs */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicSmoothAbs */, "x", __arg_0);
 
-  x2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x2");
+  x2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicSmoothAbs */, "x2");
 
-  x2_Setter_(mthis, __arg_0) => mthis["x2"] = __arg_0;
+  x2_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicSmoothAbs */, "x2", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicSmoothAbs */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicSmoothAbs */, "y", __arg_0);
 
-  y2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y2");
+  y2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicSmoothAbs */, "y2");
 
-  y2_Setter_(mthis, __arg_0) => mthis["y2"] = __arg_0;
+  y2_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicSmoothAbs */, "y2", __arg_0);
 
 }
 
 class BlinkSVGPathSegCurvetoCubicSmoothRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegCurvetoCubicSmoothRel();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicSmoothRel */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicSmoothRel */, "x", __arg_0);
 
-  x2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x2");
+  x2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicSmoothRel */, "x2");
 
-  x2_Setter_(mthis, __arg_0) => mthis["x2"] = __arg_0;
+  x2_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicSmoothRel */, "x2", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicSmoothRel */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicSmoothRel */, "y", __arg_0);
 
-  y2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y2");
+  y2_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoCubicSmoothRel */, "y2");
 
-  y2_Setter_(mthis, __arg_0) => mthis["y2"] = __arg_0;
+  y2_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoCubicSmoothRel */, "y2", __arg_0);
 
 }
 
 class BlinkSVGPathSegCurvetoQuadraticAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegCurvetoQuadraticAbs();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoQuadraticAbs */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoQuadraticAbs */, "x", __arg_0);
 
-  x1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x1");
+  x1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoQuadraticAbs */, "x1");
 
-  x1_Setter_(mthis, __arg_0) => mthis["x1"] = __arg_0;
+  x1_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoQuadraticAbs */, "x1", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoQuadraticAbs */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoQuadraticAbs */, "y", __arg_0);
 
-  y1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y1");
+  y1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoQuadraticAbs */, "y1");
 
-  y1_Setter_(mthis, __arg_0) => mthis["y1"] = __arg_0;
+  y1_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoQuadraticAbs */, "y1", __arg_0);
 
 }
 
 class BlinkSVGPathSegCurvetoQuadraticRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegCurvetoQuadraticRel();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoQuadraticRel */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoQuadraticRel */, "x", __arg_0);
 
-  x1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x1");
+  x1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoQuadraticRel */, "x1");
 
-  x1_Setter_(mthis, __arg_0) => mthis["x1"] = __arg_0;
+  x1_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoQuadraticRel */, "x1", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoQuadraticRel */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoQuadraticRel */, "y", __arg_0);
 
-  y1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y1");
+  y1_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoQuadraticRel */, "y1");
 
-  y1_Setter_(mthis, __arg_0) => mthis["y1"] = __arg_0;
+  y1_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoQuadraticRel */, "y1", __arg_0);
 
 }
 
 class BlinkSVGPathSegCurvetoQuadraticSmoothAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegCurvetoQuadraticSmoothAbs();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoQuadraticSmoothAbs */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoQuadraticSmoothAbs */, "x", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoQuadraticSmoothAbs */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoQuadraticSmoothAbs */, "y", __arg_0);
 
 }
 
 class BlinkSVGPathSegCurvetoQuadraticSmoothRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegCurvetoQuadraticSmoothRel();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoQuadraticSmoothRel */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoQuadraticSmoothRel */, "x", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegCurvetoQuadraticSmoothRel */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegCurvetoQuadraticSmoothRel */, "y", __arg_0);
 
 }
 
 class BlinkSVGPathSegLinetoAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegLinetoAbs();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegLinetoAbs */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegLinetoAbs */, "x", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegLinetoAbs */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegLinetoAbs */, "y", __arg_0);
 
 }
 
 class BlinkSVGPathSegLinetoHorizontalAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegLinetoHorizontalAbs();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegLinetoHorizontalAbs */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegLinetoHorizontalAbs */, "x", __arg_0);
 
 }
 
 class BlinkSVGPathSegLinetoHorizontalRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegLinetoHorizontalRel();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegLinetoHorizontalRel */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegLinetoHorizontalRel */, "x", __arg_0);
 
 }
 
 class BlinkSVGPathSegLinetoRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegLinetoRel();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegLinetoRel */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegLinetoRel */, "x", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegLinetoRel */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegLinetoRel */, "y", __arg_0);
 
 }
 
 class BlinkSVGPathSegLinetoVerticalAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegLinetoVerticalAbs();
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegLinetoVerticalAbs */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegLinetoVerticalAbs */, "y", __arg_0);
 
 }
 
 class BlinkSVGPathSegLinetoVerticalRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegLinetoVerticalRel();
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegLinetoVerticalRel */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegLinetoVerticalRel */, "y", __arg_0);
 
 }
 
 class BlinkSVGPathSegList {
   static final instance = new BlinkSVGPathSegList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegList */, "length");
 
-  numberOfItems_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "numberOfItems");
+  numberOfItems_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegList */, "numberOfItems");
 
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "__setter__", [__arg_0, __arg_1]);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathSegList */, "__setter__", [__arg_0, __arg_1]);
 
-  appendItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "appendItem", []);
+  appendItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathSegList */, "appendItem", []);
 
-  appendItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "appendItem", [__arg_0]);
+  appendItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathSegList */, "appendItem", [__arg_0]);
 
-  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clear", []);
+  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathSegList */, "clear", []);
 
-  getItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getItem", []);
+  getItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathSegList */, "getItem", []);
 
-  getItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getItem", [__arg_0]);
+  getItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathSegList */, "getItem", [__arg_0]);
 
-  initialize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "initialize", []);
+  initialize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathSegList */, "initialize", []);
 
-  initialize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "initialize", [__arg_0]);
+  initialize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathSegList */, "initialize", [__arg_0]);
 
-  insertItemBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", []);
+  insertItemBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathSegList */, "insertItemBefore", []);
 
-  insertItemBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", [__arg_0]);
+  insertItemBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathSegList */, "insertItemBefore", [__arg_0]);
 
-  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", [__arg_0, __arg_1]);
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathSegList */, "insertItemBefore", [__arg_0, __arg_1]);
 
-  removeItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeItem", []);
+  removeItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathSegList */, "removeItem", []);
 
-  removeItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeItem", [__arg_0]);
+  removeItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathSegList */, "removeItem", [__arg_0]);
 
-  replaceItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", []);
+  replaceItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathSegList */, "replaceItem", []);
 
-  replaceItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", [__arg_0]);
+  replaceItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathSegList */, "replaceItem", [__arg_0]);
 
-  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", [__arg_0, __arg_1]);
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGPathSegList */, "replaceItem", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSVGPathSegMovetoAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegMovetoAbs();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegMovetoAbs */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegMovetoAbs */, "x", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegMovetoAbs */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegMovetoAbs */, "y", __arg_0);
 
 }
 
 class BlinkSVGPathSegMovetoRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegMovetoRel();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegMovetoRel */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegMovetoRel */, "x", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPathSegMovetoRel */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPathSegMovetoRel */, "y", __arg_0);
 
 }
 
 class BlinkSVGPatternElement extends BlinkSVGElement {
   static final instance = new BlinkSVGPatternElement();
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPatternElement */, "height");
 
-  patternContentUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "patternContentUnits");
+  patternContentUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPatternElement */, "patternContentUnits");
 
-  patternTransform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "patternTransform");
+  patternTransform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPatternElement */, "patternTransform");
 
-  patternUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "patternUnits");
+  patternUnits_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPatternElement */, "patternUnits");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPatternElement */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPatternElement */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPatternElement */, "y");
 
-  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "preserveAspectRatio");
+  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFitToViewBox */, "preserveAspectRatio");
 
-  viewBox_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "viewBox");
+  viewBox_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFitToViewBox */, "viewBox");
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGURIReference */, "href");
 
-  requiredExtensions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "requiredExtensions");
+  requiredExtensions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "requiredExtensions");
 
-  requiredFeatures_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "requiredFeatures");
+  requiredFeatures_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "requiredFeatures");
 
-  systemLanguage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "systemLanguage");
+  systemLanguage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "systemLanguage");
 
-  hasExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "hasExtension", []);
+  hasExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTests */, "hasExtension", []);
 
-  hasExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "hasExtension", [__arg_0]);
+  hasExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTests */, "hasExtension", [__arg_0]);
 
 }
 
 class BlinkSVGPoint {
   static final instance = new BlinkSVGPoint();
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPoint */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPoint */, "x", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPoint */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPoint */, "y", __arg_0);
 
-  matrixTransform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "matrixTransform", []);
+  matrixTransform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPoint */, "matrixTransform", []);
 
-  matrixTransform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "matrixTransform", [__arg_0]);
+  matrixTransform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPoint */, "matrixTransform", [__arg_0]);
 
 }
 
 class BlinkSVGPointList {
   static final instance = new BlinkSVGPointList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPointList */, "length");
 
-  numberOfItems_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "numberOfItems");
+  numberOfItems_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPointList */, "numberOfItems");
 
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "__setter__", [__arg_0, __arg_1]);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGPointList */, "__setter__", [__arg_0, __arg_1]);
 
-  appendItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "appendItem", []);
+  appendItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPointList */, "appendItem", []);
 
-  appendItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "appendItem", [__arg_0]);
+  appendItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPointList */, "appendItem", [__arg_0]);
 
-  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clear", []);
+  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPointList */, "clear", []);
 
-  getItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getItem", []);
+  getItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPointList */, "getItem", []);
 
-  getItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getItem", [__arg_0]);
+  getItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPointList */, "getItem", [__arg_0]);
 
-  initialize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "initialize", []);
+  initialize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPointList */, "initialize", []);
 
-  initialize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "initialize", [__arg_0]);
+  initialize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPointList */, "initialize", [__arg_0]);
 
-  insertItemBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", []);
+  insertItemBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPointList */, "insertItemBefore", []);
 
-  insertItemBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", [__arg_0]);
+  insertItemBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPointList */, "insertItemBefore", [__arg_0]);
 
-  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", [__arg_0, __arg_1]);
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGPointList */, "insertItemBefore", [__arg_0, __arg_1]);
 
-  removeItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeItem", []);
+  removeItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPointList */, "removeItem", []);
 
-  removeItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeItem", [__arg_0]);
+  removeItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPointList */, "removeItem", [__arg_0]);
 
-  replaceItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", []);
+  replaceItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGPointList */, "replaceItem", []);
 
-  replaceItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", [__arg_0]);
+  replaceItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGPointList */, "replaceItem", [__arg_0]);
 
-  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", [__arg_0, __arg_1]);
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGPointList */, "replaceItem", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSVGPolygonElement extends BlinkSVGGeometryElement {
   static final instance = new BlinkSVGPolygonElement();
 
-  animatedPoints_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animatedPoints");
+  animatedPoints_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPolygonElement */, "animatedPoints");
 
-  points_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "points");
+  points_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPolygonElement */, "points");
 
 }
 
 class BlinkSVGPolylineElement extends BlinkSVGGeometryElement {
   static final instance = new BlinkSVGPolylineElement();
 
-  animatedPoints_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "animatedPoints");
+  animatedPoints_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPolylineElement */, "animatedPoints");
 
-  points_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "points");
+  points_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPolylineElement */, "points");
 
 }
 
 class BlinkSVGPreserveAspectRatio {
   static final instance = new BlinkSVGPreserveAspectRatio();
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPreserveAspectRatio */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPreserveAspectRatio */, "align", __arg_0);
 
-  meetOrSlice_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "meetOrSlice");
+  meetOrSlice_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGPreserveAspectRatio */, "meetOrSlice");
 
-  meetOrSlice_Setter_(mthis, __arg_0) => mthis["meetOrSlice"] = __arg_0;
+  meetOrSlice_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGPreserveAspectRatio */, "meetOrSlice", __arg_0);
 
 }
 
 class BlinkSVGRadialGradientElement extends BlinkSVGGradientElement {
   static final instance = new BlinkSVGRadialGradientElement();
 
-  cx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cx");
+  cx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGRadialGradientElement */, "cx");
 
-  cy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cy");
+  cy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGRadialGradientElement */, "cy");
 
-  fr_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fr");
+  fr_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGRadialGradientElement */, "fr");
 
-  fx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fx");
+  fx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGRadialGradientElement */, "fx");
 
-  fy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fy");
+  fy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGRadialGradientElement */, "fy");
 
-  r_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "r");
+  r_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGRadialGradientElement */, "r");
 
 }
 
 class BlinkSVGRect {
   static final instance = new BlinkSVGRect();
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGRect */, "height");
 
-  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
+  height_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGRect */, "height", __arg_0);
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGRect */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGRect */, "width", __arg_0);
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGRect */, "x");
 
-  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
+  x_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGRect */, "x", __arg_0);
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGRect */, "y");
 
-  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
+  y_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGRect */, "y", __arg_0);
 
 }
 
 class BlinkSVGRectElement extends BlinkSVGGeometryElement {
   static final instance = new BlinkSVGRectElement();
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGRectElement */, "height");
 
-  rx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rx");
+  rx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGRectElement */, "rx");
 
-  ry_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ry");
+  ry_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGRectElement */, "ry");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGRectElement */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGRectElement */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGRectElement */, "y");
 
 }
 
 class BlinkSVGSVGElement extends BlinkSVGGraphicsElement {
   static final instance = new BlinkSVGSVGElement();
 
-  currentScale_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "currentScale");
+  currentScale_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGSVGElement */, "currentScale");
 
-  currentScale_Setter_(mthis, __arg_0) => mthis["currentScale"] = __arg_0;
+  currentScale_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGSVGElement */, "currentScale", __arg_0);
 
-  currentTranslate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "currentTranslate");
+  currentTranslate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGSVGElement */, "currentTranslate");
 
-  currentView_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "currentView");
+  currentView_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGSVGElement */, "currentView");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGSVGElement */, "height");
 
-  pixelUnitToMillimeterX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pixelUnitToMillimeterX");
+  pixelUnitToMillimeterX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGSVGElement */, "pixelUnitToMillimeterX");
 
-  pixelUnitToMillimeterY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pixelUnitToMillimeterY");
+  pixelUnitToMillimeterY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGSVGElement */, "pixelUnitToMillimeterY");
 
-  screenPixelToMillimeterX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "screenPixelToMillimeterX");
+  screenPixelToMillimeterX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGSVGElement */, "screenPixelToMillimeterX");
 
-  screenPixelToMillimeterY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "screenPixelToMillimeterY");
+  screenPixelToMillimeterY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGSVGElement */, "screenPixelToMillimeterY");
 
-  useCurrentView_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "useCurrentView");
+  useCurrentView_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGSVGElement */, "useCurrentView");
 
-  viewport_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "viewport");
+  viewport_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGSVGElement */, "viewport");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGSVGElement */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGSVGElement */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGSVGElement */, "y");
 
-  animationsPaused_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "animationsPaused", []);
+  animationsPaused_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "animationsPaused", []);
 
-  checkEnclosure_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "checkEnclosure", []);
+  checkEnclosure_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "checkEnclosure", []);
 
-  checkEnclosure_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "checkEnclosure", [__arg_0]);
+  checkEnclosure_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "checkEnclosure", [__arg_0]);
 
-  checkEnclosure_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "checkEnclosure", [__arg_0, __arg_1]);
+  checkEnclosure_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "checkEnclosure", [__arg_0, __arg_1]);
 
-  checkIntersection_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "checkIntersection", []);
+  checkIntersection_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "checkIntersection", []);
 
-  checkIntersection_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "checkIntersection", [__arg_0]);
+  checkIntersection_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "checkIntersection", [__arg_0]);
 
-  checkIntersection_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "checkIntersection", [__arg_0, __arg_1]);
+  checkIntersection_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "checkIntersection", [__arg_0, __arg_1]);
 
-  createSVGAngle_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGAngle", []);
+  createSVGAngle_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "createSVGAngle", []);
 
-  createSVGLength_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGLength", []);
+  createSVGLength_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "createSVGLength", []);
 
-  createSVGMatrix_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGMatrix", []);
+  createSVGMatrix_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "createSVGMatrix", []);
 
-  createSVGNumber_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGNumber", []);
+  createSVGNumber_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "createSVGNumber", []);
 
-  createSVGPoint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGPoint", []);
+  createSVGPoint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "createSVGPoint", []);
 
-  createSVGRect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGRect", []);
+  createSVGRect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "createSVGRect", []);
 
-  createSVGTransform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGTransform", []);
+  createSVGTransform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "createSVGTransform", []);
 
-  createSVGTransformFromMatrix_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGTransformFromMatrix", []);
+  createSVGTransformFromMatrix_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "createSVGTransformFromMatrix", []);
 
-  createSVGTransformFromMatrix_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createSVGTransformFromMatrix", [__arg_0]);
+  createSVGTransformFromMatrix_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "createSVGTransformFromMatrix", [__arg_0]);
 
-  deselectAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deselectAll", []);
+  deselectAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "deselectAll", []);
 
-  forceRedraw_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "forceRedraw", []);
+  forceRedraw_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "forceRedraw", []);
 
-  getCurrentTime_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getCurrentTime", []);
+  getCurrentTime_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "getCurrentTime", []);
 
-  getElementById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getElementById", []);
+  getElementById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "getElementById", []);
 
-  getElementById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getElementById", [__arg_0]);
+  getElementById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "getElementById", [__arg_0]);
 
-  getEnclosureList_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getEnclosureList", []);
+  getEnclosureList_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "getEnclosureList", []);
 
-  getEnclosureList_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getEnclosureList", [__arg_0]);
+  getEnclosureList_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "getEnclosureList", [__arg_0]);
 
-  getEnclosureList_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getEnclosureList", [__arg_0, __arg_1]);
+  getEnclosureList_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "getEnclosureList", [__arg_0, __arg_1]);
 
-  getIntersectionList_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getIntersectionList", []);
+  getIntersectionList_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "getIntersectionList", []);
 
-  getIntersectionList_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getIntersectionList", [__arg_0]);
+  getIntersectionList_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "getIntersectionList", [__arg_0]);
 
-  getIntersectionList_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getIntersectionList", [__arg_0, __arg_1]);
+  getIntersectionList_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "getIntersectionList", [__arg_0, __arg_1]);
 
-  pauseAnimations_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "pauseAnimations", []);
+  pauseAnimations_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "pauseAnimations", []);
 
-  setCurrentTime_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setCurrentTime", []);
+  setCurrentTime_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "setCurrentTime", []);
 
-  setCurrentTime_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setCurrentTime", [__arg_0]);
+  setCurrentTime_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "setCurrentTime", [__arg_0]);
 
-  suspendRedraw_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "suspendRedraw", []);
+  suspendRedraw_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "suspendRedraw", []);
 
-  suspendRedraw_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "suspendRedraw", [__arg_0]);
+  suspendRedraw_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "suspendRedraw", [__arg_0]);
 
-  unpauseAnimations_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "unpauseAnimations", []);
+  unpauseAnimations_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "unpauseAnimations", []);
 
-  unsuspendRedraw_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "unsuspendRedraw", []);
+  unsuspendRedraw_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "unsuspendRedraw", []);
 
-  unsuspendRedraw_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "unsuspendRedraw", [__arg_0]);
+  unsuspendRedraw_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "unsuspendRedraw", [__arg_0]);
 
-  unsuspendRedrawAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "unsuspendRedrawAll", []);
+  unsuspendRedrawAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGSVGElement */, "unsuspendRedrawAll", []);
 
-  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "preserveAspectRatio");
+  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFitToViewBox */, "preserveAspectRatio");
 
-  viewBox_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "viewBox");
+  viewBox_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFitToViewBox */, "viewBox");
 
-  zoomAndPan_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "zoomAndPan");
+  zoomAndPan_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGZoomAndPan */, "zoomAndPan");
 
-  zoomAndPan_Setter_(mthis, __arg_0) => mthis["zoomAndPan"] = __arg_0;
+  zoomAndPan_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGZoomAndPan */, "zoomAndPan", __arg_0);
 
 }
 
 class BlinkSVGScriptElement extends BlinkSVGElement {
   static final instance = new BlinkSVGScriptElement();
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGScriptElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGScriptElement */, "type", __arg_0);
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGURIReference */, "href");
 
 }
 
@@ -15356,71 +15356,71 @@
 class BlinkSVGStopElement extends BlinkSVGElement {
   static final instance = new BlinkSVGStopElement();
 
-  offset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "offset");
+  offset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGStopElement */, "offset");
 
 }
 
 class BlinkSVGStringList {
   static final instance = new BlinkSVGStringList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGStringList */, "length");
 
-  numberOfItems_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "numberOfItems");
+  numberOfItems_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGStringList */, "numberOfItems");
 
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "__setter__", [__arg_0, __arg_1]);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGStringList */, "__setter__", [__arg_0, __arg_1]);
 
-  appendItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "appendItem", []);
+  appendItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGStringList */, "appendItem", []);
 
-  appendItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "appendItem", [__arg_0]);
+  appendItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGStringList */, "appendItem", [__arg_0]);
 
-  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clear", []);
+  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGStringList */, "clear", []);
 
-  getItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getItem", []);
+  getItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGStringList */, "getItem", []);
 
-  getItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getItem", [__arg_0]);
+  getItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGStringList */, "getItem", [__arg_0]);
 
-  initialize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "initialize", []);
+  initialize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGStringList */, "initialize", []);
 
-  initialize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "initialize", [__arg_0]);
+  initialize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGStringList */, "initialize", [__arg_0]);
 
-  insertItemBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", []);
+  insertItemBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGStringList */, "insertItemBefore", []);
 
-  insertItemBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", [__arg_0]);
+  insertItemBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGStringList */, "insertItemBefore", [__arg_0]);
 
-  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", [__arg_0, __arg_1]);
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGStringList */, "insertItemBefore", [__arg_0, __arg_1]);
 
-  removeItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeItem", []);
+  removeItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGStringList */, "removeItem", []);
 
-  removeItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeItem", [__arg_0]);
+  removeItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGStringList */, "removeItem", [__arg_0]);
 
-  replaceItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", []);
+  replaceItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGStringList */, "replaceItem", []);
 
-  replaceItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", [__arg_0]);
+  replaceItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGStringList */, "replaceItem", [__arg_0]);
 
-  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", [__arg_0, __arg_1]);
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGStringList */, "replaceItem", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSVGStyleElement extends BlinkSVGElement {
   static final instance = new BlinkSVGStyleElement();
 
-  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "disabled");
+  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGStyleElement */, "disabled");
 
-  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
+  disabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGStyleElement */, "disabled", __arg_0);
 
-  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "media");
+  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGStyleElement */, "media");
 
-  media_Setter_(mthis, __arg_0) => mthis["media"] = __arg_0;
+  media_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGStyleElement */, "media", __arg_0);
 
-  sheet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sheet");
+  sheet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGStyleElement */, "sheet");
 
-  title_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "title");
+  title_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGStyleElement */, "title");
 
-  title_Setter_(mthis, __arg_0) => mthis["title"] = __arg_0;
+  title_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGStyleElement */, "title", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGStyleElement */, "type");
 
-  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
+  type_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGStyleElement */, "type", __arg_0);
 
 }
 
@@ -15432,9 +15432,9 @@
 class BlinkSVGSymbolElement extends BlinkSVGElement {
   static final instance = new BlinkSVGSymbolElement();
 
-  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "preserveAspectRatio");
+  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFitToViewBox */, "preserveAspectRatio");
 
-  viewBox_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "viewBox");
+  viewBox_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFitToViewBox */, "viewBox");
 
 }
 
@@ -15446,60 +15446,60 @@
 class BlinkSVGTests {
   static final instance = new BlinkSVGTests();
 
-  requiredExtensions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "requiredExtensions");
+  requiredExtensions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "requiredExtensions");
 
-  requiredFeatures_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "requiredFeatures");
+  requiredFeatures_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "requiredFeatures");
 
-  systemLanguage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "systemLanguage");
+  systemLanguage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTests */, "systemLanguage");
 
-  hasExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "hasExtension", []);
+  hasExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTests */, "hasExtension", []);
 
-  hasExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "hasExtension", [__arg_0]);
+  hasExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTests */, "hasExtension", [__arg_0]);
 
 }
 
 class BlinkSVGTextContentElement extends BlinkSVGGraphicsElement {
   static final instance = new BlinkSVGTextContentElement();
 
-  lengthAdjust_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lengthAdjust");
+  lengthAdjust_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTextContentElement */, "lengthAdjust");
 
-  textLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "textLength");
+  textLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTextContentElement */, "textLength");
 
-  getCharNumAtPosition_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getCharNumAtPosition", []);
+  getCharNumAtPosition_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "getCharNumAtPosition", []);
 
-  getCharNumAtPosition_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getCharNumAtPosition", [__arg_0]);
+  getCharNumAtPosition_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "getCharNumAtPosition", [__arg_0]);
 
-  getComputedTextLength_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getComputedTextLength", []);
+  getComputedTextLength_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "getComputedTextLength", []);
 
-  getEndPositionOfChar_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getEndPositionOfChar", []);
+  getEndPositionOfChar_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "getEndPositionOfChar", []);
 
-  getEndPositionOfChar_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getEndPositionOfChar", [__arg_0]);
+  getEndPositionOfChar_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "getEndPositionOfChar", [__arg_0]);
 
-  getExtentOfChar_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getExtentOfChar", []);
+  getExtentOfChar_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "getExtentOfChar", []);
 
-  getExtentOfChar_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getExtentOfChar", [__arg_0]);
+  getExtentOfChar_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "getExtentOfChar", [__arg_0]);
 
-  getNumberOfChars_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getNumberOfChars", []);
+  getNumberOfChars_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "getNumberOfChars", []);
 
-  getRotationOfChar_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getRotationOfChar", []);
+  getRotationOfChar_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "getRotationOfChar", []);
 
-  getRotationOfChar_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getRotationOfChar", [__arg_0]);
+  getRotationOfChar_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "getRotationOfChar", [__arg_0]);
 
-  getStartPositionOfChar_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getStartPositionOfChar", []);
+  getStartPositionOfChar_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "getStartPositionOfChar", []);
 
-  getStartPositionOfChar_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getStartPositionOfChar", [__arg_0]);
+  getStartPositionOfChar_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "getStartPositionOfChar", [__arg_0]);
 
-  getSubStringLength_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSubStringLength", []);
+  getSubStringLength_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "getSubStringLength", []);
 
-  getSubStringLength_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getSubStringLength", [__arg_0]);
+  getSubStringLength_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "getSubStringLength", [__arg_0]);
 
-  getSubStringLength_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getSubStringLength", [__arg_0, __arg_1]);
+  getSubStringLength_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "getSubStringLength", [__arg_0, __arg_1]);
 
-  selectSubString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "selectSubString", []);
+  selectSubString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "selectSubString", []);
 
-  selectSubString_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "selectSubString", [__arg_0]);
+  selectSubString_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "selectSubString", [__arg_0]);
 
-  selectSubString_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "selectSubString", [__arg_0, __arg_1]);
+  selectSubString_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGTextContentElement */, "selectSubString", [__arg_0, __arg_1]);
 
 }
 
@@ -15511,28 +15511,28 @@
 class BlinkSVGTextPathElement extends BlinkSVGTextContentElement {
   static final instance = new BlinkSVGTextPathElement();
 
-  method_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "method");
+  method_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTextPathElement */, "method");
 
-  spacing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "spacing");
+  spacing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTextPathElement */, "spacing");
 
-  startOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "startOffset");
+  startOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTextPathElement */, "startOffset");
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGURIReference */, "href");
 
 }
 
 class BlinkSVGTextPositioningElement extends BlinkSVGTextContentElement {
   static final instance = new BlinkSVGTextPositioningElement();
 
-  dx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dx");
+  dx_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTextPositioningElement */, "dx");
 
-  dy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dy");
+  dy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTextPositioningElement */, "dy");
 
-  rotate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rotate");
+  rotate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTextPositioningElement */, "rotate");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTextPositioningElement */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTextPositioningElement */, "y");
 
 }
 
@@ -15544,95 +15544,95 @@
 class BlinkSVGTransform {
   static final instance = new BlinkSVGTransform();
 
-  angle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "angle");
+  angle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTransform */, "angle");
 
-  matrix_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "matrix");
+  matrix_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTransform */, "matrix");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTransform */, "type");
 
-  setMatrix_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setMatrix", []);
+  setMatrix_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransform */, "setMatrix", []);
 
-  setMatrix_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setMatrix", [__arg_0]);
+  setMatrix_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransform */, "setMatrix", [__arg_0]);
 
-  setRotate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setRotate", [__arg_0]);
+  setRotate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransform */, "setRotate", [__arg_0]);
 
-  setRotate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setRotate", [__arg_0, __arg_1]);
+  setRotate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransform */, "setRotate", [__arg_0, __arg_1]);
 
-  setRotate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setRotate", [__arg_0, __arg_1, __arg_2]);
+  setRotate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransform */, "setRotate", [__arg_0, __arg_1, __arg_2]);
 
-  setScale_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setScale", []);
+  setScale_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransform */, "setScale", []);
 
-  setScale_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setScale", [__arg_0]);
+  setScale_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransform */, "setScale", [__arg_0]);
 
-  setScale_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setScale", [__arg_0, __arg_1]);
+  setScale_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransform */, "setScale", [__arg_0, __arg_1]);
 
-  setSkewX_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setSkewX", []);
+  setSkewX_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransform */, "setSkewX", []);
 
-  setSkewX_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setSkewX", [__arg_0]);
+  setSkewX_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransform */, "setSkewX", [__arg_0]);
 
-  setSkewY_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setSkewY", []);
+  setSkewY_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransform */, "setSkewY", []);
 
-  setSkewY_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setSkewY", [__arg_0]);
+  setSkewY_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransform */, "setSkewY", [__arg_0]);
 
-  setTranslate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setTranslate", []);
+  setTranslate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransform */, "setTranslate", []);
 
-  setTranslate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setTranslate", [__arg_0]);
+  setTranslate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransform */, "setTranslate", [__arg_0]);
 
-  setTranslate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setTranslate", [__arg_0, __arg_1]);
+  setTranslate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransform */, "setTranslate", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSVGTransformList {
   static final instance = new BlinkSVGTransformList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTransformList */, "length");
 
-  numberOfItems_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "numberOfItems");
+  numberOfItems_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGTransformList */, "numberOfItems");
 
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "__setter__", [__arg_0, __arg_1]);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "__setter__", [__arg_0, __arg_1]);
 
-  appendItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "appendItem", []);
+  appendItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "appendItem", []);
 
-  appendItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "appendItem", [__arg_0]);
+  appendItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "appendItem", [__arg_0]);
 
-  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clear", []);
+  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "clear", []);
 
-  consolidate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "consolidate", []);
+  consolidate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "consolidate", []);
 
-  createSVGTransformFromMatrix_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSVGTransformFromMatrix", []);
+  createSVGTransformFromMatrix_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "createSVGTransformFromMatrix", []);
 
-  createSVGTransformFromMatrix_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createSVGTransformFromMatrix", [__arg_0]);
+  createSVGTransformFromMatrix_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "createSVGTransformFromMatrix", [__arg_0]);
 
-  getItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getItem", []);
+  getItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "getItem", []);
 
-  getItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getItem", [__arg_0]);
+  getItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "getItem", [__arg_0]);
 
-  initialize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "initialize", []);
+  initialize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "initialize", []);
 
-  initialize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "initialize", [__arg_0]);
+  initialize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "initialize", [__arg_0]);
 
-  insertItemBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", []);
+  insertItemBefore_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "insertItemBefore", []);
 
-  insertItemBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", [__arg_0]);
+  insertItemBefore_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "insertItemBefore", [__arg_0]);
 
-  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "insertItemBefore", [__arg_0, __arg_1]);
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "insertItemBefore", [__arg_0, __arg_1]);
 
-  removeItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeItem", []);
+  removeItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "removeItem", []);
 
-  removeItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeItem", [__arg_0]);
+  removeItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "removeItem", [__arg_0]);
 
-  replaceItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", []);
+  replaceItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "replaceItem", []);
 
-  replaceItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", [__arg_0]);
+  replaceItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "replaceItem", [__arg_0]);
 
-  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "replaceItem", [__arg_0, __arg_1]);
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SVGTransformList */, "replaceItem", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSVGURIReference {
   static final instance = new BlinkSVGURIReference();
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGURIReference */, "href");
 
 }
 
@@ -15644,1834 +15644,1834 @@
 class BlinkSVGUseElement extends BlinkSVGGraphicsElement {
   static final instance = new BlinkSVGUseElement();
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGUseElement */, "height");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGUseElement */, "width");
 
-  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "x");
+  x_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGUseElement */, "x");
 
-  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "y");
+  y_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGUseElement */, "y");
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGURIReference */, "href");
 
 }
 
 class BlinkSVGViewElement extends BlinkSVGElement {
   static final instance = new BlinkSVGViewElement();
 
-  viewTarget_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "viewTarget");
+  viewTarget_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGViewElement */, "viewTarget");
 
-  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "preserveAspectRatio");
+  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFitToViewBox */, "preserveAspectRatio");
 
-  viewBox_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "viewBox");
+  viewBox_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFitToViewBox */, "viewBox");
 
-  zoomAndPan_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "zoomAndPan");
+  zoomAndPan_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGZoomAndPan */, "zoomAndPan");
 
-  zoomAndPan_Setter_(mthis, __arg_0) => mthis["zoomAndPan"] = __arg_0;
+  zoomAndPan_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGZoomAndPan */, "zoomAndPan", __arg_0);
 
 }
 
 class BlinkSVGViewSpec {
   static final instance = new BlinkSVGViewSpec();
 
-  preserveAspectRatioString_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "preserveAspectRatioString");
+  preserveAspectRatioString_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGViewSpec */, "preserveAspectRatioString");
 
-  transform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "transform");
+  transform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGViewSpec */, "transform");
 
-  transformString_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "transformString");
+  transformString_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGViewSpec */, "transformString");
 
-  viewBoxString_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "viewBoxString");
+  viewBoxString_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGViewSpec */, "viewBoxString");
 
-  viewTarget_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "viewTarget");
+  viewTarget_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGViewSpec */, "viewTarget");
 
-  viewTargetString_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "viewTargetString");
+  viewTargetString_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGViewSpec */, "viewTargetString");
 
-  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "preserveAspectRatio");
+  preserveAspectRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFitToViewBox */, "preserveAspectRatio");
 
-  viewBox_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "viewBox");
+  viewBox_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGFitToViewBox */, "viewBox");
 
-  zoomAndPan_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "zoomAndPan");
+  zoomAndPan_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGZoomAndPan */, "zoomAndPan");
 
-  zoomAndPan_Setter_(mthis, __arg_0) => mthis["zoomAndPan"] = __arg_0;
+  zoomAndPan_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGZoomAndPan */, "zoomAndPan", __arg_0);
 
 }
 
 class BlinkSVGZoomAndPan {
   static final instance = new BlinkSVGZoomAndPan();
 
-  zoomAndPan_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "zoomAndPan");
+  zoomAndPan_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGZoomAndPan */, "zoomAndPan");
 
-  zoomAndPan_Setter_(mthis, __arg_0) => mthis["zoomAndPan"] = __arg_0;
+  zoomAndPan_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SVGZoomAndPan */, "zoomAndPan", __arg_0);
 
 }
 
 class BlinkSVGZoomEvent extends BlinkUIEvent {
   static final instance = new BlinkSVGZoomEvent();
 
-  newScale_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "newScale");
+  newScale_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGZoomEvent */, "newScale");
 
-  newTranslate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "newTranslate");
+  newTranslate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGZoomEvent */, "newTranslate");
 
-  previousScale_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "previousScale");
+  previousScale_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGZoomEvent */, "previousScale");
 
-  previousTranslate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "previousTranslate");
+  previousTranslate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGZoomEvent */, "previousTranslate");
 
-  zoomRectScreen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "zoomRectScreen");
+  zoomRectScreen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SVGZoomEvent */, "zoomRectScreen");
 
 }
 
 class BlinkScreen {
   static final instance = new BlinkScreen();
 
-  availHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "availHeight");
+  availHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Screen */, "availHeight");
 
-  availLeft_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "availLeft");
+  availLeft_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Screen */, "availLeft");
 
-  availTop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "availTop");
+  availTop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Screen */, "availTop");
 
-  availWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "availWidth");
+  availWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Screen */, "availWidth");
 
-  colorDepth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "colorDepth");
+  colorDepth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Screen */, "colorDepth");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Screen */, "height");
 
-  orientation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "orientation");
+  orientation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Screen */, "orientation");
 
-  pixelDepth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pixelDepth");
+  pixelDepth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Screen */, "pixelDepth");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Screen */, "width");
 
 }
 
 class BlinkScreenOrientation extends BlinkEventTarget {
   static final instance = new BlinkScreenOrientation();
 
-  angle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "angle");
+  angle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ScreenOrientation */, "angle");
 
-  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onchange");
+  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ScreenOrientation */, "onchange");
 
-  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
+  onchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ScreenOrientation */, "onchange", __arg_0);
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ScreenOrientation */, "type");
 
-  lock_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "lock", []);
+  lock_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ScreenOrientation */, "lock", []);
 
-  lock_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "lock", [__arg_0]);
+  lock_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ScreenOrientation */, "lock", [__arg_0]);
 
-  unlock_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "unlock", []);
+  unlock_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ScreenOrientation */, "unlock", []);
 
 }
 
 class BlinkScriptProcessorNode extends BlinkAudioNode {
   static final instance = new BlinkScriptProcessorNode();
 
-  bufferSize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "bufferSize");
+  bufferSize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ScriptProcessorNode */, "bufferSize");
 
-  onaudioprocess_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onaudioprocess");
+  onaudioprocess_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ScriptProcessorNode */, "onaudioprocess");
 
-  onaudioprocess_Setter_(mthis, __arg_0) => mthis["onaudioprocess"] = __arg_0;
+  onaudioprocess_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ScriptProcessorNode */, "onaudioprocess", __arg_0);
 
-  setEventListener_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setEventListener", []);
+  setEventListener_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ScriptProcessorNode */, "setEventListener", []);
 
-  setEventListener_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setEventListener", [__arg_0]);
+  setEventListener_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ScriptProcessorNode */, "setEventListener", [__arg_0]);
 
 }
 
 class BlinkScrollState {
   static final instance = new BlinkScrollState();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ScrollState"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("ScrollState");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ScrollState"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("ScrollState", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ScrollState"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("ScrollState", [__arg_0, __arg_1]);
 
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ScrollState"), [__arg_0, __arg_1, __arg_2]);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callConstructor("ScrollState", [__arg_0, __arg_1, __arg_2]);
 
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ScrollState"), [__arg_0, __arg_1, __arg_2, __arg_3]);
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callConstructor("ScrollState", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ScrollState"), [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callConstructor("ScrollState", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  constructorCallback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ScrollState"), [__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) => Blink_JsNative_DomException.callConstructor("ScrollState", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  constructorCallback_7_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ScrollState"), [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
+  constructorCallback_7_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callConstructor("ScrollState", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  constructorCallback_8_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ScrollState"), [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
+  constructorCallback_8_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callConstructor("ScrollState", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  deltaGranularity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "deltaGranularity");
+  deltaGranularity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ScrollState */, "deltaGranularity");
 
-  deltaX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "deltaX");
+  deltaX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ScrollState */, "deltaX");
 
-  deltaY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "deltaY");
+  deltaY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ScrollState */, "deltaY");
 
-  fromUserInput_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fromUserInput");
+  fromUserInput_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ScrollState */, "fromUserInput");
 
-  inInertialPhase_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "inInertialPhase");
+  inInertialPhase_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ScrollState */, "inInertialPhase");
 
-  isBeginning_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "isBeginning");
+  isBeginning_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ScrollState */, "isBeginning");
 
-  isEnding_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "isEnding");
+  isEnding_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ScrollState */, "isEnding");
 
-  shouldPropagate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "shouldPropagate");
+  shouldPropagate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ScrollState */, "shouldPropagate");
 
-  velocityX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "velocityX");
+  velocityX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ScrollState */, "velocityX");
 
-  velocityY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "velocityY");
+  velocityY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ScrollState */, "velocityY");
 
-  consumeDelta_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "consumeDelta", []);
+  consumeDelta_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ScrollState */, "consumeDelta", []);
 
-  consumeDelta_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "consumeDelta", [__arg_0]);
+  consumeDelta_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ScrollState */, "consumeDelta", [__arg_0]);
 
-  consumeDelta_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "consumeDelta", [__arg_0, __arg_1]);
+  consumeDelta_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* ScrollState */, "consumeDelta", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSecurityPolicyViolationEvent extends BlinkEvent {
   static final instance = new BlinkSecurityPolicyViolationEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SecurityPolicyViolationEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("SecurityPolicyViolationEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SecurityPolicyViolationEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("SecurityPolicyViolationEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SecurityPolicyViolationEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("SecurityPolicyViolationEvent", [__arg_0, __arg_1]);
 
-  blockedURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "blockedURI");
+  blockedURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SecurityPolicyViolationEvent */, "blockedURI");
 
-  columnNumber_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "columnNumber");
+  columnNumber_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SecurityPolicyViolationEvent */, "columnNumber");
 
-  documentURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "documentURI");
+  documentURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SecurityPolicyViolationEvent */, "documentURI");
 
-  effectiveDirective_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "effectiveDirective");
+  effectiveDirective_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SecurityPolicyViolationEvent */, "effectiveDirective");
 
-  lineNumber_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lineNumber");
+  lineNumber_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SecurityPolicyViolationEvent */, "lineNumber");
 
-  originalPolicy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "originalPolicy");
+  originalPolicy_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SecurityPolicyViolationEvent */, "originalPolicy");
 
-  referrer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "referrer");
+  referrer_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SecurityPolicyViolationEvent */, "referrer");
 
-  sourceFile_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sourceFile");
+  sourceFile_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SecurityPolicyViolationEvent */, "sourceFile");
 
-  statusCode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "statusCode");
+  statusCode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SecurityPolicyViolationEvent */, "statusCode");
 
-  violatedDirective_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "violatedDirective");
+  violatedDirective_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SecurityPolicyViolationEvent */, "violatedDirective");
 
 }
 
 class BlinkSelection {
   static final instance = new BlinkSelection();
 
-  anchorNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "anchorNode");
+  anchorNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Selection */, "anchorNode");
 
-  anchorOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "anchorOffset");
+  anchorOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Selection */, "anchorOffset");
 
-  baseNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseNode");
+  baseNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Selection */, "baseNode");
 
-  baseOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "baseOffset");
+  baseOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Selection */, "baseOffset");
 
-  extentNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "extentNode");
+  extentNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Selection */, "extentNode");
 
-  extentOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "extentOffset");
+  extentOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Selection */, "extentOffset");
 
-  focusNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "focusNode");
+  focusNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Selection */, "focusNode");
 
-  focusOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "focusOffset");
+  focusOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Selection */, "focusOffset");
 
-  isCollapsed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "isCollapsed");
+  isCollapsed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Selection */, "isCollapsed");
 
-  rangeCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rangeCount");
+  rangeCount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Selection */, "rangeCount");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Selection */, "type");
 
-  addRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "addRange", []);
+  addRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "addRange", []);
 
-  addRange_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addRange", [__arg_0]);
+  addRange_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "addRange", [__arg_0]);
 
-  collapse_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "collapse", []);
+  collapse_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "collapse", []);
 
-  collapse_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "collapse", [__arg_0]);
+  collapse_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "collapse", [__arg_0]);
 
-  collapse_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "collapse", [__arg_0, __arg_1]);
+  collapse_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "collapse", [__arg_0, __arg_1]);
 
-  collapseToEnd_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "collapseToEnd", []);
+  collapseToEnd_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "collapseToEnd", []);
 
-  collapseToStart_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "collapseToStart", []);
+  collapseToStart_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "collapseToStart", []);
 
-  containsNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "containsNode", []);
+  containsNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "containsNode", []);
 
-  containsNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "containsNode", [__arg_0]);
+  containsNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "containsNode", [__arg_0]);
 
-  containsNode_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "containsNode", [__arg_0, __arg_1]);
+  containsNode_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "containsNode", [__arg_0, __arg_1]);
 
-  deleteFromDocument_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteFromDocument", []);
+  deleteFromDocument_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "deleteFromDocument", []);
 
-  empty_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "empty", []);
+  empty_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "empty", []);
 
-  extend_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "extend", []);
+  extend_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "extend", []);
 
-  extend_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "extend", [__arg_0]);
+  extend_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "extend", [__arg_0]);
 
-  extend_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "extend", [__arg_0, __arg_1]);
+  extend_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "extend", [__arg_0, __arg_1]);
 
-  getRangeAt_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getRangeAt", []);
+  getRangeAt_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "getRangeAt", []);
 
-  getRangeAt_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getRangeAt", [__arg_0]);
+  getRangeAt_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "getRangeAt", [__arg_0]);
 
-  modify_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "modify", [__arg_0]);
+  modify_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "modify", [__arg_0]);
 
-  modify_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "modify", [__arg_0, __arg_1]);
+  modify_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "modify", [__arg_0, __arg_1]);
 
-  modify_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "modify", [__arg_0, __arg_1, __arg_2]);
+  modify_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "modify", [__arg_0, __arg_1, __arg_2]);
 
-  removeAllRanges_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeAllRanges", []);
+  removeAllRanges_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "removeAllRanges", []);
 
-  selectAllChildren_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "selectAllChildren", []);
+  selectAllChildren_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "selectAllChildren", []);
 
-  selectAllChildren_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "selectAllChildren", [__arg_0]);
+  selectAllChildren_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "selectAllChildren", [__arg_0]);
 
-  setBaseAndExtent_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setBaseAndExtent", [__arg_0, __arg_1]);
+  setBaseAndExtent_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "setBaseAndExtent", [__arg_0, __arg_1]);
 
-  setBaseAndExtent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setBaseAndExtent", [__arg_0, __arg_1, __arg_2]);
+  setBaseAndExtent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "setBaseAndExtent", [__arg_0, __arg_1, __arg_2]);
 
-  setBaseAndExtent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "setBaseAndExtent", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  setBaseAndExtent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "setBaseAndExtent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  setPosition_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setPosition", []);
+  setPosition_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "setPosition", []);
 
-  setPosition_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setPosition", [__arg_0]);
+  setPosition_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "setPosition", [__arg_0]);
 
-  setPosition_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setPosition", [__arg_0, __arg_1]);
+  setPosition_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Selection */, "setPosition", [__arg_0, __arg_1]);
 
 }
 
 class BlinkServicePort {
   static final instance = new BlinkServicePort();
 
-  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "data");
+  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServicePort */, "data");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServicePort */, "name");
 
-  targetURL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "targetURL");
+  targetURL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServicePort */, "targetURL");
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServicePort */, "close", []);
 
-  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", []);
+  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServicePort */, "postMessage", []);
 
-  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0]);
+  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ServicePort */, "postMessage", [__arg_0]);
 
-  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0, __arg_1]);
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* ServicePort */, "postMessage", [__arg_0, __arg_1]);
 
 }
 
 class BlinkServicePortCollection extends BlinkEventTarget {
   static final instance = new BlinkServicePortCollection();
 
-  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclose");
+  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServicePortCollection */, "onclose");
 
-  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
+  onclose_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServicePortCollection */, "onclose", __arg_0);
 
-  onconnect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onconnect");
+  onconnect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServicePortCollection */, "onconnect");
 
-  onconnect_Setter_(mthis, __arg_0) => mthis["onconnect"] = __arg_0;
+  onconnect_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServicePortCollection */, "onconnect", __arg_0);
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServicePortCollection */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServicePortCollection */, "onmessage", __arg_0);
 
-  connect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "connect", []);
+  connect_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServicePortCollection */, "connect", []);
 
-  connect_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "connect", [__arg_0]);
+  connect_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ServicePortCollection */, "connect", [__arg_0]);
 
-  connect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "connect", [__arg_0, __arg_1]);
+  connect_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* ServicePortCollection */, "connect", [__arg_0, __arg_1]);
 
-  match_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "match", []);
+  match_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServicePortCollection */, "match", []);
 
-  match_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "match", [__arg_0]);
+  match_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ServicePortCollection */, "match", [__arg_0]);
 
-  matchAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "matchAll", []);
+  matchAll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServicePortCollection */, "matchAll", []);
 
-  matchAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "matchAll", [__arg_0]);
+  matchAll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ServicePortCollection */, "matchAll", [__arg_0]);
 
 }
 
 class BlinkServicePortConnectEvent extends BlinkExtendableEvent {
   static final instance = new BlinkServicePortConnectEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ServicePortConnectEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("ServicePortConnectEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ServicePortConnectEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("ServicePortConnectEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ServicePortConnectEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("ServicePortConnectEvent", [__arg_0, __arg_1]);
 
-  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "origin");
+  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServicePortConnectEvent */, "origin");
 
-  targetURL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "targetURL");
+  targetURL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServicePortConnectEvent */, "targetURL");
 
-  respondWith_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "respondWith", []);
+  respondWith_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServicePortConnectEvent */, "respondWith", []);
 
-  respondWith_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "respondWith", [__arg_0]);
+  respondWith_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ServicePortConnectEvent */, "respondWith", [__arg_0]);
 
 }
 
 class BlinkServiceWorker extends BlinkEventTarget {
   static final instance = new BlinkServiceWorker();
 
-  onstatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstatechange");
+  onstatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorker */, "onstatechange");
 
-  onstatechange_Setter_(mthis, __arg_0) => mthis["onstatechange"] = __arg_0;
+  onstatechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorker */, "onstatechange", __arg_0);
 
-  scriptURL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scriptURL");
+  scriptURL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorker */, "scriptURL");
 
-  state_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "state");
+  state_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorker */, "state");
 
-  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", []);
+  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorker */, "postMessage", []);
 
-  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0]);
+  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorker */, "postMessage", [__arg_0]);
 
-  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0, __arg_1]);
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorker */, "postMessage", [__arg_0, __arg_1]);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AbstractWorker */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AbstractWorker */, "onerror", __arg_0);
 
 }
 
 class BlinkServiceWorkerContainer extends BlinkEventTarget {
   static final instance = new BlinkServiceWorkerContainer();
 
-  controller_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "controller");
+  controller_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerContainer */, "controller");
 
-  oncontrollerchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncontrollerchange");
+  oncontrollerchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerContainer */, "oncontrollerchange");
 
-  oncontrollerchange_Setter_(mthis, __arg_0) => mthis["oncontrollerchange"] = __arg_0;
+  oncontrollerchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorkerContainer */, "oncontrollerchange", __arg_0);
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerContainer */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorkerContainer */, "onmessage", __arg_0);
 
-  ready_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ready");
+  ready_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerContainer */, "ready");
 
-  getRegistration_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getRegistration", []);
+  getRegistration_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerContainer */, "getRegistration", []);
 
-  getRegistration_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getRegistration", [__arg_0]);
+  getRegistration_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerContainer */, "getRegistration", [__arg_0]);
 
-  getRegistrations_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getRegistrations", []);
+  getRegistrations_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerContainer */, "getRegistrations", []);
 
-  register_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "register", []);
+  register_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerContainer */, "register", []);
 
-  register_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "register", [__arg_0]);
+  register_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerContainer */, "register", [__arg_0]);
 
-  register_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "register", [__arg_0, __arg_1]);
+  register_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerContainer */, "register", [__arg_0, __arg_1]);
 
 }
 
 class BlinkServiceWorkerGlobalScope extends BlinkWorkerGlobalScope {
   static final instance = new BlinkServiceWorkerGlobalScope();
 
-  clients_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "clients");
+  clients_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerGlobalScope */, "clients");
 
-  onactivate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onactivate");
+  onactivate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerGlobalScope */, "onactivate");
 
-  onactivate_Setter_(mthis, __arg_0) => mthis["onactivate"] = __arg_0;
+  onactivate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorkerGlobalScope */, "onactivate", __arg_0);
 
-  oncrossoriginconnect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncrossoriginconnect");
+  oncrossoriginconnect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerGlobalScope */, "oncrossoriginconnect");
 
-  oncrossoriginconnect_Setter_(mthis, __arg_0) => mthis["oncrossoriginconnect"] = __arg_0;
+  oncrossoriginconnect_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorkerGlobalScope */, "oncrossoriginconnect", __arg_0);
 
-  oncrossoriginmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncrossoriginmessage");
+  oncrossoriginmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerGlobalScope */, "oncrossoriginmessage");
 
-  oncrossoriginmessage_Setter_(mthis, __arg_0) => mthis["oncrossoriginmessage"] = __arg_0;
+  oncrossoriginmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorkerGlobalScope */, "oncrossoriginmessage", __arg_0);
 
-  onfetch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onfetch");
+  onfetch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerGlobalScope */, "onfetch");
 
-  onfetch_Setter_(mthis, __arg_0) => mthis["onfetch"] = __arg_0;
+  onfetch_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorkerGlobalScope */, "onfetch", __arg_0);
 
-  ongeofenceenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ongeofenceenter");
+  ongeofenceenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerGlobalScope */, "ongeofenceenter");
 
-  ongeofenceenter_Setter_(mthis, __arg_0) => mthis["ongeofenceenter"] = __arg_0;
+  ongeofenceenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorkerGlobalScope */, "ongeofenceenter", __arg_0);
 
-  ongeofenceleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ongeofenceleave");
+  ongeofenceleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerGlobalScope */, "ongeofenceleave");
 
-  ongeofenceleave_Setter_(mthis, __arg_0) => mthis["ongeofenceleave"] = __arg_0;
+  ongeofenceleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorkerGlobalScope */, "ongeofenceleave", __arg_0);
 
-  oninstall_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oninstall");
+  oninstall_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerGlobalScope */, "oninstall");
 
-  oninstall_Setter_(mthis, __arg_0) => mthis["oninstall"] = __arg_0;
+  oninstall_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorkerGlobalScope */, "oninstall", __arg_0);
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerGlobalScope */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorkerGlobalScope */, "onmessage", __arg_0);
 
-  onnotificationclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onnotificationclick");
+  onnotificationclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerGlobalScope */, "onnotificationclick");
 
-  onnotificationclick_Setter_(mthis, __arg_0) => mthis["onnotificationclick"] = __arg_0;
+  onnotificationclick_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorkerGlobalScope */, "onnotificationclick", __arg_0);
 
-  onnotificationerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onnotificationerror");
+  onnotificationerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerGlobalScope */, "onnotificationerror");
 
-  onnotificationerror_Setter_(mthis, __arg_0) => mthis["onnotificationerror"] = __arg_0;
+  onnotificationerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorkerGlobalScope */, "onnotificationerror", __arg_0);
 
-  onperiodicsync_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onperiodicsync");
+  onperiodicsync_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerGlobalScope */, "onperiodicsync");
 
-  onperiodicsync_Setter_(mthis, __arg_0) => mthis["onperiodicsync"] = __arg_0;
+  onperiodicsync_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorkerGlobalScope */, "onperiodicsync", __arg_0);
 
-  onpush_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpush");
+  onpush_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerGlobalScope */, "onpush");
 
-  onpush_Setter_(mthis, __arg_0) => mthis["onpush"] = __arg_0;
+  onpush_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorkerGlobalScope */, "onpush", __arg_0);
 
-  onsync_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsync");
+  onsync_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerGlobalScope */, "onsync");
 
-  onsync_Setter_(mthis, __arg_0) => mthis["onsync"] = __arg_0;
+  onsync_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorkerGlobalScope */, "onsync", __arg_0);
 
-  ports_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ports");
+  ports_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerGlobalScope */, "ports");
 
-  registration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "registration");
+  registration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerGlobalScope */, "registration");
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerGlobalScope */, "close", []);
 
-  fetch_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "fetch", []);
+  fetch_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerGlobalScope */, "fetch", []);
 
-  fetch_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "fetch", [__arg_0]);
+  fetch_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerGlobalScope */, "fetch", [__arg_0]);
 
-  fetch_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "fetch", [__arg_0, __arg_1]);
+  fetch_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerGlobalScope */, "fetch", [__arg_0, __arg_1]);
 
-  skipWaiting_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "skipWaiting", []);
+  skipWaiting_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerGlobalScope */, "skipWaiting", []);
 
 }
 
 class BlinkServiceWorkerMessageEvent extends BlinkEvent {
   static final instance = new BlinkServiceWorkerMessageEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ServiceWorkerMessageEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("ServiceWorkerMessageEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ServiceWorkerMessageEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("ServiceWorkerMessageEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "ServiceWorkerMessageEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("ServiceWorkerMessageEvent", [__arg_0, __arg_1]);
 
-  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "data");
+  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerMessageEvent */, "data");
 
-  lastEventId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lastEventId");
+  lastEventId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerMessageEvent */, "lastEventId");
 
-  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "origin");
+  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerMessageEvent */, "origin");
 
-  ports_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ports");
+  ports_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerMessageEvent */, "ports");
 
-  source_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "source");
+  source_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerMessageEvent */, "source");
 
 }
 
 class BlinkServiceWorkerRegistration extends BlinkEventTarget {
   static final instance = new BlinkServiceWorkerRegistration();
 
-  active_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "active");
+  active_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerRegistration */, "active");
 
-  geofencing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "geofencing");
+  geofencing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerRegistration */, "geofencing");
 
-  installing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "installing");
+  installing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerRegistration */, "installing");
 
-  onupdatefound_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onupdatefound");
+  onupdatefound_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerRegistration */, "onupdatefound");
 
-  onupdatefound_Setter_(mthis, __arg_0) => mthis["onupdatefound"] = __arg_0;
+  onupdatefound_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ServiceWorkerRegistration */, "onupdatefound", __arg_0);
 
-  periodicSync_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "periodicSync");
+  periodicSync_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerRegistration */, "periodicSync");
 
-  pushManager_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pushManager");
+  pushManager_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerRegistration */, "pushManager");
 
-  scope_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scope");
+  scope_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerRegistration */, "scope");
 
-  sync_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sync");
+  sync_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerRegistration */, "sync");
 
-  waiting_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "waiting");
+  waiting_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ServiceWorkerRegistration */, "waiting");
 
-  getNotifications_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getNotifications", []);
+  getNotifications_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerRegistration */, "getNotifications", []);
 
-  getNotifications_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getNotifications", [__arg_0]);
+  getNotifications_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerRegistration */, "getNotifications", [__arg_0]);
 
-  showNotification_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "showNotification", []);
+  showNotification_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerRegistration */, "showNotification", []);
 
-  showNotification_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "showNotification", [__arg_0]);
+  showNotification_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerRegistration */, "showNotification", [__arg_0]);
 
-  showNotification_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "showNotification", [__arg_0, __arg_1]);
+  showNotification_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerRegistration */, "showNotification", [__arg_0, __arg_1]);
 
-  unregister_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "unregister", []);
+  unregister_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerRegistration */, "unregister", []);
 
-  update_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "update", []);
+  update_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ServiceWorkerRegistration */, "update", []);
 
 }
 
 class BlinkShadowRoot extends BlinkDocumentFragment {
   static final instance = new BlinkShadowRoot();
 
-  activeElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "activeElement");
+  activeElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ShadowRoot */, "activeElement");
 
-  delegatesFocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "delegatesFocus");
+  delegatesFocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ShadowRoot */, "delegatesFocus");
 
-  host_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "host");
+  host_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ShadowRoot */, "host");
 
-  innerHTML_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "innerHTML");
+  innerHTML_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ShadowRoot */, "innerHTML");
 
-  innerHTML_Setter_(mthis, __arg_0) => mthis["innerHTML"] = __arg_0;
+  innerHTML_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* ShadowRoot */, "innerHTML", __arg_0);
 
-  olderShadowRoot_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "olderShadowRoot");
+  olderShadowRoot_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ShadowRoot */, "olderShadowRoot");
 
-  styleSheets_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "styleSheets");
+  styleSheets_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ShadowRoot */, "styleSheets");
 
-  cloneNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cloneNode", []);
+  cloneNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ShadowRoot */, "cloneNode", []);
 
-  cloneNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "cloneNode", [__arg_0]);
+  cloneNode_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ShadowRoot */, "cloneNode", [__arg_0]);
 
-  elementFromPoint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "elementFromPoint", []);
+  elementFromPoint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ShadowRoot */, "elementFromPoint", []);
 
-  elementFromPoint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "elementFromPoint", [__arg_0]);
+  elementFromPoint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ShadowRoot */, "elementFromPoint", [__arg_0]);
 
-  elementFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "elementFromPoint", [__arg_0, __arg_1]);
+  elementFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* ShadowRoot */, "elementFromPoint", [__arg_0, __arg_1]);
 
-  elementsFromPoint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "elementsFromPoint", []);
+  elementsFromPoint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ShadowRoot */, "elementsFromPoint", []);
 
-  elementsFromPoint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "elementsFromPoint", [__arg_0]);
+  elementsFromPoint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* ShadowRoot */, "elementsFromPoint", [__arg_0]);
 
-  elementsFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "elementsFromPoint", [__arg_0, __arg_1]);
+  elementsFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* ShadowRoot */, "elementsFromPoint", [__arg_0, __arg_1]);
 
-  getSelection_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSelection", []);
+  getSelection_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* ShadowRoot */, "getSelection", []);
 
 }
 
 class BlinkSharedArrayBuffer {
   static final instance = new BlinkSharedArrayBuffer();
 
-  byteLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "byteLength");
+  byteLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SharedArrayBuffer */, "byteLength");
 
 }
 
 class BlinkSharedWorker extends BlinkEventTarget {
   static final instance = new BlinkSharedWorker();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SharedWorker"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("SharedWorker");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SharedWorker"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("SharedWorker", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SharedWorker"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("SharedWorker", [__arg_0, __arg_1]);
 
-  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "port");
+  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SharedWorker */, "port");
 
-  workerStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "workerStart");
+  workerStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SharedWorker */, "workerStart");
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AbstractWorker */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AbstractWorker */, "onerror", __arg_0);
 
 }
 
 class BlinkSharedWorkerGlobalScope extends BlinkWorkerGlobalScope {
   static final instance = new BlinkSharedWorkerGlobalScope();
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SharedWorkerGlobalScope */, "name");
 
-  onconnect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onconnect");
+  onconnect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SharedWorkerGlobalScope */, "onconnect");
 
-  onconnect_Setter_(mthis, __arg_0) => mthis["onconnect"] = __arg_0;
+  onconnect_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SharedWorkerGlobalScope */, "onconnect", __arg_0);
 
 }
 
 class BlinkSourceBuffer extends BlinkEventTarget {
   static final instance = new BlinkSourceBuffer();
 
-  appendWindowEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "appendWindowEnd");
+  appendWindowEnd_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SourceBuffer */, "appendWindowEnd");
 
-  appendWindowEnd_Setter_(mthis, __arg_0) => mthis["appendWindowEnd"] = __arg_0;
+  appendWindowEnd_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SourceBuffer */, "appendWindowEnd", __arg_0);
 
-  appendWindowStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "appendWindowStart");
+  appendWindowStart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SourceBuffer */, "appendWindowStart");
 
-  appendWindowStart_Setter_(mthis, __arg_0) => mthis["appendWindowStart"] = __arg_0;
+  appendWindowStart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SourceBuffer */, "appendWindowStart", __arg_0);
 
-  buffered_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "buffered");
+  buffered_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SourceBuffer */, "buffered");
 
-  mode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "mode");
+  mode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SourceBuffer */, "mode");
 
-  mode_Setter_(mthis, __arg_0) => mthis["mode"] = __arg_0;
+  mode_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SourceBuffer */, "mode", __arg_0);
 
-  timestampOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "timestampOffset");
+  timestampOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SourceBuffer */, "timestampOffset");
 
-  timestampOffset_Setter_(mthis, __arg_0) => mthis["timestampOffset"] = __arg_0;
+  timestampOffset_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SourceBuffer */, "timestampOffset", __arg_0);
 
-  trackDefaults_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "trackDefaults");
+  trackDefaults_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SourceBuffer */, "trackDefaults");
 
-  trackDefaults_Setter_(mthis, __arg_0) => mthis["trackDefaults"] = __arg_0;
+  trackDefaults_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SourceBuffer */, "trackDefaults", __arg_0);
 
-  updating_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "updating");
+  updating_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SourceBuffer */, "updating");
 
-  abort_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "abort", []);
+  abort_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SourceBuffer */, "abort", []);
 
-  appendBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "appendBuffer", []);
+  appendBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SourceBuffer */, "appendBuffer", []);
 
-  appendBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "appendBuffer", [__arg_0]);
+  appendBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SourceBuffer */, "appendBuffer", [__arg_0]);
 
-  appendStream_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "appendStream", []);
+  appendStream_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SourceBuffer */, "appendStream", []);
 
-  appendStream_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "appendStream", [__arg_0]);
+  appendStream_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SourceBuffer */, "appendStream", [__arg_0]);
 
-  appendStream_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "appendStream", [__arg_0, __arg_1]);
+  appendStream_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SourceBuffer */, "appendStream", [__arg_0, __arg_1]);
 
-  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "remove", []);
+  remove_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SourceBuffer */, "remove", []);
 
-  remove_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "remove", [__arg_0]);
+  remove_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SourceBuffer */, "remove", [__arg_0]);
 
-  remove_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "remove", [__arg_0, __arg_1]);
+  remove_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SourceBuffer */, "remove", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSourceBufferList extends BlinkEventTarget {
   static final instance = new BlinkSourceBufferList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SourceBufferList */, "length");
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SourceBufferList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SourceBufferList */, "item", [__arg_0]);
 
 }
 
 class BlinkSourceInfo {
   static final instance = new BlinkSourceInfo();
 
-  facing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "facing");
+  facing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SourceInfo */, "facing");
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SourceInfo */, "id");
 
-  kind_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "kind");
+  kind_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SourceInfo */, "kind");
 
-  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "label");
+  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SourceInfo */, "label");
 
 }
 
 class BlinkSpeechGrammar {
   static final instance = new BlinkSpeechGrammar();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SpeechGrammar"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("SpeechGrammar");
 
-  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "src");
+  src_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechGrammar */, "src");
 
-  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
+  src_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechGrammar */, "src", __arg_0);
 
-  weight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "weight");
+  weight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechGrammar */, "weight");
 
-  weight_Setter_(mthis, __arg_0) => mthis["weight"] = __arg_0;
+  weight_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechGrammar */, "weight", __arg_0);
 
 }
 
 class BlinkSpeechGrammarList {
   static final instance = new BlinkSpeechGrammarList();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SpeechGrammarList"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("SpeechGrammarList");
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechGrammarList */, "length");
 
-  addFromString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "addFromString", []);
+  addFromString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SpeechGrammarList */, "addFromString", []);
 
-  addFromString_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addFromString", [__arg_0]);
+  addFromString_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SpeechGrammarList */, "addFromString", [__arg_0]);
 
-  addFromString_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "addFromString", [__arg_0, __arg_1]);
+  addFromString_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SpeechGrammarList */, "addFromString", [__arg_0, __arg_1]);
 
-  addFromUri_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "addFromUri", []);
+  addFromUri_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SpeechGrammarList */, "addFromUri", []);
 
-  addFromUri_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addFromUri", [__arg_0]);
+  addFromUri_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SpeechGrammarList */, "addFromUri", [__arg_0]);
 
-  addFromUri_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "addFromUri", [__arg_0, __arg_1]);
+  addFromUri_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SpeechGrammarList */, "addFromUri", [__arg_0, __arg_1]);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SpeechGrammarList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SpeechGrammarList */, "item", [__arg_0]);
 
 }
 
 class BlinkSpeechRecognition extends BlinkEventTarget {
   static final instance = new BlinkSpeechRecognition();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "webkitSpeechRecognition"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("webkitSpeechRecognition");
 
-  audioTrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "audioTrack");
+  audioTrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "audioTrack");
 
-  audioTrack_Setter_(mthis, __arg_0) => mthis["audioTrack"] = __arg_0;
+  audioTrack_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "audioTrack", __arg_0);
 
-  continuous_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "continuous");
+  continuous_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "continuous");
 
-  continuous_Setter_(mthis, __arg_0) => mthis["continuous"] = __arg_0;
+  continuous_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "continuous", __arg_0);
 
-  grammars_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "grammars");
+  grammars_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "grammars");
 
-  grammars_Setter_(mthis, __arg_0) => mthis["grammars"] = __arg_0;
+  grammars_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "grammars", __arg_0);
 
-  interimResults_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "interimResults");
+  interimResults_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "interimResults");
 
-  interimResults_Setter_(mthis, __arg_0) => mthis["interimResults"] = __arg_0;
+  interimResults_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "interimResults", __arg_0);
 
-  lang_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lang");
+  lang_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "lang");
 
-  lang_Setter_(mthis, __arg_0) => mthis["lang"] = __arg_0;
+  lang_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "lang", __arg_0);
 
-  maxAlternatives_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "maxAlternatives");
+  maxAlternatives_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "maxAlternatives");
 
-  maxAlternatives_Setter_(mthis, __arg_0) => mthis["maxAlternatives"] = __arg_0;
+  maxAlternatives_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "maxAlternatives", __arg_0);
 
-  onaudioend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onaudioend");
+  onaudioend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "onaudioend");
 
-  onaudioend_Setter_(mthis, __arg_0) => mthis["onaudioend"] = __arg_0;
+  onaudioend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "onaudioend", __arg_0);
 
-  onaudiostart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onaudiostart");
+  onaudiostart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "onaudiostart");
 
-  onaudiostart_Setter_(mthis, __arg_0) => mthis["onaudiostart"] = __arg_0;
+  onaudiostart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "onaudiostart", __arg_0);
 
-  onend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onend");
+  onend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "onend");
 
-  onend_Setter_(mthis, __arg_0) => mthis["onend"] = __arg_0;
+  onend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "onend", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "onerror", __arg_0);
 
-  onnomatch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onnomatch");
+  onnomatch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "onnomatch");
 
-  onnomatch_Setter_(mthis, __arg_0) => mthis["onnomatch"] = __arg_0;
+  onnomatch_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "onnomatch", __arg_0);
 
-  onresult_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onresult");
+  onresult_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "onresult");
 
-  onresult_Setter_(mthis, __arg_0) => mthis["onresult"] = __arg_0;
+  onresult_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "onresult", __arg_0);
 
-  onsoundend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsoundend");
+  onsoundend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "onsoundend");
 
-  onsoundend_Setter_(mthis, __arg_0) => mthis["onsoundend"] = __arg_0;
+  onsoundend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "onsoundend", __arg_0);
 
-  onsoundstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsoundstart");
+  onsoundstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "onsoundstart");
 
-  onsoundstart_Setter_(mthis, __arg_0) => mthis["onsoundstart"] = __arg_0;
+  onsoundstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "onsoundstart", __arg_0);
 
-  onspeechend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onspeechend");
+  onspeechend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "onspeechend");
 
-  onspeechend_Setter_(mthis, __arg_0) => mthis["onspeechend"] = __arg_0;
+  onspeechend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "onspeechend", __arg_0);
 
-  onspeechstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onspeechstart");
+  onspeechstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "onspeechstart");
 
-  onspeechstart_Setter_(mthis, __arg_0) => mthis["onspeechstart"] = __arg_0;
+  onspeechstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "onspeechstart", __arg_0);
 
-  onstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstart");
+  onstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "onstart");
 
-  onstart_Setter_(mthis, __arg_0) => mthis["onstart"] = __arg_0;
+  onstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "onstart", __arg_0);
 
-  serviceURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "serviceURI");
+  serviceURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognition */, "serviceURI");
 
-  serviceURI_Setter_(mthis, __arg_0) => mthis["serviceURI"] = __arg_0;
+  serviceURI_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechRecognition */, "serviceURI", __arg_0);
 
-  abort_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "abort", []);
+  abort_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SpeechRecognition */, "abort", []);
 
-  start_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "start", []);
+  start_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SpeechRecognition */, "start", []);
 
-  stop_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stop", []);
+  stop_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SpeechRecognition */, "stop", []);
 
 }
 
 class BlinkSpeechRecognitionAlternative {
   static final instance = new BlinkSpeechRecognitionAlternative();
 
-  confidence_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "confidence");
+  confidence_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognitionAlternative */, "confidence");
 
-  transcript_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "transcript");
+  transcript_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognitionAlternative */, "transcript");
 
 }
 
 class BlinkSpeechRecognitionError extends BlinkEvent {
   static final instance = new BlinkSpeechRecognitionError();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SpeechRecognitionError"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("SpeechRecognitionError");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SpeechRecognitionError"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("SpeechRecognitionError", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SpeechRecognitionError"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("SpeechRecognitionError", [__arg_0, __arg_1]);
 
-  error_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "error");
+  error_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognitionError */, "error");
 
-  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "message");
+  message_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognitionError */, "message");
 
 }
 
 class BlinkSpeechRecognitionEvent extends BlinkEvent {
   static final instance = new BlinkSpeechRecognitionEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SpeechRecognitionEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("SpeechRecognitionEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SpeechRecognitionEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("SpeechRecognitionEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SpeechRecognitionEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("SpeechRecognitionEvent", [__arg_0, __arg_1]);
 
-  emma_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "emma");
+  emma_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognitionEvent */, "emma");
 
-  interpretation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "interpretation");
+  interpretation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognitionEvent */, "interpretation");
 
-  resultIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "resultIndex");
+  resultIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognitionEvent */, "resultIndex");
 
-  results_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "results");
+  results_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognitionEvent */, "results");
 
 }
 
 class BlinkSpeechRecognitionResult {
   static final instance = new BlinkSpeechRecognitionResult();
 
-  isFinal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "isFinal");
+  isFinal_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognitionResult */, "isFinal");
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognitionResult */, "length");
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SpeechRecognitionResult */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SpeechRecognitionResult */, "item", [__arg_0]);
 
 }
 
 class BlinkSpeechRecognitionResultList {
   static final instance = new BlinkSpeechRecognitionResultList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechRecognitionResultList */, "length");
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SpeechRecognitionResultList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SpeechRecognitionResultList */, "item", [__arg_0]);
 
 }
 
 class BlinkSpeechSynthesis extends BlinkEventTarget {
   static final instance = new BlinkSpeechSynthesis();
 
-  onvoiceschanged_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onvoiceschanged");
+  onvoiceschanged_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesis */, "onvoiceschanged");
 
-  onvoiceschanged_Setter_(mthis, __arg_0) => mthis["onvoiceschanged"] = __arg_0;
+  onvoiceschanged_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechSynthesis */, "onvoiceschanged", __arg_0);
 
-  paused_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "paused");
+  paused_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesis */, "paused");
 
-  pending_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pending");
+  pending_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesis */, "pending");
 
-  speaking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "speaking");
+  speaking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesis */, "speaking");
 
-  cancel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cancel", []);
+  cancel_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SpeechSynthesis */, "cancel", []);
 
-  getVoices_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getVoices", []);
+  getVoices_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SpeechSynthesis */, "getVoices", []);
 
-  pause_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "pause", []);
+  pause_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SpeechSynthesis */, "pause", []);
 
-  resume_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "resume", []);
+  resume_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SpeechSynthesis */, "resume", []);
 
-  speak_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "speak", []);
+  speak_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SpeechSynthesis */, "speak", []);
 
-  speak_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "speak", [__arg_0]);
+  speak_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SpeechSynthesis */, "speak", [__arg_0]);
 
 }
 
 class BlinkSpeechSynthesisEvent extends BlinkEvent {
   static final instance = new BlinkSpeechSynthesisEvent();
 
-  charIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "charIndex");
+  charIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisEvent */, "charIndex");
 
-  elapsedTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "elapsedTime");
+  elapsedTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisEvent */, "elapsedTime");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisEvent */, "name");
 
-  utterance_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "utterance");
+  utterance_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisEvent */, "utterance");
 
 }
 
 class BlinkSpeechSynthesisUtterance extends BlinkEventTarget {
   static final instance = new BlinkSpeechSynthesisUtterance();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SpeechSynthesisUtterance"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("SpeechSynthesisUtterance");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SpeechSynthesisUtterance"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("SpeechSynthesisUtterance", [__arg_0]);
 
-  lang_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lang");
+  lang_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisUtterance */, "lang");
 
-  lang_Setter_(mthis, __arg_0) => mthis["lang"] = __arg_0;
+  lang_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechSynthesisUtterance */, "lang", __arg_0);
 
-  onboundary_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onboundary");
+  onboundary_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisUtterance */, "onboundary");
 
-  onboundary_Setter_(mthis, __arg_0) => mthis["onboundary"] = __arg_0;
+  onboundary_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechSynthesisUtterance */, "onboundary", __arg_0);
 
-  onend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onend");
+  onend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisUtterance */, "onend");
 
-  onend_Setter_(mthis, __arg_0) => mthis["onend"] = __arg_0;
+  onend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechSynthesisUtterance */, "onend", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisUtterance */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechSynthesisUtterance */, "onerror", __arg_0);
 
-  onmark_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmark");
+  onmark_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisUtterance */, "onmark");
 
-  onmark_Setter_(mthis, __arg_0) => mthis["onmark"] = __arg_0;
+  onmark_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechSynthesisUtterance */, "onmark", __arg_0);
 
-  onpause_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpause");
+  onpause_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisUtterance */, "onpause");
 
-  onpause_Setter_(mthis, __arg_0) => mthis["onpause"] = __arg_0;
+  onpause_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechSynthesisUtterance */, "onpause", __arg_0);
 
-  onresume_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onresume");
+  onresume_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisUtterance */, "onresume");
 
-  onresume_Setter_(mthis, __arg_0) => mthis["onresume"] = __arg_0;
+  onresume_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechSynthesisUtterance */, "onresume", __arg_0);
 
-  onstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstart");
+  onstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisUtterance */, "onstart");
 
-  onstart_Setter_(mthis, __arg_0) => mthis["onstart"] = __arg_0;
+  onstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechSynthesisUtterance */, "onstart", __arg_0);
 
-  pitch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pitch");
+  pitch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisUtterance */, "pitch");
 
-  pitch_Setter_(mthis, __arg_0) => mthis["pitch"] = __arg_0;
+  pitch_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechSynthesisUtterance */, "pitch", __arg_0);
 
-  rate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rate");
+  rate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisUtterance */, "rate");
 
-  rate_Setter_(mthis, __arg_0) => mthis["rate"] = __arg_0;
+  rate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechSynthesisUtterance */, "rate", __arg_0);
 
-  text_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "text");
+  text_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisUtterance */, "text");
 
-  text_Setter_(mthis, __arg_0) => mthis["text"] = __arg_0;
+  text_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechSynthesisUtterance */, "text", __arg_0);
 
-  voice_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "voice");
+  voice_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisUtterance */, "voice");
 
-  voice_Setter_(mthis, __arg_0) => mthis["voice"] = __arg_0;
+  voice_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechSynthesisUtterance */, "voice", __arg_0);
 
-  volume_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "volume");
+  volume_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisUtterance */, "volume");
 
-  volume_Setter_(mthis, __arg_0) => mthis["volume"] = __arg_0;
+  volume_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* SpeechSynthesisUtterance */, "volume", __arg_0);
 
 }
 
 class BlinkSpeechSynthesisVoice {
   static final instance = new BlinkSpeechSynthesisVoice();
 
-  default_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "default");
+  default_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisVoice */, "default");
 
-  lang_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "lang");
+  lang_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisVoice */, "lang");
 
-  localService_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "localService");
+  localService_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisVoice */, "localService");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisVoice */, "name");
 
-  voiceURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "voiceURI");
+  voiceURI_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SpeechSynthesisVoice */, "voiceURI");
 
 }
 
 class BlinkStashedMessagePort extends BlinkMessagePort {
   static final instance = new BlinkStashedMessagePort();
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StashedMessagePort */, "name");
 
 }
 
 class BlinkStashedPortCollection extends BlinkEventTarget {
   static final instance = new BlinkStashedPortCollection();
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StashedPortCollection */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* StashedPortCollection */, "onmessage", __arg_0);
 
-  add_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "add", []);
+  add_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* StashedPortCollection */, "add", []);
 
-  add_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "add", [__arg_0]);
+  add_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* StashedPortCollection */, "add", [__arg_0]);
 
-  add_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "add", [__arg_0, __arg_1]);
+  add_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* StashedPortCollection */, "add", [__arg_0, __arg_1]);
 
 }
 
 class BlinkStereoPannerNode extends BlinkAudioNode {
   static final instance = new BlinkStereoPannerNode();
 
-  pan_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pan");
+  pan_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StereoPannerNode */, "pan");
 
 }
 
 class BlinkStorage {
   static final instance = new BlinkStorage();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Storage */, "length");
 
-  $__delete___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__delete__", [__arg_0]);
+  $__delete___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Storage */, "__delete__", [__arg_0]);
 
-  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__getter__", [__arg_0]);
+  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Storage */, "__getter__", [__arg_0]);
 
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "__setter__", [__arg_0, __arg_1]);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Storage */, "__setter__", [__arg_0, __arg_1]);
 
-  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clear", []);
+  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Storage */, "clear", []);
 
-  getItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getItem", []);
+  getItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Storage */, "getItem", []);
 
-  getItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getItem", [__arg_0]);
+  getItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Storage */, "getItem", [__arg_0]);
 
-  key_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "key", []);
+  key_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Storage */, "key", []);
 
-  key_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "key", [__arg_0]);
+  key_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Storage */, "key", [__arg_0]);
 
-  removeItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeItem", []);
+  removeItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Storage */, "removeItem", []);
 
-  removeItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeItem", [__arg_0]);
+  removeItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Storage */, "removeItem", [__arg_0]);
 
-  setItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setItem", []);
+  setItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Storage */, "setItem", []);
 
-  setItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setItem", [__arg_0]);
+  setItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Storage */, "setItem", [__arg_0]);
 
-  setItem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setItem", [__arg_0, __arg_1]);
+  setItem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Storage */, "setItem", [__arg_0, __arg_1]);
 
 }
 
 class BlinkStorageErrorCallback {
   static final instance = new BlinkStorageErrorCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* StorageErrorCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* StorageErrorCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkStorageEvent extends BlinkEvent {
   static final instance = new BlinkStorageEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "StorageEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("StorageEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "StorageEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("StorageEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "StorageEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("StorageEvent", [__arg_0, __arg_1]);
 
-  key_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "key");
+  key_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StorageEvent */, "key");
 
-  newValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "newValue");
+  newValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StorageEvent */, "newValue");
 
-  oldValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oldValue");
+  oldValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StorageEvent */, "oldValue");
 
-  storageArea_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "storageArea");
+  storageArea_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StorageEvent */, "storageArea");
 
-  url_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "url");
+  url_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StorageEvent */, "url");
 
-  initStorageEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "initStorageEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* StorageEvent */, "initStorageEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  initStorageEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "initStorageEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* StorageEvent */, "initStorageEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  initStorageEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "initStorageEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* StorageEvent */, "initStorageEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
 }
 
 class BlinkStorageInfo {
   static final instance = new BlinkStorageInfo();
 
-  quota_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "quota");
+  quota_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StorageInfo */, "quota");
 
-  usage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "usage");
+  usage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StorageInfo */, "usage");
 
 }
 
 class BlinkStorageQuota {
   static final instance = new BlinkStorageQuota();
 
-  supportedTypes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "supportedTypes");
+  supportedTypes_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StorageQuota */, "supportedTypes");
 
-  queryInfo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "queryInfo", []);
+  queryInfo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* StorageQuota */, "queryInfo", []);
 
-  queryInfo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "queryInfo", [__arg_0]);
+  queryInfo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* StorageQuota */, "queryInfo", [__arg_0]);
 
-  requestPersistentQuota_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "requestPersistentQuota", []);
+  requestPersistentQuota_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* StorageQuota */, "requestPersistentQuota", []);
 
-  requestPersistentQuota_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "requestPersistentQuota", [__arg_0]);
+  requestPersistentQuota_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* StorageQuota */, "requestPersistentQuota", [__arg_0]);
 
 }
 
 class BlinkStorageQuotaCallback {
   static final instance = new BlinkStorageQuotaCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* StorageQuotaCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* StorageQuotaCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkStorageUsageCallback {
   static final instance = new BlinkStorageUsageCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* StorageUsageCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* StorageUsageCallback */, "handleEvent", [__arg_0]);
 
-  handleEvent_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0, __arg_1]);
+  handleEvent_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* StorageUsageCallback */, "handleEvent", [__arg_0, __arg_1]);
 
 }
 
 class BlinkStream {
   static final instance = new BlinkStream();
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Stream */, "type");
 
 }
 
 class BlinkStringCallback {
   static final instance = new BlinkStringCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* StringCallback */, "handleEvent", []);
 
-  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", [__arg_0]);
+  handleEvent_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* StringCallback */, "handleEvent", [__arg_0]);
 
 }
 
 class BlinkStyleMedia {
   static final instance = new BlinkStyleMedia();
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StyleMedia */, "type");
 
-  matchMedium_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "matchMedium", []);
+  matchMedium_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* StyleMedia */, "matchMedium", []);
 
-  matchMedium_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "matchMedium", [__arg_0]);
+  matchMedium_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* StyleMedia */, "matchMedium", [__arg_0]);
 
 }
 
 class BlinkStyleSheet {
   static final instance = new BlinkStyleSheet();
 
-  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "disabled");
+  disabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StyleSheet */, "disabled");
 
-  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
+  disabled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* StyleSheet */, "disabled", __arg_0);
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StyleSheet */, "href");
 
-  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "media");
+  media_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StyleSheet */, "media");
 
-  ownerNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ownerNode");
+  ownerNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StyleSheet */, "ownerNode");
 
-  parentStyleSheet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "parentStyleSheet");
+  parentStyleSheet_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StyleSheet */, "parentStyleSheet");
 
-  title_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "title");
+  title_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StyleSheet */, "title");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StyleSheet */, "type");
 
 }
 
 class BlinkStyleSheetList {
   static final instance = new BlinkStyleSheetList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* StyleSheetList */, "length");
 
-  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__getter__", [__arg_0]);
+  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* StyleSheetList */, "__getter__", [__arg_0]);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* StyleSheetList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* StyleSheetList */, "item", [__arg_0]);
 
 }
 
 class BlinkSubtleCrypto {
   static final instance = new BlinkSubtleCrypto();
 
-  decrypt_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "decrypt", [__arg_0]);
+  decrypt_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "decrypt", [__arg_0]);
 
-  decrypt_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "decrypt", [__arg_0, __arg_1]);
+  decrypt_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "decrypt", [__arg_0, __arg_1]);
 
-  decrypt_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "decrypt", [__arg_0, __arg_1, __arg_2]);
+  decrypt_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "decrypt", [__arg_0, __arg_1, __arg_2]);
 
-  deriveBits_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deriveBits", [__arg_0]);
+  deriveBits_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "deriveBits", [__arg_0]);
 
-  deriveBits_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "deriveBits", [__arg_0, __arg_1]);
+  deriveBits_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "deriveBits", [__arg_0, __arg_1]);
 
-  deriveBits_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "deriveBits", [__arg_0, __arg_1, __arg_2]);
+  deriveBits_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "deriveBits", [__arg_0, __arg_1, __arg_2]);
 
-  digest_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "digest", []);
+  digest_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "digest", []);
 
-  digest_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "digest", [__arg_0]);
+  digest_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "digest", [__arg_0]);
 
-  digest_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "digest", [__arg_0, __arg_1]);
+  digest_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "digest", [__arg_0, __arg_1]);
 
-  encrypt_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "encrypt", [__arg_0]);
+  encrypt_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "encrypt", [__arg_0]);
 
-  encrypt_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "encrypt", [__arg_0, __arg_1]);
+  encrypt_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "encrypt", [__arg_0, __arg_1]);
 
-  encrypt_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "encrypt", [__arg_0, __arg_1, __arg_2]);
+  encrypt_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "encrypt", [__arg_0, __arg_1, __arg_2]);
 
-  exportKey_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "exportKey", []);
+  exportKey_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "exportKey", []);
 
-  exportKey_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "exportKey", [__arg_0]);
+  exportKey_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "exportKey", [__arg_0]);
 
-  exportKey_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "exportKey", [__arg_0, __arg_1]);
+  exportKey_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "exportKey", [__arg_0, __arg_1]);
 
-  sign_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "sign", [__arg_0]);
+  sign_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "sign", [__arg_0]);
 
-  sign_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "sign", [__arg_0, __arg_1]);
+  sign_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "sign", [__arg_0, __arg_1]);
 
-  sign_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "sign", [__arg_0, __arg_1, __arg_2]);
+  sign_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "sign", [__arg_0, __arg_1, __arg_2]);
 
-  verify_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "verify", [__arg_0, __arg_1]);
+  verify_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "verify", [__arg_0, __arg_1]);
 
-  verify_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "verify", [__arg_0, __arg_1, __arg_2]);
+  verify_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "verify", [__arg_0, __arg_1, __arg_2]);
 
-  verify_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "verify", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  verify_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "verify", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  wrapKey_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "wrapKey", [__arg_0, __arg_1]);
+  wrapKey_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "wrapKey", [__arg_0, __arg_1]);
 
-  wrapKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "wrapKey", [__arg_0, __arg_1, __arg_2]);
+  wrapKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "wrapKey", [__arg_0, __arg_1, __arg_2]);
 
-  wrapKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "wrapKey", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  wrapKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* SubtleCrypto */, "wrapKey", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
 class BlinkSyncEvent extends BlinkExtendableEvent {
   static final instance = new BlinkSyncEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SyncEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("SyncEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SyncEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("SyncEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "SyncEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("SyncEvent", [__arg_0, __arg_1]);
 
-  registration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "registration");
+  registration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SyncEvent */, "registration");
 
 }
 
 class BlinkSyncManager {
   static final instance = new BlinkSyncManager();
 
-  getRegistration_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getRegistration", []);
+  getRegistration_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SyncManager */, "getRegistration", []);
 
-  getRegistration_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getRegistration", [__arg_0]);
+  getRegistration_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SyncManager */, "getRegistration", [__arg_0]);
 
-  getRegistrations_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getRegistrations", []);
+  getRegistrations_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SyncManager */, "getRegistrations", []);
 
-  permissionState_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "permissionState", []);
+  permissionState_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SyncManager */, "permissionState", []);
 
-  register_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "register", []);
+  register_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SyncManager */, "register", []);
 
-  register_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "register", [__arg_0]);
+  register_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* SyncManager */, "register", [__arg_0]);
 
 }
 
 class BlinkSyncRegistration {
   static final instance = new BlinkSyncRegistration();
 
-  tag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "tag");
+  tag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* SyncRegistration */, "tag");
 
-  unregister_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "unregister", []);
+  unregister_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* SyncRegistration */, "unregister", []);
 
 }
 
 class BlinkText extends BlinkCharacterData {
   static final instance = new BlinkText();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Text"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("Text");
 
-  wholeText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "wholeText");
+  wholeText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Text */, "wholeText");
 
-  getDestinationInsertionPoints_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getDestinationInsertionPoints", []);
+  getDestinationInsertionPoints_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Text */, "getDestinationInsertionPoints", []);
 
-  splitText_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "splitText", []);
+  splitText_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Text */, "splitText", []);
 
-  splitText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "splitText", [__arg_0]);
+  splitText_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Text */, "splitText", [__arg_0]);
 
 }
 
 class BlinkTextEvent extends BlinkUIEvent {
   static final instance = new BlinkTextEvent();
 
-  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "data");
+  data_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextEvent */, "data");
 
-  initTextEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "initTextEvent", [__arg_0, __arg_1, __arg_2]);
+  initTextEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* TextEvent */, "initTextEvent", [__arg_0, __arg_1, __arg_2]);
 
-  initTextEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "initTextEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  initTextEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* TextEvent */, "initTextEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  initTextEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "initTextEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  initTextEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* TextEvent */, "initTextEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
 }
 
 class BlinkTextMetrics {
   static final instance = new BlinkTextMetrics();
 
-  actualBoundingBoxAscent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "actualBoundingBoxAscent");
+  actualBoundingBoxAscent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextMetrics */, "actualBoundingBoxAscent");
 
-  actualBoundingBoxDescent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "actualBoundingBoxDescent");
+  actualBoundingBoxDescent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextMetrics */, "actualBoundingBoxDescent");
 
-  actualBoundingBoxLeft_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "actualBoundingBoxLeft");
+  actualBoundingBoxLeft_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextMetrics */, "actualBoundingBoxLeft");
 
-  actualBoundingBoxRight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "actualBoundingBoxRight");
+  actualBoundingBoxRight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextMetrics */, "actualBoundingBoxRight");
 
-  alphabeticBaseline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "alphabeticBaseline");
+  alphabeticBaseline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextMetrics */, "alphabeticBaseline");
 
-  emHeightAscent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "emHeightAscent");
+  emHeightAscent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextMetrics */, "emHeightAscent");
 
-  emHeightDescent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "emHeightDescent");
+  emHeightDescent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextMetrics */, "emHeightDescent");
 
-  fontBoundingBoxAscent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fontBoundingBoxAscent");
+  fontBoundingBoxAscent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextMetrics */, "fontBoundingBoxAscent");
 
-  fontBoundingBoxDescent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "fontBoundingBoxDescent");
+  fontBoundingBoxDescent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextMetrics */, "fontBoundingBoxDescent");
 
-  hangingBaseline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hangingBaseline");
+  hangingBaseline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextMetrics */, "hangingBaseline");
 
-  ideographicBaseline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ideographicBaseline");
+  ideographicBaseline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextMetrics */, "ideographicBaseline");
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextMetrics */, "width");
 
 }
 
 class BlinkTextTrack extends BlinkEventTarget {
   static final instance = new BlinkTextTrack();
 
-  activeCues_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "activeCues");
+  activeCues_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrack */, "activeCues");
 
-  cues_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "cues");
+  cues_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrack */, "cues");
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrack */, "id");
 
-  kind_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "kind");
+  kind_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrack */, "kind");
 
-  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "label");
+  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrack */, "label");
 
-  language_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "language");
+  language_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrack */, "language");
 
-  mode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "mode");
+  mode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrack */, "mode");
 
-  mode_Setter_(mthis, __arg_0) => mthis["mode"] = __arg_0;
+  mode_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* TextTrack */, "mode", __arg_0);
 
-  oncuechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncuechange");
+  oncuechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrack */, "oncuechange");
 
-  oncuechange_Setter_(mthis, __arg_0) => mthis["oncuechange"] = __arg_0;
+  oncuechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* TextTrack */, "oncuechange", __arg_0);
 
-  regions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "regions");
+  regions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrack */, "regions");
 
-  addCue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "addCue", []);
+  addCue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TextTrack */, "addCue", []);
 
-  addCue_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addCue", [__arg_0]);
+  addCue_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* TextTrack */, "addCue", [__arg_0]);
 
-  addRegion_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "addRegion", []);
+  addRegion_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TextTrack */, "addRegion", []);
 
-  addRegion_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "addRegion", [__arg_0]);
+  addRegion_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* TextTrack */, "addRegion", [__arg_0]);
 
-  removeCue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeCue", []);
+  removeCue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TextTrack */, "removeCue", []);
 
-  removeCue_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeCue", [__arg_0]);
+  removeCue_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* TextTrack */, "removeCue", [__arg_0]);
 
-  removeRegion_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeRegion", []);
+  removeRegion_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TextTrack */, "removeRegion", []);
 
-  removeRegion_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeRegion", [__arg_0]);
+  removeRegion_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* TextTrack */, "removeRegion", [__arg_0]);
 
 }
 
 class BlinkTextTrackCue extends BlinkEventTarget {
   static final instance = new BlinkTextTrackCue();
 
-  endTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "endTime");
+  endTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrackCue */, "endTime");
 
-  endTime_Setter_(mthis, __arg_0) => mthis["endTime"] = __arg_0;
+  endTime_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* TextTrackCue */, "endTime", __arg_0);
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrackCue */, "id");
 
-  id_Setter_(mthis, __arg_0) => mthis["id"] = __arg_0;
+  id_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* TextTrackCue */, "id", __arg_0);
 
-  onenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onenter");
+  onenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrackCue */, "onenter");
 
-  onenter_Setter_(mthis, __arg_0) => mthis["onenter"] = __arg_0;
+  onenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* TextTrackCue */, "onenter", __arg_0);
 
-  onexit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onexit");
+  onexit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrackCue */, "onexit");
 
-  onexit_Setter_(mthis, __arg_0) => mthis["onexit"] = __arg_0;
+  onexit_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* TextTrackCue */, "onexit", __arg_0);
 
-  pauseOnExit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pauseOnExit");
+  pauseOnExit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrackCue */, "pauseOnExit");
 
-  pauseOnExit_Setter_(mthis, __arg_0) => mthis["pauseOnExit"] = __arg_0;
+  pauseOnExit_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* TextTrackCue */, "pauseOnExit", __arg_0);
 
-  startTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "startTime");
+  startTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrackCue */, "startTime");
 
-  startTime_Setter_(mthis, __arg_0) => mthis["startTime"] = __arg_0;
+  startTime_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* TextTrackCue */, "startTime", __arg_0);
 
-  track_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "track");
+  track_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrackCue */, "track");
 
 }
 
 class BlinkTextTrackCueList {
   static final instance = new BlinkTextTrackCueList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrackCueList */, "length");
 
-  getCueById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getCueById", []);
+  getCueById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TextTrackCueList */, "getCueById", []);
 
-  getCueById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getCueById", [__arg_0]);
+  getCueById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* TextTrackCueList */, "getCueById", [__arg_0]);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TextTrackCueList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* TextTrackCueList */, "item", [__arg_0]);
 
 }
 
 class BlinkTextTrackList extends BlinkEventTarget {
   static final instance = new BlinkTextTrackList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrackList */, "length");
 
-  onaddtrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onaddtrack");
+  onaddtrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrackList */, "onaddtrack");
 
-  onaddtrack_Setter_(mthis, __arg_0) => mthis["onaddtrack"] = __arg_0;
+  onaddtrack_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* TextTrackList */, "onaddtrack", __arg_0);
 
-  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onchange");
+  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrackList */, "onchange");
 
-  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
+  onchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* TextTrackList */, "onchange", __arg_0);
 
-  onremovetrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onremovetrack");
+  onremovetrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TextTrackList */, "onremovetrack");
 
-  onremovetrack_Setter_(mthis, __arg_0) => mthis["onremovetrack"] = __arg_0;
+  onremovetrack_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* TextTrackList */, "onremovetrack", __arg_0);
 
-  getTrackById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getTrackById", []);
+  getTrackById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TextTrackList */, "getTrackById", []);
 
-  getTrackById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getTrackById", [__arg_0]);
+  getTrackById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* TextTrackList */, "getTrackById", [__arg_0]);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TextTrackList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* TextTrackList */, "item", [__arg_0]);
 
 }
 
 class BlinkTimeRanges {
   static final instance = new BlinkTimeRanges();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TimeRanges */, "length");
 
-  end_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "end", []);
+  end_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TimeRanges */, "end", []);
 
-  end_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "end", [__arg_0]);
+  end_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* TimeRanges */, "end", [__arg_0]);
 
-  start_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "start", []);
+  start_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TimeRanges */, "start", []);
 
-  start_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "start", [__arg_0]);
+  start_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* TimeRanges */, "start", [__arg_0]);
 
 }
 
 class BlinkTimeoutHandler {
   static final instance = new BlinkTimeoutHandler();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TimeoutHandler */, "handleEvent", []);
 
 }
 
 class BlinkTouch {
   static final instance = new BlinkTouch();
 
-  clientX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "clientX");
+  clientX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Touch */, "clientX");
 
-  clientY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "clientY");
+  clientY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Touch */, "clientY");
 
-  force_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "force");
+  force_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Touch */, "force");
 
-  identifier_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "identifier");
+  identifier_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Touch */, "identifier");
 
-  pageX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pageX");
+  pageX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Touch */, "pageX");
 
-  pageY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pageY");
+  pageY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Touch */, "pageY");
 
-  radiusX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "radiusX");
+  radiusX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Touch */, "radiusX");
 
-  radiusY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "radiusY");
+  radiusY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Touch */, "radiusY");
 
-  rotationAngle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rotationAngle");
+  rotationAngle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Touch */, "rotationAngle");
 
-  screenX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "screenX");
+  screenX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Touch */, "screenX");
 
-  screenY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "screenY");
+  screenY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Touch */, "screenY");
 
-  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "target");
+  target_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Touch */, "target");
 
-  webkitForce_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitForce");
+  webkitForce_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Touch */, "webkitForce");
 
-  webkitRadiusX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitRadiusX");
+  webkitRadiusX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Touch */, "webkitRadiusX");
 
-  webkitRadiusY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitRadiusY");
+  webkitRadiusY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Touch */, "webkitRadiusY");
 
-  webkitRotationAngle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitRotationAngle");
+  webkitRotationAngle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Touch */, "webkitRotationAngle");
 
 }
 
 class BlinkTouchEvent extends BlinkUIEvent {
   static final instance = new BlinkTouchEvent();
 
-  altKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "altKey");
+  altKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TouchEvent */, "altKey");
 
-  changedTouches_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "changedTouches");
+  changedTouches_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TouchEvent */, "changedTouches");
 
-  ctrlKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ctrlKey");
+  ctrlKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TouchEvent */, "ctrlKey");
 
-  metaKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "metaKey");
+  metaKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TouchEvent */, "metaKey");
 
-  shiftKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "shiftKey");
+  shiftKey_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TouchEvent */, "shiftKey");
 
-  targetTouches_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "targetTouches");
+  targetTouches_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TouchEvent */, "targetTouches");
 
-  touches_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "touches");
+  touches_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TouchEvent */, "touches");
 
-  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) => Blink_JsNative_DomException.callMethod(mthis, "initTouchEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* TouchEvent */, "initTouchEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10]);
 
-  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) => Blink_JsNative_DomException.callMethod(mthis, "initTouchEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* TouchEvent */, "initTouchEvent", [__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_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) => Blink_JsNative_DomException.callMethod(mthis, "initTouchEvent", [__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) => Blink_JsNative_DomException.callMethod(mthis /* TouchEvent */, "initTouchEvent", [__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]);
 
 }
 
 class BlinkTouchList {
   static final instance = new BlinkTouchList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TouchList */, "length");
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TouchList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* TouchList */, "item", [__arg_0]);
 
 }
 
 class BlinkTrackDefault {
   static final instance = new BlinkTrackDefault();
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "TrackDefault"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("TrackDefault", [__arg_0, __arg_1]);
 
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "TrackDefault"), [__arg_0, __arg_1, __arg_2]);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callConstructor("TrackDefault", [__arg_0, __arg_1, __arg_2]);
 
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "TrackDefault"), [__arg_0, __arg_1, __arg_2, __arg_3]);
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callConstructor("TrackDefault", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "TrackDefault"), [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callConstructor("TrackDefault", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  byteStreamTrackID_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "byteStreamTrackID");
+  byteStreamTrackID_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TrackDefault */, "byteStreamTrackID");
 
-  kinds_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "kinds");
+  kinds_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TrackDefault */, "kinds");
 
-  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "label");
+  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TrackDefault */, "label");
 
-  language_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "language");
+  language_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TrackDefault */, "language");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TrackDefault */, "type");
 
 }
 
 class BlinkTrackDefaultList {
   static final instance = new BlinkTrackDefaultList();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "TrackDefaultList"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("TrackDefaultList");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "TrackDefaultList"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("TrackDefaultList", [__arg_0]);
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TrackDefaultList */, "length");
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TrackDefaultList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* TrackDefaultList */, "item", [__arg_0]);
 
 }
 
 class BlinkTrackEvent extends BlinkEvent {
   static final instance = new BlinkTrackEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "TrackEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("TrackEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "TrackEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("TrackEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "TrackEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("TrackEvent", [__arg_0, __arg_1]);
 
-  track_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "track");
+  track_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TrackEvent */, "track");
 
 }
 
 class BlinkTransitionEvent extends BlinkEvent {
   static final instance = new BlinkTransitionEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "TransitionEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("TransitionEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "TransitionEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("TransitionEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "TransitionEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("TransitionEvent", [__arg_0, __arg_1]);
 
-  elapsedTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "elapsedTime");
+  elapsedTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TransitionEvent */, "elapsedTime");
 
-  propertyName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "propertyName");
+  propertyName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TransitionEvent */, "propertyName");
 
-  pseudoElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pseudoElement");
+  pseudoElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TransitionEvent */, "pseudoElement");
 
 }
 
 class BlinkTreeWalker {
   static final instance = new BlinkTreeWalker();
 
-  currentNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "currentNode");
+  currentNode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TreeWalker */, "currentNode");
 
-  currentNode_Setter_(mthis, __arg_0) => mthis["currentNode"] = __arg_0;
+  currentNode_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* TreeWalker */, "currentNode", __arg_0);
 
-  filter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "filter");
+  filter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TreeWalker */, "filter");
 
-  root_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "root");
+  root_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TreeWalker */, "root");
 
-  whatToShow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "whatToShow");
+  whatToShow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* TreeWalker */, "whatToShow");
 
-  firstChild_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "firstChild", []);
+  firstChild_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TreeWalker */, "firstChild", []);
 
-  lastChild_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "lastChild", []);
+  lastChild_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TreeWalker */, "lastChild", []);
 
-  nextNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "nextNode", []);
+  nextNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TreeWalker */, "nextNode", []);
 
-  nextSibling_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "nextSibling", []);
+  nextSibling_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TreeWalker */, "nextSibling", []);
 
-  parentNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "parentNode", []);
+  parentNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TreeWalker */, "parentNode", []);
 
-  previousNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "previousNode", []);
+  previousNode_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TreeWalker */, "previousNode", []);
 
-  previousSibling_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "previousSibling", []);
+  previousSibling_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* TreeWalker */, "previousSibling", []);
 
 }
 
 class BlinkUIEvent extends BlinkEvent {
   static final instance = new BlinkUIEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "UIEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("UIEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "UIEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("UIEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "UIEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("UIEvent", [__arg_0, __arg_1]);
 
-  charCode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "charCode");
+  charCode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* UIEvent */, "charCode");
 
-  detail_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "detail");
+  detail_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* UIEvent */, "detail");
 
-  keyCode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "keyCode");
+  keyCode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* UIEvent */, "keyCode");
 
-  sourceDevice_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sourceDevice");
+  sourceDevice_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* UIEvent */, "sourceDevice");
 
-  view_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "view");
+  view_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* UIEvent */, "view");
 
-  which_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "which");
+  which_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* UIEvent */, "which");
 
-  initUIEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "initUIEvent", [__arg_0, __arg_1, __arg_2]);
+  initUIEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* UIEvent */, "initUIEvent", [__arg_0, __arg_1, __arg_2]);
 
-  initUIEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "initUIEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  initUIEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* UIEvent */, "initUIEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  initUIEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "initUIEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  initUIEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* UIEvent */, "initUIEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
 }
 
 class BlinkURL {
   static final instance = new BlinkURL();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "URL"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("URL");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "URL"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("URL", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "URL"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("URL", [__arg_0, __arg_1]);
 
-  createObjectURL_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "URL"), "createObjectURL", []);
+  createObjectURL_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "URL") /* URL */, "createObjectURL", []);
 
-  createObjectURL_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "URL"), "createObjectURL", [__arg_0]);
+  createObjectURL_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "URL") /* URL */, "createObjectURL", [__arg_0]);
 
-  revokeObjectURL_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "URL"), "revokeObjectURL", []);
+  revokeObjectURL_Callback_0_() => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "URL") /* URL */, "revokeObjectURL", []);
 
-  revokeObjectURL_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "URL"), "revokeObjectURL", [__arg_0]);
+  revokeObjectURL_Callback_1_(__arg_0) => Blink_JsNative_DomException.callMethod(Blink_JsNative_DomException.getProperty(js.context, "URL") /* URL */, "revokeObjectURL", [__arg_0]);
 
-  hash_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hash");
+  hash_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "hash");
 
-  hash_Setter_(mthis, __arg_0) => mthis["hash"] = __arg_0;
+  hash_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "hash", __arg_0);
 
-  host_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "host");
+  host_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "host");
 
-  host_Setter_(mthis, __arg_0) => mthis["host"] = __arg_0;
+  host_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "host", __arg_0);
 
-  hostname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hostname");
+  hostname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "hostname");
 
-  hostname_Setter_(mthis, __arg_0) => mthis["hostname"] = __arg_0;
+  hostname_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "hostname", __arg_0);
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "href");
 
-  href_Setter_(mthis, __arg_0) => mthis["href"] = __arg_0;
+  href_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "href", __arg_0);
 
-  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "origin");
+  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "origin");
 
-  password_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "password");
+  password_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "password");
 
-  password_Setter_(mthis, __arg_0) => mthis["password"] = __arg_0;
+  password_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "password", __arg_0);
 
-  pathname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pathname");
+  pathname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "pathname");
 
-  pathname_Setter_(mthis, __arg_0) => mthis["pathname"] = __arg_0;
+  pathname_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "pathname", __arg_0);
 
-  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "port");
+  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "port");
 
-  port_Setter_(mthis, __arg_0) => mthis["port"] = __arg_0;
+  port_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "port", __arg_0);
 
-  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "protocol");
+  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "protocol");
 
-  protocol_Setter_(mthis, __arg_0) => mthis["protocol"] = __arg_0;
+  protocol_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "protocol", __arg_0);
 
-  search_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "search");
+  search_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "search");
 
-  search_Setter_(mthis, __arg_0) => mthis["search"] = __arg_0;
+  search_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "search", __arg_0);
 
-  username_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "username");
+  username_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "username");
 
-  username_Setter_(mthis, __arg_0) => mthis["username"] = __arg_0;
+  username_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "username", __arg_0);
 
-  toString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "toString", []);
+  toString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* URLUtils */, "toString", []);
 
 }
 
 class BlinkURLUtils {
   static final instance = new BlinkURLUtils();
 
-  hash_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hash");
+  hash_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "hash");
 
-  hash_Setter_(mthis, __arg_0) => mthis["hash"] = __arg_0;
+  hash_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "hash", __arg_0);
 
-  host_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "host");
+  host_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "host");
 
-  host_Setter_(mthis, __arg_0) => mthis["host"] = __arg_0;
+  host_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "host", __arg_0);
 
-  hostname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hostname");
+  hostname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "hostname");
 
-  hostname_Setter_(mthis, __arg_0) => mthis["hostname"] = __arg_0;
+  hostname_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "hostname", __arg_0);
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "href");
 
-  href_Setter_(mthis, __arg_0) => mthis["href"] = __arg_0;
+  href_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "href", __arg_0);
 
-  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "origin");
+  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "origin");
 
-  password_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "password");
+  password_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "password");
 
-  password_Setter_(mthis, __arg_0) => mthis["password"] = __arg_0;
+  password_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "password", __arg_0);
 
-  pathname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pathname");
+  pathname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "pathname");
 
-  pathname_Setter_(mthis, __arg_0) => mthis["pathname"] = __arg_0;
+  pathname_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "pathname", __arg_0);
 
-  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "port");
+  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "port");
 
-  port_Setter_(mthis, __arg_0) => mthis["port"] = __arg_0;
+  port_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "port", __arg_0);
 
-  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "protocol");
+  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "protocol");
 
-  protocol_Setter_(mthis, __arg_0) => mthis["protocol"] = __arg_0;
+  protocol_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "protocol", __arg_0);
 
-  search_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "search");
+  search_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "search");
 
-  search_Setter_(mthis, __arg_0) => mthis["search"] = __arg_0;
+  search_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "search", __arg_0);
 
-  username_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "username");
+  username_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtils */, "username");
 
-  username_Setter_(mthis, __arg_0) => mthis["username"] = __arg_0;
+  username_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* URLUtils */, "username", __arg_0);
 
-  toString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "toString", []);
+  toString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* URLUtils */, "toString", []);
 
 }
 
 class BlinkURLUtilsReadOnly {
   static final instance = new BlinkURLUtilsReadOnly();
 
-  hash_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hash");
+  hash_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "hash");
 
-  host_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "host");
+  host_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "host");
 
-  hostname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hostname");
+  hostname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "hostname");
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "href");
 
-  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "origin");
+  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "origin");
 
-  pathname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pathname");
+  pathname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "pathname");
 
-  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "port");
+  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "port");
 
-  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "protocol");
+  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "protocol");
 
-  search_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "search");
+  search_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "search");
 
-  toString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "toString", []);
+  toString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* URLUtilsReadOnly */, "toString", []);
 
 }
 
@@ -17498,2662 +17498,2662 @@
 class BlinkVRDevice {
   static final instance = new BlinkVRDevice();
 
-  deviceId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "deviceId");
+  deviceId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VRDevice */, "deviceId");
 
-  deviceName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "deviceName");
+  deviceName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VRDevice */, "deviceName");
 
-  hardwareUnitId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hardwareUnitId");
+  hardwareUnitId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VRDevice */, "hardwareUnitId");
 
 }
 
 class BlinkVREyeParameters {
   static final instance = new BlinkVREyeParameters();
 
-  currentFieldOfView_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "currentFieldOfView");
+  currentFieldOfView_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VREyeParameters */, "currentFieldOfView");
 
-  eyeTranslation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "eyeTranslation");
+  eyeTranslation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VREyeParameters */, "eyeTranslation");
 
-  maximumFieldOfView_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "maximumFieldOfView");
+  maximumFieldOfView_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VREyeParameters */, "maximumFieldOfView");
 
-  minimumFieldOfView_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "minimumFieldOfView");
+  minimumFieldOfView_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VREyeParameters */, "minimumFieldOfView");
 
-  recommendedFieldOfView_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "recommendedFieldOfView");
+  recommendedFieldOfView_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VREyeParameters */, "recommendedFieldOfView");
 
-  renderRect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "renderRect");
+  renderRect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VREyeParameters */, "renderRect");
 
 }
 
 class BlinkVRFieldOfView {
   static final instance = new BlinkVRFieldOfView();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "VRFieldOfView"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("VRFieldOfView");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "VRFieldOfView"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("VRFieldOfView", [__arg_0]);
 
-  downDegrees_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "downDegrees");
+  downDegrees_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VRFieldOfView */, "downDegrees");
 
-  downDegrees_Setter_(mthis, __arg_0) => mthis["downDegrees"] = __arg_0;
+  downDegrees_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VRFieldOfView */, "downDegrees", __arg_0);
 
-  leftDegrees_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "leftDegrees");
+  leftDegrees_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VRFieldOfView */, "leftDegrees");
 
-  leftDegrees_Setter_(mthis, __arg_0) => mthis["leftDegrees"] = __arg_0;
+  leftDegrees_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VRFieldOfView */, "leftDegrees", __arg_0);
 
-  rightDegrees_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rightDegrees");
+  rightDegrees_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VRFieldOfView */, "rightDegrees");
 
-  rightDegrees_Setter_(mthis, __arg_0) => mthis["rightDegrees"] = __arg_0;
+  rightDegrees_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VRFieldOfView */, "rightDegrees", __arg_0);
 
-  upDegrees_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "upDegrees");
+  upDegrees_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VRFieldOfView */, "upDegrees");
 
-  upDegrees_Setter_(mthis, __arg_0) => mthis["upDegrees"] = __arg_0;
+  upDegrees_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VRFieldOfView */, "upDegrees", __arg_0);
 
 }
 
 class BlinkVRPositionState {
   static final instance = new BlinkVRPositionState();
 
-  angularAcceleration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "angularAcceleration");
+  angularAcceleration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VRPositionState */, "angularAcceleration");
 
-  angularVelocity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "angularVelocity");
+  angularVelocity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VRPositionState */, "angularVelocity");
 
-  linearAcceleration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "linearAcceleration");
+  linearAcceleration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VRPositionState */, "linearAcceleration");
 
-  linearVelocity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "linearVelocity");
+  linearVelocity_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VRPositionState */, "linearVelocity");
 
-  orientation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "orientation");
+  orientation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VRPositionState */, "orientation");
 
-  position_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "position");
+  position_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VRPositionState */, "position");
 
-  timeStamp_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "timeStamp");
+  timeStamp_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VRPositionState */, "timeStamp");
 
 }
 
 class BlinkVTTCue extends BlinkTextTrackCue {
   static final instance = new BlinkVTTCue();
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "VTTCue"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("VTTCue", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "VTTCue"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("VTTCue", [__arg_0, __arg_1]);
 
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "VTTCue"), [__arg_0, __arg_1, __arg_2]);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callConstructor("VTTCue", [__arg_0, __arg_1, __arg_2]);
 
-  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "align");
+  align_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTCue */, "align");
 
-  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
+  align_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VTTCue */, "align", __arg_0);
 
-  line_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "line");
+  line_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTCue */, "line");
 
-  line_Setter_(mthis, __arg_0) => mthis["line"] = __arg_0;
+  line_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VTTCue */, "line", __arg_0);
 
-  position_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "position");
+  position_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTCue */, "position");
 
-  position_Setter_(mthis, __arg_0) => mthis["position"] = __arg_0;
+  position_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VTTCue */, "position", __arg_0);
 
-  regionId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "regionId");
+  regionId_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTCue */, "regionId");
 
-  regionId_Setter_(mthis, __arg_0) => mthis["regionId"] = __arg_0;
+  regionId_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VTTCue */, "regionId", __arg_0);
 
-  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "size");
+  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTCue */, "size");
 
-  size_Setter_(mthis, __arg_0) => mthis["size"] = __arg_0;
+  size_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VTTCue */, "size", __arg_0);
 
-  snapToLines_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "snapToLines");
+  snapToLines_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTCue */, "snapToLines");
 
-  snapToLines_Setter_(mthis, __arg_0) => mthis["snapToLines"] = __arg_0;
+  snapToLines_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VTTCue */, "snapToLines", __arg_0);
 
-  text_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "text");
+  text_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTCue */, "text");
 
-  text_Setter_(mthis, __arg_0) => mthis["text"] = __arg_0;
+  text_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VTTCue */, "text", __arg_0);
 
-  vertical_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "vertical");
+  vertical_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTCue */, "vertical");
 
-  vertical_Setter_(mthis, __arg_0) => mthis["vertical"] = __arg_0;
+  vertical_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VTTCue */, "vertical", __arg_0);
 
-  getCueAsHTML_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getCueAsHTML", []);
+  getCueAsHTML_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* VTTCue */, "getCueAsHTML", []);
 
 }
 
 class BlinkVTTRegion {
   static final instance = new BlinkVTTRegion();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "VTTRegion"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("VTTRegion");
 
-  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "height");
+  height_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTRegion */, "height");
 
-  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
+  height_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VTTRegion */, "height", __arg_0);
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTRegion */, "id");
 
-  id_Setter_(mthis, __arg_0) => mthis["id"] = __arg_0;
+  id_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VTTRegion */, "id", __arg_0);
 
-  regionAnchorX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "regionAnchorX");
+  regionAnchorX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTRegion */, "regionAnchorX");
 
-  regionAnchorX_Setter_(mthis, __arg_0) => mthis["regionAnchorX"] = __arg_0;
+  regionAnchorX_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VTTRegion */, "regionAnchorX", __arg_0);
 
-  regionAnchorY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "regionAnchorY");
+  regionAnchorY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTRegion */, "regionAnchorY");
 
-  regionAnchorY_Setter_(mthis, __arg_0) => mthis["regionAnchorY"] = __arg_0;
+  regionAnchorY_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VTTRegion */, "regionAnchorY", __arg_0);
 
-  scroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scroll");
+  scroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTRegion */, "scroll");
 
-  scroll_Setter_(mthis, __arg_0) => mthis["scroll"] = __arg_0;
+  scroll_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VTTRegion */, "scroll", __arg_0);
 
-  track_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "track");
+  track_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTRegion */, "track");
 
-  viewportAnchorX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "viewportAnchorX");
+  viewportAnchorX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTRegion */, "viewportAnchorX");
 
-  viewportAnchorX_Setter_(mthis, __arg_0) => mthis["viewportAnchorX"] = __arg_0;
+  viewportAnchorX_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VTTRegion */, "viewportAnchorX", __arg_0);
 
-  viewportAnchorY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "viewportAnchorY");
+  viewportAnchorY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTRegion */, "viewportAnchorY");
 
-  viewportAnchorY_Setter_(mthis, __arg_0) => mthis["viewportAnchorY"] = __arg_0;
+  viewportAnchorY_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VTTRegion */, "viewportAnchorY", __arg_0);
 
-  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "width");
+  width_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTRegion */, "width");
 
-  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
+  width_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VTTRegion */, "width", __arg_0);
 
 }
 
 class BlinkVTTRegionList {
   static final instance = new BlinkVTTRegionList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VTTRegionList */, "length");
 
-  getRegionById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getRegionById", []);
+  getRegionById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* VTTRegionList */, "getRegionById", []);
 
-  getRegionById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getRegionById", [__arg_0]);
+  getRegionById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* VTTRegionList */, "getRegionById", [__arg_0]);
 
-  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "item", []);
+  item_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* VTTRegionList */, "item", []);
 
-  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "item", [__arg_0]);
+  item_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* VTTRegionList */, "item", [__arg_0]);
 
 }
 
 class BlinkValidityState {
   static final instance = new BlinkValidityState();
 
-  badInput_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "badInput");
+  badInput_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ValidityState */, "badInput");
 
-  customError_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "customError");
+  customError_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ValidityState */, "customError");
 
-  patternMismatch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "patternMismatch");
+  patternMismatch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ValidityState */, "patternMismatch");
 
-  rangeOverflow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rangeOverflow");
+  rangeOverflow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ValidityState */, "rangeOverflow");
 
-  rangeUnderflow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rangeUnderflow");
+  rangeUnderflow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ValidityState */, "rangeUnderflow");
 
-  stepMismatch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "stepMismatch");
+  stepMismatch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ValidityState */, "stepMismatch");
 
-  tooLong_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "tooLong");
+  tooLong_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ValidityState */, "tooLong");
 
-  tooShort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "tooShort");
+  tooShort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ValidityState */, "tooShort");
 
-  typeMismatch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "typeMismatch");
+  typeMismatch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ValidityState */, "typeMismatch");
 
-  valid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "valid");
+  valid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ValidityState */, "valid");
 
-  valueMissing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "valueMissing");
+  valueMissing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* ValidityState */, "valueMissing");
 
 }
 
 class BlinkVideoPlaybackQuality {
   static final instance = new BlinkVideoPlaybackQuality();
 
-  corruptedVideoFrames_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "corruptedVideoFrames");
+  corruptedVideoFrames_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VideoPlaybackQuality */, "corruptedVideoFrames");
 
-  creationTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "creationTime");
+  creationTime_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VideoPlaybackQuality */, "creationTime");
 
-  droppedVideoFrames_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "droppedVideoFrames");
+  droppedVideoFrames_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VideoPlaybackQuality */, "droppedVideoFrames");
 
-  totalVideoFrames_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "totalVideoFrames");
+  totalVideoFrames_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VideoPlaybackQuality */, "totalVideoFrames");
 
 }
 
 class BlinkVideoTrack {
   static final instance = new BlinkVideoTrack();
 
-  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "id");
+  id_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VideoTrack */, "id");
 
-  kind_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "kind");
+  kind_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VideoTrack */, "kind");
 
-  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "label");
+  label_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VideoTrack */, "label");
 
-  language_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "language");
+  language_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VideoTrack */, "language");
 
-  selected_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "selected");
+  selected_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VideoTrack */, "selected");
 
-  selected_Setter_(mthis, __arg_0) => mthis["selected"] = __arg_0;
+  selected_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VideoTrack */, "selected", __arg_0);
 
 }
 
 class BlinkVideoTrackList extends BlinkEventTarget {
   static final instance = new BlinkVideoTrackList();
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VideoTrackList */, "length");
 
-  onaddtrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onaddtrack");
+  onaddtrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VideoTrackList */, "onaddtrack");
 
-  onaddtrack_Setter_(mthis, __arg_0) => mthis["onaddtrack"] = __arg_0;
+  onaddtrack_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VideoTrackList */, "onaddtrack", __arg_0);
 
-  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onchange");
+  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VideoTrackList */, "onchange");
 
-  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
+  onchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VideoTrackList */, "onchange", __arg_0);
 
-  onremovetrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onremovetrack");
+  onremovetrack_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VideoTrackList */, "onremovetrack");
 
-  onremovetrack_Setter_(mthis, __arg_0) => mthis["onremovetrack"] = __arg_0;
+  onremovetrack_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* VideoTrackList */, "onremovetrack", __arg_0);
 
-  selectedIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "selectedIndex");
+  selectedIndex_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* VideoTrackList */, "selectedIndex");
 
-  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__getter__", [__arg_0]);
+  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* VideoTrackList */, "__getter__", [__arg_0]);
 
-  getTrackById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getTrackById", []);
+  getTrackById_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* VideoTrackList */, "getTrackById", []);
 
-  getTrackById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getTrackById", [__arg_0]);
+  getTrackById_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* VideoTrackList */, "getTrackById", [__arg_0]);
 
 }
 
 class BlinkVoidCallback {
   static final instance = new BlinkVoidCallback();
 
-  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "handleEvent", []);
+  handleEvent_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* VoidCallback */, "handleEvent", []);
 
 }
 
 class BlinkWaveShaperNode extends BlinkAudioNode {
   static final instance = new BlinkWaveShaperNode();
 
-  curve_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "curve");
+  curve_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WaveShaperNode */, "curve");
 
-  curve_Setter_(mthis, __arg_0) => mthis["curve"] = __arg_0;
+  curve_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WaveShaperNode */, "curve", __arg_0);
 
-  oversample_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oversample");
+  oversample_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WaveShaperNode */, "oversample");
 
-  oversample_Setter_(mthis, __arg_0) => mthis["oversample"] = __arg_0;
+  oversample_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WaveShaperNode */, "oversample", __arg_0);
 
 }
 
 class BlinkWebGL2RenderingContext {
   static final instance = new BlinkWebGL2RenderingContext();
 
-  canvas_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "canvas");
+  canvas_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLRenderingContextBase */, "canvas");
 
-  drawingBufferHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "drawingBufferHeight");
+  drawingBufferHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLRenderingContextBase */, "drawingBufferHeight");
 
-  drawingBufferWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "drawingBufferWidth");
+  drawingBufferWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLRenderingContextBase */, "drawingBufferWidth");
 
-  activeTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "activeTexture", []);
+  activeTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "activeTexture", []);
 
-  activeTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "activeTexture", [__arg_0]);
+  activeTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "activeTexture", [__arg_0]);
 
-  attachShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "attachShader", []);
+  attachShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "attachShader", []);
 
-  attachShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "attachShader", [__arg_0]);
+  attachShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "attachShader", [__arg_0]);
 
-  attachShader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "attachShader", [__arg_0, __arg_1]);
+  attachShader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "attachShader", [__arg_0, __arg_1]);
 
-  bindAttribLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindAttribLocation", [__arg_0]);
+  bindAttribLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindAttribLocation", [__arg_0]);
 
-  bindAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindAttribLocation", [__arg_0, __arg_1]);
+  bindAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindAttribLocation", [__arg_0, __arg_1]);
 
-  bindAttribLocation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "bindAttribLocation", [__arg_0, __arg_1, __arg_2]);
+  bindAttribLocation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindAttribLocation", [__arg_0, __arg_1, __arg_2]);
 
-  bindBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindBuffer", []);
+  bindBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindBuffer", []);
 
-  bindBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindBuffer", [__arg_0]);
+  bindBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindBuffer", [__arg_0]);
 
-  bindBuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindBuffer", [__arg_0, __arg_1]);
+  bindBuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindBuffer", [__arg_0, __arg_1]);
 
-  bindFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindFramebuffer", []);
+  bindFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindFramebuffer", []);
 
-  bindFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindFramebuffer", [__arg_0]);
+  bindFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindFramebuffer", [__arg_0]);
 
-  bindFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindFramebuffer", [__arg_0, __arg_1]);
+  bindFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindFramebuffer", [__arg_0, __arg_1]);
 
-  bindRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindRenderbuffer", []);
+  bindRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindRenderbuffer", []);
 
-  bindRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindRenderbuffer", [__arg_0]);
+  bindRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindRenderbuffer", [__arg_0]);
 
-  bindRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindRenderbuffer", [__arg_0, __arg_1]);
+  bindRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindRenderbuffer", [__arg_0, __arg_1]);
 
-  bindTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindTexture", []);
+  bindTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindTexture", []);
 
-  bindTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindTexture", [__arg_0]);
+  bindTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindTexture", [__arg_0]);
 
-  bindTexture_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindTexture", [__arg_0, __arg_1]);
+  bindTexture_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindTexture", [__arg_0, __arg_1]);
 
-  blendColor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "blendColor", [__arg_0, __arg_1]);
+  blendColor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendColor", [__arg_0, __arg_1]);
 
-  blendColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "blendColor", [__arg_0, __arg_1, __arg_2]);
+  blendColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendColor", [__arg_0, __arg_1, __arg_2]);
 
-  blendColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "blendColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  blendColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  blendEquation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blendEquation", []);
+  blendEquation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquation", []);
 
-  blendEquation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "blendEquation", [__arg_0]);
+  blendEquation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquation", [__arg_0]);
 
-  blendEquationSeparate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blendEquationSeparate", []);
+  blendEquationSeparate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquationSeparate", []);
 
-  blendEquationSeparate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "blendEquationSeparate", [__arg_0]);
+  blendEquationSeparate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquationSeparate", [__arg_0]);
 
-  blendEquationSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "blendEquationSeparate", [__arg_0, __arg_1]);
+  blendEquationSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquationSeparate", [__arg_0, __arg_1]);
 
-  blendFunc_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blendFunc", []);
+  blendFunc_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFunc", []);
 
-  blendFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "blendFunc", [__arg_0]);
+  blendFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFunc", [__arg_0]);
 
-  blendFunc_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "blendFunc", [__arg_0, __arg_1]);
+  blendFunc_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFunc", [__arg_0, __arg_1]);
 
-  blendFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "blendFuncSeparate", [__arg_0, __arg_1]);
+  blendFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFuncSeparate", [__arg_0, __arg_1]);
 
-  blendFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "blendFuncSeparate", [__arg_0, __arg_1, __arg_2]);
+  blendFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFuncSeparate", [__arg_0, __arg_1, __arg_2]);
 
-  blendFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "blendFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  blendFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  bufferData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bufferData", [__arg_0]);
+  bufferData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferData", [__arg_0]);
 
-  bufferData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bufferData", [__arg_0, __arg_1]);
+  bufferData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferData", [__arg_0, __arg_1]);
 
-  bufferData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "bufferData", [__arg_0, __arg_1, __arg_2]);
+  bufferData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferData", [__arg_0, __arg_1, __arg_2]);
 
-  bufferSubData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bufferSubData", [__arg_0]);
+  bufferSubData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferSubData", [__arg_0]);
 
-  bufferSubData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bufferSubData", [__arg_0, __arg_1]);
+  bufferSubData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferSubData", [__arg_0, __arg_1]);
 
-  bufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "bufferSubData", [__arg_0, __arg_1, __arg_2]);
+  bufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferSubData", [__arg_0, __arg_1, __arg_2]);
 
-  checkFramebufferStatus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "checkFramebufferStatus", []);
+  checkFramebufferStatus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "checkFramebufferStatus", []);
 
-  checkFramebufferStatus_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "checkFramebufferStatus", [__arg_0]);
+  checkFramebufferStatus_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "checkFramebufferStatus", [__arg_0]);
 
-  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clear", []);
+  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clear", []);
 
-  clear_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clear", [__arg_0]);
+  clear_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clear", [__arg_0]);
 
-  clearColor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "clearColor", [__arg_0, __arg_1]);
+  clearColor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearColor", [__arg_0, __arg_1]);
 
-  clearColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "clearColor", [__arg_0, __arg_1, __arg_2]);
+  clearColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearColor", [__arg_0, __arg_1, __arg_2]);
 
-  clearColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "clearColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  clearColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  clearDepth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearDepth", []);
+  clearDepth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearDepth", []);
 
-  clearDepth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearDepth", [__arg_0]);
+  clearDepth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearDepth", [__arg_0]);
 
-  clearStencil_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearStencil", []);
+  clearStencil_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearStencil", []);
 
-  clearStencil_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearStencil", [__arg_0]);
+  clearStencil_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearStencil", [__arg_0]);
 
-  colorMask_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "colorMask", [__arg_0, __arg_1]);
+  colorMask_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "colorMask", [__arg_0, __arg_1]);
 
-  colorMask_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "colorMask", [__arg_0, __arg_1, __arg_2]);
+  colorMask_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "colorMask", [__arg_0, __arg_1, __arg_2]);
 
-  colorMask_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "colorMask", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  colorMask_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "colorMask", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  compileShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "compileShader", []);
+  compileShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compileShader", []);
 
-  compileShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "compileShader", [__arg_0]);
+  compileShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compileShader", [__arg_0]);
 
-  compressedTexImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  compressedTexImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  compressedTexImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  compressedTexImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  compressedTexSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  compressedTexSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  compressedTexSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  copyTexImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "copyTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  copyTexImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "copyTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  copyTexImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "copyTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  copyTexSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  copyTexSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  copyTexSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  createBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createBuffer", []);
+  createBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createBuffer", []);
 
-  createFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createFramebuffer", []);
+  createFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createFramebuffer", []);
 
-  createProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createProgram", []);
+  createProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createProgram", []);
 
-  createRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createRenderbuffer", []);
+  createRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createRenderbuffer", []);
 
-  createShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createShader", []);
+  createShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createShader", []);
 
-  createShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createShader", [__arg_0]);
+  createShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createShader", [__arg_0]);
 
-  createTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createTexture", []);
+  createTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createTexture", []);
 
-  cullFace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cullFace", []);
+  cullFace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "cullFace", []);
 
-  cullFace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "cullFace", [__arg_0]);
+  cullFace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "cullFace", [__arg_0]);
 
-  deleteBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteBuffer", []);
+  deleteBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteBuffer", []);
 
-  deleteBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteBuffer", [__arg_0]);
+  deleteBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteBuffer", [__arg_0]);
 
-  deleteFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteFramebuffer", []);
+  deleteFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteFramebuffer", []);
 
-  deleteFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteFramebuffer", [__arg_0]);
+  deleteFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteFramebuffer", [__arg_0]);
 
-  deleteProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteProgram", []);
+  deleteProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteProgram", []);
 
-  deleteProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteProgram", [__arg_0]);
+  deleteProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteProgram", [__arg_0]);
 
-  deleteRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteRenderbuffer", []);
+  deleteRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteRenderbuffer", []);
 
-  deleteRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteRenderbuffer", [__arg_0]);
+  deleteRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteRenderbuffer", [__arg_0]);
 
-  deleteShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteShader", []);
+  deleteShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteShader", []);
 
-  deleteShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteShader", [__arg_0]);
+  deleteShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteShader", [__arg_0]);
 
-  deleteTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteTexture", []);
+  deleteTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteTexture", []);
 
-  deleteTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteTexture", [__arg_0]);
+  deleteTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteTexture", [__arg_0]);
 
-  depthFunc_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "depthFunc", []);
+  depthFunc_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthFunc", []);
 
-  depthFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "depthFunc", [__arg_0]);
+  depthFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthFunc", [__arg_0]);
 
-  depthMask_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "depthMask", []);
+  depthMask_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthMask", []);
 
-  depthMask_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "depthMask", [__arg_0]);
+  depthMask_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthMask", [__arg_0]);
 
-  depthRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "depthRange", []);
+  depthRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthRange", []);
 
-  depthRange_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "depthRange", [__arg_0]);
+  depthRange_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthRange", [__arg_0]);
 
-  depthRange_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "depthRange", [__arg_0, __arg_1]);
+  depthRange_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthRange", [__arg_0, __arg_1]);
 
-  detachShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "detachShader", []);
+  detachShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "detachShader", []);
 
-  detachShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "detachShader", [__arg_0]);
+  detachShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "detachShader", [__arg_0]);
 
-  detachShader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "detachShader", [__arg_0, __arg_1]);
+  detachShader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "detachShader", [__arg_0, __arg_1]);
 
-  disable_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "disable", []);
+  disable_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "disable", []);
 
-  disable_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "disable", [__arg_0]);
+  disable_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "disable", [__arg_0]);
 
-  disableVertexAttribArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "disableVertexAttribArray", []);
+  disableVertexAttribArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "disableVertexAttribArray", []);
 
-  disableVertexAttribArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "disableVertexAttribArray", [__arg_0]);
+  disableVertexAttribArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "disableVertexAttribArray", [__arg_0]);
 
-  drawArrays_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "drawArrays", [__arg_0]);
+  drawArrays_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawArrays", [__arg_0]);
 
-  drawArrays_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "drawArrays", [__arg_0, __arg_1]);
+  drawArrays_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawArrays", [__arg_0, __arg_1]);
 
-  drawArrays_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "drawArrays", [__arg_0, __arg_1, __arg_2]);
+  drawArrays_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawArrays", [__arg_0, __arg_1, __arg_2]);
 
-  drawElements_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "drawElements", [__arg_0, __arg_1]);
+  drawElements_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawElements", [__arg_0, __arg_1]);
 
-  drawElements_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "drawElements", [__arg_0, __arg_1, __arg_2]);
+  drawElements_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawElements", [__arg_0, __arg_1, __arg_2]);
 
-  drawElements_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "drawElements", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  drawElements_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawElements", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  enable_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "enable", []);
+  enable_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "enable", []);
 
-  enable_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "enable", [__arg_0]);
+  enable_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "enable", [__arg_0]);
 
-  enableVertexAttribArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "enableVertexAttribArray", []);
+  enableVertexAttribArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "enableVertexAttribArray", []);
 
-  enableVertexAttribArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "enableVertexAttribArray", [__arg_0]);
+  enableVertexAttribArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "enableVertexAttribArray", [__arg_0]);
 
-  finish_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "finish", []);
+  finish_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "finish", []);
 
-  flush_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "flush", []);
+  flush_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "flush", []);
 
-  framebufferRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "framebufferRenderbuffer", [__arg_0, __arg_1]);
+  framebufferRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferRenderbuffer", [__arg_0, __arg_1]);
 
-  framebufferRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2]);
+  framebufferRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2]);
 
-  framebufferRenderbuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  framebufferRenderbuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  framebufferTexture2D_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2]);
+  framebufferTexture2D_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2]);
 
-  framebufferTexture2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  framebufferTexture2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  framebufferTexture2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  framebufferTexture2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  frontFace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "frontFace", []);
+  frontFace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "frontFace", []);
 
-  frontFace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "frontFace", [__arg_0]);
+  frontFace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "frontFace", [__arg_0]);
 
-  generateMipmap_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "generateMipmap", []);
+  generateMipmap_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "generateMipmap", []);
 
-  generateMipmap_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "generateMipmap", [__arg_0]);
+  generateMipmap_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "generateMipmap", [__arg_0]);
 
-  getActiveAttrib_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getActiveAttrib", []);
+  getActiveAttrib_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveAttrib", []);
 
-  getActiveAttrib_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getActiveAttrib", [__arg_0]);
+  getActiveAttrib_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveAttrib", [__arg_0]);
 
-  getActiveAttrib_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getActiveAttrib", [__arg_0, __arg_1]);
+  getActiveAttrib_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveAttrib", [__arg_0, __arg_1]);
 
-  getActiveUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniform", []);
+  getActiveUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveUniform", []);
 
-  getActiveUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniform", [__arg_0]);
+  getActiveUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveUniform", [__arg_0]);
 
-  getActiveUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniform", [__arg_0, __arg_1]);
+  getActiveUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveUniform", [__arg_0, __arg_1]);
 
-  getAttachedShaders_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAttachedShaders", []);
+  getAttachedShaders_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttachedShaders", []);
 
-  getAttachedShaders_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAttachedShaders", [__arg_0]);
+  getAttachedShaders_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttachedShaders", [__arg_0]);
 
-  getAttribLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAttribLocation", []);
+  getAttribLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttribLocation", []);
 
-  getAttribLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAttribLocation", [__arg_0]);
+  getAttribLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttribLocation", [__arg_0]);
 
-  getAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getAttribLocation", [__arg_0, __arg_1]);
+  getAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttribLocation", [__arg_0, __arg_1]);
 
-  getBufferParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getBufferParameter", []);
+  getBufferParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getBufferParameter", []);
 
-  getBufferParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getBufferParameter", [__arg_0]);
+  getBufferParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getBufferParameter", [__arg_0]);
 
-  getBufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getBufferParameter", [__arg_0, __arg_1]);
+  getBufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getBufferParameter", [__arg_0, __arg_1]);
 
-  getContextAttributes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getContextAttributes", []);
+  getContextAttributes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getContextAttributes", []);
 
-  getError_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getError", []);
+  getError_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getError", []);
 
-  getExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getExtension", []);
+  getExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getExtension", []);
 
-  getExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getExtension", [__arg_0]);
+  getExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getExtension", [__arg_0]);
 
-  getFramebufferAttachmentParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getFramebufferAttachmentParameter", [__arg_0]);
+  getFramebufferAttachmentParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getFramebufferAttachmentParameter", [__arg_0]);
 
-  getFramebufferAttachmentParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getFramebufferAttachmentParameter", [__arg_0, __arg_1]);
+  getFramebufferAttachmentParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getFramebufferAttachmentParameter", [__arg_0, __arg_1]);
 
-  getFramebufferAttachmentParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getFramebufferAttachmentParameter", [__arg_0, __arg_1, __arg_2]);
+  getFramebufferAttachmentParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getFramebufferAttachmentParameter", [__arg_0, __arg_1, __arg_2]);
 
-  getParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getParameter", []);
+  getParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getParameter", []);
 
-  getParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getParameter", [__arg_0]);
+  getParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getParameter", [__arg_0]);
 
-  getProgramInfoLog_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getProgramInfoLog", []);
+  getProgramInfoLog_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramInfoLog", []);
 
-  getProgramInfoLog_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getProgramInfoLog", [__arg_0]);
+  getProgramInfoLog_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramInfoLog", [__arg_0]);
 
-  getProgramParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getProgramParameter", []);
+  getProgramParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramParameter", []);
 
-  getProgramParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getProgramParameter", [__arg_0]);
+  getProgramParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramParameter", [__arg_0]);
 
-  getProgramParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getProgramParameter", [__arg_0, __arg_1]);
+  getProgramParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramParameter", [__arg_0, __arg_1]);
 
-  getRenderbufferParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getRenderbufferParameter", []);
+  getRenderbufferParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getRenderbufferParameter", []);
 
-  getRenderbufferParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getRenderbufferParameter", [__arg_0]);
+  getRenderbufferParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getRenderbufferParameter", [__arg_0]);
 
-  getRenderbufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getRenderbufferParameter", [__arg_0, __arg_1]);
+  getRenderbufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getRenderbufferParameter", [__arg_0, __arg_1]);
 
-  getShaderInfoLog_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getShaderInfoLog", []);
+  getShaderInfoLog_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderInfoLog", []);
 
-  getShaderInfoLog_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getShaderInfoLog", [__arg_0]);
+  getShaderInfoLog_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderInfoLog", [__arg_0]);
 
-  getShaderParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getShaderParameter", []);
+  getShaderParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderParameter", []);
 
-  getShaderParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getShaderParameter", [__arg_0]);
+  getShaderParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderParameter", [__arg_0]);
 
-  getShaderParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getShaderParameter", [__arg_0, __arg_1]);
+  getShaderParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderParameter", [__arg_0, __arg_1]);
 
-  getShaderPrecisionFormat_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getShaderPrecisionFormat", []);
+  getShaderPrecisionFormat_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderPrecisionFormat", []);
 
-  getShaderPrecisionFormat_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getShaderPrecisionFormat", [__arg_0]);
+  getShaderPrecisionFormat_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderPrecisionFormat", [__arg_0]);
 
-  getShaderPrecisionFormat_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getShaderPrecisionFormat", [__arg_0, __arg_1]);
+  getShaderPrecisionFormat_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderPrecisionFormat", [__arg_0, __arg_1]);
 
-  getShaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getShaderSource", []);
+  getShaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderSource", []);
 
-  getShaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getShaderSource", [__arg_0]);
+  getShaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderSource", [__arg_0]);
 
-  getSupportedExtensions_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSupportedExtensions", []);
+  getSupportedExtensions_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getSupportedExtensions", []);
 
-  getTexParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getTexParameter", []);
+  getTexParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getTexParameter", []);
 
-  getTexParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getTexParameter", [__arg_0]);
+  getTexParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getTexParameter", [__arg_0]);
 
-  getTexParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getTexParameter", [__arg_0, __arg_1]);
+  getTexParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getTexParameter", [__arg_0, __arg_1]);
 
-  getUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getUniform", []);
+  getUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniform", []);
 
-  getUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getUniform", [__arg_0]);
+  getUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniform", [__arg_0]);
 
-  getUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getUniform", [__arg_0, __arg_1]);
+  getUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniform", [__arg_0, __arg_1]);
 
-  getUniformLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getUniformLocation", []);
+  getUniformLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniformLocation", []);
 
-  getUniformLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getUniformLocation", [__arg_0]);
+  getUniformLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniformLocation", [__arg_0]);
 
-  getUniformLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getUniformLocation", [__arg_0, __arg_1]);
+  getUniformLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniformLocation", [__arg_0, __arg_1]);
 
-  getVertexAttrib_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttrib", []);
+  getVertexAttrib_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttrib", []);
 
-  getVertexAttrib_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttrib", [__arg_0]);
+  getVertexAttrib_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttrib", [__arg_0]);
 
-  getVertexAttrib_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttrib", [__arg_0, __arg_1]);
+  getVertexAttrib_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttrib", [__arg_0, __arg_1]);
 
-  getVertexAttribOffset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttribOffset", []);
+  getVertexAttribOffset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttribOffset", []);
 
-  getVertexAttribOffset_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttribOffset", [__arg_0]);
+  getVertexAttribOffset_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttribOffset", [__arg_0]);
 
-  getVertexAttribOffset_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttribOffset", [__arg_0, __arg_1]);
+  getVertexAttribOffset_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttribOffset", [__arg_0, __arg_1]);
 
-  hint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "hint", []);
+  hint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "hint", []);
 
-  hint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "hint", [__arg_0]);
+  hint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "hint", [__arg_0]);
 
-  hint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "hint", [__arg_0, __arg_1]);
+  hint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "hint", [__arg_0, __arg_1]);
 
-  isBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isBuffer", []);
+  isBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isBuffer", []);
 
-  isBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isBuffer", [__arg_0]);
+  isBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isBuffer", [__arg_0]);
 
-  isContextLost_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isContextLost", []);
+  isContextLost_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isContextLost", []);
 
-  isEnabled_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isEnabled", []);
+  isEnabled_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isEnabled", []);
 
-  isEnabled_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isEnabled", [__arg_0]);
+  isEnabled_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isEnabled", [__arg_0]);
 
-  isFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isFramebuffer", []);
+  isFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isFramebuffer", []);
 
-  isFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isFramebuffer", [__arg_0]);
+  isFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isFramebuffer", [__arg_0]);
 
-  isProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isProgram", []);
+  isProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isProgram", []);
 
-  isProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isProgram", [__arg_0]);
+  isProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isProgram", [__arg_0]);
 
-  isRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isRenderbuffer", []);
+  isRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isRenderbuffer", []);
 
-  isRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isRenderbuffer", [__arg_0]);
+  isRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isRenderbuffer", [__arg_0]);
 
-  isShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isShader", []);
+  isShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isShader", []);
 
-  isShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isShader", [__arg_0]);
+  isShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isShader", [__arg_0]);
 
-  isTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isTexture", []);
+  isTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isTexture", []);
 
-  isTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isTexture", [__arg_0]);
+  isTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isTexture", [__arg_0]);
 
-  lineWidth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "lineWidth", []);
+  lineWidth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "lineWidth", []);
 
-  lineWidth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "lineWidth", [__arg_0]);
+  lineWidth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "lineWidth", [__arg_0]);
 
-  linkProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "linkProgram", []);
+  linkProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "linkProgram", []);
 
-  linkProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "linkProgram", [__arg_0]);
+  linkProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "linkProgram", [__arg_0]);
 
-  pixelStorei_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "pixelStorei", []);
+  pixelStorei_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "pixelStorei", []);
 
-  pixelStorei_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "pixelStorei", [__arg_0]);
+  pixelStorei_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "pixelStorei", [__arg_0]);
 
-  pixelStorei_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "pixelStorei", [__arg_0, __arg_1]);
+  pixelStorei_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "pixelStorei", [__arg_0, __arg_1]);
 
-  polygonOffset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "polygonOffset", []);
+  polygonOffset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "polygonOffset", []);
 
-  polygonOffset_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "polygonOffset", [__arg_0]);
+  polygonOffset_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "polygonOffset", [__arg_0]);
 
-  polygonOffset_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "polygonOffset", [__arg_0, __arg_1]);
+  polygonOffset_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "polygonOffset", [__arg_0, __arg_1]);
 
-  readPixels_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  readPixels_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  readPixels_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "readPixels", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  readPixels_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "readPixels", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  renderbufferStorage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorage", [__arg_0, __arg_1]);
+  renderbufferStorage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "renderbufferStorage", [__arg_0, __arg_1]);
 
-  renderbufferStorage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorage", [__arg_0, __arg_1, __arg_2]);
+  renderbufferStorage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "renderbufferStorage", [__arg_0, __arg_1, __arg_2]);
 
-  renderbufferStorage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorage", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  renderbufferStorage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "renderbufferStorage", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  sampleCoverage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "sampleCoverage", []);
+  sampleCoverage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "sampleCoverage", []);
 
-  sampleCoverage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "sampleCoverage", [__arg_0]);
+  sampleCoverage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "sampleCoverage", [__arg_0]);
 
-  sampleCoverage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "sampleCoverage", [__arg_0, __arg_1]);
+  sampleCoverage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "sampleCoverage", [__arg_0, __arg_1]);
 
-  scissor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scissor", [__arg_0, __arg_1]);
+  scissor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "scissor", [__arg_0, __arg_1]);
 
-  scissor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "scissor", [__arg_0, __arg_1, __arg_2]);
+  scissor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "scissor", [__arg_0, __arg_1, __arg_2]);
 
-  scissor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "scissor", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  scissor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "scissor", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  shaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "shaderSource", []);
+  shaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "shaderSource", []);
 
-  shaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "shaderSource", [__arg_0]);
+  shaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "shaderSource", [__arg_0]);
 
-  shaderSource_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "shaderSource", [__arg_0, __arg_1]);
+  shaderSource_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "shaderSource", [__arg_0, __arg_1]);
 
-  stencilFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stencilFunc", [__arg_0]);
+  stencilFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFunc", [__arg_0]);
 
-  stencilFunc_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilFunc", [__arg_0, __arg_1]);
+  stencilFunc_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFunc", [__arg_0, __arg_1]);
 
-  stencilFunc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "stencilFunc", [__arg_0, __arg_1, __arg_2]);
+  stencilFunc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFunc", [__arg_0, __arg_1, __arg_2]);
 
-  stencilFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilFuncSeparate", [__arg_0, __arg_1]);
+  stencilFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFuncSeparate", [__arg_0, __arg_1]);
 
-  stencilFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "stencilFuncSeparate", [__arg_0, __arg_1, __arg_2]);
+  stencilFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFuncSeparate", [__arg_0, __arg_1, __arg_2]);
 
-  stencilFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "stencilFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  stencilFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  stencilMask_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stencilMask", []);
+  stencilMask_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMask", []);
 
-  stencilMask_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stencilMask", [__arg_0]);
+  stencilMask_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMask", [__arg_0]);
 
-  stencilMaskSeparate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stencilMaskSeparate", []);
+  stencilMaskSeparate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMaskSeparate", []);
 
-  stencilMaskSeparate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stencilMaskSeparate", [__arg_0]);
+  stencilMaskSeparate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMaskSeparate", [__arg_0]);
 
-  stencilMaskSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilMaskSeparate", [__arg_0, __arg_1]);
+  stencilMaskSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMaskSeparate", [__arg_0, __arg_1]);
 
-  stencilOp_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stencilOp", [__arg_0]);
+  stencilOp_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOp", [__arg_0]);
 
-  stencilOp_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilOp", [__arg_0, __arg_1]);
+  stencilOp_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOp", [__arg_0, __arg_1]);
 
-  stencilOp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "stencilOp", [__arg_0, __arg_1, __arg_2]);
+  stencilOp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOp", [__arg_0, __arg_1, __arg_2]);
 
-  stencilOpSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilOpSeparate", [__arg_0, __arg_1]);
+  stencilOpSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOpSeparate", [__arg_0, __arg_1]);
 
-  stencilOpSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "stencilOpSeparate", [__arg_0, __arg_1, __arg_2]);
+  stencilOpSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOpSeparate", [__arg_0, __arg_1, __arg_2]);
 
-  stencilOpSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "stencilOpSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  stencilOpSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOpSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  texImage2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  texImage2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  texImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  texImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  texImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  texImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  texImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  texImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  texParameterf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "texParameterf", [__arg_0]);
+  texParameterf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameterf", [__arg_0]);
 
-  texParameterf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "texParameterf", [__arg_0, __arg_1]);
+  texParameterf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameterf", [__arg_0, __arg_1]);
 
-  texParameterf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "texParameterf", [__arg_0, __arg_1, __arg_2]);
+  texParameterf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameterf", [__arg_0, __arg_1, __arg_2]);
 
-  texParameteri_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "texParameteri", [__arg_0]);
+  texParameteri_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameteri", [__arg_0]);
 
-  texParameteri_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "texParameteri", [__arg_0, __arg_1]);
+  texParameteri_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameteri", [__arg_0, __arg_1]);
 
-  texParameteri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "texParameteri", [__arg_0, __arg_1, __arg_2]);
+  texParameteri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameteri", [__arg_0, __arg_1, __arg_2]);
 
-  texSubImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  texSubImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  texSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  texSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  texSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  texSubImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  uniform1f_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1f", []);
+  uniform1f_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1f", []);
 
-  uniform1f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1f", [__arg_0]);
+  uniform1f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1f", [__arg_0]);
 
-  uniform1f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1f", [__arg_0, __arg_1]);
+  uniform1f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1f", [__arg_0, __arg_1]);
 
-  uniform1fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1fv", []);
+  uniform1fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1fv", []);
 
-  uniform1fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1fv", [__arg_0]);
+  uniform1fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1fv", [__arg_0]);
 
-  uniform1fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1fv", [__arg_0, __arg_1]);
+  uniform1fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1fv", [__arg_0, __arg_1]);
 
-  uniform1i_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1i", []);
+  uniform1i_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1i", []);
 
-  uniform1i_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1i", [__arg_0]);
+  uniform1i_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1i", [__arg_0]);
 
-  uniform1i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1i", [__arg_0, __arg_1]);
+  uniform1i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1i", [__arg_0, __arg_1]);
 
-  uniform1iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1iv", []);
+  uniform1iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1iv", []);
 
-  uniform1iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1iv", [__arg_0]);
+  uniform1iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1iv", [__arg_0]);
 
-  uniform1iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1iv", [__arg_0, __arg_1]);
+  uniform1iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1iv", [__arg_0, __arg_1]);
 
-  uniform2f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2f", [__arg_0]);
+  uniform2f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2f", [__arg_0]);
 
-  uniform2f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2f", [__arg_0, __arg_1]);
+  uniform2f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2f", [__arg_0, __arg_1]);
 
-  uniform2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform2f", [__arg_0, __arg_1, __arg_2]);
+  uniform2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2f", [__arg_0, __arg_1, __arg_2]);
 
-  uniform2fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform2fv", []);
+  uniform2fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2fv", []);
 
-  uniform2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2fv", [__arg_0]);
+  uniform2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2fv", [__arg_0]);
 
-  uniform2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2fv", [__arg_0, __arg_1]);
+  uniform2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2fv", [__arg_0, __arg_1]);
 
-  uniform2i_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2i", [__arg_0]);
+  uniform2i_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2i", [__arg_0]);
 
-  uniform2i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2i", [__arg_0, __arg_1]);
+  uniform2i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2i", [__arg_0, __arg_1]);
 
-  uniform2i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform2i", [__arg_0, __arg_1, __arg_2]);
+  uniform2i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2i", [__arg_0, __arg_1, __arg_2]);
 
-  uniform2iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform2iv", []);
+  uniform2iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2iv", []);
 
-  uniform2iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2iv", [__arg_0]);
+  uniform2iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2iv", [__arg_0]);
 
-  uniform2iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2iv", [__arg_0, __arg_1]);
+  uniform2iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2iv", [__arg_0, __arg_1]);
 
-  uniform3f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3f", [__arg_0, __arg_1]);
+  uniform3f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3f", [__arg_0, __arg_1]);
 
-  uniform3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform3f", [__arg_0, __arg_1, __arg_2]);
+  uniform3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3f", [__arg_0, __arg_1, __arg_2]);
 
-  uniform3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform3fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform3fv", []);
+  uniform3fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3fv", []);
 
-  uniform3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform3fv", [__arg_0]);
+  uniform3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3fv", [__arg_0]);
 
-  uniform3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3fv", [__arg_0, __arg_1]);
+  uniform3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3fv", [__arg_0, __arg_1]);
 
-  uniform3i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3i", [__arg_0, __arg_1]);
+  uniform3i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3i", [__arg_0, __arg_1]);
 
-  uniform3i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform3i", [__arg_0, __arg_1, __arg_2]);
+  uniform3i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3i", [__arg_0, __arg_1, __arg_2]);
 
-  uniform3i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform3i", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform3i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3i", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform3iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform3iv", []);
+  uniform3iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3iv", []);
 
-  uniform3iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform3iv", [__arg_0]);
+  uniform3iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3iv", [__arg_0]);
 
-  uniform3iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3iv", [__arg_0, __arg_1]);
+  uniform3iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3iv", [__arg_0, __arg_1]);
 
-  uniform4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform4f", [__arg_0, __arg_1, __arg_2]);
+  uniform4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4f", [__arg_0, __arg_1, __arg_2]);
 
-  uniform4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  uniform4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  uniform4fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform4fv", []);
+  uniform4fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4fv", []);
 
-  uniform4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform4fv", [__arg_0]);
+  uniform4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4fv", [__arg_0]);
 
-  uniform4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform4fv", [__arg_0, __arg_1]);
+  uniform4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4fv", [__arg_0, __arg_1]);
 
-  uniform4i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform4i", [__arg_0, __arg_1, __arg_2]);
+  uniform4i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4i", [__arg_0, __arg_1, __arg_2]);
 
-  uniform4i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform4i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform4i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  uniform4i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  uniform4iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform4iv", []);
+  uniform4iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4iv", []);
 
-  uniform4iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform4iv", [__arg_0]);
+  uniform4iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4iv", [__arg_0]);
 
-  uniform4iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform4iv", [__arg_0, __arg_1]);
+  uniform4iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4iv", [__arg_0, __arg_1]);
 
-  uniformMatrix2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2fv", [__arg_0]);
+  uniformMatrix2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix2fv", [__arg_0]);
 
-  uniformMatrix2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2fv", [__arg_0, __arg_1]);
+  uniformMatrix2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix2fv", [__arg_0, __arg_1]);
 
-  uniformMatrix2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix2fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3fv", [__arg_0]);
+  uniformMatrix3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix3fv", [__arg_0]);
 
-  uniformMatrix3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3fv", [__arg_0, __arg_1]);
+  uniformMatrix3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix3fv", [__arg_0, __arg_1]);
 
-  uniformMatrix3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix3fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4fv", [__arg_0]);
+  uniformMatrix4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix4fv", [__arg_0]);
 
-  uniformMatrix4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4fv", [__arg_0, __arg_1]);
+  uniformMatrix4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix4fv", [__arg_0, __arg_1]);
 
-  uniformMatrix4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix4fv", [__arg_0, __arg_1, __arg_2]);
 
-  useProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "useProgram", []);
+  useProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "useProgram", []);
 
-  useProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "useProgram", [__arg_0]);
+  useProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "useProgram", [__arg_0]);
 
-  validateProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "validateProgram", []);
+  validateProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "validateProgram", []);
 
-  validateProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "validateProgram", [__arg_0]);
+  validateProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "validateProgram", [__arg_0]);
 
-  vertexAttrib1f_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1f", []);
+  vertexAttrib1f_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1f", []);
 
-  vertexAttrib1f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1f", [__arg_0]);
+  vertexAttrib1f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1f", [__arg_0]);
 
-  vertexAttrib1f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1f", [__arg_0, __arg_1]);
+  vertexAttrib1f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1f", [__arg_0, __arg_1]);
 
-  vertexAttrib1fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1fv", []);
+  vertexAttrib1fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1fv", []);
 
-  vertexAttrib1fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1fv", [__arg_0]);
+  vertexAttrib1fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1fv", [__arg_0]);
 
-  vertexAttrib1fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1fv", [__arg_0, __arg_1]);
+  vertexAttrib1fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1fv", [__arg_0, __arg_1]);
 
-  vertexAttrib2f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2f", [__arg_0]);
+  vertexAttrib2f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2f", [__arg_0]);
 
-  vertexAttrib2f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2f", [__arg_0, __arg_1]);
+  vertexAttrib2f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2f", [__arg_0, __arg_1]);
 
-  vertexAttrib2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2f", [__arg_0, __arg_1, __arg_2]);
+  vertexAttrib2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2f", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttrib2fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2fv", []);
+  vertexAttrib2fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2fv", []);
 
-  vertexAttrib2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2fv", [__arg_0]);
+  vertexAttrib2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2fv", [__arg_0]);
 
-  vertexAttrib2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2fv", [__arg_0, __arg_1]);
+  vertexAttrib2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2fv", [__arg_0, __arg_1]);
 
-  vertexAttrib3f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3f", [__arg_0, __arg_1]);
+  vertexAttrib3f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3f", [__arg_0, __arg_1]);
 
-  vertexAttrib3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3f", [__arg_0, __arg_1, __arg_2]);
+  vertexAttrib3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3f", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttrib3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttrib3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttrib3fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3fv", []);
+  vertexAttrib3fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3fv", []);
 
-  vertexAttrib3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3fv", [__arg_0]);
+  vertexAttrib3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3fv", [__arg_0]);
 
-  vertexAttrib3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3fv", [__arg_0, __arg_1]);
+  vertexAttrib3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3fv", [__arg_0, __arg_1]);
 
-  vertexAttrib4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2]);
+  vertexAttrib4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttrib4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttrib4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttrib4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  vertexAttrib4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  vertexAttrib4fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4fv", []);
+  vertexAttrib4fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4fv", []);
 
-  vertexAttrib4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4fv", [__arg_0]);
+  vertexAttrib4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4fv", [__arg_0]);
 
-  vertexAttrib4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4fv", [__arg_0, __arg_1]);
+  vertexAttrib4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4fv", [__arg_0, __arg_1]);
 
-  vertexAttribPointer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttribPointer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttribPointer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  vertexAttribPointer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  vertexAttribPointer_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribPointer", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  viewport_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "viewport", [__arg_0, __arg_1]);
+  viewport_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "viewport", [__arg_0, __arg_1]);
 
-  viewport_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "viewport", [__arg_0, __arg_1, __arg_2]);
+  viewport_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "viewport", [__arg_0, __arg_1, __arg_2]);
 
-  viewport_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "viewport", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  viewport_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "viewport", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  beginQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "beginQuery", []);
+  beginQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "beginQuery", []);
 
-  beginQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "beginQuery", [__arg_0]);
+  beginQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "beginQuery", [__arg_0]);
 
-  beginQuery_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "beginQuery", [__arg_0, __arg_1]);
+  beginQuery_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "beginQuery", [__arg_0, __arg_1]);
 
-  beginTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "beginTransformFeedback", []);
+  beginTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "beginTransformFeedback", []);
 
-  beginTransformFeedback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "beginTransformFeedback", [__arg_0]);
+  beginTransformFeedback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "beginTransformFeedback", [__arg_0]);
 
-  bindBufferBase_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindBufferBase", [__arg_0]);
+  bindBufferBase_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindBufferBase", [__arg_0]);
 
-  bindBufferBase_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindBufferBase", [__arg_0, __arg_1]);
+  bindBufferBase_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindBufferBase", [__arg_0, __arg_1]);
 
-  bindBufferBase_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "bindBufferBase", [__arg_0, __arg_1, __arg_2]);
+  bindBufferBase_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindBufferBase", [__arg_0, __arg_1, __arg_2]);
 
-  bindBufferRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "bindBufferRange", [__arg_0, __arg_1, __arg_2]);
+  bindBufferRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindBufferRange", [__arg_0, __arg_1, __arg_2]);
 
-  bindBufferRange_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "bindBufferRange", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  bindBufferRange_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindBufferRange", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  bindBufferRange_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "bindBufferRange", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  bindBufferRange_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindBufferRange", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  bindSampler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindSampler", []);
+  bindSampler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindSampler", []);
 
-  bindSampler_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindSampler", [__arg_0]);
+  bindSampler_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindSampler", [__arg_0]);
 
-  bindSampler_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindSampler", [__arg_0, __arg_1]);
+  bindSampler_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindSampler", [__arg_0, __arg_1]);
 
-  bindTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindTransformFeedback", []);
+  bindTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindTransformFeedback", []);
 
-  bindTransformFeedback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindTransformFeedback", [__arg_0]);
+  bindTransformFeedback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindTransformFeedback", [__arg_0]);
 
-  bindTransformFeedback_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindTransformFeedback", [__arg_0, __arg_1]);
+  bindTransformFeedback_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindTransformFeedback", [__arg_0, __arg_1]);
 
-  bindVertexArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindVertexArray", []);
+  bindVertexArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindVertexArray", []);
 
-  bindVertexArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindVertexArray", [__arg_0]);
+  bindVertexArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindVertexArray", [__arg_0]);
 
-  blitFramebuffer_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "blitFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
+  blitFramebuffer_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "blitFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  blitFramebuffer_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "blitFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
+  blitFramebuffer_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "blitFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  blitFramebuffer_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis, "blitFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
+  blitFramebuffer_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "blitFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
 
-  clearBufferfi_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferfi", [__arg_0, __arg_1]);
+  clearBufferfi_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferfi", [__arg_0, __arg_1]);
 
-  clearBufferfi_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferfi", [__arg_0, __arg_1, __arg_2]);
+  clearBufferfi_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferfi", [__arg_0, __arg_1, __arg_2]);
 
-  clearBufferfi_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferfi", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  clearBufferfi_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferfi", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  clearBufferfv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferfv", [__arg_0]);
+  clearBufferfv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferfv", [__arg_0]);
 
-  clearBufferfv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferfv", [__arg_0, __arg_1]);
+  clearBufferfv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferfv", [__arg_0, __arg_1]);
 
-  clearBufferfv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferfv", [__arg_0, __arg_1, __arg_2]);
+  clearBufferfv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferfv", [__arg_0, __arg_1, __arg_2]);
 
-  clearBufferiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferiv", [__arg_0]);
+  clearBufferiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferiv", [__arg_0]);
 
-  clearBufferiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferiv", [__arg_0, __arg_1]);
+  clearBufferiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferiv", [__arg_0, __arg_1]);
 
-  clearBufferiv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferiv", [__arg_0, __arg_1, __arg_2]);
+  clearBufferiv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferiv", [__arg_0, __arg_1, __arg_2]);
 
-  clearBufferuiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferuiv", [__arg_0]);
+  clearBufferuiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferuiv", [__arg_0]);
 
-  clearBufferuiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferuiv", [__arg_0, __arg_1]);
+  clearBufferuiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferuiv", [__arg_0, __arg_1]);
 
-  clearBufferuiv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferuiv", [__arg_0, __arg_1, __arg_2]);
+  clearBufferuiv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferuiv", [__arg_0, __arg_1, __arg_2]);
 
-  clientWaitSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clientWaitSync", [__arg_0]);
+  clientWaitSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clientWaitSync", [__arg_0]);
 
-  clientWaitSync_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "clientWaitSync", [__arg_0, __arg_1]);
+  clientWaitSync_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clientWaitSync", [__arg_0, __arg_1]);
 
-  clientWaitSync_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "clientWaitSync", [__arg_0, __arg_1, __arg_2]);
+  clientWaitSync_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clientWaitSync", [__arg_0, __arg_1, __arg_2]);
 
-  compressedTexImage3D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
+  compressedTexImage3D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "compressedTexImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  compressedTexImage3D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
+  compressedTexImage3D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "compressedTexImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  compressedTexImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
+  compressedTexImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "compressedTexImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  compressedTexSubImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
+  compressedTexSubImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "compressedTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  compressedTexSubImage3D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
+  compressedTexSubImage3D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "compressedTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  compressedTexSubImage3D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
+  compressedTexSubImage3D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "compressedTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
 
-  copyBufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "copyBufferSubData", [__arg_0, __arg_1, __arg_2]);
+  copyBufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "copyBufferSubData", [__arg_0, __arg_1, __arg_2]);
 
-  copyBufferSubData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "copyBufferSubData", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  copyBufferSubData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "copyBufferSubData", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  copyBufferSubData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "copyBufferSubData", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  copyBufferSubData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "copyBufferSubData", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  copyTexSubImage3D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
+  copyTexSubImage3D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "copyTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  copyTexSubImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
+  copyTexSubImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "copyTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  copyTexSubImage3D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
+  copyTexSubImage3D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "copyTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  createQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createQuery", []);
+  createQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "createQuery", []);
 
-  createSampler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSampler", []);
+  createSampler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "createSampler", []);
 
-  createTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createTransformFeedback", []);
+  createTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "createTransformFeedback", []);
 
-  createVertexArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createVertexArray", []);
+  createVertexArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "createVertexArray", []);
 
-  deleteQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteQuery", []);
+  deleteQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteQuery", []);
 
-  deleteQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteQuery", [__arg_0]);
+  deleteQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteQuery", [__arg_0]);
 
-  deleteSampler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteSampler", []);
+  deleteSampler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteSampler", []);
 
-  deleteSampler_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteSampler", [__arg_0]);
+  deleteSampler_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteSampler", [__arg_0]);
 
-  deleteSync_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteSync", []);
+  deleteSync_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteSync", []);
 
-  deleteSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteSync", [__arg_0]);
+  deleteSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteSync", [__arg_0]);
 
-  deleteTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteTransformFeedback", []);
+  deleteTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteTransformFeedback", []);
 
-  deleteTransformFeedback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteTransformFeedback", [__arg_0]);
+  deleteTransformFeedback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteTransformFeedback", [__arg_0]);
 
-  deleteVertexArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteVertexArray", []);
+  deleteVertexArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteVertexArray", []);
 
-  deleteVertexArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteVertexArray", [__arg_0]);
+  deleteVertexArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteVertexArray", [__arg_0]);
 
-  drawArraysInstanced_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "drawArraysInstanced", [__arg_0, __arg_1]);
+  drawArraysInstanced_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawArraysInstanced", [__arg_0, __arg_1]);
 
-  drawArraysInstanced_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "drawArraysInstanced", [__arg_0, __arg_1, __arg_2]);
+  drawArraysInstanced_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawArraysInstanced", [__arg_0, __arg_1, __arg_2]);
 
-  drawArraysInstanced_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "drawArraysInstanced", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  drawArraysInstanced_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawArraysInstanced", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  drawBuffers_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "drawBuffers", []);
+  drawBuffers_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawBuffers", []);
 
-  drawBuffers_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "drawBuffers", [__arg_0]);
+  drawBuffers_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawBuffers", [__arg_0]);
 
-  drawElementsInstanced_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "drawElementsInstanced", [__arg_0, __arg_1, __arg_2]);
+  drawElementsInstanced_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawElementsInstanced", [__arg_0, __arg_1, __arg_2]);
 
-  drawElementsInstanced_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "drawElementsInstanced", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  drawElementsInstanced_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawElementsInstanced", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  drawElementsInstanced_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "drawElementsInstanced", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  drawElementsInstanced_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawElementsInstanced", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  drawRangeElements_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "drawRangeElements", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  drawRangeElements_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawRangeElements", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  drawRangeElements_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "drawRangeElements", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  drawRangeElements_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawRangeElements", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  drawRangeElements_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "drawRangeElements", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
+  drawRangeElements_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawRangeElements", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  endQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "endQuery", []);
+  endQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "endQuery", []);
 
-  endQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "endQuery", [__arg_0]);
+  endQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "endQuery", [__arg_0]);
 
-  endTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "endTransformFeedback", []);
+  endTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "endTransformFeedback", []);
 
-  fenceSync_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "fenceSync", []);
+  fenceSync_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "fenceSync", []);
 
-  fenceSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "fenceSync", [__arg_0]);
+  fenceSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "fenceSync", [__arg_0]);
 
-  fenceSync_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "fenceSync", [__arg_0, __arg_1]);
+  fenceSync_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "fenceSync", [__arg_0, __arg_1]);
 
-  framebufferTextureLayer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTextureLayer", [__arg_0, __arg_1, __arg_2]);
+  framebufferTextureLayer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "framebufferTextureLayer", [__arg_0, __arg_1, __arg_2]);
 
-  framebufferTextureLayer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTextureLayer", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  framebufferTextureLayer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "framebufferTextureLayer", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  framebufferTextureLayer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTextureLayer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  framebufferTextureLayer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "framebufferTextureLayer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  getActiveUniformBlockName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniformBlockName", []);
+  getActiveUniformBlockName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniformBlockName", []);
 
-  getActiveUniformBlockName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniformBlockName", [__arg_0]);
+  getActiveUniformBlockName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniformBlockName", [__arg_0]);
 
-  getActiveUniformBlockName_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniformBlockName", [__arg_0, __arg_1]);
+  getActiveUniformBlockName_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniformBlockName", [__arg_0, __arg_1]);
 
-  getActiveUniformBlockParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniformBlockParameter", [__arg_0]);
+  getActiveUniformBlockParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniformBlockParameter", [__arg_0]);
 
-  getActiveUniformBlockParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniformBlockParameter", [__arg_0, __arg_1]);
+  getActiveUniformBlockParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniformBlockParameter", [__arg_0, __arg_1]);
 
-  getActiveUniformBlockParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniformBlockParameter", [__arg_0, __arg_1, __arg_2]);
+  getActiveUniformBlockParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniformBlockParameter", [__arg_0, __arg_1, __arg_2]);
 
-  getActiveUniforms_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniforms", [__arg_0]);
+  getActiveUniforms_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniforms", [__arg_0]);
 
-  getActiveUniforms_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniforms", [__arg_0, __arg_1]);
+  getActiveUniforms_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniforms", [__arg_0, __arg_1]);
 
-  getActiveUniforms_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniforms", [__arg_0, __arg_1, __arg_2]);
+  getActiveUniforms_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniforms", [__arg_0, __arg_1, __arg_2]);
 
-  getBufferSubData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getBufferSubData", [__arg_0]);
+  getBufferSubData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getBufferSubData", [__arg_0]);
 
-  getBufferSubData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getBufferSubData", [__arg_0, __arg_1]);
+  getBufferSubData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getBufferSubData", [__arg_0, __arg_1]);
 
-  getBufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getBufferSubData", [__arg_0, __arg_1, __arg_2]);
+  getBufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getBufferSubData", [__arg_0, __arg_1, __arg_2]);
 
-  getFragDataLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getFragDataLocation", []);
+  getFragDataLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getFragDataLocation", []);
 
-  getFragDataLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getFragDataLocation", [__arg_0]);
+  getFragDataLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getFragDataLocation", [__arg_0]);
 
-  getFragDataLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getFragDataLocation", [__arg_0, __arg_1]);
+  getFragDataLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getFragDataLocation", [__arg_0, __arg_1]);
 
-  getIndexedParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getIndexedParameter", []);
+  getIndexedParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getIndexedParameter", []);
 
-  getIndexedParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getIndexedParameter", [__arg_0]);
+  getIndexedParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getIndexedParameter", [__arg_0]);
 
-  getIndexedParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getIndexedParameter", [__arg_0, __arg_1]);
+  getIndexedParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getIndexedParameter", [__arg_0, __arg_1]);
 
-  getInternalformatParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getInternalformatParameter", [__arg_0]);
+  getInternalformatParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getInternalformatParameter", [__arg_0]);
 
-  getInternalformatParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getInternalformatParameter", [__arg_0, __arg_1]);
+  getInternalformatParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getInternalformatParameter", [__arg_0, __arg_1]);
 
-  getInternalformatParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getInternalformatParameter", [__arg_0, __arg_1, __arg_2]);
+  getInternalformatParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getInternalformatParameter", [__arg_0, __arg_1, __arg_2]);
 
-  getQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getQuery", []);
+  getQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getQuery", []);
 
-  getQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getQuery", [__arg_0]);
+  getQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getQuery", [__arg_0]);
 
-  getQuery_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getQuery", [__arg_0, __arg_1]);
+  getQuery_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getQuery", [__arg_0, __arg_1]);
 
-  getQueryParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getQueryParameter", []);
+  getQueryParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getQueryParameter", []);
 
-  getQueryParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getQueryParameter", [__arg_0]);
+  getQueryParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getQueryParameter", [__arg_0]);
 
-  getQueryParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getQueryParameter", [__arg_0, __arg_1]);
+  getQueryParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getQueryParameter", [__arg_0, __arg_1]);
 
-  getSamplerParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSamplerParameter", []);
+  getSamplerParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getSamplerParameter", []);
 
-  getSamplerParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getSamplerParameter", [__arg_0]);
+  getSamplerParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getSamplerParameter", [__arg_0]);
 
-  getSamplerParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getSamplerParameter", [__arg_0, __arg_1]);
+  getSamplerParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getSamplerParameter", [__arg_0, __arg_1]);
 
-  getSyncParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSyncParameter", []);
+  getSyncParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getSyncParameter", []);
 
-  getSyncParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getSyncParameter", [__arg_0]);
+  getSyncParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getSyncParameter", [__arg_0]);
 
-  getSyncParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getSyncParameter", [__arg_0, __arg_1]);
+  getSyncParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getSyncParameter", [__arg_0, __arg_1]);
 
-  getTransformFeedbackVarying_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getTransformFeedbackVarying", []);
+  getTransformFeedbackVarying_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getTransformFeedbackVarying", []);
 
-  getTransformFeedbackVarying_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getTransformFeedbackVarying", [__arg_0]);
+  getTransformFeedbackVarying_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getTransformFeedbackVarying", [__arg_0]);
 
-  getTransformFeedbackVarying_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getTransformFeedbackVarying", [__arg_0, __arg_1]);
+  getTransformFeedbackVarying_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getTransformFeedbackVarying", [__arg_0, __arg_1]);
 
-  getUniformBlockIndex_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getUniformBlockIndex", []);
+  getUniformBlockIndex_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getUniformBlockIndex", []);
 
-  getUniformBlockIndex_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getUniformBlockIndex", [__arg_0]);
+  getUniformBlockIndex_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getUniformBlockIndex", [__arg_0]);
 
-  getUniformBlockIndex_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getUniformBlockIndex", [__arg_0, __arg_1]);
+  getUniformBlockIndex_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getUniformBlockIndex", [__arg_0, __arg_1]);
 
-  getUniformIndices_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getUniformIndices", []);
+  getUniformIndices_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getUniformIndices", []);
 
-  getUniformIndices_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getUniformIndices", [__arg_0]);
+  getUniformIndices_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getUniformIndices", [__arg_0]);
 
-  getUniformIndices_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getUniformIndices", [__arg_0, __arg_1]);
+  getUniformIndices_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getUniformIndices", [__arg_0, __arg_1]);
 
-  invalidateFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "invalidateFramebuffer", []);
+  invalidateFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "invalidateFramebuffer", []);
 
-  invalidateFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "invalidateFramebuffer", [__arg_0]);
+  invalidateFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "invalidateFramebuffer", [__arg_0]);
 
-  invalidateFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "invalidateFramebuffer", [__arg_0, __arg_1]);
+  invalidateFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "invalidateFramebuffer", [__arg_0, __arg_1]);
 
-  invalidateSubFramebuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "invalidateSubFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  invalidateSubFramebuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "invalidateSubFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  invalidateSubFramebuffer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "invalidateSubFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  invalidateSubFramebuffer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "invalidateSubFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  invalidateSubFramebuffer_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "invalidateSubFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
+  invalidateSubFramebuffer_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "invalidateSubFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  isQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isQuery", []);
+  isQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isQuery", []);
 
-  isQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isQuery", [__arg_0]);
+  isQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isQuery", [__arg_0]);
 
-  isSampler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isSampler", []);
+  isSampler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isSampler", []);
 
-  isSampler_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isSampler", [__arg_0]);
+  isSampler_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isSampler", [__arg_0]);
 
-  isSync_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isSync", []);
+  isSync_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isSync", []);
 
-  isSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isSync", [__arg_0]);
+  isSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isSync", [__arg_0]);
 
-  isTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isTransformFeedback", []);
+  isTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isTransformFeedback", []);
 
-  isTransformFeedback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isTransformFeedback", [__arg_0]);
+  isTransformFeedback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isTransformFeedback", [__arg_0]);
 
-  isVertexArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isVertexArray", []);
+  isVertexArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isVertexArray", []);
 
-  isVertexArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isVertexArray", [__arg_0]);
+  isVertexArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isVertexArray", [__arg_0]);
 
-  pauseTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "pauseTransformFeedback", []);
+  pauseTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "pauseTransformFeedback", []);
 
-  readBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "readBuffer", []);
+  readBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "readBuffer", []);
 
-  readBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "readBuffer", [__arg_0]);
+  readBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "readBuffer", [__arg_0]);
 
-  renderbufferStorageMultisample_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorageMultisample", [__arg_0, __arg_1, __arg_2]);
+  renderbufferStorageMultisample_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "renderbufferStorageMultisample", [__arg_0, __arg_1, __arg_2]);
 
-  renderbufferStorageMultisample_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorageMultisample", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  renderbufferStorageMultisample_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "renderbufferStorageMultisample", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  renderbufferStorageMultisample_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorageMultisample", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  renderbufferStorageMultisample_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "renderbufferStorageMultisample", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  resumeTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "resumeTransformFeedback", []);
+  resumeTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "resumeTransformFeedback", []);
 
-  samplerParameterf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "samplerParameterf", [__arg_0]);
+  samplerParameterf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "samplerParameterf", [__arg_0]);
 
-  samplerParameterf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "samplerParameterf", [__arg_0, __arg_1]);
+  samplerParameterf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "samplerParameterf", [__arg_0, __arg_1]);
 
-  samplerParameterf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "samplerParameterf", [__arg_0, __arg_1, __arg_2]);
+  samplerParameterf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "samplerParameterf", [__arg_0, __arg_1, __arg_2]);
 
-  samplerParameteri_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "samplerParameteri", [__arg_0]);
+  samplerParameteri_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "samplerParameteri", [__arg_0]);
 
-  samplerParameteri_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "samplerParameteri", [__arg_0, __arg_1]);
+  samplerParameteri_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "samplerParameteri", [__arg_0, __arg_1]);
 
-  samplerParameteri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "samplerParameteri", [__arg_0, __arg_1, __arg_2]);
+  samplerParameteri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "samplerParameteri", [__arg_0, __arg_1, __arg_2]);
 
-  texImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "texImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
+  texImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  texImage3D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "texImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
+  texImage3D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  texImage3D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis, "texImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
+  texImage3D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
 
-  texStorage2D_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "texStorage2D", [__arg_0, __arg_1, __arg_2]);
+  texStorage2D_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texStorage2D", [__arg_0, __arg_1, __arg_2]);
 
-  texStorage2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "texStorage2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  texStorage2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texStorage2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  texStorage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "texStorage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  texStorage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texStorage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  texStorage3D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "texStorage3D", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  texStorage3D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texStorage3D", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  texStorage3D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "texStorage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  texStorage3D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texStorage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  texStorage3D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "texStorage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
+  texStorage3D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texStorage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  texSubImage3D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
+  texSubImage3D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  texSubImage3D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
+  texSubImage3D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  texSubImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
+  texSubImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  texSubImage3D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
+  texSubImage3D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  texSubImage3D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
+  texSubImage3D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
 
-  texSubImage3D_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) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10]);
+  texSubImage3D_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) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10]);
 
-  transformFeedbackVaryings_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "transformFeedbackVaryings", [__arg_0]);
+  transformFeedbackVaryings_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "transformFeedbackVaryings", [__arg_0]);
 
-  transformFeedbackVaryings_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "transformFeedbackVaryings", [__arg_0, __arg_1]);
+  transformFeedbackVaryings_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "transformFeedbackVaryings", [__arg_0, __arg_1]);
 
-  transformFeedbackVaryings_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "transformFeedbackVaryings", [__arg_0, __arg_1, __arg_2]);
+  transformFeedbackVaryings_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "transformFeedbackVaryings", [__arg_0, __arg_1, __arg_2]);
 
-  uniform1ui_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1ui", []);
+  uniform1ui_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform1ui", []);
 
-  uniform1ui_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1ui", [__arg_0]);
+  uniform1ui_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform1ui", [__arg_0]);
 
-  uniform1ui_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1ui", [__arg_0, __arg_1]);
+  uniform1ui_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform1ui", [__arg_0, __arg_1]);
 
-  uniform1uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1uiv", []);
+  uniform1uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform1uiv", []);
 
-  uniform1uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1uiv", [__arg_0]);
+  uniform1uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform1uiv", [__arg_0]);
 
-  uniform1uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1uiv", [__arg_0, __arg_1]);
+  uniform1uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform1uiv", [__arg_0, __arg_1]);
 
-  uniform2ui_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2ui", [__arg_0]);
+  uniform2ui_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform2ui", [__arg_0]);
 
-  uniform2ui_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2ui", [__arg_0, __arg_1]);
+  uniform2ui_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform2ui", [__arg_0, __arg_1]);
 
-  uniform2ui_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform2ui", [__arg_0, __arg_1, __arg_2]);
+  uniform2ui_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform2ui", [__arg_0, __arg_1, __arg_2]);
 
-  uniform2uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform2uiv", []);
+  uniform2uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform2uiv", []);
 
-  uniform2uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2uiv", [__arg_0]);
+  uniform2uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform2uiv", [__arg_0]);
 
-  uniform2uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2uiv", [__arg_0, __arg_1]);
+  uniform2uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform2uiv", [__arg_0, __arg_1]);
 
-  uniform3ui_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3ui", [__arg_0, __arg_1]);
+  uniform3ui_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform3ui", [__arg_0, __arg_1]);
 
-  uniform3ui_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform3ui", [__arg_0, __arg_1, __arg_2]);
+  uniform3ui_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform3ui", [__arg_0, __arg_1, __arg_2]);
 
-  uniform3ui_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform3ui", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform3ui_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform3ui", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform3uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform3uiv", []);
+  uniform3uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform3uiv", []);
 
-  uniform3uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform3uiv", [__arg_0]);
+  uniform3uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform3uiv", [__arg_0]);
 
-  uniform3uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3uiv", [__arg_0, __arg_1]);
+  uniform3uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform3uiv", [__arg_0, __arg_1]);
 
-  uniform4ui_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform4ui", [__arg_0, __arg_1, __arg_2]);
+  uniform4ui_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform4ui", [__arg_0, __arg_1, __arg_2]);
 
-  uniform4ui_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform4ui", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform4ui_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform4ui", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform4ui_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "uniform4ui", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  uniform4ui_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform4ui", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  uniform4uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform4uiv", []);
+  uniform4uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform4uiv", []);
 
-  uniform4uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform4uiv", [__arg_0]);
+  uniform4uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform4uiv", [__arg_0]);
 
-  uniform4uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform4uiv", [__arg_0, __arg_1]);
+  uniform4uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform4uiv", [__arg_0, __arg_1]);
 
-  uniformBlockBinding_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformBlockBinding", [__arg_0]);
+  uniformBlockBinding_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformBlockBinding", [__arg_0]);
 
-  uniformBlockBinding_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformBlockBinding", [__arg_0, __arg_1]);
+  uniformBlockBinding_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformBlockBinding", [__arg_0, __arg_1]);
 
-  uniformBlockBinding_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformBlockBinding", [__arg_0, __arg_1, __arg_2]);
+  uniformBlockBinding_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformBlockBinding", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix2x3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2x3fv", [__arg_0]);
+  uniformMatrix2x3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix2x3fv", [__arg_0]);
 
-  uniformMatrix2x3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2x3fv", [__arg_0, __arg_1]);
+  uniformMatrix2x3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix2x3fv", [__arg_0, __arg_1]);
 
-  uniformMatrix2x3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2x3fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix2x3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix2x3fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix2x4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2x4fv", [__arg_0]);
+  uniformMatrix2x4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix2x4fv", [__arg_0]);
 
-  uniformMatrix2x4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2x4fv", [__arg_0, __arg_1]);
+  uniformMatrix2x4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix2x4fv", [__arg_0, __arg_1]);
 
-  uniformMatrix2x4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2x4fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix2x4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix2x4fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix3x2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3x2fv", [__arg_0]);
+  uniformMatrix3x2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix3x2fv", [__arg_0]);
 
-  uniformMatrix3x2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3x2fv", [__arg_0, __arg_1]);
+  uniformMatrix3x2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix3x2fv", [__arg_0, __arg_1]);
 
-  uniformMatrix3x2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3x2fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix3x2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix3x2fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix3x4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3x4fv", [__arg_0]);
+  uniformMatrix3x4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix3x4fv", [__arg_0]);
 
-  uniformMatrix3x4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3x4fv", [__arg_0, __arg_1]);
+  uniformMatrix3x4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix3x4fv", [__arg_0, __arg_1]);
 
-  uniformMatrix3x4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3x4fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix3x4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix3x4fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix4x2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4x2fv", [__arg_0]);
+  uniformMatrix4x2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix4x2fv", [__arg_0]);
 
-  uniformMatrix4x2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4x2fv", [__arg_0, __arg_1]);
+  uniformMatrix4x2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix4x2fv", [__arg_0, __arg_1]);
 
-  uniformMatrix4x2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4x2fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix4x2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix4x2fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix4x3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4x3fv", [__arg_0]);
+  uniformMatrix4x3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix4x3fv", [__arg_0]);
 
-  uniformMatrix4x3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4x3fv", [__arg_0, __arg_1]);
+  uniformMatrix4x3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix4x3fv", [__arg_0, __arg_1]);
 
-  uniformMatrix4x3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4x3fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix4x3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix4x3fv", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttribDivisor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribDivisor", []);
+  vertexAttribDivisor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribDivisor", []);
 
-  vertexAttribDivisor_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribDivisor", [__arg_0]);
+  vertexAttribDivisor_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribDivisor", [__arg_0]);
 
-  vertexAttribDivisor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribDivisor", [__arg_0, __arg_1]);
+  vertexAttribDivisor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribDivisor", [__arg_0, __arg_1]);
 
-  vertexAttribI4i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4i", [__arg_0, __arg_1, __arg_2]);
+  vertexAttribI4i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4i", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttribI4i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4i", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttribI4i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4i", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttribI4i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4i", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  vertexAttribI4i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4i", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  vertexAttribI4iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4iv", []);
+  vertexAttribI4iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4iv", []);
 
-  vertexAttribI4iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4iv", [__arg_0]);
+  vertexAttribI4iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4iv", [__arg_0]);
 
-  vertexAttribI4iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4iv", [__arg_0, __arg_1]);
+  vertexAttribI4iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4iv", [__arg_0, __arg_1]);
 
-  vertexAttribI4ui_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4ui", [__arg_0, __arg_1, __arg_2]);
+  vertexAttribI4ui_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4ui", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttribI4ui_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4ui", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttribI4ui_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4ui", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttribI4ui_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4ui", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  vertexAttribI4ui_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4ui", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  vertexAttribI4uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4uiv", []);
+  vertexAttribI4uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4uiv", []);
 
-  vertexAttribI4uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4uiv", [__arg_0]);
+  vertexAttribI4uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4uiv", [__arg_0]);
 
-  vertexAttribI4uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4uiv", [__arg_0, __arg_1]);
+  vertexAttribI4uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4uiv", [__arg_0, __arg_1]);
 
-  vertexAttribIPointer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribIPointer", [__arg_0, __arg_1, __arg_2]);
+  vertexAttribIPointer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribIPointer", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttribIPointer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribIPointer", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttribIPointer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribIPointer", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttribIPointer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribIPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  vertexAttribIPointer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribIPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  waitSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "waitSync", [__arg_0]);
+  waitSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "waitSync", [__arg_0]);
 
-  waitSync_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "waitSync", [__arg_0, __arg_1]);
+  waitSync_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "waitSync", [__arg_0, __arg_1]);
 
-  waitSync_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "waitSync", [__arg_0, __arg_1, __arg_2]);
+  waitSync_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "waitSync", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkWebGL2RenderingContextBase {
   static final instance = new BlinkWebGL2RenderingContextBase();
 
-  beginQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "beginQuery", []);
+  beginQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "beginQuery", []);
 
-  beginQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "beginQuery", [__arg_0]);
+  beginQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "beginQuery", [__arg_0]);
 
-  beginQuery_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "beginQuery", [__arg_0, __arg_1]);
+  beginQuery_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "beginQuery", [__arg_0, __arg_1]);
 
-  beginTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "beginTransformFeedback", []);
+  beginTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "beginTransformFeedback", []);
 
-  beginTransformFeedback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "beginTransformFeedback", [__arg_0]);
+  beginTransformFeedback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "beginTransformFeedback", [__arg_0]);
 
-  bindBufferBase_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindBufferBase", [__arg_0]);
+  bindBufferBase_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindBufferBase", [__arg_0]);
 
-  bindBufferBase_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindBufferBase", [__arg_0, __arg_1]);
+  bindBufferBase_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindBufferBase", [__arg_0, __arg_1]);
 
-  bindBufferBase_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "bindBufferBase", [__arg_0, __arg_1, __arg_2]);
+  bindBufferBase_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindBufferBase", [__arg_0, __arg_1, __arg_2]);
 
-  bindBufferRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "bindBufferRange", [__arg_0, __arg_1, __arg_2]);
+  bindBufferRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindBufferRange", [__arg_0, __arg_1, __arg_2]);
 
-  bindBufferRange_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "bindBufferRange", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  bindBufferRange_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindBufferRange", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  bindBufferRange_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "bindBufferRange", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  bindBufferRange_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindBufferRange", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  bindSampler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindSampler", []);
+  bindSampler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindSampler", []);
 
-  bindSampler_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindSampler", [__arg_0]);
+  bindSampler_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindSampler", [__arg_0]);
 
-  bindSampler_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindSampler", [__arg_0, __arg_1]);
+  bindSampler_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindSampler", [__arg_0, __arg_1]);
 
-  bindTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindTransformFeedback", []);
+  bindTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindTransformFeedback", []);
 
-  bindTransformFeedback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindTransformFeedback", [__arg_0]);
+  bindTransformFeedback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindTransformFeedback", [__arg_0]);
 
-  bindTransformFeedback_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindTransformFeedback", [__arg_0, __arg_1]);
+  bindTransformFeedback_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindTransformFeedback", [__arg_0, __arg_1]);
 
-  bindVertexArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindVertexArray", []);
+  bindVertexArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindVertexArray", []);
 
-  bindVertexArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindVertexArray", [__arg_0]);
+  bindVertexArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "bindVertexArray", [__arg_0]);
 
-  blitFramebuffer_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "blitFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
+  blitFramebuffer_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "blitFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  blitFramebuffer_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "blitFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
+  blitFramebuffer_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "blitFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  blitFramebuffer_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis, "blitFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
+  blitFramebuffer_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "blitFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
 
-  clearBufferfi_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferfi", [__arg_0, __arg_1]);
+  clearBufferfi_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferfi", [__arg_0, __arg_1]);
 
-  clearBufferfi_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferfi", [__arg_0, __arg_1, __arg_2]);
+  clearBufferfi_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferfi", [__arg_0, __arg_1, __arg_2]);
 
-  clearBufferfi_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferfi", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  clearBufferfi_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferfi", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  clearBufferfv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferfv", [__arg_0]);
+  clearBufferfv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferfv", [__arg_0]);
 
-  clearBufferfv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferfv", [__arg_0, __arg_1]);
+  clearBufferfv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferfv", [__arg_0, __arg_1]);
 
-  clearBufferfv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferfv", [__arg_0, __arg_1, __arg_2]);
+  clearBufferfv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferfv", [__arg_0, __arg_1, __arg_2]);
 
-  clearBufferiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferiv", [__arg_0]);
+  clearBufferiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferiv", [__arg_0]);
 
-  clearBufferiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferiv", [__arg_0, __arg_1]);
+  clearBufferiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferiv", [__arg_0, __arg_1]);
 
-  clearBufferiv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferiv", [__arg_0, __arg_1, __arg_2]);
+  clearBufferiv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferiv", [__arg_0, __arg_1, __arg_2]);
 
-  clearBufferuiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferuiv", [__arg_0]);
+  clearBufferuiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferuiv", [__arg_0]);
 
-  clearBufferuiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferuiv", [__arg_0, __arg_1]);
+  clearBufferuiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferuiv", [__arg_0, __arg_1]);
 
-  clearBufferuiv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "clearBufferuiv", [__arg_0, __arg_1, __arg_2]);
+  clearBufferuiv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clearBufferuiv", [__arg_0, __arg_1, __arg_2]);
 
-  clientWaitSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clientWaitSync", [__arg_0]);
+  clientWaitSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clientWaitSync", [__arg_0]);
 
-  clientWaitSync_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "clientWaitSync", [__arg_0, __arg_1]);
+  clientWaitSync_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clientWaitSync", [__arg_0, __arg_1]);
 
-  clientWaitSync_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "clientWaitSync", [__arg_0, __arg_1, __arg_2]);
+  clientWaitSync_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "clientWaitSync", [__arg_0, __arg_1, __arg_2]);
 
-  compressedTexImage3D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
+  compressedTexImage3D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "compressedTexImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  compressedTexImage3D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
+  compressedTexImage3D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "compressedTexImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  compressedTexImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
+  compressedTexImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "compressedTexImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  compressedTexSubImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
+  compressedTexSubImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "compressedTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  compressedTexSubImage3D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
+  compressedTexSubImage3D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "compressedTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  compressedTexSubImage3D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
+  compressedTexSubImage3D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "compressedTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
 
-  copyBufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "copyBufferSubData", [__arg_0, __arg_1, __arg_2]);
+  copyBufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "copyBufferSubData", [__arg_0, __arg_1, __arg_2]);
 
-  copyBufferSubData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "copyBufferSubData", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  copyBufferSubData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "copyBufferSubData", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  copyBufferSubData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "copyBufferSubData", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  copyBufferSubData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "copyBufferSubData", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  copyTexSubImage3D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
+  copyTexSubImage3D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "copyTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  copyTexSubImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
+  copyTexSubImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "copyTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  copyTexSubImage3D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
+  copyTexSubImage3D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "copyTexSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  createQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createQuery", []);
+  createQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "createQuery", []);
 
-  createSampler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createSampler", []);
+  createSampler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "createSampler", []);
 
-  createTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createTransformFeedback", []);
+  createTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "createTransformFeedback", []);
 
-  createVertexArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createVertexArray", []);
+  createVertexArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "createVertexArray", []);
 
-  deleteQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteQuery", []);
+  deleteQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteQuery", []);
 
-  deleteQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteQuery", [__arg_0]);
+  deleteQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteQuery", [__arg_0]);
 
-  deleteSampler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteSampler", []);
+  deleteSampler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteSampler", []);
 
-  deleteSampler_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteSampler", [__arg_0]);
+  deleteSampler_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteSampler", [__arg_0]);
 
-  deleteSync_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteSync", []);
+  deleteSync_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteSync", []);
 
-  deleteSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteSync", [__arg_0]);
+  deleteSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteSync", [__arg_0]);
 
-  deleteTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteTransformFeedback", []);
+  deleteTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteTransformFeedback", []);
 
-  deleteTransformFeedback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteTransformFeedback", [__arg_0]);
+  deleteTransformFeedback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteTransformFeedback", [__arg_0]);
 
-  deleteVertexArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteVertexArray", []);
+  deleteVertexArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteVertexArray", []);
 
-  deleteVertexArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteVertexArray", [__arg_0]);
+  deleteVertexArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "deleteVertexArray", [__arg_0]);
 
-  drawArraysInstanced_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "drawArraysInstanced", [__arg_0, __arg_1]);
+  drawArraysInstanced_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawArraysInstanced", [__arg_0, __arg_1]);
 
-  drawArraysInstanced_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "drawArraysInstanced", [__arg_0, __arg_1, __arg_2]);
+  drawArraysInstanced_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawArraysInstanced", [__arg_0, __arg_1, __arg_2]);
 
-  drawArraysInstanced_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "drawArraysInstanced", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  drawArraysInstanced_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawArraysInstanced", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  drawBuffers_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "drawBuffers", []);
+  drawBuffers_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawBuffers", []);
 
-  drawBuffers_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "drawBuffers", [__arg_0]);
+  drawBuffers_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawBuffers", [__arg_0]);
 
-  drawElementsInstanced_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "drawElementsInstanced", [__arg_0, __arg_1, __arg_2]);
+  drawElementsInstanced_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawElementsInstanced", [__arg_0, __arg_1, __arg_2]);
 
-  drawElementsInstanced_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "drawElementsInstanced", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  drawElementsInstanced_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawElementsInstanced", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  drawElementsInstanced_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "drawElementsInstanced", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  drawElementsInstanced_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawElementsInstanced", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  drawRangeElements_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "drawRangeElements", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  drawRangeElements_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawRangeElements", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  drawRangeElements_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "drawRangeElements", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  drawRangeElements_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawRangeElements", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  drawRangeElements_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "drawRangeElements", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
+  drawRangeElements_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "drawRangeElements", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  endQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "endQuery", []);
+  endQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "endQuery", []);
 
-  endQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "endQuery", [__arg_0]);
+  endQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "endQuery", [__arg_0]);
 
-  endTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "endTransformFeedback", []);
+  endTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "endTransformFeedback", []);
 
-  fenceSync_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "fenceSync", []);
+  fenceSync_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "fenceSync", []);
 
-  fenceSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "fenceSync", [__arg_0]);
+  fenceSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "fenceSync", [__arg_0]);
 
-  fenceSync_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "fenceSync", [__arg_0, __arg_1]);
+  fenceSync_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "fenceSync", [__arg_0, __arg_1]);
 
-  framebufferTextureLayer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTextureLayer", [__arg_0, __arg_1, __arg_2]);
+  framebufferTextureLayer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "framebufferTextureLayer", [__arg_0, __arg_1, __arg_2]);
 
-  framebufferTextureLayer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTextureLayer", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  framebufferTextureLayer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "framebufferTextureLayer", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  framebufferTextureLayer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTextureLayer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  framebufferTextureLayer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "framebufferTextureLayer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  getActiveUniformBlockName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniformBlockName", []);
+  getActiveUniformBlockName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniformBlockName", []);
 
-  getActiveUniformBlockName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniformBlockName", [__arg_0]);
+  getActiveUniformBlockName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniformBlockName", [__arg_0]);
 
-  getActiveUniformBlockName_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniformBlockName", [__arg_0, __arg_1]);
+  getActiveUniformBlockName_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniformBlockName", [__arg_0, __arg_1]);
 
-  getActiveUniformBlockParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniformBlockParameter", [__arg_0]);
+  getActiveUniformBlockParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniformBlockParameter", [__arg_0]);
 
-  getActiveUniformBlockParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniformBlockParameter", [__arg_0, __arg_1]);
+  getActiveUniformBlockParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniformBlockParameter", [__arg_0, __arg_1]);
 
-  getActiveUniformBlockParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniformBlockParameter", [__arg_0, __arg_1, __arg_2]);
+  getActiveUniformBlockParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniformBlockParameter", [__arg_0, __arg_1, __arg_2]);
 
-  getActiveUniforms_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniforms", [__arg_0]);
+  getActiveUniforms_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniforms", [__arg_0]);
 
-  getActiveUniforms_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniforms", [__arg_0, __arg_1]);
+  getActiveUniforms_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniforms", [__arg_0, __arg_1]);
 
-  getActiveUniforms_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniforms", [__arg_0, __arg_1, __arg_2]);
+  getActiveUniforms_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getActiveUniforms", [__arg_0, __arg_1, __arg_2]);
 
-  getBufferSubData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getBufferSubData", [__arg_0]);
+  getBufferSubData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getBufferSubData", [__arg_0]);
 
-  getBufferSubData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getBufferSubData", [__arg_0, __arg_1]);
+  getBufferSubData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getBufferSubData", [__arg_0, __arg_1]);
 
-  getBufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getBufferSubData", [__arg_0, __arg_1, __arg_2]);
+  getBufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getBufferSubData", [__arg_0, __arg_1, __arg_2]);
 
-  getFragDataLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getFragDataLocation", []);
+  getFragDataLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getFragDataLocation", []);
 
-  getFragDataLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getFragDataLocation", [__arg_0]);
+  getFragDataLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getFragDataLocation", [__arg_0]);
 
-  getFragDataLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getFragDataLocation", [__arg_0, __arg_1]);
+  getFragDataLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getFragDataLocation", [__arg_0, __arg_1]);
 
-  getIndexedParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getIndexedParameter", []);
+  getIndexedParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getIndexedParameter", []);
 
-  getIndexedParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getIndexedParameter", [__arg_0]);
+  getIndexedParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getIndexedParameter", [__arg_0]);
 
-  getIndexedParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getIndexedParameter", [__arg_0, __arg_1]);
+  getIndexedParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getIndexedParameter", [__arg_0, __arg_1]);
 
-  getInternalformatParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getInternalformatParameter", [__arg_0]);
+  getInternalformatParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getInternalformatParameter", [__arg_0]);
 
-  getInternalformatParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getInternalformatParameter", [__arg_0, __arg_1]);
+  getInternalformatParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getInternalformatParameter", [__arg_0, __arg_1]);
 
-  getInternalformatParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getInternalformatParameter", [__arg_0, __arg_1, __arg_2]);
+  getInternalformatParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getInternalformatParameter", [__arg_0, __arg_1, __arg_2]);
 
-  getQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getQuery", []);
+  getQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getQuery", []);
 
-  getQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getQuery", [__arg_0]);
+  getQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getQuery", [__arg_0]);
 
-  getQuery_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getQuery", [__arg_0, __arg_1]);
+  getQuery_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getQuery", [__arg_0, __arg_1]);
 
-  getQueryParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getQueryParameter", []);
+  getQueryParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getQueryParameter", []);
 
-  getQueryParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getQueryParameter", [__arg_0]);
+  getQueryParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getQueryParameter", [__arg_0]);
 
-  getQueryParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getQueryParameter", [__arg_0, __arg_1]);
+  getQueryParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getQueryParameter", [__arg_0, __arg_1]);
 
-  getSamplerParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSamplerParameter", []);
+  getSamplerParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getSamplerParameter", []);
 
-  getSamplerParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getSamplerParameter", [__arg_0]);
+  getSamplerParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getSamplerParameter", [__arg_0]);
 
-  getSamplerParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getSamplerParameter", [__arg_0, __arg_1]);
+  getSamplerParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getSamplerParameter", [__arg_0, __arg_1]);
 
-  getSyncParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSyncParameter", []);
+  getSyncParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getSyncParameter", []);
 
-  getSyncParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getSyncParameter", [__arg_0]);
+  getSyncParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getSyncParameter", [__arg_0]);
 
-  getSyncParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getSyncParameter", [__arg_0, __arg_1]);
+  getSyncParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getSyncParameter", [__arg_0, __arg_1]);
 
-  getTransformFeedbackVarying_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getTransformFeedbackVarying", []);
+  getTransformFeedbackVarying_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getTransformFeedbackVarying", []);
 
-  getTransformFeedbackVarying_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getTransformFeedbackVarying", [__arg_0]);
+  getTransformFeedbackVarying_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getTransformFeedbackVarying", [__arg_0]);
 
-  getTransformFeedbackVarying_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getTransformFeedbackVarying", [__arg_0, __arg_1]);
+  getTransformFeedbackVarying_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getTransformFeedbackVarying", [__arg_0, __arg_1]);
 
-  getUniformBlockIndex_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getUniformBlockIndex", []);
+  getUniformBlockIndex_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getUniformBlockIndex", []);
 
-  getUniformBlockIndex_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getUniformBlockIndex", [__arg_0]);
+  getUniformBlockIndex_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getUniformBlockIndex", [__arg_0]);
 
-  getUniformBlockIndex_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getUniformBlockIndex", [__arg_0, __arg_1]);
+  getUniformBlockIndex_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getUniformBlockIndex", [__arg_0, __arg_1]);
 
-  getUniformIndices_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getUniformIndices", []);
+  getUniformIndices_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getUniformIndices", []);
 
-  getUniformIndices_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getUniformIndices", [__arg_0]);
+  getUniformIndices_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getUniformIndices", [__arg_0]);
 
-  getUniformIndices_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getUniformIndices", [__arg_0, __arg_1]);
+  getUniformIndices_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "getUniformIndices", [__arg_0, __arg_1]);
 
-  invalidateFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "invalidateFramebuffer", []);
+  invalidateFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "invalidateFramebuffer", []);
 
-  invalidateFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "invalidateFramebuffer", [__arg_0]);
+  invalidateFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "invalidateFramebuffer", [__arg_0]);
 
-  invalidateFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "invalidateFramebuffer", [__arg_0, __arg_1]);
+  invalidateFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "invalidateFramebuffer", [__arg_0, __arg_1]);
 
-  invalidateSubFramebuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "invalidateSubFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  invalidateSubFramebuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "invalidateSubFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  invalidateSubFramebuffer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "invalidateSubFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  invalidateSubFramebuffer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "invalidateSubFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  invalidateSubFramebuffer_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "invalidateSubFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
+  invalidateSubFramebuffer_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "invalidateSubFramebuffer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  isQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isQuery", []);
+  isQuery_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isQuery", []);
 
-  isQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isQuery", [__arg_0]);
+  isQuery_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isQuery", [__arg_0]);
 
-  isSampler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isSampler", []);
+  isSampler_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isSampler", []);
 
-  isSampler_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isSampler", [__arg_0]);
+  isSampler_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isSampler", [__arg_0]);
 
-  isSync_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isSync", []);
+  isSync_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isSync", []);
 
-  isSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isSync", [__arg_0]);
+  isSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isSync", [__arg_0]);
 
-  isTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isTransformFeedback", []);
+  isTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isTransformFeedback", []);
 
-  isTransformFeedback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isTransformFeedback", [__arg_0]);
+  isTransformFeedback_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isTransformFeedback", [__arg_0]);
 
-  isVertexArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isVertexArray", []);
+  isVertexArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isVertexArray", []);
 
-  isVertexArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isVertexArray", [__arg_0]);
+  isVertexArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "isVertexArray", [__arg_0]);
 
-  pauseTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "pauseTransformFeedback", []);
+  pauseTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "pauseTransformFeedback", []);
 
-  readBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "readBuffer", []);
+  readBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "readBuffer", []);
 
-  readBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "readBuffer", [__arg_0]);
+  readBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "readBuffer", [__arg_0]);
 
-  renderbufferStorageMultisample_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorageMultisample", [__arg_0, __arg_1, __arg_2]);
+  renderbufferStorageMultisample_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "renderbufferStorageMultisample", [__arg_0, __arg_1, __arg_2]);
 
-  renderbufferStorageMultisample_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorageMultisample", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  renderbufferStorageMultisample_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "renderbufferStorageMultisample", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  renderbufferStorageMultisample_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorageMultisample", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  renderbufferStorageMultisample_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "renderbufferStorageMultisample", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  resumeTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "resumeTransformFeedback", []);
+  resumeTransformFeedback_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "resumeTransformFeedback", []);
 
-  samplerParameterf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "samplerParameterf", [__arg_0]);
+  samplerParameterf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "samplerParameterf", [__arg_0]);
 
-  samplerParameterf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "samplerParameterf", [__arg_0, __arg_1]);
+  samplerParameterf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "samplerParameterf", [__arg_0, __arg_1]);
 
-  samplerParameterf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "samplerParameterf", [__arg_0, __arg_1, __arg_2]);
+  samplerParameterf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "samplerParameterf", [__arg_0, __arg_1, __arg_2]);
 
-  samplerParameteri_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "samplerParameteri", [__arg_0]);
+  samplerParameteri_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "samplerParameteri", [__arg_0]);
 
-  samplerParameteri_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "samplerParameteri", [__arg_0, __arg_1]);
+  samplerParameteri_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "samplerParameteri", [__arg_0, __arg_1]);
 
-  samplerParameteri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "samplerParameteri", [__arg_0, __arg_1, __arg_2]);
+  samplerParameteri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "samplerParameteri", [__arg_0, __arg_1, __arg_2]);
 
-  texImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "texImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
+  texImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  texImage3D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "texImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
+  texImage3D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  texImage3D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis, "texImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
+  texImage3D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
 
-  texStorage2D_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "texStorage2D", [__arg_0, __arg_1, __arg_2]);
+  texStorage2D_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texStorage2D", [__arg_0, __arg_1, __arg_2]);
 
-  texStorage2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "texStorage2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  texStorage2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texStorage2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  texStorage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "texStorage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  texStorage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texStorage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  texStorage3D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "texStorage3D", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  texStorage3D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texStorage3D", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  texStorage3D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "texStorage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  texStorage3D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texStorage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  texStorage3D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "texStorage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
+  texStorage3D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texStorage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  texSubImage3D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
+  texSubImage3D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  texSubImage3D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
+  texSubImage3D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  texSubImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
+  texSubImage3D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  texSubImage3D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
+  texSubImage3D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  texSubImage3D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
+  texSubImage3D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
 
-  texSubImage3D_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) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10]);
+  texSubImage3D_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) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "texSubImage3D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10]);
 
-  transformFeedbackVaryings_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "transformFeedbackVaryings", [__arg_0]);
+  transformFeedbackVaryings_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "transformFeedbackVaryings", [__arg_0]);
 
-  transformFeedbackVaryings_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "transformFeedbackVaryings", [__arg_0, __arg_1]);
+  transformFeedbackVaryings_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "transformFeedbackVaryings", [__arg_0, __arg_1]);
 
-  transformFeedbackVaryings_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "transformFeedbackVaryings", [__arg_0, __arg_1, __arg_2]);
+  transformFeedbackVaryings_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "transformFeedbackVaryings", [__arg_0, __arg_1, __arg_2]);
 
-  uniform1ui_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1ui", []);
+  uniform1ui_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform1ui", []);
 
-  uniform1ui_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1ui", [__arg_0]);
+  uniform1ui_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform1ui", [__arg_0]);
 
-  uniform1ui_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1ui", [__arg_0, __arg_1]);
+  uniform1ui_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform1ui", [__arg_0, __arg_1]);
 
-  uniform1uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1uiv", []);
+  uniform1uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform1uiv", []);
 
-  uniform1uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1uiv", [__arg_0]);
+  uniform1uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform1uiv", [__arg_0]);
 
-  uniform1uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1uiv", [__arg_0, __arg_1]);
+  uniform1uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform1uiv", [__arg_0, __arg_1]);
 
-  uniform2ui_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2ui", [__arg_0]);
+  uniform2ui_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform2ui", [__arg_0]);
 
-  uniform2ui_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2ui", [__arg_0, __arg_1]);
+  uniform2ui_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform2ui", [__arg_0, __arg_1]);
 
-  uniform2ui_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform2ui", [__arg_0, __arg_1, __arg_2]);
+  uniform2ui_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform2ui", [__arg_0, __arg_1, __arg_2]);
 
-  uniform2uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform2uiv", []);
+  uniform2uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform2uiv", []);
 
-  uniform2uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2uiv", [__arg_0]);
+  uniform2uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform2uiv", [__arg_0]);
 
-  uniform2uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2uiv", [__arg_0, __arg_1]);
+  uniform2uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform2uiv", [__arg_0, __arg_1]);
 
-  uniform3ui_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3ui", [__arg_0, __arg_1]);
+  uniform3ui_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform3ui", [__arg_0, __arg_1]);
 
-  uniform3ui_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform3ui", [__arg_0, __arg_1, __arg_2]);
+  uniform3ui_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform3ui", [__arg_0, __arg_1, __arg_2]);
 
-  uniform3ui_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform3ui", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform3ui_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform3ui", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform3uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform3uiv", []);
+  uniform3uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform3uiv", []);
 
-  uniform3uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform3uiv", [__arg_0]);
+  uniform3uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform3uiv", [__arg_0]);
 
-  uniform3uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3uiv", [__arg_0, __arg_1]);
+  uniform3uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform3uiv", [__arg_0, __arg_1]);
 
-  uniform4ui_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform4ui", [__arg_0, __arg_1, __arg_2]);
+  uniform4ui_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform4ui", [__arg_0, __arg_1, __arg_2]);
 
-  uniform4ui_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform4ui", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform4ui_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform4ui", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform4ui_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "uniform4ui", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  uniform4ui_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform4ui", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  uniform4uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform4uiv", []);
+  uniform4uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform4uiv", []);
 
-  uniform4uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform4uiv", [__arg_0]);
+  uniform4uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform4uiv", [__arg_0]);
 
-  uniform4uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform4uiv", [__arg_0, __arg_1]);
+  uniform4uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniform4uiv", [__arg_0, __arg_1]);
 
-  uniformBlockBinding_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformBlockBinding", [__arg_0]);
+  uniformBlockBinding_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformBlockBinding", [__arg_0]);
 
-  uniformBlockBinding_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformBlockBinding", [__arg_0, __arg_1]);
+  uniformBlockBinding_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformBlockBinding", [__arg_0, __arg_1]);
 
-  uniformBlockBinding_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformBlockBinding", [__arg_0, __arg_1, __arg_2]);
+  uniformBlockBinding_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformBlockBinding", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix2x3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2x3fv", [__arg_0]);
+  uniformMatrix2x3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix2x3fv", [__arg_0]);
 
-  uniformMatrix2x3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2x3fv", [__arg_0, __arg_1]);
+  uniformMatrix2x3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix2x3fv", [__arg_0, __arg_1]);
 
-  uniformMatrix2x3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2x3fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix2x3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix2x3fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix2x4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2x4fv", [__arg_0]);
+  uniformMatrix2x4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix2x4fv", [__arg_0]);
 
-  uniformMatrix2x4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2x4fv", [__arg_0, __arg_1]);
+  uniformMatrix2x4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix2x4fv", [__arg_0, __arg_1]);
 
-  uniformMatrix2x4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2x4fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix2x4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix2x4fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix3x2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3x2fv", [__arg_0]);
+  uniformMatrix3x2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix3x2fv", [__arg_0]);
 
-  uniformMatrix3x2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3x2fv", [__arg_0, __arg_1]);
+  uniformMatrix3x2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix3x2fv", [__arg_0, __arg_1]);
 
-  uniformMatrix3x2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3x2fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix3x2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix3x2fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix3x4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3x4fv", [__arg_0]);
+  uniformMatrix3x4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix3x4fv", [__arg_0]);
 
-  uniformMatrix3x4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3x4fv", [__arg_0, __arg_1]);
+  uniformMatrix3x4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix3x4fv", [__arg_0, __arg_1]);
 
-  uniformMatrix3x4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3x4fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix3x4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix3x4fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix4x2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4x2fv", [__arg_0]);
+  uniformMatrix4x2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix4x2fv", [__arg_0]);
 
-  uniformMatrix4x2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4x2fv", [__arg_0, __arg_1]);
+  uniformMatrix4x2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix4x2fv", [__arg_0, __arg_1]);
 
-  uniformMatrix4x2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4x2fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix4x2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix4x2fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix4x3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4x3fv", [__arg_0]);
+  uniformMatrix4x3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix4x3fv", [__arg_0]);
 
-  uniformMatrix4x3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4x3fv", [__arg_0, __arg_1]);
+  uniformMatrix4x3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix4x3fv", [__arg_0, __arg_1]);
 
-  uniformMatrix4x3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4x3fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix4x3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "uniformMatrix4x3fv", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttribDivisor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribDivisor", []);
+  vertexAttribDivisor_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribDivisor", []);
 
-  vertexAttribDivisor_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribDivisor", [__arg_0]);
+  vertexAttribDivisor_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribDivisor", [__arg_0]);
 
-  vertexAttribDivisor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribDivisor", [__arg_0, __arg_1]);
+  vertexAttribDivisor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribDivisor", [__arg_0, __arg_1]);
 
-  vertexAttribI4i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4i", [__arg_0, __arg_1, __arg_2]);
+  vertexAttribI4i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4i", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttribI4i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4i", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttribI4i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4i", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttribI4i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4i", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  vertexAttribI4i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4i", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  vertexAttribI4iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4iv", []);
+  vertexAttribI4iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4iv", []);
 
-  vertexAttribI4iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4iv", [__arg_0]);
+  vertexAttribI4iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4iv", [__arg_0]);
 
-  vertexAttribI4iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4iv", [__arg_0, __arg_1]);
+  vertexAttribI4iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4iv", [__arg_0, __arg_1]);
 
-  vertexAttribI4ui_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4ui", [__arg_0, __arg_1, __arg_2]);
+  vertexAttribI4ui_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4ui", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttribI4ui_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4ui", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttribI4ui_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4ui", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttribI4ui_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4ui", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  vertexAttribI4ui_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4ui", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  vertexAttribI4uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4uiv", []);
+  vertexAttribI4uiv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4uiv", []);
 
-  vertexAttribI4uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4uiv", [__arg_0]);
+  vertexAttribI4uiv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4uiv", [__arg_0]);
 
-  vertexAttribI4uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribI4uiv", [__arg_0, __arg_1]);
+  vertexAttribI4uiv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribI4uiv", [__arg_0, __arg_1]);
 
-  vertexAttribIPointer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribIPointer", [__arg_0, __arg_1, __arg_2]);
+  vertexAttribIPointer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribIPointer", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttribIPointer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribIPointer", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttribIPointer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribIPointer", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttribIPointer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribIPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  vertexAttribIPointer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "vertexAttribIPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  waitSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "waitSync", [__arg_0]);
+  waitSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "waitSync", [__arg_0]);
 
-  waitSync_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "waitSync", [__arg_0, __arg_1]);
+  waitSync_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "waitSync", [__arg_0, __arg_1]);
 
-  waitSync_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "waitSync", [__arg_0, __arg_1, __arg_2]);
+  waitSync_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGL2RenderingContextBase */, "waitSync", [__arg_0, __arg_1, __arg_2]);
 
-  canvas_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "canvas");
+  canvas_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLRenderingContextBase */, "canvas");
 
-  drawingBufferHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "drawingBufferHeight");
+  drawingBufferHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLRenderingContextBase */, "drawingBufferHeight");
 
-  drawingBufferWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "drawingBufferWidth");
+  drawingBufferWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLRenderingContextBase */, "drawingBufferWidth");
 
-  activeTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "activeTexture", []);
+  activeTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "activeTexture", []);
 
-  activeTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "activeTexture", [__arg_0]);
+  activeTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "activeTexture", [__arg_0]);
 
-  attachShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "attachShader", []);
+  attachShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "attachShader", []);
 
-  attachShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "attachShader", [__arg_0]);
+  attachShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "attachShader", [__arg_0]);
 
-  attachShader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "attachShader", [__arg_0, __arg_1]);
+  attachShader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "attachShader", [__arg_0, __arg_1]);
 
-  bindAttribLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindAttribLocation", [__arg_0]);
+  bindAttribLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindAttribLocation", [__arg_0]);
 
-  bindAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindAttribLocation", [__arg_0, __arg_1]);
+  bindAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindAttribLocation", [__arg_0, __arg_1]);
 
-  bindAttribLocation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "bindAttribLocation", [__arg_0, __arg_1, __arg_2]);
+  bindAttribLocation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindAttribLocation", [__arg_0, __arg_1, __arg_2]);
 
-  bindBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindBuffer", []);
+  bindBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindBuffer", []);
 
-  bindBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindBuffer", [__arg_0]);
+  bindBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindBuffer", [__arg_0]);
 
-  bindBuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindBuffer", [__arg_0, __arg_1]);
+  bindBuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindBuffer", [__arg_0, __arg_1]);
 
-  bindFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindFramebuffer", []);
+  bindFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindFramebuffer", []);
 
-  bindFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindFramebuffer", [__arg_0]);
+  bindFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindFramebuffer", [__arg_0]);
 
-  bindFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindFramebuffer", [__arg_0, __arg_1]);
+  bindFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindFramebuffer", [__arg_0, __arg_1]);
 
-  bindRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindRenderbuffer", []);
+  bindRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindRenderbuffer", []);
 
-  bindRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindRenderbuffer", [__arg_0]);
+  bindRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindRenderbuffer", [__arg_0]);
 
-  bindRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindRenderbuffer", [__arg_0, __arg_1]);
+  bindRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindRenderbuffer", [__arg_0, __arg_1]);
 
-  bindTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindTexture", []);
+  bindTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindTexture", []);
 
-  bindTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindTexture", [__arg_0]);
+  bindTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindTexture", [__arg_0]);
 
-  bindTexture_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindTexture", [__arg_0, __arg_1]);
+  bindTexture_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindTexture", [__arg_0, __arg_1]);
 
-  blendColor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "blendColor", [__arg_0, __arg_1]);
+  blendColor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendColor", [__arg_0, __arg_1]);
 
-  blendColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "blendColor", [__arg_0, __arg_1, __arg_2]);
+  blendColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendColor", [__arg_0, __arg_1, __arg_2]);
 
-  blendColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "blendColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  blendColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  blendEquation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blendEquation", []);
+  blendEquation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquation", []);
 
-  blendEquation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "blendEquation", [__arg_0]);
+  blendEquation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquation", [__arg_0]);
 
-  blendEquationSeparate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blendEquationSeparate", []);
+  blendEquationSeparate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquationSeparate", []);
 
-  blendEquationSeparate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "blendEquationSeparate", [__arg_0]);
+  blendEquationSeparate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquationSeparate", [__arg_0]);
 
-  blendEquationSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "blendEquationSeparate", [__arg_0, __arg_1]);
+  blendEquationSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquationSeparate", [__arg_0, __arg_1]);
 
-  blendFunc_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blendFunc", []);
+  blendFunc_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFunc", []);
 
-  blendFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "blendFunc", [__arg_0]);
+  blendFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFunc", [__arg_0]);
 
-  blendFunc_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "blendFunc", [__arg_0, __arg_1]);
+  blendFunc_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFunc", [__arg_0, __arg_1]);
 
-  blendFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "blendFuncSeparate", [__arg_0, __arg_1]);
+  blendFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFuncSeparate", [__arg_0, __arg_1]);
 
-  blendFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "blendFuncSeparate", [__arg_0, __arg_1, __arg_2]);
+  blendFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFuncSeparate", [__arg_0, __arg_1, __arg_2]);
 
-  blendFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "blendFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  blendFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  bufferData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bufferData", [__arg_0]);
+  bufferData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferData", [__arg_0]);
 
-  bufferData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bufferData", [__arg_0, __arg_1]);
+  bufferData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferData", [__arg_0, __arg_1]);
 
-  bufferData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "bufferData", [__arg_0, __arg_1, __arg_2]);
+  bufferData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferData", [__arg_0, __arg_1, __arg_2]);
 
-  bufferSubData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bufferSubData", [__arg_0]);
+  bufferSubData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferSubData", [__arg_0]);
 
-  bufferSubData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bufferSubData", [__arg_0, __arg_1]);
+  bufferSubData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferSubData", [__arg_0, __arg_1]);
 
-  bufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "bufferSubData", [__arg_0, __arg_1, __arg_2]);
+  bufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferSubData", [__arg_0, __arg_1, __arg_2]);
 
-  checkFramebufferStatus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "checkFramebufferStatus", []);
+  checkFramebufferStatus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "checkFramebufferStatus", []);
 
-  checkFramebufferStatus_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "checkFramebufferStatus", [__arg_0]);
+  checkFramebufferStatus_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "checkFramebufferStatus", [__arg_0]);
 
-  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clear", []);
+  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clear", []);
 
-  clear_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clear", [__arg_0]);
+  clear_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clear", [__arg_0]);
 
-  clearColor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "clearColor", [__arg_0, __arg_1]);
+  clearColor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearColor", [__arg_0, __arg_1]);
 
-  clearColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "clearColor", [__arg_0, __arg_1, __arg_2]);
+  clearColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearColor", [__arg_0, __arg_1, __arg_2]);
 
-  clearColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "clearColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  clearColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  clearDepth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearDepth", []);
+  clearDepth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearDepth", []);
 
-  clearDepth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearDepth", [__arg_0]);
+  clearDepth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearDepth", [__arg_0]);
 
-  clearStencil_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearStencil", []);
+  clearStencil_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearStencil", []);
 
-  clearStencil_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearStencil", [__arg_0]);
+  clearStencil_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearStencil", [__arg_0]);
 
-  colorMask_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "colorMask", [__arg_0, __arg_1]);
+  colorMask_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "colorMask", [__arg_0, __arg_1]);
 
-  colorMask_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "colorMask", [__arg_0, __arg_1, __arg_2]);
+  colorMask_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "colorMask", [__arg_0, __arg_1, __arg_2]);
 
-  colorMask_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "colorMask", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  colorMask_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "colorMask", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  compileShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "compileShader", []);
+  compileShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compileShader", []);
 
-  compileShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "compileShader", [__arg_0]);
+  compileShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compileShader", [__arg_0]);
 
-  compressedTexImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  compressedTexImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  compressedTexImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  compressedTexImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  compressedTexSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  compressedTexSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  compressedTexSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  copyTexImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "copyTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  copyTexImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "copyTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  copyTexImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "copyTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  copyTexSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  copyTexSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  copyTexSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  createBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createBuffer", []);
+  createBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createBuffer", []);
 
-  createFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createFramebuffer", []);
+  createFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createFramebuffer", []);
 
-  createProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createProgram", []);
+  createProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createProgram", []);
 
-  createRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createRenderbuffer", []);
+  createRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createRenderbuffer", []);
 
-  createShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createShader", []);
+  createShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createShader", []);
 
-  createShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createShader", [__arg_0]);
+  createShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createShader", [__arg_0]);
 
-  createTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createTexture", []);
+  createTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createTexture", []);
 
-  cullFace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cullFace", []);
+  cullFace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "cullFace", []);
 
-  cullFace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "cullFace", [__arg_0]);
+  cullFace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "cullFace", [__arg_0]);
 
-  deleteBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteBuffer", []);
+  deleteBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteBuffer", []);
 
-  deleteBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteBuffer", [__arg_0]);
+  deleteBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteBuffer", [__arg_0]);
 
-  deleteFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteFramebuffer", []);
+  deleteFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteFramebuffer", []);
 
-  deleteFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteFramebuffer", [__arg_0]);
+  deleteFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteFramebuffer", [__arg_0]);
 
-  deleteProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteProgram", []);
+  deleteProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteProgram", []);
 
-  deleteProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteProgram", [__arg_0]);
+  deleteProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteProgram", [__arg_0]);
 
-  deleteRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteRenderbuffer", []);
+  deleteRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteRenderbuffer", []);
 
-  deleteRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteRenderbuffer", [__arg_0]);
+  deleteRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteRenderbuffer", [__arg_0]);
 
-  deleteShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteShader", []);
+  deleteShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteShader", []);
 
-  deleteShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteShader", [__arg_0]);
+  deleteShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteShader", [__arg_0]);
 
-  deleteTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteTexture", []);
+  deleteTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteTexture", []);
 
-  deleteTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteTexture", [__arg_0]);
+  deleteTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteTexture", [__arg_0]);
 
-  depthFunc_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "depthFunc", []);
+  depthFunc_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthFunc", []);
 
-  depthFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "depthFunc", [__arg_0]);
+  depthFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthFunc", [__arg_0]);
 
-  depthMask_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "depthMask", []);
+  depthMask_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthMask", []);
 
-  depthMask_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "depthMask", [__arg_0]);
+  depthMask_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthMask", [__arg_0]);
 
-  depthRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "depthRange", []);
+  depthRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthRange", []);
 
-  depthRange_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "depthRange", [__arg_0]);
+  depthRange_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthRange", [__arg_0]);
 
-  depthRange_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "depthRange", [__arg_0, __arg_1]);
+  depthRange_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthRange", [__arg_0, __arg_1]);
 
-  detachShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "detachShader", []);
+  detachShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "detachShader", []);
 
-  detachShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "detachShader", [__arg_0]);
+  detachShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "detachShader", [__arg_0]);
 
-  detachShader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "detachShader", [__arg_0, __arg_1]);
+  detachShader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "detachShader", [__arg_0, __arg_1]);
 
-  disable_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "disable", []);
+  disable_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "disable", []);
 
-  disable_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "disable", [__arg_0]);
+  disable_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "disable", [__arg_0]);
 
-  disableVertexAttribArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "disableVertexAttribArray", []);
+  disableVertexAttribArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "disableVertexAttribArray", []);
 
-  disableVertexAttribArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "disableVertexAttribArray", [__arg_0]);
+  disableVertexAttribArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "disableVertexAttribArray", [__arg_0]);
 
-  drawArrays_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "drawArrays", [__arg_0]);
+  drawArrays_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawArrays", [__arg_0]);
 
-  drawArrays_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "drawArrays", [__arg_0, __arg_1]);
+  drawArrays_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawArrays", [__arg_0, __arg_1]);
 
-  drawArrays_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "drawArrays", [__arg_0, __arg_1, __arg_2]);
+  drawArrays_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawArrays", [__arg_0, __arg_1, __arg_2]);
 
-  drawElements_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "drawElements", [__arg_0, __arg_1]);
+  drawElements_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawElements", [__arg_0, __arg_1]);
 
-  drawElements_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "drawElements", [__arg_0, __arg_1, __arg_2]);
+  drawElements_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawElements", [__arg_0, __arg_1, __arg_2]);
 
-  drawElements_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "drawElements", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  drawElements_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawElements", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  enable_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "enable", []);
+  enable_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "enable", []);
 
-  enable_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "enable", [__arg_0]);
+  enable_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "enable", [__arg_0]);
 
-  enableVertexAttribArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "enableVertexAttribArray", []);
+  enableVertexAttribArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "enableVertexAttribArray", []);
 
-  enableVertexAttribArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "enableVertexAttribArray", [__arg_0]);
+  enableVertexAttribArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "enableVertexAttribArray", [__arg_0]);
 
-  finish_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "finish", []);
+  finish_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "finish", []);
 
-  flush_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "flush", []);
+  flush_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "flush", []);
 
-  framebufferRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "framebufferRenderbuffer", [__arg_0, __arg_1]);
+  framebufferRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferRenderbuffer", [__arg_0, __arg_1]);
 
-  framebufferRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2]);
+  framebufferRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2]);
 
-  framebufferRenderbuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  framebufferRenderbuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  framebufferTexture2D_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2]);
+  framebufferTexture2D_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2]);
 
-  framebufferTexture2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  framebufferTexture2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  framebufferTexture2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  framebufferTexture2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  frontFace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "frontFace", []);
+  frontFace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "frontFace", []);
 
-  frontFace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "frontFace", [__arg_0]);
+  frontFace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "frontFace", [__arg_0]);
 
-  generateMipmap_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "generateMipmap", []);
+  generateMipmap_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "generateMipmap", []);
 
-  generateMipmap_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "generateMipmap", [__arg_0]);
+  generateMipmap_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "generateMipmap", [__arg_0]);
 
-  getActiveAttrib_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getActiveAttrib", []);
+  getActiveAttrib_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveAttrib", []);
 
-  getActiveAttrib_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getActiveAttrib", [__arg_0]);
+  getActiveAttrib_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveAttrib", [__arg_0]);
 
-  getActiveAttrib_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getActiveAttrib", [__arg_0, __arg_1]);
+  getActiveAttrib_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveAttrib", [__arg_0, __arg_1]);
 
-  getActiveUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniform", []);
+  getActiveUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveUniform", []);
 
-  getActiveUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniform", [__arg_0]);
+  getActiveUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveUniform", [__arg_0]);
 
-  getActiveUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniform", [__arg_0, __arg_1]);
+  getActiveUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveUniform", [__arg_0, __arg_1]);
 
-  getAttachedShaders_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAttachedShaders", []);
+  getAttachedShaders_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttachedShaders", []);
 
-  getAttachedShaders_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAttachedShaders", [__arg_0]);
+  getAttachedShaders_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttachedShaders", [__arg_0]);
 
-  getAttribLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAttribLocation", []);
+  getAttribLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttribLocation", []);
 
-  getAttribLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAttribLocation", [__arg_0]);
+  getAttribLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttribLocation", [__arg_0]);
 
-  getAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getAttribLocation", [__arg_0, __arg_1]);
+  getAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttribLocation", [__arg_0, __arg_1]);
 
-  getBufferParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getBufferParameter", []);
+  getBufferParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getBufferParameter", []);
 
-  getBufferParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getBufferParameter", [__arg_0]);
+  getBufferParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getBufferParameter", [__arg_0]);
 
-  getBufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getBufferParameter", [__arg_0, __arg_1]);
+  getBufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getBufferParameter", [__arg_0, __arg_1]);
 
-  getContextAttributes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getContextAttributes", []);
+  getContextAttributes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getContextAttributes", []);
 
-  getError_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getError", []);
+  getError_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getError", []);
 
-  getExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getExtension", []);
+  getExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getExtension", []);
 
-  getExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getExtension", [__arg_0]);
+  getExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getExtension", [__arg_0]);
 
-  getFramebufferAttachmentParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getFramebufferAttachmentParameter", [__arg_0]);
+  getFramebufferAttachmentParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getFramebufferAttachmentParameter", [__arg_0]);
 
-  getFramebufferAttachmentParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getFramebufferAttachmentParameter", [__arg_0, __arg_1]);
+  getFramebufferAttachmentParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getFramebufferAttachmentParameter", [__arg_0, __arg_1]);
 
-  getFramebufferAttachmentParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getFramebufferAttachmentParameter", [__arg_0, __arg_1, __arg_2]);
+  getFramebufferAttachmentParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getFramebufferAttachmentParameter", [__arg_0, __arg_1, __arg_2]);
 
-  getParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getParameter", []);
+  getParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getParameter", []);
 
-  getParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getParameter", [__arg_0]);
+  getParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getParameter", [__arg_0]);
 
-  getProgramInfoLog_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getProgramInfoLog", []);
+  getProgramInfoLog_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramInfoLog", []);
 
-  getProgramInfoLog_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getProgramInfoLog", [__arg_0]);
+  getProgramInfoLog_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramInfoLog", [__arg_0]);
 
-  getProgramParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getProgramParameter", []);
+  getProgramParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramParameter", []);
 
-  getProgramParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getProgramParameter", [__arg_0]);
+  getProgramParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramParameter", [__arg_0]);
 
-  getProgramParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getProgramParameter", [__arg_0, __arg_1]);
+  getProgramParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramParameter", [__arg_0, __arg_1]);
 
-  getRenderbufferParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getRenderbufferParameter", []);
+  getRenderbufferParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getRenderbufferParameter", []);
 
-  getRenderbufferParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getRenderbufferParameter", [__arg_0]);
+  getRenderbufferParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getRenderbufferParameter", [__arg_0]);
 
-  getRenderbufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getRenderbufferParameter", [__arg_0, __arg_1]);
+  getRenderbufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getRenderbufferParameter", [__arg_0, __arg_1]);
 
-  getShaderInfoLog_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getShaderInfoLog", []);
+  getShaderInfoLog_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderInfoLog", []);
 
-  getShaderInfoLog_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getShaderInfoLog", [__arg_0]);
+  getShaderInfoLog_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderInfoLog", [__arg_0]);
 
-  getShaderParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getShaderParameter", []);
+  getShaderParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderParameter", []);
 
-  getShaderParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getShaderParameter", [__arg_0]);
+  getShaderParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderParameter", [__arg_0]);
 
-  getShaderParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getShaderParameter", [__arg_0, __arg_1]);
+  getShaderParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderParameter", [__arg_0, __arg_1]);
 
-  getShaderPrecisionFormat_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getShaderPrecisionFormat", []);
+  getShaderPrecisionFormat_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderPrecisionFormat", []);
 
-  getShaderPrecisionFormat_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getShaderPrecisionFormat", [__arg_0]);
+  getShaderPrecisionFormat_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderPrecisionFormat", [__arg_0]);
 
-  getShaderPrecisionFormat_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getShaderPrecisionFormat", [__arg_0, __arg_1]);
+  getShaderPrecisionFormat_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderPrecisionFormat", [__arg_0, __arg_1]);
 
-  getShaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getShaderSource", []);
+  getShaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderSource", []);
 
-  getShaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getShaderSource", [__arg_0]);
+  getShaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderSource", [__arg_0]);
 
-  getSupportedExtensions_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSupportedExtensions", []);
+  getSupportedExtensions_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getSupportedExtensions", []);
 
-  getTexParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getTexParameter", []);
+  getTexParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getTexParameter", []);
 
-  getTexParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getTexParameter", [__arg_0]);
+  getTexParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getTexParameter", [__arg_0]);
 
-  getTexParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getTexParameter", [__arg_0, __arg_1]);
+  getTexParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getTexParameter", [__arg_0, __arg_1]);
 
-  getUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getUniform", []);
+  getUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniform", []);
 
-  getUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getUniform", [__arg_0]);
+  getUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniform", [__arg_0]);
 
-  getUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getUniform", [__arg_0, __arg_1]);
+  getUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniform", [__arg_0, __arg_1]);
 
-  getUniformLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getUniformLocation", []);
+  getUniformLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniformLocation", []);
 
-  getUniformLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getUniformLocation", [__arg_0]);
+  getUniformLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniformLocation", [__arg_0]);
 
-  getUniformLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getUniformLocation", [__arg_0, __arg_1]);
+  getUniformLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniformLocation", [__arg_0, __arg_1]);
 
-  getVertexAttrib_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttrib", []);
+  getVertexAttrib_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttrib", []);
 
-  getVertexAttrib_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttrib", [__arg_0]);
+  getVertexAttrib_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttrib", [__arg_0]);
 
-  getVertexAttrib_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttrib", [__arg_0, __arg_1]);
+  getVertexAttrib_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttrib", [__arg_0, __arg_1]);
 
-  getVertexAttribOffset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttribOffset", []);
+  getVertexAttribOffset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttribOffset", []);
 
-  getVertexAttribOffset_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttribOffset", [__arg_0]);
+  getVertexAttribOffset_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttribOffset", [__arg_0]);
 
-  getVertexAttribOffset_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttribOffset", [__arg_0, __arg_1]);
+  getVertexAttribOffset_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttribOffset", [__arg_0, __arg_1]);
 
-  hint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "hint", []);
+  hint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "hint", []);
 
-  hint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "hint", [__arg_0]);
+  hint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "hint", [__arg_0]);
 
-  hint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "hint", [__arg_0, __arg_1]);
+  hint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "hint", [__arg_0, __arg_1]);
 
-  isBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isBuffer", []);
+  isBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isBuffer", []);
 
-  isBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isBuffer", [__arg_0]);
+  isBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isBuffer", [__arg_0]);
 
-  isContextLost_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isContextLost", []);
+  isContextLost_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isContextLost", []);
 
-  isEnabled_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isEnabled", []);
+  isEnabled_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isEnabled", []);
 
-  isEnabled_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isEnabled", [__arg_0]);
+  isEnabled_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isEnabled", [__arg_0]);
 
-  isFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isFramebuffer", []);
+  isFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isFramebuffer", []);
 
-  isFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isFramebuffer", [__arg_0]);
+  isFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isFramebuffer", [__arg_0]);
 
-  isProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isProgram", []);
+  isProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isProgram", []);
 
-  isProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isProgram", [__arg_0]);
+  isProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isProgram", [__arg_0]);
 
-  isRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isRenderbuffer", []);
+  isRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isRenderbuffer", []);
 
-  isRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isRenderbuffer", [__arg_0]);
+  isRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isRenderbuffer", [__arg_0]);
 
-  isShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isShader", []);
+  isShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isShader", []);
 
-  isShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isShader", [__arg_0]);
+  isShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isShader", [__arg_0]);
 
-  isTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isTexture", []);
+  isTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isTexture", []);
 
-  isTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isTexture", [__arg_0]);
+  isTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isTexture", [__arg_0]);
 
-  lineWidth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "lineWidth", []);
+  lineWidth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "lineWidth", []);
 
-  lineWidth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "lineWidth", [__arg_0]);
+  lineWidth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "lineWidth", [__arg_0]);
 
-  linkProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "linkProgram", []);
+  linkProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "linkProgram", []);
 
-  linkProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "linkProgram", [__arg_0]);
+  linkProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "linkProgram", [__arg_0]);
 
-  pixelStorei_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "pixelStorei", []);
+  pixelStorei_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "pixelStorei", []);
 
-  pixelStorei_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "pixelStorei", [__arg_0]);
+  pixelStorei_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "pixelStorei", [__arg_0]);
 
-  pixelStorei_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "pixelStorei", [__arg_0, __arg_1]);
+  pixelStorei_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "pixelStorei", [__arg_0, __arg_1]);
 
-  polygonOffset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "polygonOffset", []);
+  polygonOffset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "polygonOffset", []);
 
-  polygonOffset_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "polygonOffset", [__arg_0]);
+  polygonOffset_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "polygonOffset", [__arg_0]);
 
-  polygonOffset_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "polygonOffset", [__arg_0, __arg_1]);
+  polygonOffset_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "polygonOffset", [__arg_0, __arg_1]);
 
-  readPixels_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  readPixels_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  readPixels_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "readPixels", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  readPixels_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "readPixels", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  renderbufferStorage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorage", [__arg_0, __arg_1]);
+  renderbufferStorage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "renderbufferStorage", [__arg_0, __arg_1]);
 
-  renderbufferStorage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorage", [__arg_0, __arg_1, __arg_2]);
+  renderbufferStorage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "renderbufferStorage", [__arg_0, __arg_1, __arg_2]);
 
-  renderbufferStorage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorage", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  renderbufferStorage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "renderbufferStorage", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  sampleCoverage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "sampleCoverage", []);
+  sampleCoverage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "sampleCoverage", []);
 
-  sampleCoverage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "sampleCoverage", [__arg_0]);
+  sampleCoverage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "sampleCoverage", [__arg_0]);
 
-  sampleCoverage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "sampleCoverage", [__arg_0, __arg_1]);
+  sampleCoverage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "sampleCoverage", [__arg_0, __arg_1]);
 
-  scissor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scissor", [__arg_0, __arg_1]);
+  scissor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "scissor", [__arg_0, __arg_1]);
 
-  scissor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "scissor", [__arg_0, __arg_1, __arg_2]);
+  scissor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "scissor", [__arg_0, __arg_1, __arg_2]);
 
-  scissor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "scissor", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  scissor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "scissor", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  shaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "shaderSource", []);
+  shaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "shaderSource", []);
 
-  shaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "shaderSource", [__arg_0]);
+  shaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "shaderSource", [__arg_0]);
 
-  shaderSource_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "shaderSource", [__arg_0, __arg_1]);
+  shaderSource_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "shaderSource", [__arg_0, __arg_1]);
 
-  stencilFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stencilFunc", [__arg_0]);
+  stencilFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFunc", [__arg_0]);
 
-  stencilFunc_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilFunc", [__arg_0, __arg_1]);
+  stencilFunc_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFunc", [__arg_0, __arg_1]);
 
-  stencilFunc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "stencilFunc", [__arg_0, __arg_1, __arg_2]);
+  stencilFunc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFunc", [__arg_0, __arg_1, __arg_2]);
 
-  stencilFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilFuncSeparate", [__arg_0, __arg_1]);
+  stencilFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFuncSeparate", [__arg_0, __arg_1]);
 
-  stencilFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "stencilFuncSeparate", [__arg_0, __arg_1, __arg_2]);
+  stencilFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFuncSeparate", [__arg_0, __arg_1, __arg_2]);
 
-  stencilFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "stencilFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  stencilFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  stencilMask_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stencilMask", []);
+  stencilMask_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMask", []);
 
-  stencilMask_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stencilMask", [__arg_0]);
+  stencilMask_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMask", [__arg_0]);
 
-  stencilMaskSeparate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stencilMaskSeparate", []);
+  stencilMaskSeparate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMaskSeparate", []);
 
-  stencilMaskSeparate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stencilMaskSeparate", [__arg_0]);
+  stencilMaskSeparate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMaskSeparate", [__arg_0]);
 
-  stencilMaskSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilMaskSeparate", [__arg_0, __arg_1]);
+  stencilMaskSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMaskSeparate", [__arg_0, __arg_1]);
 
-  stencilOp_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stencilOp", [__arg_0]);
+  stencilOp_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOp", [__arg_0]);
 
-  stencilOp_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilOp", [__arg_0, __arg_1]);
+  stencilOp_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOp", [__arg_0, __arg_1]);
 
-  stencilOp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "stencilOp", [__arg_0, __arg_1, __arg_2]);
+  stencilOp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOp", [__arg_0, __arg_1, __arg_2]);
 
-  stencilOpSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilOpSeparate", [__arg_0, __arg_1]);
+  stencilOpSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOpSeparate", [__arg_0, __arg_1]);
 
-  stencilOpSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "stencilOpSeparate", [__arg_0, __arg_1, __arg_2]);
+  stencilOpSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOpSeparate", [__arg_0, __arg_1, __arg_2]);
 
-  stencilOpSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "stencilOpSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  stencilOpSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOpSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  texImage2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  texImage2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  texImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  texImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  texImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  texImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  texImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  texImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  texParameterf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "texParameterf", [__arg_0]);
+  texParameterf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameterf", [__arg_0]);
 
-  texParameterf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "texParameterf", [__arg_0, __arg_1]);
+  texParameterf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameterf", [__arg_0, __arg_1]);
 
-  texParameterf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "texParameterf", [__arg_0, __arg_1, __arg_2]);
+  texParameterf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameterf", [__arg_0, __arg_1, __arg_2]);
 
-  texParameteri_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "texParameteri", [__arg_0]);
+  texParameteri_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameteri", [__arg_0]);
 
-  texParameteri_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "texParameteri", [__arg_0, __arg_1]);
+  texParameteri_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameteri", [__arg_0, __arg_1]);
 
-  texParameteri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "texParameteri", [__arg_0, __arg_1, __arg_2]);
+  texParameteri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameteri", [__arg_0, __arg_1, __arg_2]);
 
-  texSubImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  texSubImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  texSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  texSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  texSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  texSubImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  uniform1f_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1f", []);
+  uniform1f_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1f", []);
 
-  uniform1f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1f", [__arg_0]);
+  uniform1f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1f", [__arg_0]);
 
-  uniform1f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1f", [__arg_0, __arg_1]);
+  uniform1f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1f", [__arg_0, __arg_1]);
 
-  uniform1fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1fv", []);
+  uniform1fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1fv", []);
 
-  uniform1fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1fv", [__arg_0]);
+  uniform1fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1fv", [__arg_0]);
 
-  uniform1fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1fv", [__arg_0, __arg_1]);
+  uniform1fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1fv", [__arg_0, __arg_1]);
 
-  uniform1i_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1i", []);
+  uniform1i_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1i", []);
 
-  uniform1i_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1i", [__arg_0]);
+  uniform1i_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1i", [__arg_0]);
 
-  uniform1i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1i", [__arg_0, __arg_1]);
+  uniform1i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1i", [__arg_0, __arg_1]);
 
-  uniform1iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1iv", []);
+  uniform1iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1iv", []);
 
-  uniform1iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1iv", [__arg_0]);
+  uniform1iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1iv", [__arg_0]);
 
-  uniform1iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1iv", [__arg_0, __arg_1]);
+  uniform1iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1iv", [__arg_0, __arg_1]);
 
-  uniform2f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2f", [__arg_0]);
+  uniform2f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2f", [__arg_0]);
 
-  uniform2f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2f", [__arg_0, __arg_1]);
+  uniform2f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2f", [__arg_0, __arg_1]);
 
-  uniform2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform2f", [__arg_0, __arg_1, __arg_2]);
+  uniform2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2f", [__arg_0, __arg_1, __arg_2]);
 
-  uniform2fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform2fv", []);
+  uniform2fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2fv", []);
 
-  uniform2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2fv", [__arg_0]);
+  uniform2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2fv", [__arg_0]);
 
-  uniform2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2fv", [__arg_0, __arg_1]);
+  uniform2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2fv", [__arg_0, __arg_1]);
 
-  uniform2i_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2i", [__arg_0]);
+  uniform2i_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2i", [__arg_0]);
 
-  uniform2i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2i", [__arg_0, __arg_1]);
+  uniform2i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2i", [__arg_0, __arg_1]);
 
-  uniform2i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform2i", [__arg_0, __arg_1, __arg_2]);
+  uniform2i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2i", [__arg_0, __arg_1, __arg_2]);
 
-  uniform2iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform2iv", []);
+  uniform2iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2iv", []);
 
-  uniform2iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2iv", [__arg_0]);
+  uniform2iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2iv", [__arg_0]);
 
-  uniform2iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2iv", [__arg_0, __arg_1]);
+  uniform2iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2iv", [__arg_0, __arg_1]);
 
-  uniform3f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3f", [__arg_0, __arg_1]);
+  uniform3f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3f", [__arg_0, __arg_1]);
 
-  uniform3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform3f", [__arg_0, __arg_1, __arg_2]);
+  uniform3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3f", [__arg_0, __arg_1, __arg_2]);
 
-  uniform3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform3fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform3fv", []);
+  uniform3fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3fv", []);
 
-  uniform3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform3fv", [__arg_0]);
+  uniform3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3fv", [__arg_0]);
 
-  uniform3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3fv", [__arg_0, __arg_1]);
+  uniform3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3fv", [__arg_0, __arg_1]);
 
-  uniform3i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3i", [__arg_0, __arg_1]);
+  uniform3i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3i", [__arg_0, __arg_1]);
 
-  uniform3i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform3i", [__arg_0, __arg_1, __arg_2]);
+  uniform3i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3i", [__arg_0, __arg_1, __arg_2]);
 
-  uniform3i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform3i", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform3i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3i", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform3iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform3iv", []);
+  uniform3iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3iv", []);
 
-  uniform3iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform3iv", [__arg_0]);
+  uniform3iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3iv", [__arg_0]);
 
-  uniform3iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3iv", [__arg_0, __arg_1]);
+  uniform3iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3iv", [__arg_0, __arg_1]);
 
-  uniform4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform4f", [__arg_0, __arg_1, __arg_2]);
+  uniform4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4f", [__arg_0, __arg_1, __arg_2]);
 
-  uniform4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  uniform4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  uniform4fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform4fv", []);
+  uniform4fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4fv", []);
 
-  uniform4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform4fv", [__arg_0]);
+  uniform4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4fv", [__arg_0]);
 
-  uniform4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform4fv", [__arg_0, __arg_1]);
+  uniform4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4fv", [__arg_0, __arg_1]);
 
-  uniform4i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform4i", [__arg_0, __arg_1, __arg_2]);
+  uniform4i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4i", [__arg_0, __arg_1, __arg_2]);
 
-  uniform4i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform4i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform4i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  uniform4i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  uniform4iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform4iv", []);
+  uniform4iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4iv", []);
 
-  uniform4iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform4iv", [__arg_0]);
+  uniform4iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4iv", [__arg_0]);
 
-  uniform4iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform4iv", [__arg_0, __arg_1]);
+  uniform4iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4iv", [__arg_0, __arg_1]);
 
-  uniformMatrix2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2fv", [__arg_0]);
+  uniformMatrix2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix2fv", [__arg_0]);
 
-  uniformMatrix2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2fv", [__arg_0, __arg_1]);
+  uniformMatrix2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix2fv", [__arg_0, __arg_1]);
 
-  uniformMatrix2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix2fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3fv", [__arg_0]);
+  uniformMatrix3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix3fv", [__arg_0]);
 
-  uniformMatrix3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3fv", [__arg_0, __arg_1]);
+  uniformMatrix3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix3fv", [__arg_0, __arg_1]);
 
-  uniformMatrix3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix3fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4fv", [__arg_0]);
+  uniformMatrix4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix4fv", [__arg_0]);
 
-  uniformMatrix4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4fv", [__arg_0, __arg_1]);
+  uniformMatrix4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix4fv", [__arg_0, __arg_1]);
 
-  uniformMatrix4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix4fv", [__arg_0, __arg_1, __arg_2]);
 
-  useProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "useProgram", []);
+  useProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "useProgram", []);
 
-  useProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "useProgram", [__arg_0]);
+  useProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "useProgram", [__arg_0]);
 
-  validateProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "validateProgram", []);
+  validateProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "validateProgram", []);
 
-  validateProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "validateProgram", [__arg_0]);
+  validateProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "validateProgram", [__arg_0]);
 
-  vertexAttrib1f_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1f", []);
+  vertexAttrib1f_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1f", []);
 
-  vertexAttrib1f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1f", [__arg_0]);
+  vertexAttrib1f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1f", [__arg_0]);
 
-  vertexAttrib1f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1f", [__arg_0, __arg_1]);
+  vertexAttrib1f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1f", [__arg_0, __arg_1]);
 
-  vertexAttrib1fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1fv", []);
+  vertexAttrib1fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1fv", []);
 
-  vertexAttrib1fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1fv", [__arg_0]);
+  vertexAttrib1fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1fv", [__arg_0]);
 
-  vertexAttrib1fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1fv", [__arg_0, __arg_1]);
+  vertexAttrib1fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1fv", [__arg_0, __arg_1]);
 
-  vertexAttrib2f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2f", [__arg_0]);
+  vertexAttrib2f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2f", [__arg_0]);
 
-  vertexAttrib2f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2f", [__arg_0, __arg_1]);
+  vertexAttrib2f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2f", [__arg_0, __arg_1]);
 
-  vertexAttrib2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2f", [__arg_0, __arg_1, __arg_2]);
+  vertexAttrib2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2f", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttrib2fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2fv", []);
+  vertexAttrib2fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2fv", []);
 
-  vertexAttrib2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2fv", [__arg_0]);
+  vertexAttrib2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2fv", [__arg_0]);
 
-  vertexAttrib2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2fv", [__arg_0, __arg_1]);
+  vertexAttrib2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2fv", [__arg_0, __arg_1]);
 
-  vertexAttrib3f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3f", [__arg_0, __arg_1]);
+  vertexAttrib3f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3f", [__arg_0, __arg_1]);
 
-  vertexAttrib3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3f", [__arg_0, __arg_1, __arg_2]);
+  vertexAttrib3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3f", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttrib3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttrib3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttrib3fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3fv", []);
+  vertexAttrib3fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3fv", []);
 
-  vertexAttrib3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3fv", [__arg_0]);
+  vertexAttrib3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3fv", [__arg_0]);
 
-  vertexAttrib3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3fv", [__arg_0, __arg_1]);
+  vertexAttrib3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3fv", [__arg_0, __arg_1]);
 
-  vertexAttrib4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2]);
+  vertexAttrib4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttrib4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttrib4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttrib4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  vertexAttrib4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  vertexAttrib4fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4fv", []);
+  vertexAttrib4fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4fv", []);
 
-  vertexAttrib4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4fv", [__arg_0]);
+  vertexAttrib4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4fv", [__arg_0]);
 
-  vertexAttrib4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4fv", [__arg_0, __arg_1]);
+  vertexAttrib4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4fv", [__arg_0, __arg_1]);
 
-  vertexAttribPointer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttribPointer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttribPointer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  vertexAttribPointer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  vertexAttribPointer_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribPointer", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  viewport_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "viewport", [__arg_0, __arg_1]);
+  viewport_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "viewport", [__arg_0, __arg_1]);
 
-  viewport_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "viewport", [__arg_0, __arg_1, __arg_2]);
+  viewport_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "viewport", [__arg_0, __arg_1, __arg_2]);
 
-  viewport_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "viewport", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  viewport_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "viewport", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
 class BlinkWebGLActiveInfo {
   static final instance = new BlinkWebGLActiveInfo();
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLActiveInfo */, "name");
 
-  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "size");
+  size_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLActiveInfo */, "size");
 
-  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "type");
+  type_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLActiveInfo */, "type");
 
 }
 
@@ -20185,13 +20185,13 @@
 class BlinkWebGLContextEvent extends BlinkEvent {
   static final instance = new BlinkWebGLContextEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "WebGLContextEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("WebGLContextEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "WebGLContextEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("WebGLContextEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "WebGLContextEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("WebGLContextEvent", [__arg_0, __arg_1]);
 
-  statusMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "statusMessage");
+  statusMessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLContextEvent */, "statusMessage");
 
 }
 
@@ -20203,9 +20203,9 @@
 class BlinkWebGLDebugShaders {
   static final instance = new BlinkWebGLDebugShaders();
 
-  getTranslatedShaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getTranslatedShaderSource", []);
+  getTranslatedShaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLDebugShaders */, "getTranslatedShaderSource", []);
 
-  getTranslatedShaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getTranslatedShaderSource", [__arg_0]);
+  getTranslatedShaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLDebugShaders */, "getTranslatedShaderSource", [__arg_0]);
 
 }
 
@@ -20217,9 +20217,9 @@
 class BlinkWebGLDrawBuffers {
   static final instance = new BlinkWebGLDrawBuffers();
 
-  drawBuffersWEBGL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "drawBuffersWEBGL", []);
+  drawBuffersWEBGL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLDrawBuffers */, "drawBuffersWEBGL", []);
 
-  drawBuffersWEBGL_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "drawBuffersWEBGL", [__arg_0]);
+  drawBuffersWEBGL_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLDrawBuffers */, "drawBuffersWEBGL", [__arg_0]);
 
 }
 
@@ -20231,9 +20231,9 @@
 class BlinkWebGLLoseContext {
   static final instance = new BlinkWebGLLoseContext();
 
-  loseContext_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "loseContext", []);
+  loseContext_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLLoseContext */, "loseContext", []);
 
-  restoreContext_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "restoreContext", []);
+  restoreContext_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLLoseContext */, "restoreContext", []);
 
 }
 
@@ -20255,1422 +20255,1422 @@
 class BlinkWebGLRenderingContext {
   static final instance = new BlinkWebGLRenderingContext();
 
-  canvas_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "canvas");
+  canvas_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLRenderingContextBase */, "canvas");
 
-  drawingBufferHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "drawingBufferHeight");
+  drawingBufferHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLRenderingContextBase */, "drawingBufferHeight");
 
-  drawingBufferWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "drawingBufferWidth");
+  drawingBufferWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLRenderingContextBase */, "drawingBufferWidth");
 
-  activeTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "activeTexture", []);
+  activeTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "activeTexture", []);
 
-  activeTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "activeTexture", [__arg_0]);
+  activeTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "activeTexture", [__arg_0]);
 
-  attachShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "attachShader", []);
+  attachShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "attachShader", []);
 
-  attachShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "attachShader", [__arg_0]);
+  attachShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "attachShader", [__arg_0]);
 
-  attachShader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "attachShader", [__arg_0, __arg_1]);
+  attachShader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "attachShader", [__arg_0, __arg_1]);
 
-  bindAttribLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindAttribLocation", [__arg_0]);
+  bindAttribLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindAttribLocation", [__arg_0]);
 
-  bindAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindAttribLocation", [__arg_0, __arg_1]);
+  bindAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindAttribLocation", [__arg_0, __arg_1]);
 
-  bindAttribLocation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "bindAttribLocation", [__arg_0, __arg_1, __arg_2]);
+  bindAttribLocation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindAttribLocation", [__arg_0, __arg_1, __arg_2]);
 
-  bindBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindBuffer", []);
+  bindBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindBuffer", []);
 
-  bindBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindBuffer", [__arg_0]);
+  bindBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindBuffer", [__arg_0]);
 
-  bindBuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindBuffer", [__arg_0, __arg_1]);
+  bindBuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindBuffer", [__arg_0, __arg_1]);
 
-  bindFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindFramebuffer", []);
+  bindFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindFramebuffer", []);
 
-  bindFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindFramebuffer", [__arg_0]);
+  bindFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindFramebuffer", [__arg_0]);
 
-  bindFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindFramebuffer", [__arg_0, __arg_1]);
+  bindFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindFramebuffer", [__arg_0, __arg_1]);
 
-  bindRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindRenderbuffer", []);
+  bindRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindRenderbuffer", []);
 
-  bindRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindRenderbuffer", [__arg_0]);
+  bindRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindRenderbuffer", [__arg_0]);
 
-  bindRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindRenderbuffer", [__arg_0, __arg_1]);
+  bindRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindRenderbuffer", [__arg_0, __arg_1]);
 
-  bindTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindTexture", []);
+  bindTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindTexture", []);
 
-  bindTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindTexture", [__arg_0]);
+  bindTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindTexture", [__arg_0]);
 
-  bindTexture_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindTexture", [__arg_0, __arg_1]);
+  bindTexture_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindTexture", [__arg_0, __arg_1]);
 
-  blendColor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "blendColor", [__arg_0, __arg_1]);
+  blendColor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendColor", [__arg_0, __arg_1]);
 
-  blendColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "blendColor", [__arg_0, __arg_1, __arg_2]);
+  blendColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendColor", [__arg_0, __arg_1, __arg_2]);
 
-  blendColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "blendColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  blendColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  blendEquation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blendEquation", []);
+  blendEquation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquation", []);
 
-  blendEquation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "blendEquation", [__arg_0]);
+  blendEquation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquation", [__arg_0]);
 
-  blendEquationSeparate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blendEquationSeparate", []);
+  blendEquationSeparate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquationSeparate", []);
 
-  blendEquationSeparate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "blendEquationSeparate", [__arg_0]);
+  blendEquationSeparate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquationSeparate", [__arg_0]);
 
-  blendEquationSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "blendEquationSeparate", [__arg_0, __arg_1]);
+  blendEquationSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquationSeparate", [__arg_0, __arg_1]);
 
-  blendFunc_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blendFunc", []);
+  blendFunc_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFunc", []);
 
-  blendFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "blendFunc", [__arg_0]);
+  blendFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFunc", [__arg_0]);
 
-  blendFunc_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "blendFunc", [__arg_0, __arg_1]);
+  blendFunc_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFunc", [__arg_0, __arg_1]);
 
-  blendFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "blendFuncSeparate", [__arg_0, __arg_1]);
+  blendFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFuncSeparate", [__arg_0, __arg_1]);
 
-  blendFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "blendFuncSeparate", [__arg_0, __arg_1, __arg_2]);
+  blendFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFuncSeparate", [__arg_0, __arg_1, __arg_2]);
 
-  blendFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "blendFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  blendFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  bufferData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bufferData", [__arg_0]);
+  bufferData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferData", [__arg_0]);
 
-  bufferData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bufferData", [__arg_0, __arg_1]);
+  bufferData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferData", [__arg_0, __arg_1]);
 
-  bufferData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "bufferData", [__arg_0, __arg_1, __arg_2]);
+  bufferData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferData", [__arg_0, __arg_1, __arg_2]);
 
-  bufferSubData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bufferSubData", [__arg_0]);
+  bufferSubData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferSubData", [__arg_0]);
 
-  bufferSubData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bufferSubData", [__arg_0, __arg_1]);
+  bufferSubData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferSubData", [__arg_0, __arg_1]);
 
-  bufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "bufferSubData", [__arg_0, __arg_1, __arg_2]);
+  bufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferSubData", [__arg_0, __arg_1, __arg_2]);
 
-  checkFramebufferStatus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "checkFramebufferStatus", []);
+  checkFramebufferStatus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "checkFramebufferStatus", []);
 
-  checkFramebufferStatus_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "checkFramebufferStatus", [__arg_0]);
+  checkFramebufferStatus_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "checkFramebufferStatus", [__arg_0]);
 
-  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clear", []);
+  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clear", []);
 
-  clear_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clear", [__arg_0]);
+  clear_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clear", [__arg_0]);
 
-  clearColor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "clearColor", [__arg_0, __arg_1]);
+  clearColor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearColor", [__arg_0, __arg_1]);
 
-  clearColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "clearColor", [__arg_0, __arg_1, __arg_2]);
+  clearColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearColor", [__arg_0, __arg_1, __arg_2]);
 
-  clearColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "clearColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  clearColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  clearDepth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearDepth", []);
+  clearDepth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearDepth", []);
 
-  clearDepth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearDepth", [__arg_0]);
+  clearDepth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearDepth", [__arg_0]);
 
-  clearStencil_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearStencil", []);
+  clearStencil_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearStencil", []);
 
-  clearStencil_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearStencil", [__arg_0]);
+  clearStencil_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearStencil", [__arg_0]);
 
-  colorMask_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "colorMask", [__arg_0, __arg_1]);
+  colorMask_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "colorMask", [__arg_0, __arg_1]);
 
-  colorMask_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "colorMask", [__arg_0, __arg_1, __arg_2]);
+  colorMask_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "colorMask", [__arg_0, __arg_1, __arg_2]);
 
-  colorMask_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "colorMask", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  colorMask_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "colorMask", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  compileShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "compileShader", []);
+  compileShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compileShader", []);
 
-  compileShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "compileShader", [__arg_0]);
+  compileShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compileShader", [__arg_0]);
 
-  compressedTexImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  compressedTexImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  compressedTexImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  compressedTexImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  compressedTexSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  compressedTexSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  compressedTexSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  copyTexImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "copyTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  copyTexImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "copyTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  copyTexImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "copyTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  copyTexSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  copyTexSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  copyTexSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  createBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createBuffer", []);
+  createBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createBuffer", []);
 
-  createFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createFramebuffer", []);
+  createFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createFramebuffer", []);
 
-  createProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createProgram", []);
+  createProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createProgram", []);
 
-  createRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createRenderbuffer", []);
+  createRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createRenderbuffer", []);
 
-  createShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createShader", []);
+  createShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createShader", []);
 
-  createShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createShader", [__arg_0]);
+  createShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createShader", [__arg_0]);
 
-  createTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createTexture", []);
+  createTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createTexture", []);
 
-  cullFace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cullFace", []);
+  cullFace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "cullFace", []);
 
-  cullFace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "cullFace", [__arg_0]);
+  cullFace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "cullFace", [__arg_0]);
 
-  deleteBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteBuffer", []);
+  deleteBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteBuffer", []);
 
-  deleteBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteBuffer", [__arg_0]);
+  deleteBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteBuffer", [__arg_0]);
 
-  deleteFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteFramebuffer", []);
+  deleteFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteFramebuffer", []);
 
-  deleteFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteFramebuffer", [__arg_0]);
+  deleteFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteFramebuffer", [__arg_0]);
 
-  deleteProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteProgram", []);
+  deleteProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteProgram", []);
 
-  deleteProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteProgram", [__arg_0]);
+  deleteProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteProgram", [__arg_0]);
 
-  deleteRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteRenderbuffer", []);
+  deleteRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteRenderbuffer", []);
 
-  deleteRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteRenderbuffer", [__arg_0]);
+  deleteRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteRenderbuffer", [__arg_0]);
 
-  deleteShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteShader", []);
+  deleteShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteShader", []);
 
-  deleteShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteShader", [__arg_0]);
+  deleteShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteShader", [__arg_0]);
 
-  deleteTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteTexture", []);
+  deleteTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteTexture", []);
 
-  deleteTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteTexture", [__arg_0]);
+  deleteTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteTexture", [__arg_0]);
 
-  depthFunc_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "depthFunc", []);
+  depthFunc_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthFunc", []);
 
-  depthFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "depthFunc", [__arg_0]);
+  depthFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthFunc", [__arg_0]);
 
-  depthMask_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "depthMask", []);
+  depthMask_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthMask", []);
 
-  depthMask_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "depthMask", [__arg_0]);
+  depthMask_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthMask", [__arg_0]);
 
-  depthRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "depthRange", []);
+  depthRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthRange", []);
 
-  depthRange_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "depthRange", [__arg_0]);
+  depthRange_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthRange", [__arg_0]);
 
-  depthRange_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "depthRange", [__arg_0, __arg_1]);
+  depthRange_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthRange", [__arg_0, __arg_1]);
 
-  detachShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "detachShader", []);
+  detachShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "detachShader", []);
 
-  detachShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "detachShader", [__arg_0]);
+  detachShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "detachShader", [__arg_0]);
 
-  detachShader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "detachShader", [__arg_0, __arg_1]);
+  detachShader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "detachShader", [__arg_0, __arg_1]);
 
-  disable_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "disable", []);
+  disable_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "disable", []);
 
-  disable_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "disable", [__arg_0]);
+  disable_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "disable", [__arg_0]);
 
-  disableVertexAttribArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "disableVertexAttribArray", []);
+  disableVertexAttribArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "disableVertexAttribArray", []);
 
-  disableVertexAttribArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "disableVertexAttribArray", [__arg_0]);
+  disableVertexAttribArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "disableVertexAttribArray", [__arg_0]);
 
-  drawArrays_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "drawArrays", [__arg_0]);
+  drawArrays_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawArrays", [__arg_0]);
 
-  drawArrays_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "drawArrays", [__arg_0, __arg_1]);
+  drawArrays_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawArrays", [__arg_0, __arg_1]);
 
-  drawArrays_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "drawArrays", [__arg_0, __arg_1, __arg_2]);
+  drawArrays_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawArrays", [__arg_0, __arg_1, __arg_2]);
 
-  drawElements_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "drawElements", [__arg_0, __arg_1]);
+  drawElements_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawElements", [__arg_0, __arg_1]);
 
-  drawElements_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "drawElements", [__arg_0, __arg_1, __arg_2]);
+  drawElements_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawElements", [__arg_0, __arg_1, __arg_2]);
 
-  drawElements_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "drawElements", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  drawElements_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawElements", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  enable_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "enable", []);
+  enable_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "enable", []);
 
-  enable_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "enable", [__arg_0]);
+  enable_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "enable", [__arg_0]);
 
-  enableVertexAttribArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "enableVertexAttribArray", []);
+  enableVertexAttribArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "enableVertexAttribArray", []);
 
-  enableVertexAttribArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "enableVertexAttribArray", [__arg_0]);
+  enableVertexAttribArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "enableVertexAttribArray", [__arg_0]);
 
-  finish_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "finish", []);
+  finish_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "finish", []);
 
-  flush_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "flush", []);
+  flush_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "flush", []);
 
-  framebufferRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "framebufferRenderbuffer", [__arg_0, __arg_1]);
+  framebufferRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferRenderbuffer", [__arg_0, __arg_1]);
 
-  framebufferRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2]);
+  framebufferRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2]);
 
-  framebufferRenderbuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  framebufferRenderbuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  framebufferTexture2D_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2]);
+  framebufferTexture2D_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2]);
 
-  framebufferTexture2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  framebufferTexture2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  framebufferTexture2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  framebufferTexture2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  frontFace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "frontFace", []);
+  frontFace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "frontFace", []);
 
-  frontFace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "frontFace", [__arg_0]);
+  frontFace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "frontFace", [__arg_0]);
 
-  generateMipmap_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "generateMipmap", []);
+  generateMipmap_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "generateMipmap", []);
 
-  generateMipmap_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "generateMipmap", [__arg_0]);
+  generateMipmap_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "generateMipmap", [__arg_0]);
 
-  getActiveAttrib_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getActiveAttrib", []);
+  getActiveAttrib_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveAttrib", []);
 
-  getActiveAttrib_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getActiveAttrib", [__arg_0]);
+  getActiveAttrib_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveAttrib", [__arg_0]);
 
-  getActiveAttrib_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getActiveAttrib", [__arg_0, __arg_1]);
+  getActiveAttrib_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveAttrib", [__arg_0, __arg_1]);
 
-  getActiveUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniform", []);
+  getActiveUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveUniform", []);
 
-  getActiveUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniform", [__arg_0]);
+  getActiveUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveUniform", [__arg_0]);
 
-  getActiveUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniform", [__arg_0, __arg_1]);
+  getActiveUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveUniform", [__arg_0, __arg_1]);
 
-  getAttachedShaders_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAttachedShaders", []);
+  getAttachedShaders_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttachedShaders", []);
 
-  getAttachedShaders_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAttachedShaders", [__arg_0]);
+  getAttachedShaders_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttachedShaders", [__arg_0]);
 
-  getAttribLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAttribLocation", []);
+  getAttribLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttribLocation", []);
 
-  getAttribLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAttribLocation", [__arg_0]);
+  getAttribLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttribLocation", [__arg_0]);
 
-  getAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getAttribLocation", [__arg_0, __arg_1]);
+  getAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttribLocation", [__arg_0, __arg_1]);
 
-  getBufferParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getBufferParameter", []);
+  getBufferParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getBufferParameter", []);
 
-  getBufferParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getBufferParameter", [__arg_0]);
+  getBufferParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getBufferParameter", [__arg_0]);
 
-  getBufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getBufferParameter", [__arg_0, __arg_1]);
+  getBufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getBufferParameter", [__arg_0, __arg_1]);
 
-  getContextAttributes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getContextAttributes", []);
+  getContextAttributes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getContextAttributes", []);
 
-  getError_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getError", []);
+  getError_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getError", []);
 
-  getExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getExtension", []);
+  getExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getExtension", []);
 
-  getExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getExtension", [__arg_0]);
+  getExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getExtension", [__arg_0]);
 
-  getFramebufferAttachmentParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getFramebufferAttachmentParameter", [__arg_0]);
+  getFramebufferAttachmentParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getFramebufferAttachmentParameter", [__arg_0]);
 
-  getFramebufferAttachmentParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getFramebufferAttachmentParameter", [__arg_0, __arg_1]);
+  getFramebufferAttachmentParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getFramebufferAttachmentParameter", [__arg_0, __arg_1]);
 
-  getFramebufferAttachmentParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getFramebufferAttachmentParameter", [__arg_0, __arg_1, __arg_2]);
+  getFramebufferAttachmentParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getFramebufferAttachmentParameter", [__arg_0, __arg_1, __arg_2]);
 
-  getParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getParameter", []);
+  getParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getParameter", []);
 
-  getParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getParameter", [__arg_0]);
+  getParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getParameter", [__arg_0]);
 
-  getProgramInfoLog_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getProgramInfoLog", []);
+  getProgramInfoLog_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramInfoLog", []);
 
-  getProgramInfoLog_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getProgramInfoLog", [__arg_0]);
+  getProgramInfoLog_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramInfoLog", [__arg_0]);
 
-  getProgramParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getProgramParameter", []);
+  getProgramParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramParameter", []);
 
-  getProgramParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getProgramParameter", [__arg_0]);
+  getProgramParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramParameter", [__arg_0]);
 
-  getProgramParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getProgramParameter", [__arg_0, __arg_1]);
+  getProgramParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramParameter", [__arg_0, __arg_1]);
 
-  getRenderbufferParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getRenderbufferParameter", []);
+  getRenderbufferParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getRenderbufferParameter", []);
 
-  getRenderbufferParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getRenderbufferParameter", [__arg_0]);
+  getRenderbufferParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getRenderbufferParameter", [__arg_0]);
 
-  getRenderbufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getRenderbufferParameter", [__arg_0, __arg_1]);
+  getRenderbufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getRenderbufferParameter", [__arg_0, __arg_1]);
 
-  getShaderInfoLog_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getShaderInfoLog", []);
+  getShaderInfoLog_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderInfoLog", []);
 
-  getShaderInfoLog_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getShaderInfoLog", [__arg_0]);
+  getShaderInfoLog_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderInfoLog", [__arg_0]);
 
-  getShaderParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getShaderParameter", []);
+  getShaderParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderParameter", []);
 
-  getShaderParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getShaderParameter", [__arg_0]);
+  getShaderParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderParameter", [__arg_0]);
 
-  getShaderParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getShaderParameter", [__arg_0, __arg_1]);
+  getShaderParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderParameter", [__arg_0, __arg_1]);
 
-  getShaderPrecisionFormat_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getShaderPrecisionFormat", []);
+  getShaderPrecisionFormat_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderPrecisionFormat", []);
 
-  getShaderPrecisionFormat_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getShaderPrecisionFormat", [__arg_0]);
+  getShaderPrecisionFormat_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderPrecisionFormat", [__arg_0]);
 
-  getShaderPrecisionFormat_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getShaderPrecisionFormat", [__arg_0, __arg_1]);
+  getShaderPrecisionFormat_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderPrecisionFormat", [__arg_0, __arg_1]);
 
-  getShaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getShaderSource", []);
+  getShaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderSource", []);
 
-  getShaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getShaderSource", [__arg_0]);
+  getShaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderSource", [__arg_0]);
 
-  getSupportedExtensions_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSupportedExtensions", []);
+  getSupportedExtensions_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getSupportedExtensions", []);
 
-  getTexParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getTexParameter", []);
+  getTexParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getTexParameter", []);
 
-  getTexParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getTexParameter", [__arg_0]);
+  getTexParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getTexParameter", [__arg_0]);
 
-  getTexParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getTexParameter", [__arg_0, __arg_1]);
+  getTexParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getTexParameter", [__arg_0, __arg_1]);
 
-  getUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getUniform", []);
+  getUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniform", []);
 
-  getUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getUniform", [__arg_0]);
+  getUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniform", [__arg_0]);
 
-  getUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getUniform", [__arg_0, __arg_1]);
+  getUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniform", [__arg_0, __arg_1]);
 
-  getUniformLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getUniformLocation", []);
+  getUniformLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniformLocation", []);
 
-  getUniformLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getUniformLocation", [__arg_0]);
+  getUniformLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniformLocation", [__arg_0]);
 
-  getUniformLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getUniformLocation", [__arg_0, __arg_1]);
+  getUniformLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniformLocation", [__arg_0, __arg_1]);
 
-  getVertexAttrib_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttrib", []);
+  getVertexAttrib_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttrib", []);
 
-  getVertexAttrib_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttrib", [__arg_0]);
+  getVertexAttrib_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttrib", [__arg_0]);
 
-  getVertexAttrib_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttrib", [__arg_0, __arg_1]);
+  getVertexAttrib_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttrib", [__arg_0, __arg_1]);
 
-  getVertexAttribOffset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttribOffset", []);
+  getVertexAttribOffset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttribOffset", []);
 
-  getVertexAttribOffset_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttribOffset", [__arg_0]);
+  getVertexAttribOffset_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttribOffset", [__arg_0]);
 
-  getVertexAttribOffset_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttribOffset", [__arg_0, __arg_1]);
+  getVertexAttribOffset_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttribOffset", [__arg_0, __arg_1]);
 
-  hint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "hint", []);
+  hint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "hint", []);
 
-  hint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "hint", [__arg_0]);
+  hint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "hint", [__arg_0]);
 
-  hint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "hint", [__arg_0, __arg_1]);
+  hint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "hint", [__arg_0, __arg_1]);
 
-  isBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isBuffer", []);
+  isBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isBuffer", []);
 
-  isBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isBuffer", [__arg_0]);
+  isBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isBuffer", [__arg_0]);
 
-  isContextLost_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isContextLost", []);
+  isContextLost_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isContextLost", []);
 
-  isEnabled_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isEnabled", []);
+  isEnabled_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isEnabled", []);
 
-  isEnabled_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isEnabled", [__arg_0]);
+  isEnabled_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isEnabled", [__arg_0]);
 
-  isFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isFramebuffer", []);
+  isFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isFramebuffer", []);
 
-  isFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isFramebuffer", [__arg_0]);
+  isFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isFramebuffer", [__arg_0]);
 
-  isProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isProgram", []);
+  isProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isProgram", []);
 
-  isProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isProgram", [__arg_0]);
+  isProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isProgram", [__arg_0]);
 
-  isRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isRenderbuffer", []);
+  isRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isRenderbuffer", []);
 
-  isRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isRenderbuffer", [__arg_0]);
+  isRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isRenderbuffer", [__arg_0]);
 
-  isShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isShader", []);
+  isShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isShader", []);
 
-  isShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isShader", [__arg_0]);
+  isShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isShader", [__arg_0]);
 
-  isTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isTexture", []);
+  isTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isTexture", []);
 
-  isTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isTexture", [__arg_0]);
+  isTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isTexture", [__arg_0]);
 
-  lineWidth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "lineWidth", []);
+  lineWidth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "lineWidth", []);
 
-  lineWidth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "lineWidth", [__arg_0]);
+  lineWidth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "lineWidth", [__arg_0]);
 
-  linkProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "linkProgram", []);
+  linkProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "linkProgram", []);
 
-  linkProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "linkProgram", [__arg_0]);
+  linkProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "linkProgram", [__arg_0]);
 
-  pixelStorei_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "pixelStorei", []);
+  pixelStorei_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "pixelStorei", []);
 
-  pixelStorei_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "pixelStorei", [__arg_0]);
+  pixelStorei_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "pixelStorei", [__arg_0]);
 
-  pixelStorei_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "pixelStorei", [__arg_0, __arg_1]);
+  pixelStorei_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "pixelStorei", [__arg_0, __arg_1]);
 
-  polygonOffset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "polygonOffset", []);
+  polygonOffset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "polygonOffset", []);
 
-  polygonOffset_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "polygonOffset", [__arg_0]);
+  polygonOffset_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "polygonOffset", [__arg_0]);
 
-  polygonOffset_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "polygonOffset", [__arg_0, __arg_1]);
+  polygonOffset_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "polygonOffset", [__arg_0, __arg_1]);
 
-  readPixels_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  readPixels_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  readPixels_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "readPixels", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  readPixels_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "readPixels", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  renderbufferStorage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorage", [__arg_0, __arg_1]);
+  renderbufferStorage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "renderbufferStorage", [__arg_0, __arg_1]);
 
-  renderbufferStorage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorage", [__arg_0, __arg_1, __arg_2]);
+  renderbufferStorage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "renderbufferStorage", [__arg_0, __arg_1, __arg_2]);
 
-  renderbufferStorage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorage", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  renderbufferStorage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "renderbufferStorage", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  sampleCoverage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "sampleCoverage", []);
+  sampleCoverage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "sampleCoverage", []);
 
-  sampleCoverage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "sampleCoverage", [__arg_0]);
+  sampleCoverage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "sampleCoverage", [__arg_0]);
 
-  sampleCoverage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "sampleCoverage", [__arg_0, __arg_1]);
+  sampleCoverage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "sampleCoverage", [__arg_0, __arg_1]);
 
-  scissor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scissor", [__arg_0, __arg_1]);
+  scissor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "scissor", [__arg_0, __arg_1]);
 
-  scissor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "scissor", [__arg_0, __arg_1, __arg_2]);
+  scissor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "scissor", [__arg_0, __arg_1, __arg_2]);
 
-  scissor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "scissor", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  scissor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "scissor", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  shaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "shaderSource", []);
+  shaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "shaderSource", []);
 
-  shaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "shaderSource", [__arg_0]);
+  shaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "shaderSource", [__arg_0]);
 
-  shaderSource_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "shaderSource", [__arg_0, __arg_1]);
+  shaderSource_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "shaderSource", [__arg_0, __arg_1]);
 
-  stencilFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stencilFunc", [__arg_0]);
+  stencilFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFunc", [__arg_0]);
 
-  stencilFunc_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilFunc", [__arg_0, __arg_1]);
+  stencilFunc_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFunc", [__arg_0, __arg_1]);
 
-  stencilFunc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "stencilFunc", [__arg_0, __arg_1, __arg_2]);
+  stencilFunc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFunc", [__arg_0, __arg_1, __arg_2]);
 
-  stencilFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilFuncSeparate", [__arg_0, __arg_1]);
+  stencilFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFuncSeparate", [__arg_0, __arg_1]);
 
-  stencilFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "stencilFuncSeparate", [__arg_0, __arg_1, __arg_2]);
+  stencilFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFuncSeparate", [__arg_0, __arg_1, __arg_2]);
 
-  stencilFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "stencilFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  stencilFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  stencilMask_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stencilMask", []);
+  stencilMask_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMask", []);
 
-  stencilMask_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stencilMask", [__arg_0]);
+  stencilMask_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMask", [__arg_0]);
 
-  stencilMaskSeparate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stencilMaskSeparate", []);
+  stencilMaskSeparate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMaskSeparate", []);
 
-  stencilMaskSeparate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stencilMaskSeparate", [__arg_0]);
+  stencilMaskSeparate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMaskSeparate", [__arg_0]);
 
-  stencilMaskSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilMaskSeparate", [__arg_0, __arg_1]);
+  stencilMaskSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMaskSeparate", [__arg_0, __arg_1]);
 
-  stencilOp_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stencilOp", [__arg_0]);
+  stencilOp_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOp", [__arg_0]);
 
-  stencilOp_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilOp", [__arg_0, __arg_1]);
+  stencilOp_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOp", [__arg_0, __arg_1]);
 
-  stencilOp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "stencilOp", [__arg_0, __arg_1, __arg_2]);
+  stencilOp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOp", [__arg_0, __arg_1, __arg_2]);
 
-  stencilOpSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilOpSeparate", [__arg_0, __arg_1]);
+  stencilOpSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOpSeparate", [__arg_0, __arg_1]);
 
-  stencilOpSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "stencilOpSeparate", [__arg_0, __arg_1, __arg_2]);
+  stencilOpSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOpSeparate", [__arg_0, __arg_1, __arg_2]);
 
-  stencilOpSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "stencilOpSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  stencilOpSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOpSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  texImage2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  texImage2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  texImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  texImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  texImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  texImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  texImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  texImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  texParameterf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "texParameterf", [__arg_0]);
+  texParameterf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameterf", [__arg_0]);
 
-  texParameterf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "texParameterf", [__arg_0, __arg_1]);
+  texParameterf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameterf", [__arg_0, __arg_1]);
 
-  texParameterf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "texParameterf", [__arg_0, __arg_1, __arg_2]);
+  texParameterf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameterf", [__arg_0, __arg_1, __arg_2]);
 
-  texParameteri_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "texParameteri", [__arg_0]);
+  texParameteri_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameteri", [__arg_0]);
 
-  texParameteri_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "texParameteri", [__arg_0, __arg_1]);
+  texParameteri_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameteri", [__arg_0, __arg_1]);
 
-  texParameteri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "texParameteri", [__arg_0, __arg_1, __arg_2]);
+  texParameteri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameteri", [__arg_0, __arg_1, __arg_2]);
 
-  texSubImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  texSubImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  texSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  texSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  texSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  texSubImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  uniform1f_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1f", []);
+  uniform1f_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1f", []);
 
-  uniform1f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1f", [__arg_0]);
+  uniform1f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1f", [__arg_0]);
 
-  uniform1f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1f", [__arg_0, __arg_1]);
+  uniform1f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1f", [__arg_0, __arg_1]);
 
-  uniform1fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1fv", []);
+  uniform1fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1fv", []);
 
-  uniform1fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1fv", [__arg_0]);
+  uniform1fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1fv", [__arg_0]);
 
-  uniform1fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1fv", [__arg_0, __arg_1]);
+  uniform1fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1fv", [__arg_0, __arg_1]);
 
-  uniform1i_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1i", []);
+  uniform1i_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1i", []);
 
-  uniform1i_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1i", [__arg_0]);
+  uniform1i_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1i", [__arg_0]);
 
-  uniform1i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1i", [__arg_0, __arg_1]);
+  uniform1i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1i", [__arg_0, __arg_1]);
 
-  uniform1iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1iv", []);
+  uniform1iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1iv", []);
 
-  uniform1iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1iv", [__arg_0]);
+  uniform1iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1iv", [__arg_0]);
 
-  uniform1iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1iv", [__arg_0, __arg_1]);
+  uniform1iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1iv", [__arg_0, __arg_1]);
 
-  uniform2f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2f", [__arg_0]);
+  uniform2f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2f", [__arg_0]);
 
-  uniform2f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2f", [__arg_0, __arg_1]);
+  uniform2f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2f", [__arg_0, __arg_1]);
 
-  uniform2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform2f", [__arg_0, __arg_1, __arg_2]);
+  uniform2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2f", [__arg_0, __arg_1, __arg_2]);
 
-  uniform2fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform2fv", []);
+  uniform2fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2fv", []);
 
-  uniform2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2fv", [__arg_0]);
+  uniform2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2fv", [__arg_0]);
 
-  uniform2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2fv", [__arg_0, __arg_1]);
+  uniform2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2fv", [__arg_0, __arg_1]);
 
-  uniform2i_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2i", [__arg_0]);
+  uniform2i_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2i", [__arg_0]);
 
-  uniform2i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2i", [__arg_0, __arg_1]);
+  uniform2i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2i", [__arg_0, __arg_1]);
 
-  uniform2i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform2i", [__arg_0, __arg_1, __arg_2]);
+  uniform2i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2i", [__arg_0, __arg_1, __arg_2]);
 
-  uniform2iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform2iv", []);
+  uniform2iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2iv", []);
 
-  uniform2iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2iv", [__arg_0]);
+  uniform2iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2iv", [__arg_0]);
 
-  uniform2iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2iv", [__arg_0, __arg_1]);
+  uniform2iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2iv", [__arg_0, __arg_1]);
 
-  uniform3f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3f", [__arg_0, __arg_1]);
+  uniform3f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3f", [__arg_0, __arg_1]);
 
-  uniform3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform3f", [__arg_0, __arg_1, __arg_2]);
+  uniform3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3f", [__arg_0, __arg_1, __arg_2]);
 
-  uniform3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform3fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform3fv", []);
+  uniform3fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3fv", []);
 
-  uniform3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform3fv", [__arg_0]);
+  uniform3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3fv", [__arg_0]);
 
-  uniform3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3fv", [__arg_0, __arg_1]);
+  uniform3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3fv", [__arg_0, __arg_1]);
 
-  uniform3i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3i", [__arg_0, __arg_1]);
+  uniform3i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3i", [__arg_0, __arg_1]);
 
-  uniform3i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform3i", [__arg_0, __arg_1, __arg_2]);
+  uniform3i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3i", [__arg_0, __arg_1, __arg_2]);
 
-  uniform3i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform3i", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform3i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3i", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform3iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform3iv", []);
+  uniform3iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3iv", []);
 
-  uniform3iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform3iv", [__arg_0]);
+  uniform3iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3iv", [__arg_0]);
 
-  uniform3iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3iv", [__arg_0, __arg_1]);
+  uniform3iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3iv", [__arg_0, __arg_1]);
 
-  uniform4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform4f", [__arg_0, __arg_1, __arg_2]);
+  uniform4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4f", [__arg_0, __arg_1, __arg_2]);
 
-  uniform4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  uniform4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  uniform4fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform4fv", []);
+  uniform4fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4fv", []);
 
-  uniform4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform4fv", [__arg_0]);
+  uniform4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4fv", [__arg_0]);
 
-  uniform4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform4fv", [__arg_0, __arg_1]);
+  uniform4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4fv", [__arg_0, __arg_1]);
 
-  uniform4i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform4i", [__arg_0, __arg_1, __arg_2]);
+  uniform4i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4i", [__arg_0, __arg_1, __arg_2]);
 
-  uniform4i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform4i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform4i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  uniform4i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  uniform4iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform4iv", []);
+  uniform4iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4iv", []);
 
-  uniform4iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform4iv", [__arg_0]);
+  uniform4iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4iv", [__arg_0]);
 
-  uniform4iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform4iv", [__arg_0, __arg_1]);
+  uniform4iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4iv", [__arg_0, __arg_1]);
 
-  uniformMatrix2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2fv", [__arg_0]);
+  uniformMatrix2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix2fv", [__arg_0]);
 
-  uniformMatrix2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2fv", [__arg_0, __arg_1]);
+  uniformMatrix2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix2fv", [__arg_0, __arg_1]);
 
-  uniformMatrix2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix2fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3fv", [__arg_0]);
+  uniformMatrix3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix3fv", [__arg_0]);
 
-  uniformMatrix3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3fv", [__arg_0, __arg_1]);
+  uniformMatrix3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix3fv", [__arg_0, __arg_1]);
 
-  uniformMatrix3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix3fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4fv", [__arg_0]);
+  uniformMatrix4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix4fv", [__arg_0]);
 
-  uniformMatrix4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4fv", [__arg_0, __arg_1]);
+  uniformMatrix4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix4fv", [__arg_0, __arg_1]);
 
-  uniformMatrix4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix4fv", [__arg_0, __arg_1, __arg_2]);
 
-  useProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "useProgram", []);
+  useProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "useProgram", []);
 
-  useProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "useProgram", [__arg_0]);
+  useProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "useProgram", [__arg_0]);
 
-  validateProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "validateProgram", []);
+  validateProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "validateProgram", []);
 
-  validateProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "validateProgram", [__arg_0]);
+  validateProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "validateProgram", [__arg_0]);
 
-  vertexAttrib1f_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1f", []);
+  vertexAttrib1f_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1f", []);
 
-  vertexAttrib1f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1f", [__arg_0]);
+  vertexAttrib1f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1f", [__arg_0]);
 
-  vertexAttrib1f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1f", [__arg_0, __arg_1]);
+  vertexAttrib1f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1f", [__arg_0, __arg_1]);
 
-  vertexAttrib1fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1fv", []);
+  vertexAttrib1fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1fv", []);
 
-  vertexAttrib1fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1fv", [__arg_0]);
+  vertexAttrib1fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1fv", [__arg_0]);
 
-  vertexAttrib1fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1fv", [__arg_0, __arg_1]);
+  vertexAttrib1fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1fv", [__arg_0, __arg_1]);
 
-  vertexAttrib2f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2f", [__arg_0]);
+  vertexAttrib2f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2f", [__arg_0]);
 
-  vertexAttrib2f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2f", [__arg_0, __arg_1]);
+  vertexAttrib2f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2f", [__arg_0, __arg_1]);
 
-  vertexAttrib2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2f", [__arg_0, __arg_1, __arg_2]);
+  vertexAttrib2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2f", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttrib2fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2fv", []);
+  vertexAttrib2fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2fv", []);
 
-  vertexAttrib2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2fv", [__arg_0]);
+  vertexAttrib2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2fv", [__arg_0]);
 
-  vertexAttrib2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2fv", [__arg_0, __arg_1]);
+  vertexAttrib2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2fv", [__arg_0, __arg_1]);
 
-  vertexAttrib3f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3f", [__arg_0, __arg_1]);
+  vertexAttrib3f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3f", [__arg_0, __arg_1]);
 
-  vertexAttrib3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3f", [__arg_0, __arg_1, __arg_2]);
+  vertexAttrib3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3f", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttrib3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttrib3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttrib3fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3fv", []);
+  vertexAttrib3fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3fv", []);
 
-  vertexAttrib3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3fv", [__arg_0]);
+  vertexAttrib3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3fv", [__arg_0]);
 
-  vertexAttrib3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3fv", [__arg_0, __arg_1]);
+  vertexAttrib3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3fv", [__arg_0, __arg_1]);
 
-  vertexAttrib4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2]);
+  vertexAttrib4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttrib4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttrib4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttrib4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  vertexAttrib4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  vertexAttrib4fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4fv", []);
+  vertexAttrib4fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4fv", []);
 
-  vertexAttrib4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4fv", [__arg_0]);
+  vertexAttrib4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4fv", [__arg_0]);
 
-  vertexAttrib4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4fv", [__arg_0, __arg_1]);
+  vertexAttrib4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4fv", [__arg_0, __arg_1]);
 
-  vertexAttribPointer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttribPointer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttribPointer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  vertexAttribPointer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  vertexAttribPointer_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribPointer", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  viewport_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "viewport", [__arg_0, __arg_1]);
+  viewport_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "viewport", [__arg_0, __arg_1]);
 
-  viewport_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "viewport", [__arg_0, __arg_1, __arg_2]);
+  viewport_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "viewport", [__arg_0, __arg_1, __arg_2]);
 
-  viewport_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "viewport", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  viewport_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "viewport", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
 class BlinkWebGLRenderingContextBase {
   static final instance = new BlinkWebGLRenderingContextBase();
 
-  canvas_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "canvas");
+  canvas_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLRenderingContextBase */, "canvas");
 
-  drawingBufferHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "drawingBufferHeight");
+  drawingBufferHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLRenderingContextBase */, "drawingBufferHeight");
 
-  drawingBufferWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "drawingBufferWidth");
+  drawingBufferWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLRenderingContextBase */, "drawingBufferWidth");
 
-  activeTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "activeTexture", []);
+  activeTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "activeTexture", []);
 
-  activeTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "activeTexture", [__arg_0]);
+  activeTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "activeTexture", [__arg_0]);
 
-  attachShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "attachShader", []);
+  attachShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "attachShader", []);
 
-  attachShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "attachShader", [__arg_0]);
+  attachShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "attachShader", [__arg_0]);
 
-  attachShader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "attachShader", [__arg_0, __arg_1]);
+  attachShader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "attachShader", [__arg_0, __arg_1]);
 
-  bindAttribLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindAttribLocation", [__arg_0]);
+  bindAttribLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindAttribLocation", [__arg_0]);
 
-  bindAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindAttribLocation", [__arg_0, __arg_1]);
+  bindAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindAttribLocation", [__arg_0, __arg_1]);
 
-  bindAttribLocation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "bindAttribLocation", [__arg_0, __arg_1, __arg_2]);
+  bindAttribLocation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindAttribLocation", [__arg_0, __arg_1, __arg_2]);
 
-  bindBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindBuffer", []);
+  bindBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindBuffer", []);
 
-  bindBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindBuffer", [__arg_0]);
+  bindBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindBuffer", [__arg_0]);
 
-  bindBuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindBuffer", [__arg_0, __arg_1]);
+  bindBuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindBuffer", [__arg_0, __arg_1]);
 
-  bindFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindFramebuffer", []);
+  bindFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindFramebuffer", []);
 
-  bindFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindFramebuffer", [__arg_0]);
+  bindFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindFramebuffer", [__arg_0]);
 
-  bindFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindFramebuffer", [__arg_0, __arg_1]);
+  bindFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindFramebuffer", [__arg_0, __arg_1]);
 
-  bindRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindRenderbuffer", []);
+  bindRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindRenderbuffer", []);
 
-  bindRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindRenderbuffer", [__arg_0]);
+  bindRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindRenderbuffer", [__arg_0]);
 
-  bindRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindRenderbuffer", [__arg_0, __arg_1]);
+  bindRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindRenderbuffer", [__arg_0, __arg_1]);
 
-  bindTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "bindTexture", []);
+  bindTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindTexture", []);
 
-  bindTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bindTexture", [__arg_0]);
+  bindTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindTexture", [__arg_0]);
 
-  bindTexture_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bindTexture", [__arg_0, __arg_1]);
+  bindTexture_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bindTexture", [__arg_0, __arg_1]);
 
-  blendColor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "blendColor", [__arg_0, __arg_1]);
+  blendColor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendColor", [__arg_0, __arg_1]);
 
-  blendColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "blendColor", [__arg_0, __arg_1, __arg_2]);
+  blendColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendColor", [__arg_0, __arg_1, __arg_2]);
 
-  blendColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "blendColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  blendColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  blendEquation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blendEquation", []);
+  blendEquation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquation", []);
 
-  blendEquation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "blendEquation", [__arg_0]);
+  blendEquation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquation", [__arg_0]);
 
-  blendEquationSeparate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blendEquationSeparate", []);
+  blendEquationSeparate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquationSeparate", []);
 
-  blendEquationSeparate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "blendEquationSeparate", [__arg_0]);
+  blendEquationSeparate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquationSeparate", [__arg_0]);
 
-  blendEquationSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "blendEquationSeparate", [__arg_0, __arg_1]);
+  blendEquationSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendEquationSeparate", [__arg_0, __arg_1]);
 
-  blendFunc_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blendFunc", []);
+  blendFunc_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFunc", []);
 
-  blendFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "blendFunc", [__arg_0]);
+  blendFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFunc", [__arg_0]);
 
-  blendFunc_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "blendFunc", [__arg_0, __arg_1]);
+  blendFunc_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFunc", [__arg_0, __arg_1]);
 
-  blendFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "blendFuncSeparate", [__arg_0, __arg_1]);
+  blendFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFuncSeparate", [__arg_0, __arg_1]);
 
-  blendFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "blendFuncSeparate", [__arg_0, __arg_1, __arg_2]);
+  blendFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFuncSeparate", [__arg_0, __arg_1, __arg_2]);
 
-  blendFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "blendFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  blendFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "blendFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  bufferData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bufferData", [__arg_0]);
+  bufferData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferData", [__arg_0]);
 
-  bufferData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bufferData", [__arg_0, __arg_1]);
+  bufferData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferData", [__arg_0, __arg_1]);
 
-  bufferData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "bufferData", [__arg_0, __arg_1, __arg_2]);
+  bufferData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferData", [__arg_0, __arg_1, __arg_2]);
 
-  bufferSubData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "bufferSubData", [__arg_0]);
+  bufferSubData_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferSubData", [__arg_0]);
 
-  bufferSubData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "bufferSubData", [__arg_0, __arg_1]);
+  bufferSubData_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferSubData", [__arg_0, __arg_1]);
 
-  bufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "bufferSubData", [__arg_0, __arg_1, __arg_2]);
+  bufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "bufferSubData", [__arg_0, __arg_1, __arg_2]);
 
-  checkFramebufferStatus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "checkFramebufferStatus", []);
+  checkFramebufferStatus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "checkFramebufferStatus", []);
 
-  checkFramebufferStatus_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "checkFramebufferStatus", [__arg_0]);
+  checkFramebufferStatus_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "checkFramebufferStatus", [__arg_0]);
 
-  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clear", []);
+  clear_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clear", []);
 
-  clear_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clear", [__arg_0]);
+  clear_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clear", [__arg_0]);
 
-  clearColor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "clearColor", [__arg_0, __arg_1]);
+  clearColor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearColor", [__arg_0, __arg_1]);
 
-  clearColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "clearColor", [__arg_0, __arg_1, __arg_2]);
+  clearColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearColor", [__arg_0, __arg_1, __arg_2]);
 
-  clearColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "clearColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  clearColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  clearDepth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearDepth", []);
+  clearDepth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearDepth", []);
 
-  clearDepth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearDepth", [__arg_0]);
+  clearDepth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearDepth", [__arg_0]);
 
-  clearStencil_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearStencil", []);
+  clearStencil_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearStencil", []);
 
-  clearStencil_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearStencil", [__arg_0]);
+  clearStencil_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "clearStencil", [__arg_0]);
 
-  colorMask_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "colorMask", [__arg_0, __arg_1]);
+  colorMask_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "colorMask", [__arg_0, __arg_1]);
 
-  colorMask_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "colorMask", [__arg_0, __arg_1, __arg_2]);
+  colorMask_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "colorMask", [__arg_0, __arg_1, __arg_2]);
 
-  colorMask_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "colorMask", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  colorMask_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "colorMask", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  compileShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "compileShader", []);
+  compileShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compileShader", []);
 
-  compileShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "compileShader", [__arg_0]);
+  compileShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compileShader", [__arg_0]);
 
-  compressedTexImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  compressedTexImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  compressedTexImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  compressedTexImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  compressedTexSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  compressedTexSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  compressedTexSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "compressedTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "compressedTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  copyTexImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "copyTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  copyTexImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "copyTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  copyTexImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "copyTexImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  copyTexSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  copyTexSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  copyTexSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "copyTexSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "copyTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  createBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createBuffer", []);
+  createBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createBuffer", []);
 
-  createFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createFramebuffer", []);
+  createFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createFramebuffer", []);
 
-  createProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createProgram", []);
+  createProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createProgram", []);
 
-  createRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createRenderbuffer", []);
+  createRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createRenderbuffer", []);
 
-  createShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createShader", []);
+  createShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createShader", []);
 
-  createShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createShader", [__arg_0]);
+  createShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createShader", [__arg_0]);
 
-  createTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createTexture", []);
+  createTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "createTexture", []);
 
-  cullFace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cullFace", []);
+  cullFace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "cullFace", []);
 
-  cullFace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "cullFace", [__arg_0]);
+  cullFace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "cullFace", [__arg_0]);
 
-  deleteBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteBuffer", []);
+  deleteBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteBuffer", []);
 
-  deleteBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteBuffer", [__arg_0]);
+  deleteBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteBuffer", [__arg_0]);
 
-  deleteFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteFramebuffer", []);
+  deleteFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteFramebuffer", []);
 
-  deleteFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteFramebuffer", [__arg_0]);
+  deleteFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteFramebuffer", [__arg_0]);
 
-  deleteProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteProgram", []);
+  deleteProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteProgram", []);
 
-  deleteProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteProgram", [__arg_0]);
+  deleteProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteProgram", [__arg_0]);
 
-  deleteRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteRenderbuffer", []);
+  deleteRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteRenderbuffer", []);
 
-  deleteRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteRenderbuffer", [__arg_0]);
+  deleteRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteRenderbuffer", [__arg_0]);
 
-  deleteShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteShader", []);
+  deleteShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteShader", []);
 
-  deleteShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteShader", [__arg_0]);
+  deleteShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteShader", [__arg_0]);
 
-  deleteTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "deleteTexture", []);
+  deleteTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteTexture", []);
 
-  deleteTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "deleteTexture", [__arg_0]);
+  deleteTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "deleteTexture", [__arg_0]);
 
-  depthFunc_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "depthFunc", []);
+  depthFunc_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthFunc", []);
 
-  depthFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "depthFunc", [__arg_0]);
+  depthFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthFunc", [__arg_0]);
 
-  depthMask_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "depthMask", []);
+  depthMask_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthMask", []);
 
-  depthMask_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "depthMask", [__arg_0]);
+  depthMask_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthMask", [__arg_0]);
 
-  depthRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "depthRange", []);
+  depthRange_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthRange", []);
 
-  depthRange_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "depthRange", [__arg_0]);
+  depthRange_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthRange", [__arg_0]);
 
-  depthRange_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "depthRange", [__arg_0, __arg_1]);
+  depthRange_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "depthRange", [__arg_0, __arg_1]);
 
-  detachShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "detachShader", []);
+  detachShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "detachShader", []);
 
-  detachShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "detachShader", [__arg_0]);
+  detachShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "detachShader", [__arg_0]);
 
-  detachShader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "detachShader", [__arg_0, __arg_1]);
+  detachShader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "detachShader", [__arg_0, __arg_1]);
 
-  disable_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "disable", []);
+  disable_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "disable", []);
 
-  disable_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "disable", [__arg_0]);
+  disable_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "disable", [__arg_0]);
 
-  disableVertexAttribArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "disableVertexAttribArray", []);
+  disableVertexAttribArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "disableVertexAttribArray", []);
 
-  disableVertexAttribArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "disableVertexAttribArray", [__arg_0]);
+  disableVertexAttribArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "disableVertexAttribArray", [__arg_0]);
 
-  drawArrays_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "drawArrays", [__arg_0]);
+  drawArrays_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawArrays", [__arg_0]);
 
-  drawArrays_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "drawArrays", [__arg_0, __arg_1]);
+  drawArrays_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawArrays", [__arg_0, __arg_1]);
 
-  drawArrays_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "drawArrays", [__arg_0, __arg_1, __arg_2]);
+  drawArrays_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawArrays", [__arg_0, __arg_1, __arg_2]);
 
-  drawElements_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "drawElements", [__arg_0, __arg_1]);
+  drawElements_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawElements", [__arg_0, __arg_1]);
 
-  drawElements_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "drawElements", [__arg_0, __arg_1, __arg_2]);
+  drawElements_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawElements", [__arg_0, __arg_1, __arg_2]);
 
-  drawElements_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "drawElements", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  drawElements_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "drawElements", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  enable_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "enable", []);
+  enable_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "enable", []);
 
-  enable_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "enable", [__arg_0]);
+  enable_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "enable", [__arg_0]);
 
-  enableVertexAttribArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "enableVertexAttribArray", []);
+  enableVertexAttribArray_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "enableVertexAttribArray", []);
 
-  enableVertexAttribArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "enableVertexAttribArray", [__arg_0]);
+  enableVertexAttribArray_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "enableVertexAttribArray", [__arg_0]);
 
-  finish_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "finish", []);
+  finish_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "finish", []);
 
-  flush_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "flush", []);
+  flush_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "flush", []);
 
-  framebufferRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "framebufferRenderbuffer", [__arg_0, __arg_1]);
+  framebufferRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferRenderbuffer", [__arg_0, __arg_1]);
 
-  framebufferRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2]);
+  framebufferRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2]);
 
-  framebufferRenderbuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  framebufferRenderbuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  framebufferTexture2D_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2]);
+  framebufferTexture2D_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2]);
 
-  framebufferTexture2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  framebufferTexture2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  framebufferTexture2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  framebufferTexture2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  frontFace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "frontFace", []);
+  frontFace_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "frontFace", []);
 
-  frontFace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "frontFace", [__arg_0]);
+  frontFace_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "frontFace", [__arg_0]);
 
-  generateMipmap_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "generateMipmap", []);
+  generateMipmap_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "generateMipmap", []);
 
-  generateMipmap_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "generateMipmap", [__arg_0]);
+  generateMipmap_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "generateMipmap", [__arg_0]);
 
-  getActiveAttrib_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getActiveAttrib", []);
+  getActiveAttrib_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveAttrib", []);
 
-  getActiveAttrib_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getActiveAttrib", [__arg_0]);
+  getActiveAttrib_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveAttrib", [__arg_0]);
 
-  getActiveAttrib_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getActiveAttrib", [__arg_0, __arg_1]);
+  getActiveAttrib_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveAttrib", [__arg_0, __arg_1]);
 
-  getActiveUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniform", []);
+  getActiveUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveUniform", []);
 
-  getActiveUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniform", [__arg_0]);
+  getActiveUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveUniform", [__arg_0]);
 
-  getActiveUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getActiveUniform", [__arg_0, __arg_1]);
+  getActiveUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getActiveUniform", [__arg_0, __arg_1]);
 
-  getAttachedShaders_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAttachedShaders", []);
+  getAttachedShaders_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttachedShaders", []);
 
-  getAttachedShaders_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAttachedShaders", [__arg_0]);
+  getAttachedShaders_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttachedShaders", [__arg_0]);
 
-  getAttribLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAttribLocation", []);
+  getAttribLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttribLocation", []);
 
-  getAttribLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getAttribLocation", [__arg_0]);
+  getAttribLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttribLocation", [__arg_0]);
 
-  getAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getAttribLocation", [__arg_0, __arg_1]);
+  getAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getAttribLocation", [__arg_0, __arg_1]);
 
-  getBufferParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getBufferParameter", []);
+  getBufferParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getBufferParameter", []);
 
-  getBufferParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getBufferParameter", [__arg_0]);
+  getBufferParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getBufferParameter", [__arg_0]);
 
-  getBufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getBufferParameter", [__arg_0, __arg_1]);
+  getBufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getBufferParameter", [__arg_0, __arg_1]);
 
-  getContextAttributes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getContextAttributes", []);
+  getContextAttributes_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getContextAttributes", []);
 
-  getError_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getError", []);
+  getError_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getError", []);
 
-  getExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getExtension", []);
+  getExtension_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getExtension", []);
 
-  getExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getExtension", [__arg_0]);
+  getExtension_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getExtension", [__arg_0]);
 
-  getFramebufferAttachmentParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getFramebufferAttachmentParameter", [__arg_0]);
+  getFramebufferAttachmentParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getFramebufferAttachmentParameter", [__arg_0]);
 
-  getFramebufferAttachmentParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getFramebufferAttachmentParameter", [__arg_0, __arg_1]);
+  getFramebufferAttachmentParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getFramebufferAttachmentParameter", [__arg_0, __arg_1]);
 
-  getFramebufferAttachmentParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "getFramebufferAttachmentParameter", [__arg_0, __arg_1, __arg_2]);
+  getFramebufferAttachmentParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getFramebufferAttachmentParameter", [__arg_0, __arg_1, __arg_2]);
 
-  getParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getParameter", []);
+  getParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getParameter", []);
 
-  getParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getParameter", [__arg_0]);
+  getParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getParameter", [__arg_0]);
 
-  getProgramInfoLog_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getProgramInfoLog", []);
+  getProgramInfoLog_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramInfoLog", []);
 
-  getProgramInfoLog_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getProgramInfoLog", [__arg_0]);
+  getProgramInfoLog_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramInfoLog", [__arg_0]);
 
-  getProgramParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getProgramParameter", []);
+  getProgramParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramParameter", []);
 
-  getProgramParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getProgramParameter", [__arg_0]);
+  getProgramParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramParameter", [__arg_0]);
 
-  getProgramParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getProgramParameter", [__arg_0, __arg_1]);
+  getProgramParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getProgramParameter", [__arg_0, __arg_1]);
 
-  getRenderbufferParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getRenderbufferParameter", []);
+  getRenderbufferParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getRenderbufferParameter", []);
 
-  getRenderbufferParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getRenderbufferParameter", [__arg_0]);
+  getRenderbufferParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getRenderbufferParameter", [__arg_0]);
 
-  getRenderbufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getRenderbufferParameter", [__arg_0, __arg_1]);
+  getRenderbufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getRenderbufferParameter", [__arg_0, __arg_1]);
 
-  getShaderInfoLog_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getShaderInfoLog", []);
+  getShaderInfoLog_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderInfoLog", []);
 
-  getShaderInfoLog_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getShaderInfoLog", [__arg_0]);
+  getShaderInfoLog_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderInfoLog", [__arg_0]);
 
-  getShaderParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getShaderParameter", []);
+  getShaderParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderParameter", []);
 
-  getShaderParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getShaderParameter", [__arg_0]);
+  getShaderParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderParameter", [__arg_0]);
 
-  getShaderParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getShaderParameter", [__arg_0, __arg_1]);
+  getShaderParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderParameter", [__arg_0, __arg_1]);
 
-  getShaderPrecisionFormat_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getShaderPrecisionFormat", []);
+  getShaderPrecisionFormat_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderPrecisionFormat", []);
 
-  getShaderPrecisionFormat_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getShaderPrecisionFormat", [__arg_0]);
+  getShaderPrecisionFormat_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderPrecisionFormat", [__arg_0]);
 
-  getShaderPrecisionFormat_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getShaderPrecisionFormat", [__arg_0, __arg_1]);
+  getShaderPrecisionFormat_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderPrecisionFormat", [__arg_0, __arg_1]);
 
-  getShaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getShaderSource", []);
+  getShaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderSource", []);
 
-  getShaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getShaderSource", [__arg_0]);
+  getShaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getShaderSource", [__arg_0]);
 
-  getSupportedExtensions_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSupportedExtensions", []);
+  getSupportedExtensions_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getSupportedExtensions", []);
 
-  getTexParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getTexParameter", []);
+  getTexParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getTexParameter", []);
 
-  getTexParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getTexParameter", [__arg_0]);
+  getTexParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getTexParameter", [__arg_0]);
 
-  getTexParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getTexParameter", [__arg_0, __arg_1]);
+  getTexParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getTexParameter", [__arg_0, __arg_1]);
 
-  getUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getUniform", []);
+  getUniform_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniform", []);
 
-  getUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getUniform", [__arg_0]);
+  getUniform_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniform", [__arg_0]);
 
-  getUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getUniform", [__arg_0, __arg_1]);
+  getUniform_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniform", [__arg_0, __arg_1]);
 
-  getUniformLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getUniformLocation", []);
+  getUniformLocation_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniformLocation", []);
 
-  getUniformLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getUniformLocation", [__arg_0]);
+  getUniformLocation_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniformLocation", [__arg_0]);
 
-  getUniformLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getUniformLocation", [__arg_0, __arg_1]);
+  getUniformLocation_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getUniformLocation", [__arg_0, __arg_1]);
 
-  getVertexAttrib_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttrib", []);
+  getVertexAttrib_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttrib", []);
 
-  getVertexAttrib_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttrib", [__arg_0]);
+  getVertexAttrib_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttrib", [__arg_0]);
 
-  getVertexAttrib_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttrib", [__arg_0, __arg_1]);
+  getVertexAttrib_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttrib", [__arg_0, __arg_1]);
 
-  getVertexAttribOffset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttribOffset", []);
+  getVertexAttribOffset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttribOffset", []);
 
-  getVertexAttribOffset_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttribOffset", [__arg_0]);
+  getVertexAttribOffset_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttribOffset", [__arg_0]);
 
-  getVertexAttribOffset_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getVertexAttribOffset", [__arg_0, __arg_1]);
+  getVertexAttribOffset_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "getVertexAttribOffset", [__arg_0, __arg_1]);
 
-  hint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "hint", []);
+  hint_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "hint", []);
 
-  hint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "hint", [__arg_0]);
+  hint_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "hint", [__arg_0]);
 
-  hint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "hint", [__arg_0, __arg_1]);
+  hint_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "hint", [__arg_0, __arg_1]);
 
-  isBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isBuffer", []);
+  isBuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isBuffer", []);
 
-  isBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isBuffer", [__arg_0]);
+  isBuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isBuffer", [__arg_0]);
 
-  isContextLost_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isContextLost", []);
+  isContextLost_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isContextLost", []);
 
-  isEnabled_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isEnabled", []);
+  isEnabled_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isEnabled", []);
 
-  isEnabled_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isEnabled", [__arg_0]);
+  isEnabled_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isEnabled", [__arg_0]);
 
-  isFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isFramebuffer", []);
+  isFramebuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isFramebuffer", []);
 
-  isFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isFramebuffer", [__arg_0]);
+  isFramebuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isFramebuffer", [__arg_0]);
 
-  isProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isProgram", []);
+  isProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isProgram", []);
 
-  isProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isProgram", [__arg_0]);
+  isProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isProgram", [__arg_0]);
 
-  isRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isRenderbuffer", []);
+  isRenderbuffer_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isRenderbuffer", []);
 
-  isRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isRenderbuffer", [__arg_0]);
+  isRenderbuffer_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isRenderbuffer", [__arg_0]);
 
-  isShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isShader", []);
+  isShader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isShader", []);
 
-  isShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isShader", [__arg_0]);
+  isShader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isShader", [__arg_0]);
 
-  isTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "isTexture", []);
+  isTexture_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isTexture", []);
 
-  isTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "isTexture", [__arg_0]);
+  isTexture_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "isTexture", [__arg_0]);
 
-  lineWidth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "lineWidth", []);
+  lineWidth_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "lineWidth", []);
 
-  lineWidth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "lineWidth", [__arg_0]);
+  lineWidth_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "lineWidth", [__arg_0]);
 
-  linkProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "linkProgram", []);
+  linkProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "linkProgram", []);
 
-  linkProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "linkProgram", [__arg_0]);
+  linkProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "linkProgram", [__arg_0]);
 
-  pixelStorei_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "pixelStorei", []);
+  pixelStorei_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "pixelStorei", []);
 
-  pixelStorei_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "pixelStorei", [__arg_0]);
+  pixelStorei_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "pixelStorei", [__arg_0]);
 
-  pixelStorei_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "pixelStorei", [__arg_0, __arg_1]);
+  pixelStorei_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "pixelStorei", [__arg_0, __arg_1]);
 
-  polygonOffset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "polygonOffset", []);
+  polygonOffset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "polygonOffset", []);
 
-  polygonOffset_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "polygonOffset", [__arg_0]);
+  polygonOffset_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "polygonOffset", [__arg_0]);
 
-  polygonOffset_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "polygonOffset", [__arg_0, __arg_1]);
+  polygonOffset_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "polygonOffset", [__arg_0, __arg_1]);
 
-  readPixels_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  readPixels_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  readPixels_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "readPixels", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  readPixels_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "readPixels", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  renderbufferStorage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorage", [__arg_0, __arg_1]);
+  renderbufferStorage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "renderbufferStorage", [__arg_0, __arg_1]);
 
-  renderbufferStorage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorage", [__arg_0, __arg_1, __arg_2]);
+  renderbufferStorage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "renderbufferStorage", [__arg_0, __arg_1, __arg_2]);
 
-  renderbufferStorage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "renderbufferStorage", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  renderbufferStorage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "renderbufferStorage", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  sampleCoverage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "sampleCoverage", []);
+  sampleCoverage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "sampleCoverage", []);
 
-  sampleCoverage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "sampleCoverage", [__arg_0]);
+  sampleCoverage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "sampleCoverage", [__arg_0]);
 
-  sampleCoverage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "sampleCoverage", [__arg_0, __arg_1]);
+  sampleCoverage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "sampleCoverage", [__arg_0, __arg_1]);
 
-  scissor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scissor", [__arg_0, __arg_1]);
+  scissor_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "scissor", [__arg_0, __arg_1]);
 
-  scissor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "scissor", [__arg_0, __arg_1, __arg_2]);
+  scissor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "scissor", [__arg_0, __arg_1, __arg_2]);
 
-  scissor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "scissor", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  scissor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "scissor", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  shaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "shaderSource", []);
+  shaderSource_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "shaderSource", []);
 
-  shaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "shaderSource", [__arg_0]);
+  shaderSource_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "shaderSource", [__arg_0]);
 
-  shaderSource_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "shaderSource", [__arg_0, __arg_1]);
+  shaderSource_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "shaderSource", [__arg_0, __arg_1]);
 
-  stencilFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stencilFunc", [__arg_0]);
+  stencilFunc_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFunc", [__arg_0]);
 
-  stencilFunc_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilFunc", [__arg_0, __arg_1]);
+  stencilFunc_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFunc", [__arg_0, __arg_1]);
 
-  stencilFunc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "stencilFunc", [__arg_0, __arg_1, __arg_2]);
+  stencilFunc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFunc", [__arg_0, __arg_1, __arg_2]);
 
-  stencilFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilFuncSeparate", [__arg_0, __arg_1]);
+  stencilFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFuncSeparate", [__arg_0, __arg_1]);
 
-  stencilFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "stencilFuncSeparate", [__arg_0, __arg_1, __arg_2]);
+  stencilFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFuncSeparate", [__arg_0, __arg_1, __arg_2]);
 
-  stencilFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "stencilFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  stencilFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  stencilMask_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stencilMask", []);
+  stencilMask_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMask", []);
 
-  stencilMask_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stencilMask", [__arg_0]);
+  stencilMask_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMask", [__arg_0]);
 
-  stencilMaskSeparate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stencilMaskSeparate", []);
+  stencilMaskSeparate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMaskSeparate", []);
 
-  stencilMaskSeparate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stencilMaskSeparate", [__arg_0]);
+  stencilMaskSeparate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMaskSeparate", [__arg_0]);
 
-  stencilMaskSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilMaskSeparate", [__arg_0, __arg_1]);
+  stencilMaskSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilMaskSeparate", [__arg_0, __arg_1]);
 
-  stencilOp_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "stencilOp", [__arg_0]);
+  stencilOp_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOp", [__arg_0]);
 
-  stencilOp_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilOp", [__arg_0, __arg_1]);
+  stencilOp_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOp", [__arg_0, __arg_1]);
 
-  stencilOp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "stencilOp", [__arg_0, __arg_1, __arg_2]);
+  stencilOp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOp", [__arg_0, __arg_1, __arg_2]);
 
-  stencilOpSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "stencilOpSeparate", [__arg_0, __arg_1]);
+  stencilOpSeparate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOpSeparate", [__arg_0, __arg_1]);
 
-  stencilOpSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "stencilOpSeparate", [__arg_0, __arg_1, __arg_2]);
+  stencilOpSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOpSeparate", [__arg_0, __arg_1, __arg_2]);
 
-  stencilOpSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "stencilOpSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  stencilOpSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "stencilOpSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  texImage2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  texImage2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  texImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  texImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  texImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  texImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  texImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  texImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "texImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  texParameterf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "texParameterf", [__arg_0]);
+  texParameterf_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameterf", [__arg_0]);
 
-  texParameterf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "texParameterf", [__arg_0, __arg_1]);
+  texParameterf_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameterf", [__arg_0, __arg_1]);
 
-  texParameterf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "texParameterf", [__arg_0, __arg_1, __arg_2]);
+  texParameterf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameterf", [__arg_0, __arg_1, __arg_2]);
 
-  texParameteri_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "texParameteri", [__arg_0]);
+  texParameteri_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameteri", [__arg_0]);
 
-  texParameteri_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "texParameteri", [__arg_0, __arg_1]);
+  texParameteri_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameteri", [__arg_0, __arg_1]);
 
-  texParameteri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "texParameteri", [__arg_0, __arg_1, __arg_2]);
+  texParameteri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texParameteri", [__arg_0, __arg_1, __arg_2]);
 
-  texSubImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  texSubImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  texSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  texSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  texSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  texSubImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => Blink_JsNative_DomException.callMethod(mthis, "texSubImage2D", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  uniform1f_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1f", []);
+  uniform1f_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1f", []);
 
-  uniform1f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1f", [__arg_0]);
+  uniform1f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1f", [__arg_0]);
 
-  uniform1f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1f", [__arg_0, __arg_1]);
+  uniform1f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1f", [__arg_0, __arg_1]);
 
-  uniform1fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1fv", []);
+  uniform1fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1fv", []);
 
-  uniform1fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1fv", [__arg_0]);
+  uniform1fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1fv", [__arg_0]);
 
-  uniform1fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1fv", [__arg_0, __arg_1]);
+  uniform1fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1fv", [__arg_0, __arg_1]);
 
-  uniform1i_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1i", []);
+  uniform1i_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1i", []);
 
-  uniform1i_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1i", [__arg_0]);
+  uniform1i_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1i", [__arg_0]);
 
-  uniform1i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1i", [__arg_0, __arg_1]);
+  uniform1i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1i", [__arg_0, __arg_1]);
 
-  uniform1iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform1iv", []);
+  uniform1iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1iv", []);
 
-  uniform1iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform1iv", [__arg_0]);
+  uniform1iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1iv", [__arg_0]);
 
-  uniform1iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform1iv", [__arg_0, __arg_1]);
+  uniform1iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform1iv", [__arg_0, __arg_1]);
 
-  uniform2f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2f", [__arg_0]);
+  uniform2f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2f", [__arg_0]);
 
-  uniform2f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2f", [__arg_0, __arg_1]);
+  uniform2f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2f", [__arg_0, __arg_1]);
 
-  uniform2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform2f", [__arg_0, __arg_1, __arg_2]);
+  uniform2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2f", [__arg_0, __arg_1, __arg_2]);
 
-  uniform2fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform2fv", []);
+  uniform2fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2fv", []);
 
-  uniform2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2fv", [__arg_0]);
+  uniform2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2fv", [__arg_0]);
 
-  uniform2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2fv", [__arg_0, __arg_1]);
+  uniform2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2fv", [__arg_0, __arg_1]);
 
-  uniform2i_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2i", [__arg_0]);
+  uniform2i_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2i", [__arg_0]);
 
-  uniform2i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2i", [__arg_0, __arg_1]);
+  uniform2i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2i", [__arg_0, __arg_1]);
 
-  uniform2i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform2i", [__arg_0, __arg_1, __arg_2]);
+  uniform2i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2i", [__arg_0, __arg_1, __arg_2]);
 
-  uniform2iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform2iv", []);
+  uniform2iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2iv", []);
 
-  uniform2iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform2iv", [__arg_0]);
+  uniform2iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2iv", [__arg_0]);
 
-  uniform2iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform2iv", [__arg_0, __arg_1]);
+  uniform2iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform2iv", [__arg_0, __arg_1]);
 
-  uniform3f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3f", [__arg_0, __arg_1]);
+  uniform3f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3f", [__arg_0, __arg_1]);
 
-  uniform3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform3f", [__arg_0, __arg_1, __arg_2]);
+  uniform3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3f", [__arg_0, __arg_1, __arg_2]);
 
-  uniform3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform3fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform3fv", []);
+  uniform3fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3fv", []);
 
-  uniform3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform3fv", [__arg_0]);
+  uniform3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3fv", [__arg_0]);
 
-  uniform3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3fv", [__arg_0, __arg_1]);
+  uniform3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3fv", [__arg_0, __arg_1]);
 
-  uniform3i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3i", [__arg_0, __arg_1]);
+  uniform3i_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3i", [__arg_0, __arg_1]);
 
-  uniform3i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform3i", [__arg_0, __arg_1, __arg_2]);
+  uniform3i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3i", [__arg_0, __arg_1, __arg_2]);
 
-  uniform3i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform3i", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform3i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3i", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform3iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform3iv", []);
+  uniform3iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3iv", []);
 
-  uniform3iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform3iv", [__arg_0]);
+  uniform3iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3iv", [__arg_0]);
 
-  uniform3iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform3iv", [__arg_0, __arg_1]);
+  uniform3iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform3iv", [__arg_0, __arg_1]);
 
-  uniform4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform4f", [__arg_0, __arg_1, __arg_2]);
+  uniform4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4f", [__arg_0, __arg_1, __arg_2]);
 
-  uniform4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  uniform4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  uniform4fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform4fv", []);
+  uniform4fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4fv", []);
 
-  uniform4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform4fv", [__arg_0]);
+  uniform4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4fv", [__arg_0]);
 
-  uniform4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform4fv", [__arg_0, __arg_1]);
+  uniform4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4fv", [__arg_0, __arg_1]);
 
-  uniform4i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniform4i", [__arg_0, __arg_1, __arg_2]);
+  uniform4i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4i", [__arg_0, __arg_1, __arg_2]);
 
-  uniform4i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  uniform4i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  uniform4i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  uniform4i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  uniform4iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "uniform4iv", []);
+  uniform4iv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4iv", []);
 
-  uniform4iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniform4iv", [__arg_0]);
+  uniform4iv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4iv", [__arg_0]);
 
-  uniform4iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniform4iv", [__arg_0, __arg_1]);
+  uniform4iv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniform4iv", [__arg_0, __arg_1]);
 
-  uniformMatrix2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2fv", [__arg_0]);
+  uniformMatrix2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix2fv", [__arg_0]);
 
-  uniformMatrix2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2fv", [__arg_0, __arg_1]);
+  uniformMatrix2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix2fv", [__arg_0, __arg_1]);
 
-  uniformMatrix2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix2fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix2fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3fv", [__arg_0]);
+  uniformMatrix3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix3fv", [__arg_0]);
 
-  uniformMatrix3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3fv", [__arg_0, __arg_1]);
+  uniformMatrix3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix3fv", [__arg_0, __arg_1]);
 
-  uniformMatrix3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix3fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix3fv", [__arg_0, __arg_1, __arg_2]);
 
-  uniformMatrix4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4fv", [__arg_0]);
+  uniformMatrix4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix4fv", [__arg_0]);
 
-  uniformMatrix4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4fv", [__arg_0, __arg_1]);
+  uniformMatrix4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix4fv", [__arg_0, __arg_1]);
 
-  uniformMatrix4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "uniformMatrix4fv", [__arg_0, __arg_1, __arg_2]);
+  uniformMatrix4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "uniformMatrix4fv", [__arg_0, __arg_1, __arg_2]);
 
-  useProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "useProgram", []);
+  useProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "useProgram", []);
 
-  useProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "useProgram", [__arg_0]);
+  useProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "useProgram", [__arg_0]);
 
-  validateProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "validateProgram", []);
+  validateProgram_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "validateProgram", []);
 
-  validateProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "validateProgram", [__arg_0]);
+  validateProgram_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "validateProgram", [__arg_0]);
 
-  vertexAttrib1f_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1f", []);
+  vertexAttrib1f_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1f", []);
 
-  vertexAttrib1f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1f", [__arg_0]);
+  vertexAttrib1f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1f", [__arg_0]);
 
-  vertexAttrib1f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1f", [__arg_0, __arg_1]);
+  vertexAttrib1f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1f", [__arg_0, __arg_1]);
 
-  vertexAttrib1fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1fv", []);
+  vertexAttrib1fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1fv", []);
 
-  vertexAttrib1fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1fv", [__arg_0]);
+  vertexAttrib1fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1fv", [__arg_0]);
 
-  vertexAttrib1fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib1fv", [__arg_0, __arg_1]);
+  vertexAttrib1fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib1fv", [__arg_0, __arg_1]);
 
-  vertexAttrib2f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2f", [__arg_0]);
+  vertexAttrib2f_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2f", [__arg_0]);
 
-  vertexAttrib2f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2f", [__arg_0, __arg_1]);
+  vertexAttrib2f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2f", [__arg_0, __arg_1]);
 
-  vertexAttrib2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2f", [__arg_0, __arg_1, __arg_2]);
+  vertexAttrib2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2f", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttrib2fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2fv", []);
+  vertexAttrib2fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2fv", []);
 
-  vertexAttrib2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2fv", [__arg_0]);
+  vertexAttrib2fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2fv", [__arg_0]);
 
-  vertexAttrib2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib2fv", [__arg_0, __arg_1]);
+  vertexAttrib2fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib2fv", [__arg_0, __arg_1]);
 
-  vertexAttrib3f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3f", [__arg_0, __arg_1]);
+  vertexAttrib3f_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3f", [__arg_0, __arg_1]);
 
-  vertexAttrib3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3f", [__arg_0, __arg_1, __arg_2]);
+  vertexAttrib3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3f", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttrib3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttrib3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttrib3fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3fv", []);
+  vertexAttrib3fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3fv", []);
 
-  vertexAttrib3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3fv", [__arg_0]);
+  vertexAttrib3fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3fv", [__arg_0]);
 
-  vertexAttrib3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib3fv", [__arg_0, __arg_1]);
+  vertexAttrib3fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib3fv", [__arg_0, __arg_1]);
 
-  vertexAttrib4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2]);
+  vertexAttrib4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2]);
 
-  vertexAttrib4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttrib4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttrib4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  vertexAttrib4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  vertexAttrib4fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4fv", []);
+  vertexAttrib4fv_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4fv", []);
 
-  vertexAttrib4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4fv", [__arg_0]);
+  vertexAttrib4fv_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4fv", [__arg_0]);
 
-  vertexAttrib4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttrib4fv", [__arg_0, __arg_1]);
+  vertexAttrib4fv_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttrib4fv", [__arg_0, __arg_1]);
 
-  vertexAttribPointer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  vertexAttribPointer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  vertexAttribPointer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  vertexAttribPointer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  vertexAttribPointer_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "vertexAttribPointer", [__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) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  viewport_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "viewport", [__arg_0, __arg_1]);
+  viewport_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "viewport", [__arg_0, __arg_1]);
 
-  viewport_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "viewport", [__arg_0, __arg_1, __arg_2]);
+  viewport_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "viewport", [__arg_0, __arg_1, __arg_2]);
 
-  viewport_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "viewport", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  viewport_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebGLRenderingContextBase */, "viewport", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
@@ -21687,11 +21687,11 @@
 class BlinkWebGLShaderPrecisionFormat {
   static final instance = new BlinkWebGLShaderPrecisionFormat();
 
-  precision_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "precision");
+  precision_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLShaderPrecisionFormat */, "precision");
 
-  rangeMax_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rangeMax");
+  rangeMax_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLShaderPrecisionFormat */, "rangeMax");
 
-  rangeMin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "rangeMin");
+  rangeMin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebGLShaderPrecisionFormat */, "rangeMin");
 
 }
 
@@ -21728,1085 +21728,1085 @@
 class BlinkWebKitCSSMatrix {
   static final instance = new BlinkWebKitCSSMatrix();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "WebKitCSSMatrix"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("WebKitCSSMatrix");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "WebKitCSSMatrix"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("WebKitCSSMatrix", [__arg_0]);
 
-  a_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "a");
+  a_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "a");
 
-  a_Setter_(mthis, __arg_0) => mthis["a"] = __arg_0;
+  a_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "a", __arg_0);
 
-  b_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "b");
+  b_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "b");
 
-  b_Setter_(mthis, __arg_0) => mthis["b"] = __arg_0;
+  b_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "b", __arg_0);
 
-  c_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "c");
+  c_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "c");
 
-  c_Setter_(mthis, __arg_0) => mthis["c"] = __arg_0;
+  c_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "c", __arg_0);
 
-  d_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "d");
+  d_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "d");
 
-  d_Setter_(mthis, __arg_0) => mthis["d"] = __arg_0;
+  d_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "d", __arg_0);
 
-  e_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "e");
+  e_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "e");
 
-  e_Setter_(mthis, __arg_0) => mthis["e"] = __arg_0;
+  e_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "e", __arg_0);
 
-  f_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "f");
+  f_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "f");
 
-  f_Setter_(mthis, __arg_0) => mthis["f"] = __arg_0;
+  f_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "f", __arg_0);
 
-  m11_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m11");
+  m11_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "m11");
 
-  m11_Setter_(mthis, __arg_0) => mthis["m11"] = __arg_0;
+  m11_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "m11", __arg_0);
 
-  m12_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m12");
+  m12_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "m12");
 
-  m12_Setter_(mthis, __arg_0) => mthis["m12"] = __arg_0;
+  m12_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "m12", __arg_0);
 
-  m13_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m13");
+  m13_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "m13");
 
-  m13_Setter_(mthis, __arg_0) => mthis["m13"] = __arg_0;
+  m13_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "m13", __arg_0);
 
-  m14_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m14");
+  m14_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "m14");
 
-  m14_Setter_(mthis, __arg_0) => mthis["m14"] = __arg_0;
+  m14_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "m14", __arg_0);
 
-  m21_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m21");
+  m21_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "m21");
 
-  m21_Setter_(mthis, __arg_0) => mthis["m21"] = __arg_0;
+  m21_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "m21", __arg_0);
 
-  m22_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m22");
+  m22_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "m22");
 
-  m22_Setter_(mthis, __arg_0) => mthis["m22"] = __arg_0;
+  m22_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "m22", __arg_0);
 
-  m23_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m23");
+  m23_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "m23");
 
-  m23_Setter_(mthis, __arg_0) => mthis["m23"] = __arg_0;
+  m23_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "m23", __arg_0);
 
-  m24_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m24");
+  m24_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "m24");
 
-  m24_Setter_(mthis, __arg_0) => mthis["m24"] = __arg_0;
+  m24_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "m24", __arg_0);
 
-  m31_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m31");
+  m31_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "m31");
 
-  m31_Setter_(mthis, __arg_0) => mthis["m31"] = __arg_0;
+  m31_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "m31", __arg_0);
 
-  m32_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m32");
+  m32_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "m32");
 
-  m32_Setter_(mthis, __arg_0) => mthis["m32"] = __arg_0;
+  m32_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "m32", __arg_0);
 
-  m33_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m33");
+  m33_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "m33");
 
-  m33_Setter_(mthis, __arg_0) => mthis["m33"] = __arg_0;
+  m33_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "m33", __arg_0);
 
-  m34_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m34");
+  m34_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "m34");
 
-  m34_Setter_(mthis, __arg_0) => mthis["m34"] = __arg_0;
+  m34_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "m34", __arg_0);
 
-  m41_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m41");
+  m41_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "m41");
 
-  m41_Setter_(mthis, __arg_0) => mthis["m41"] = __arg_0;
+  m41_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "m41", __arg_0);
 
-  m42_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m42");
+  m42_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "m42");
 
-  m42_Setter_(mthis, __arg_0) => mthis["m42"] = __arg_0;
+  m42_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "m42", __arg_0);
 
-  m43_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m43");
+  m43_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "m43");
 
-  m43_Setter_(mthis, __arg_0) => mthis["m43"] = __arg_0;
+  m43_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "m43", __arg_0);
 
-  m44_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "m44");
+  m44_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebKitCSSMatrix */, "m44");
 
-  m44_Setter_(mthis, __arg_0) => mthis["m44"] = __arg_0;
+  m44_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebKitCSSMatrix */, "m44", __arg_0);
 
-  inverse_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "inverse", []);
+  inverse_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "inverse", []);
 
-  multiply_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "multiply", []);
+  multiply_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "multiply", []);
 
-  multiply_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "multiply", [__arg_0]);
+  multiply_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "multiply", [__arg_0]);
 
-  rotate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "rotate", [__arg_0]);
+  rotate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "rotate", [__arg_0]);
 
-  rotate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "rotate", [__arg_0, __arg_1]);
+  rotate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "rotate", [__arg_0, __arg_1]);
 
-  rotate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "rotate", [__arg_0, __arg_1, __arg_2]);
+  rotate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "rotate", [__arg_0, __arg_1, __arg_2]);
 
-  rotateAxisAngle_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "rotateAxisAngle", [__arg_0, __arg_1]);
+  rotateAxisAngle_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "rotateAxisAngle", [__arg_0, __arg_1]);
 
-  rotateAxisAngle_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "rotateAxisAngle", [__arg_0, __arg_1, __arg_2]);
+  rotateAxisAngle_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "rotateAxisAngle", [__arg_0, __arg_1, __arg_2]);
 
-  rotateAxisAngle_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "rotateAxisAngle", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  rotateAxisAngle_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "rotateAxisAngle", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  scale_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scale", [__arg_0]);
+  scale_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "scale", [__arg_0]);
 
-  scale_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scale", [__arg_0, __arg_1]);
+  scale_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "scale", [__arg_0, __arg_1]);
 
-  scale_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "scale", [__arg_0, __arg_1, __arg_2]);
+  scale_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "scale", [__arg_0, __arg_1, __arg_2]);
 
-  setMatrixValue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setMatrixValue", []);
+  setMatrixValue_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "setMatrixValue", []);
 
-  setMatrixValue_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setMatrixValue", [__arg_0]);
+  setMatrixValue_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "setMatrixValue", [__arg_0]);
 
-  skewX_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "skewX", []);
+  skewX_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "skewX", []);
 
-  skewX_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "skewX", [__arg_0]);
+  skewX_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "skewX", [__arg_0]);
 
-  skewY_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "skewY", []);
+  skewY_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "skewY", []);
 
-  skewY_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "skewY", [__arg_0]);
+  skewY_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "skewY", [__arg_0]);
 
-  translate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "translate", [__arg_0]);
+  translate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "translate", [__arg_0]);
 
-  translate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "translate", [__arg_0, __arg_1]);
+  translate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "translate", [__arg_0, __arg_1]);
 
-  translate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "translate", [__arg_0, __arg_1, __arg_2]);
+  translate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WebKitCSSMatrix */, "translate", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkWebSocket extends BlinkEventTarget {
   static final instance = new BlinkWebSocket();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "WebSocket"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("WebSocket");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "WebSocket"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("WebSocket", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "WebSocket"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("WebSocket", [__arg_0, __arg_1]);
 
-  binaryType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "binaryType");
+  binaryType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebSocket */, "binaryType");
 
-  binaryType_Setter_(mthis, __arg_0) => mthis["binaryType"] = __arg_0;
+  binaryType_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebSocket */, "binaryType", __arg_0);
 
-  bufferedAmount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "bufferedAmount");
+  bufferedAmount_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebSocket */, "bufferedAmount");
 
-  extensions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "extensions");
+  extensions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebSocket */, "extensions");
 
-  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclose");
+  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebSocket */, "onclose");
 
-  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
+  onclose_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebSocket */, "onclose", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebSocket */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebSocket */, "onerror", __arg_0);
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebSocket */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebSocket */, "onmessage", __arg_0);
 
-  onopen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onopen");
+  onopen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebSocket */, "onopen");
 
-  onopen_Setter_(mthis, __arg_0) => mthis["onopen"] = __arg_0;
+  onopen_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WebSocket */, "onopen", __arg_0);
 
-  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "protocol");
+  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebSocket */, "protocol");
 
-  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "readyState");
+  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebSocket */, "readyState");
 
-  url_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "url");
+  url_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WebSocket */, "url");
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebSocket */, "close", []);
 
-  close_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "close", [__arg_0]);
+  close_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebSocket */, "close", [__arg_0]);
 
-  close_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "close", [__arg_0, __arg_1]);
+  close_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WebSocket */, "close", [__arg_0, __arg_1]);
 
-  send_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "send", []);
+  send_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WebSocket */, "send", []);
 
-  send_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "send", [__arg_0]);
+  send_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WebSocket */, "send", [__arg_0]);
 
 }
 
 class BlinkWheelEvent extends BlinkMouseEvent {
   static final instance = new BlinkWheelEvent();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "WheelEvent"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("WheelEvent");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "WheelEvent"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("WheelEvent", [__arg_0]);
 
-  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "WheelEvent"), [__arg_0, __arg_1]);
+  constructorCallback_2_(__arg_0, __arg_1) => Blink_JsNative_DomException.callConstructor("WheelEvent", [__arg_0, __arg_1]);
 
-  deltaMode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "deltaMode");
+  deltaMode_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WheelEvent */, "deltaMode");
 
-  deltaX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "deltaX");
+  deltaX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WheelEvent */, "deltaX");
 
-  deltaY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "deltaY");
+  deltaY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WheelEvent */, "deltaY");
 
-  deltaZ_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "deltaZ");
+  deltaZ_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WheelEvent */, "deltaZ");
 
-  wheelDelta_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "wheelDelta");
+  wheelDelta_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WheelEvent */, "wheelDelta");
 
-  wheelDeltaX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "wheelDeltaX");
+  wheelDeltaX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WheelEvent */, "wheelDeltaX");
 
-  wheelDeltaY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "wheelDeltaY");
+  wheelDeltaY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WheelEvent */, "wheelDeltaY");
 
 }
 
 class BlinkWindow extends BlinkEventTarget {
   static final instance = new BlinkWindow();
 
-  applicationCache_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "applicationCache");
+  applicationCache_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "applicationCache");
 
-  caches_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "caches");
+  caches_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "caches");
 
-  clientInformation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "clientInformation");
+  clientInformation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "clientInformation");
 
-  closed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "closed");
+  closed_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "closed");
 
-  console_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "console");
+  console_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "console");
 
-  crypto_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "crypto");
+  crypto_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "crypto");
 
-  defaultStatus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "defaultStatus");
+  defaultStatus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "defaultStatus");
 
-  defaultStatus_Setter_(mthis, __arg_0) => mthis["defaultStatus"] = __arg_0;
+  defaultStatus_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "defaultStatus", __arg_0);
 
-  defaultstatus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "defaultstatus");
+  defaultstatus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "defaultstatus");
 
-  defaultstatus_Setter_(mthis, __arg_0) => mthis["defaultstatus"] = __arg_0;
+  defaultstatus_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "defaultstatus", __arg_0);
 
-  devicePixelRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "devicePixelRatio");
+  devicePixelRatio_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "devicePixelRatio");
 
-  document_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "document");
+  document_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "document");
 
-  event_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "event");
+  event_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "event");
 
-  event_Setter_(mthis, __arg_0) => mthis["event"] = __arg_0;
+  event_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "event", __arg_0);
 
-  frameElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "frameElement");
+  frameElement_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "frameElement");
 
-  frames_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "frames");
+  frames_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "frames");
 
-  history_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "history");
+  history_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "history");
 
-  indexedDB_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "indexedDB");
+  indexedDB_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "indexedDB");
 
-  innerHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "innerHeight");
+  innerHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "innerHeight");
 
-  innerWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "innerWidth");
+  innerWidth_Getter_(mthis) native "Blink_Getter_Window_innerWidth";
 
-  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "length");
+  length_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "length");
 
-  localStorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "localStorage");
+  localStorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "localStorage");
 
-  location_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "location");
+  location_Getter_(mthis) native "Blink_Getter_Window_location";
 
-  locationbar_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "locationbar");
+  locationbar_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "locationbar");
 
-  menubar_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "menubar");
+  menubar_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "menubar");
 
-  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "name");
+  name_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "name");
 
-  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
+  name_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "name", __arg_0);
 
-  navigator_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "navigator");
+  navigator_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "navigator");
 
-  offscreenBuffering_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "offscreenBuffering");
+  offscreenBuffering_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "offscreenBuffering");
 
-  onanimationend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onanimationend");
+  onanimationend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "onanimationend");
 
-  onanimationend_Setter_(mthis, __arg_0) => mthis["onanimationend"] = __arg_0;
+  onanimationend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "onanimationend", __arg_0);
 
-  onanimationiteration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onanimationiteration");
+  onanimationiteration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "onanimationiteration");
 
-  onanimationiteration_Setter_(mthis, __arg_0) => mthis["onanimationiteration"] = __arg_0;
+  onanimationiteration_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "onanimationiteration", __arg_0);
 
-  onanimationstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onanimationstart");
+  onanimationstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "onanimationstart");
 
-  onanimationstart_Setter_(mthis, __arg_0) => mthis["onanimationstart"] = __arg_0;
+  onanimationstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "onanimationstart", __arg_0);
 
-  ondevicelight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondevicelight");
+  ondevicelight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "ondevicelight");
 
-  ondevicelight_Setter_(mthis, __arg_0) => mthis["ondevicelight"] = __arg_0;
+  ondevicelight_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "ondevicelight", __arg_0);
 
-  ondevicemotion_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondevicemotion");
+  ondevicemotion_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "ondevicemotion");
 
-  ondevicemotion_Setter_(mthis, __arg_0) => mthis["ondevicemotion"] = __arg_0;
+  ondevicemotion_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "ondevicemotion", __arg_0);
 
-  ondeviceorientation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondeviceorientation");
+  ondeviceorientation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "ondeviceorientation");
 
-  ondeviceorientation_Setter_(mthis, __arg_0) => mthis["ondeviceorientation"] = __arg_0;
+  ondeviceorientation_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "ondeviceorientation", __arg_0);
 
-  onorientationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onorientationchange");
+  onorientationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "onorientationchange");
 
-  onorientationchange_Setter_(mthis, __arg_0) => mthis["onorientationchange"] = __arg_0;
+  onorientationchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "onorientationchange", __arg_0);
 
-  onsearch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsearch");
+  onsearch_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "onsearch");
 
-  onsearch_Setter_(mthis, __arg_0) => mthis["onsearch"] = __arg_0;
+  onsearch_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "onsearch", __arg_0);
 
-  ontouchcancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontouchcancel");
+  ontouchcancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "ontouchcancel");
 
-  ontouchcancel_Setter_(mthis, __arg_0) => mthis["ontouchcancel"] = __arg_0;
+  ontouchcancel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "ontouchcancel", __arg_0);
 
-  ontouchend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontouchend");
+  ontouchend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "ontouchend");
 
-  ontouchend_Setter_(mthis, __arg_0) => mthis["ontouchend"] = __arg_0;
+  ontouchend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "ontouchend", __arg_0);
 
-  ontouchmove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontouchmove");
+  ontouchmove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "ontouchmove");
 
-  ontouchmove_Setter_(mthis, __arg_0) => mthis["ontouchmove"] = __arg_0;
+  ontouchmove_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "ontouchmove", __arg_0);
 
-  ontouchstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontouchstart");
+  ontouchstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "ontouchstart");
 
-  ontouchstart_Setter_(mthis, __arg_0) => mthis["ontouchstart"] = __arg_0;
+  ontouchstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "ontouchstart", __arg_0);
 
-  ontransitionend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontransitionend");
+  ontransitionend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "ontransitionend");
 
-  ontransitionend_Setter_(mthis, __arg_0) => mthis["ontransitionend"] = __arg_0;
+  ontransitionend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "ontransitionend", __arg_0);
 
-  onwebkitanimationend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwebkitanimationend");
+  onwebkitanimationend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "onwebkitanimationend");
 
-  onwebkitanimationend_Setter_(mthis, __arg_0) => mthis["onwebkitanimationend"] = __arg_0;
+  onwebkitanimationend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "onwebkitanimationend", __arg_0);
 
-  onwebkitanimationiteration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwebkitanimationiteration");
+  onwebkitanimationiteration_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "onwebkitanimationiteration");
 
-  onwebkitanimationiteration_Setter_(mthis, __arg_0) => mthis["onwebkitanimationiteration"] = __arg_0;
+  onwebkitanimationiteration_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "onwebkitanimationiteration", __arg_0);
 
-  onwebkitanimationstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwebkitanimationstart");
+  onwebkitanimationstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "onwebkitanimationstart");
 
-  onwebkitanimationstart_Setter_(mthis, __arg_0) => mthis["onwebkitanimationstart"] = __arg_0;
+  onwebkitanimationstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "onwebkitanimationstart", __arg_0);
 
-  onwebkittransitionend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwebkittransitionend");
+  onwebkittransitionend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "onwebkittransitionend");
 
-  onwebkittransitionend_Setter_(mthis, __arg_0) => mthis["onwebkittransitionend"] = __arg_0;
+  onwebkittransitionend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "onwebkittransitionend", __arg_0);
 
-  onwheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwheel");
+  onwheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "onwheel");
 
-  onwheel_Setter_(mthis, __arg_0) => mthis["onwheel"] = __arg_0;
+  onwheel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "onwheel", __arg_0);
 
-  opener_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "opener");
+  opener_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "opener");
 
-  opener_Setter_(mthis, __arg_0) => mthis["opener"] = __arg_0;
+  opener_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "opener", __arg_0);
 
-  orientation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "orientation");
+  orientation_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "orientation");
 
-  outerHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "outerHeight");
+  outerHeight_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "outerHeight");
 
-  outerWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "outerWidth");
+  outerWidth_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "outerWidth");
 
-  pageXOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pageXOffset");
+  pageXOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "pageXOffset");
 
-  pageYOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pageYOffset");
+  pageYOffset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "pageYOffset");
 
-  parent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "parent");
+  parent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "parent");
 
-  performance_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "performance");
+  performance_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "performance");
 
-  personalbar_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "personalbar");
+  personalbar_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "personalbar");
 
-  screen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "screen");
+  screen_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "screen");
 
-  screenLeft_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "screenLeft");
+  screenLeft_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "screenLeft");
 
-  screenTop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "screenTop");
+  screenTop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "screenTop");
 
-  screenX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "screenX");
+  screenX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "screenX");
 
-  screenY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "screenY");
+  screenY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "screenY");
 
-  scrollX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scrollX");
+  scrollX_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "scrollX");
 
-  scrollY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scrollY");
+  scrollY_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "scrollY");
 
-  scrollbars_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "scrollbars");
+  scrollbars_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "scrollbars");
 
-  self_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "self");
+  self_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "self");
 
-  sessionStorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "sessionStorage");
+  sessionStorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "sessionStorage");
 
-  speechSynthesis_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "speechSynthesis");
+  speechSynthesis_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "speechSynthesis");
 
-  status_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "status");
+  status_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "status");
 
-  status_Setter_(mthis, __arg_0) => mthis["status"] = __arg_0;
+  status_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Window */, "status", __arg_0);
 
-  statusbar_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "statusbar");
+  statusbar_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "statusbar");
 
-  styleMedia_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "styleMedia");
+  styleMedia_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "styleMedia");
 
-  toolbar_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "toolbar");
+  toolbar_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "toolbar");
 
-  top_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "top");
+  top_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "top");
 
-  webkitIndexedDB_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitIndexedDB");
+  webkitIndexedDB_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "webkitIndexedDB");
 
-  webkitStorageInfo_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitStorageInfo");
+  webkitStorageInfo_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "webkitStorageInfo");
 
-  window_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "window");
+  window_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Window */, "window");
 
-  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "__getter__", [__arg_0]);
+  $__getter___Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "__getter__", [__arg_0]);
 
-  alert_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "alert", []);
+  alert_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "alert", []);
 
-  alert_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "alert", [__arg_0]);
+  alert_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "alert", [__arg_0]);
 
-  blur_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "blur", []);
+  blur_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "blur", []);
 
-  cancelAnimationFrame_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "cancelAnimationFrame", []);
+  cancelAnimationFrame_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "cancelAnimationFrame", []);
 
-  cancelAnimationFrame_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "cancelAnimationFrame", [__arg_0]);
+  cancelAnimationFrame_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "cancelAnimationFrame", [__arg_0]);
 
-  captureEvents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "captureEvents", []);
+  captureEvents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "captureEvents", []);
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "close", []);
 
-  confirm_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "confirm", []);
+  confirm_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "confirm", []);
 
-  confirm_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "confirm", [__arg_0]);
+  confirm_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "confirm", [__arg_0]);
 
-  createImageBitmap_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createImageBitmap", []);
+  createImageBitmap_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "createImageBitmap", []);
 
-  createImageBitmap_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createImageBitmap", [__arg_0]);
+  createImageBitmap_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "createImageBitmap", [__arg_0]);
 
-  createImageBitmap_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createImageBitmap", [__arg_0, __arg_1]);
+  createImageBitmap_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "createImageBitmap", [__arg_0, __arg_1]);
 
-  createImageBitmap_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "createImageBitmap", [__arg_0, __arg_1, __arg_2]);
+  createImageBitmap_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "createImageBitmap", [__arg_0, __arg_1, __arg_2]);
 
-  createImageBitmap_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "createImageBitmap", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  createImageBitmap_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "createImageBitmap", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  createImageBitmap_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "createImageBitmap", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  createImageBitmap_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "createImageBitmap", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  fetch_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "fetch", []);
+  fetch_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "fetch", []);
 
-  fetch_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "fetch", [__arg_0]);
+  fetch_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "fetch", [__arg_0]);
 
-  fetch_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "fetch", [__arg_0, __arg_1]);
+  fetch_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "fetch", [__arg_0, __arg_1]);
 
-  find_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "find", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  find_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "find", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  find_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => Blink_JsNative_DomException.callMethod(mthis, "find", [__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) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "find", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  find_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => Blink_JsNative_DomException.callMethod(mthis, "find", [__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) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "find", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  focus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "focus", []);
+  focus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "focus", []);
 
-  getComputedStyle_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getComputedStyle", []);
+  getComputedStyle_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "getComputedStyle", []);
 
-  getComputedStyle_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getComputedStyle", [__arg_0]);
+  getComputedStyle_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "getComputedStyle", [__arg_0]);
 
-  getComputedStyle_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getComputedStyle", [__arg_0, __arg_1]);
+  getComputedStyle_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "getComputedStyle", [__arg_0, __arg_1]);
 
-  getMatchedCSSRules_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getMatchedCSSRules", []);
+  getMatchedCSSRules_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "getMatchedCSSRules", []);
 
-  getMatchedCSSRules_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getMatchedCSSRules", [__arg_0]);
+  getMatchedCSSRules_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "getMatchedCSSRules", [__arg_0]);
 
-  getMatchedCSSRules_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getMatchedCSSRules", [__arg_0, __arg_1]);
+  getMatchedCSSRules_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "getMatchedCSSRules", [__arg_0, __arg_1]);
 
-  getSelection_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getSelection", []);
+  getSelection_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "getSelection", []);
 
-  matchMedia_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "matchMedia", []);
+  matchMedia_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "matchMedia", []);
 
-  matchMedia_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "matchMedia", [__arg_0]);
+  matchMedia_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "matchMedia", [__arg_0]);
 
-  moveBy_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "moveBy", []);
+  moveBy_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "moveBy", []);
 
-  moveBy_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "moveBy", [__arg_0]);
+  moveBy_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "moveBy", [__arg_0]);
 
-  moveBy_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "moveBy", [__arg_0, __arg_1]);
+  moveBy_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "moveBy", [__arg_0, __arg_1]);
 
-  moveTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", []);
+  moveTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "moveTo", []);
 
-  moveTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", [__arg_0]);
+  moveTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "moveTo", [__arg_0]);
 
-  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "moveTo", [__arg_0, __arg_1]);
+  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "moveTo", [__arg_0, __arg_1]);
 
-  open_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "open", []);
+  open_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "open", []);
 
-  open_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "open", [__arg_0]);
+  open_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "open", [__arg_0]);
 
-  open_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "open", [__arg_0, __arg_1]);
+  open_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "open", [__arg_0, __arg_1]);
 
-  open_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "open", [__arg_0, __arg_1, __arg_2]);
+  open_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "open", [__arg_0, __arg_1, __arg_2]);
 
-  openDatabase_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "openDatabase", [__arg_0, __arg_1]);
+  openDatabase_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "openDatabase", [__arg_0, __arg_1]);
 
-  openDatabase_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "openDatabase", [__arg_0, __arg_1, __arg_2]);
+  openDatabase_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "openDatabase", [__arg_0, __arg_1, __arg_2]);
 
-  openDatabase_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "openDatabase", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  openDatabase_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "openDatabase", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  openDatabase_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "openDatabase", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  openDatabase_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "openDatabase", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", []);
+  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "postMessage", []);
 
-  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0]);
+  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "postMessage", [__arg_0]);
 
-  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0, __arg_1]);
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "postMessage", [__arg_0, __arg_1]);
 
-  postMessage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0, __arg_1, __arg_2]);
+  postMessage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "postMessage", [__arg_0, __arg_1, __arg_2]);
 
-  print_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "print", []);
+  print_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "print", []);
 
-  prompt_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "prompt", []);
+  prompt_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "prompt", []);
 
-  prompt_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "prompt", [__arg_0]);
+  prompt_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "prompt", [__arg_0]);
 
-  prompt_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "prompt", [__arg_0, __arg_1]);
+  prompt_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "prompt", [__arg_0, __arg_1]);
 
-  releaseEvents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "releaseEvents", []);
+  releaseEvents_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "releaseEvents", []);
 
-  requestAnimationFrame_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "requestAnimationFrame", []);
+  requestAnimationFrame_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "requestAnimationFrame", []);
 
-  requestAnimationFrame_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "requestAnimationFrame", [__arg_0]);
+  requestAnimationFrame_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "requestAnimationFrame", [__arg_0]);
 
-  resizeBy_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "resizeBy", []);
+  resizeBy_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "resizeBy", []);
 
-  resizeBy_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "resizeBy", [__arg_0]);
+  resizeBy_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "resizeBy", [__arg_0]);
 
-  resizeBy_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "resizeBy", [__arg_0, __arg_1]);
+  resizeBy_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "resizeBy", [__arg_0, __arg_1]);
 
-  resizeTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "resizeTo", []);
+  resizeTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "resizeTo", []);
 
-  resizeTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "resizeTo", [__arg_0]);
+  resizeTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "resizeTo", [__arg_0]);
 
-  resizeTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "resizeTo", [__arg_0, __arg_1]);
+  resizeTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "resizeTo", [__arg_0, __arg_1]);
 
-  scroll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scroll", []);
+  scroll_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "scroll", []);
 
-  scroll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scroll", [__arg_0]);
+  scroll_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "scroll", [__arg_0]);
 
-  scroll_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scroll", [__arg_0, __arg_1]);
+  scroll_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "scroll", [__arg_0, __arg_1]);
 
-  scroll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "scroll", [__arg_0, __arg_1, __arg_2]);
+  scroll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "scroll", [__arg_0, __arg_1, __arg_2]);
 
-  scrollBy_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scrollBy", []);
+  scrollBy_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "scrollBy", []);
 
-  scrollBy_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scrollBy", [__arg_0]);
+  scrollBy_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "scrollBy", [__arg_0]);
 
-  scrollBy_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scrollBy", [__arg_0, __arg_1]);
+  scrollBy_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "scrollBy", [__arg_0, __arg_1]);
 
-  scrollBy_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "scrollBy", [__arg_0, __arg_1, __arg_2]);
+  scrollBy_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "scrollBy", [__arg_0, __arg_1, __arg_2]);
 
-  scrollTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "scrollTo", []);
+  scrollTo_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "scrollTo", []);
 
-  scrollTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "scrollTo", [__arg_0]);
+  scrollTo_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "scrollTo", [__arg_0]);
 
-  scrollTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "scrollTo", [__arg_0, __arg_1]);
+  scrollTo_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "scrollTo", [__arg_0, __arg_1]);
 
-  scrollTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "scrollTo", [__arg_0, __arg_1, __arg_2]);
+  scrollTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "scrollTo", [__arg_0, __arg_1, __arg_2]);
 
-  stop_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "stop", []);
+  stop_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "stop", []);
 
-  webkitCancelAnimationFrame_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitCancelAnimationFrame", []);
+  webkitCancelAnimationFrame_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "webkitCancelAnimationFrame", []);
 
-  webkitCancelAnimationFrame_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "webkitCancelAnimationFrame", [__arg_0]);
+  webkitCancelAnimationFrame_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "webkitCancelAnimationFrame", [__arg_0]);
 
-  webkitCancelRequestAnimationFrame_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitCancelRequestAnimationFrame", []);
+  webkitCancelRequestAnimationFrame_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "webkitCancelRequestAnimationFrame", []);
 
-  webkitCancelRequestAnimationFrame_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "webkitCancelRequestAnimationFrame", [__arg_0]);
+  webkitCancelRequestAnimationFrame_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "webkitCancelRequestAnimationFrame", [__arg_0]);
 
-  webkitRequestAnimationFrame_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitRequestAnimationFrame", []);
+  webkitRequestAnimationFrame_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "webkitRequestAnimationFrame", []);
 
-  webkitRequestAnimationFrame_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "webkitRequestAnimationFrame", [__arg_0]);
+  webkitRequestAnimationFrame_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "webkitRequestAnimationFrame", [__arg_0]);
 
-  webkitRequestFileSystem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "webkitRequestFileSystem", [__arg_0]);
+  webkitRequestFileSystem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "webkitRequestFileSystem", [__arg_0]);
 
-  webkitRequestFileSystem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "webkitRequestFileSystem", [__arg_0, __arg_1]);
+  webkitRequestFileSystem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "webkitRequestFileSystem", [__arg_0, __arg_1]);
 
-  webkitRequestFileSystem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "webkitRequestFileSystem", [__arg_0, __arg_1, __arg_2]);
+  webkitRequestFileSystem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "webkitRequestFileSystem", [__arg_0, __arg_1, __arg_2]);
 
-  webkitRequestFileSystem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "webkitRequestFileSystem", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  webkitRequestFileSystem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "webkitRequestFileSystem", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  webkitResolveLocalFileSystemURL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitResolveLocalFileSystemURL", []);
+  webkitResolveLocalFileSystemURL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "webkitResolveLocalFileSystemURL", []);
 
-  webkitResolveLocalFileSystemURL_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "webkitResolveLocalFileSystemURL", [__arg_0]);
+  webkitResolveLocalFileSystemURL_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "webkitResolveLocalFileSystemURL", [__arg_0]);
 
-  webkitResolveLocalFileSystemURL_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "webkitResolveLocalFileSystemURL", [__arg_0, __arg_1]);
+  webkitResolveLocalFileSystemURL_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "webkitResolveLocalFileSystemURL", [__arg_0, __arg_1]);
 
-  webkitResolveLocalFileSystemURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "webkitResolveLocalFileSystemURL", [__arg_0, __arg_1, __arg_2]);
+  webkitResolveLocalFileSystemURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* Window */, "webkitResolveLocalFileSystemURL", [__arg_0, __arg_1, __arg_2]);
 
-  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onabort");
+  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onabort");
 
-  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
+  onabort_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onabort", __arg_0);
 
-  onautocomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onautocomplete");
+  onautocomplete_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onautocomplete");
 
-  onautocomplete_Setter_(mthis, __arg_0) => mthis["onautocomplete"] = __arg_0;
+  onautocomplete_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onautocomplete", __arg_0);
 
-  onautocompleteerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onautocompleteerror");
+  onautocompleteerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onautocompleteerror");
 
-  onautocompleteerror_Setter_(mthis, __arg_0) => mthis["onautocompleteerror"] = __arg_0;
+  onautocompleteerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onautocompleteerror", __arg_0);
 
-  onblur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onblur");
+  onblur_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onblur");
 
-  onblur_Setter_(mthis, __arg_0) => mthis["onblur"] = __arg_0;
+  onblur_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onblur", __arg_0);
 
-  oncancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncancel");
+  oncancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncancel");
 
-  oncancel_Setter_(mthis, __arg_0) => mthis["oncancel"] = __arg_0;
+  oncancel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncancel", __arg_0);
 
-  oncanplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncanplay");
+  oncanplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncanplay");
 
-  oncanplay_Setter_(mthis, __arg_0) => mthis["oncanplay"] = __arg_0;
+  oncanplay_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncanplay", __arg_0);
 
-  oncanplaythrough_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncanplaythrough");
+  oncanplaythrough_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncanplaythrough");
 
-  oncanplaythrough_Setter_(mthis, __arg_0) => mthis["oncanplaythrough"] = __arg_0;
+  oncanplaythrough_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncanplaythrough", __arg_0);
 
-  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onchange");
+  onchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onchange");
 
-  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
+  onchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onchange", __arg_0);
 
-  onclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclick");
+  onclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onclick");
 
-  onclick_Setter_(mthis, __arg_0) => mthis["onclick"] = __arg_0;
+  onclick_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onclick", __arg_0);
 
-  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onclose");
+  onclose_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onclose");
 
-  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
+  onclose_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onclose", __arg_0);
 
-  oncontextmenu_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncontextmenu");
+  oncontextmenu_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncontextmenu");
 
-  oncontextmenu_Setter_(mthis, __arg_0) => mthis["oncontextmenu"] = __arg_0;
+  oncontextmenu_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncontextmenu", __arg_0);
 
-  oncuechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oncuechange");
+  oncuechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oncuechange");
 
-  oncuechange_Setter_(mthis, __arg_0) => mthis["oncuechange"] = __arg_0;
+  oncuechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oncuechange", __arg_0);
 
-  ondblclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondblclick");
+  ondblclick_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondblclick");
 
-  ondblclick_Setter_(mthis, __arg_0) => mthis["ondblclick"] = __arg_0;
+  ondblclick_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondblclick", __arg_0);
 
-  ondrag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondrag");
+  ondrag_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondrag");
 
-  ondrag_Setter_(mthis, __arg_0) => mthis["ondrag"] = __arg_0;
+  ondrag_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondrag", __arg_0);
 
-  ondragend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragend");
+  ondragend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragend");
 
-  ondragend_Setter_(mthis, __arg_0) => mthis["ondragend"] = __arg_0;
+  ondragend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragend", __arg_0);
 
-  ondragenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragenter");
+  ondragenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragenter");
 
-  ondragenter_Setter_(mthis, __arg_0) => mthis["ondragenter"] = __arg_0;
+  ondragenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragenter", __arg_0);
 
-  ondragleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragleave");
+  ondragleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragleave");
 
-  ondragleave_Setter_(mthis, __arg_0) => mthis["ondragleave"] = __arg_0;
+  ondragleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragleave", __arg_0);
 
-  ondragover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragover");
+  ondragover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragover");
 
-  ondragover_Setter_(mthis, __arg_0) => mthis["ondragover"] = __arg_0;
+  ondragover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragover", __arg_0);
 
-  ondragstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondragstart");
+  ondragstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondragstart");
 
-  ondragstart_Setter_(mthis, __arg_0) => mthis["ondragstart"] = __arg_0;
+  ondragstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondragstart", __arg_0);
 
-  ondrop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondrop");
+  ondrop_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondrop");
 
-  ondrop_Setter_(mthis, __arg_0) => mthis["ondrop"] = __arg_0;
+  ondrop_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondrop", __arg_0);
 
-  ondurationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ondurationchange");
+  ondurationchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ondurationchange");
 
-  ondurationchange_Setter_(mthis, __arg_0) => mthis["ondurationchange"] = __arg_0;
+  ondurationchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ondurationchange", __arg_0);
 
-  onemptied_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onemptied");
+  onemptied_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onemptied");
 
-  onemptied_Setter_(mthis, __arg_0) => mthis["onemptied"] = __arg_0;
+  onemptied_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onemptied", __arg_0);
 
-  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onended");
+  onended_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onended");
 
-  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
+  onended_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onended", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onerror", __arg_0);
 
-  onfocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onfocus");
+  onfocus_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onfocus");
 
-  onfocus_Setter_(mthis, __arg_0) => mthis["onfocus"] = __arg_0;
+  onfocus_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onfocus", __arg_0);
 
-  oninput_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oninput");
+  oninput_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oninput");
 
-  oninput_Setter_(mthis, __arg_0) => mthis["oninput"] = __arg_0;
+  oninput_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oninput", __arg_0);
 
-  oninvalid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "oninvalid");
+  oninvalid_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "oninvalid");
 
-  oninvalid_Setter_(mthis, __arg_0) => mthis["oninvalid"] = __arg_0;
+  oninvalid_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "oninvalid", __arg_0);
 
-  onkeydown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeydown");
+  onkeydown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeydown");
 
-  onkeydown_Setter_(mthis, __arg_0) => mthis["onkeydown"] = __arg_0;
+  onkeydown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeydown", __arg_0);
 
-  onkeypress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeypress");
+  onkeypress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeypress");
 
-  onkeypress_Setter_(mthis, __arg_0) => mthis["onkeypress"] = __arg_0;
+  onkeypress_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeypress", __arg_0);
 
-  onkeyup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onkeyup");
+  onkeyup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onkeyup");
 
-  onkeyup_Setter_(mthis, __arg_0) => mthis["onkeyup"] = __arg_0;
+  onkeyup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onkeyup", __arg_0);
 
-  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onload");
+  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onload");
 
-  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
+  onload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onload", __arg_0);
 
-  onloadeddata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadeddata");
+  onloadeddata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadeddata");
 
-  onloadeddata_Setter_(mthis, __arg_0) => mthis["onloadeddata"] = __arg_0;
+  onloadeddata_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadeddata", __arg_0);
 
-  onloadedmetadata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadedmetadata");
+  onloadedmetadata_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadedmetadata");
 
-  onloadedmetadata_Setter_(mthis, __arg_0) => mthis["onloadedmetadata"] = __arg_0;
+  onloadedmetadata_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadedmetadata", __arg_0);
 
-  onloadstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadstart");
+  onloadstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onloadstart");
 
-  onloadstart_Setter_(mthis, __arg_0) => mthis["onloadstart"] = __arg_0;
+  onloadstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onloadstart", __arg_0);
 
-  onmousedown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousedown");
+  onmousedown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousedown");
 
-  onmousedown_Setter_(mthis, __arg_0) => mthis["onmousedown"] = __arg_0;
+  onmousedown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousedown", __arg_0);
 
-  onmouseenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseenter");
+  onmouseenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseenter");
 
-  onmouseenter_Setter_(mthis, __arg_0) => mthis["onmouseenter"] = __arg_0;
+  onmouseenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseenter", __arg_0);
 
-  onmouseleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseleave");
+  onmouseleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseleave");
 
-  onmouseleave_Setter_(mthis, __arg_0) => mthis["onmouseleave"] = __arg_0;
+  onmouseleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseleave", __arg_0);
 
-  onmousemove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousemove");
+  onmousemove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousemove");
 
-  onmousemove_Setter_(mthis, __arg_0) => mthis["onmousemove"] = __arg_0;
+  onmousemove_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousemove", __arg_0);
 
-  onmouseout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseout");
+  onmouseout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseout");
 
-  onmouseout_Setter_(mthis, __arg_0) => mthis["onmouseout"] = __arg_0;
+  onmouseout_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseout", __arg_0);
 
-  onmouseover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseover");
+  onmouseover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseover");
 
-  onmouseover_Setter_(mthis, __arg_0) => mthis["onmouseover"] = __arg_0;
+  onmouseover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseover", __arg_0);
 
-  onmouseup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmouseup");
+  onmouseup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmouseup");
 
-  onmouseup_Setter_(mthis, __arg_0) => mthis["onmouseup"] = __arg_0;
+  onmouseup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmouseup", __arg_0);
 
-  onmousewheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmousewheel");
+  onmousewheel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onmousewheel");
 
-  onmousewheel_Setter_(mthis, __arg_0) => mthis["onmousewheel"] = __arg_0;
+  onmousewheel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onmousewheel", __arg_0);
 
-  onpause_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpause");
+  onpause_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpause");
 
-  onpause_Setter_(mthis, __arg_0) => mthis["onpause"] = __arg_0;
+  onpause_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpause", __arg_0);
 
-  onplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onplay");
+  onplay_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onplay");
 
-  onplay_Setter_(mthis, __arg_0) => mthis["onplay"] = __arg_0;
+  onplay_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onplay", __arg_0);
 
-  onplaying_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onplaying");
+  onplaying_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onplaying");
 
-  onplaying_Setter_(mthis, __arg_0) => mthis["onplaying"] = __arg_0;
+  onplaying_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onplaying", __arg_0);
 
-  onpointercancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointercancel");
+  onpointercancel_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointercancel");
 
-  onpointercancel_Setter_(mthis, __arg_0) => mthis["onpointercancel"] = __arg_0;
+  onpointercancel_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointercancel", __arg_0);
 
-  onpointerdown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerdown");
+  onpointerdown_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerdown");
 
-  onpointerdown_Setter_(mthis, __arg_0) => mthis["onpointerdown"] = __arg_0;
+  onpointerdown_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerdown", __arg_0);
 
-  onpointerenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerenter");
+  onpointerenter_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerenter");
 
-  onpointerenter_Setter_(mthis, __arg_0) => mthis["onpointerenter"] = __arg_0;
+  onpointerenter_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerenter", __arg_0);
 
-  onpointerleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerleave");
+  onpointerleave_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerleave");
 
-  onpointerleave_Setter_(mthis, __arg_0) => mthis["onpointerleave"] = __arg_0;
+  onpointerleave_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerleave", __arg_0);
 
-  onpointermove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointermove");
+  onpointermove_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointermove");
 
-  onpointermove_Setter_(mthis, __arg_0) => mthis["onpointermove"] = __arg_0;
+  onpointermove_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointermove", __arg_0);
 
-  onpointerout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerout");
+  onpointerout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerout");
 
-  onpointerout_Setter_(mthis, __arg_0) => mthis["onpointerout"] = __arg_0;
+  onpointerout_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerout", __arg_0);
 
-  onpointerover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerover");
+  onpointerover_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerover");
 
-  onpointerover_Setter_(mthis, __arg_0) => mthis["onpointerover"] = __arg_0;
+  onpointerover_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerover", __arg_0);
 
-  onpointerup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpointerup");
+  onpointerup_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onpointerup");
 
-  onpointerup_Setter_(mthis, __arg_0) => mthis["onpointerup"] = __arg_0;
+  onpointerup_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onpointerup", __arg_0);
 
-  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onprogress");
+  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onprogress");
 
-  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
+  onprogress_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onprogress", __arg_0);
 
-  onratechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onratechange");
+  onratechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onratechange");
 
-  onratechange_Setter_(mthis, __arg_0) => mthis["onratechange"] = __arg_0;
+  onratechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onratechange", __arg_0);
 
-  onreset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onreset");
+  onreset_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onreset");
 
-  onreset_Setter_(mthis, __arg_0) => mthis["onreset"] = __arg_0;
+  onreset_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onreset", __arg_0);
 
-  onresize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onresize");
+  onresize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onresize");
 
-  onresize_Setter_(mthis, __arg_0) => mthis["onresize"] = __arg_0;
+  onresize_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onresize", __arg_0);
 
-  onscroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onscroll");
+  onscroll_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onscroll");
 
-  onscroll_Setter_(mthis, __arg_0) => mthis["onscroll"] = __arg_0;
+  onscroll_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onscroll", __arg_0);
 
-  onseeked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onseeked");
+  onseeked_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onseeked");
 
-  onseeked_Setter_(mthis, __arg_0) => mthis["onseeked"] = __arg_0;
+  onseeked_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onseeked", __arg_0);
 
-  onseeking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onseeking");
+  onseeking_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onseeking");
 
-  onseeking_Setter_(mthis, __arg_0) => mthis["onseeking"] = __arg_0;
+  onseeking_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onseeking", __arg_0);
 
-  onselect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onselect");
+  onselect_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onselect");
 
-  onselect_Setter_(mthis, __arg_0) => mthis["onselect"] = __arg_0;
+  onselect_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onselect", __arg_0);
 
-  onshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onshow");
+  onshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onshow");
 
-  onshow_Setter_(mthis, __arg_0) => mthis["onshow"] = __arg_0;
+  onshow_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onshow", __arg_0);
 
-  onstalled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstalled");
+  onstalled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onstalled");
 
-  onstalled_Setter_(mthis, __arg_0) => mthis["onstalled"] = __arg_0;
+  onstalled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onstalled", __arg_0);
 
-  onsubmit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsubmit");
+  onsubmit_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onsubmit");
 
-  onsubmit_Setter_(mthis, __arg_0) => mthis["onsubmit"] = __arg_0;
+  onsubmit_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onsubmit", __arg_0);
 
-  onsuspend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onsuspend");
+  onsuspend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onsuspend");
 
-  onsuspend_Setter_(mthis, __arg_0) => mthis["onsuspend"] = __arg_0;
+  onsuspend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onsuspend", __arg_0);
 
-  ontimeupdate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontimeupdate");
+  ontimeupdate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ontimeupdate");
 
-  ontimeupdate_Setter_(mthis, __arg_0) => mthis["ontimeupdate"] = __arg_0;
+  ontimeupdate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ontimeupdate", __arg_0);
 
-  ontoggle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontoggle");
+  ontoggle_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "ontoggle");
 
-  ontoggle_Setter_(mthis, __arg_0) => mthis["ontoggle"] = __arg_0;
+  ontoggle_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "ontoggle", __arg_0);
 
-  onvolumechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onvolumechange");
+  onvolumechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onvolumechange");
 
-  onvolumechange_Setter_(mthis, __arg_0) => mthis["onvolumechange"] = __arg_0;
+  onvolumechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onvolumechange", __arg_0);
 
-  onwaiting_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwaiting");
+  onwaiting_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* GlobalEventHandlers */, "onwaiting");
 
-  onwaiting_Setter_(mthis, __arg_0) => mthis["onwaiting"] = __arg_0;
+  onwaiting_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* GlobalEventHandlers */, "onwaiting", __arg_0);
 
-  atob_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "atob", []);
+  atob_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowBase64 */, "atob", []);
 
-  atob_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "atob", [__arg_0]);
+  atob_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowBase64 */, "atob", [__arg_0]);
 
-  btoa_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "btoa", []);
+  btoa_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowBase64 */, "btoa", []);
 
-  btoa_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "btoa", [__arg_0]);
+  btoa_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowBase64 */, "btoa", [__arg_0]);
 
-  onbeforeunload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onbeforeunload");
+  onbeforeunload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onbeforeunload");
 
-  onbeforeunload_Setter_(mthis, __arg_0) => mthis["onbeforeunload"] = __arg_0;
+  onbeforeunload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onbeforeunload", __arg_0);
 
-  onhashchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onhashchange");
+  onhashchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onhashchange");
 
-  onhashchange_Setter_(mthis, __arg_0) => mthis["onhashchange"] = __arg_0;
+  onhashchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onhashchange", __arg_0);
 
-  onlanguagechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onlanguagechange");
+  onlanguagechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onlanguagechange");
 
-  onlanguagechange_Setter_(mthis, __arg_0) => mthis["onlanguagechange"] = __arg_0;
+  onlanguagechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onlanguagechange", __arg_0);
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onmessage", __arg_0);
 
-  onoffline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onoffline");
+  onoffline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onoffline");
 
-  onoffline_Setter_(mthis, __arg_0) => mthis["onoffline"] = __arg_0;
+  onoffline_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onoffline", __arg_0);
 
-  ononline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ononline");
+  ononline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "ononline");
 
-  ononline_Setter_(mthis, __arg_0) => mthis["ononline"] = __arg_0;
+  ononline_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "ononline", __arg_0);
 
-  onpagehide_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpagehide");
+  onpagehide_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onpagehide");
 
-  onpagehide_Setter_(mthis, __arg_0) => mthis["onpagehide"] = __arg_0;
+  onpagehide_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onpagehide", __arg_0);
 
-  onpageshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpageshow");
+  onpageshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onpageshow");
 
-  onpageshow_Setter_(mthis, __arg_0) => mthis["onpageshow"] = __arg_0;
+  onpageshow_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onpageshow", __arg_0);
 
-  onpopstate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpopstate");
+  onpopstate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onpopstate");
 
-  onpopstate_Setter_(mthis, __arg_0) => mthis["onpopstate"] = __arg_0;
+  onpopstate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onpopstate", __arg_0);
 
-  onrejectionhandled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onrejectionhandled");
+  onrejectionhandled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onrejectionhandled");
 
-  onrejectionhandled_Setter_(mthis, __arg_0) => mthis["onrejectionhandled"] = __arg_0;
+  onrejectionhandled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onrejectionhandled", __arg_0);
 
-  onstorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstorage");
+  onstorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onstorage");
 
-  onstorage_Setter_(mthis, __arg_0) => mthis["onstorage"] = __arg_0;
+  onstorage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onstorage", __arg_0);
 
-  onunhandledrejection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onunhandledrejection");
+  onunhandledrejection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onunhandledrejection");
 
-  onunhandledrejection_Setter_(mthis, __arg_0) => mthis["onunhandledrejection"] = __arg_0;
+  onunhandledrejection_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onunhandledrejection", __arg_0);
 
-  onunload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onunload");
+  onunload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onunload");
 
-  onunload_Setter_(mthis, __arg_0) => mthis["onunload"] = __arg_0;
+  onunload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onunload", __arg_0);
 
-  clearInterval_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearInterval", []);
+  clearInterval_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "clearInterval", []);
 
-  clearInterval_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearInterval", [__arg_0]);
+  clearInterval_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "clearInterval", [__arg_0]);
 
-  clearTimeout_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearTimeout", []);
+  clearTimeout_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "clearTimeout", []);
 
-  clearTimeout_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearTimeout", [__arg_0]);
+  clearTimeout_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "clearTimeout", [__arg_0]);
 
-  setInterval_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setInterval", []);
+  setInterval_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setInterval", []);
 
-  setInterval_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setInterval", [__arg_0]);
+  setInterval_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setInterval", [__arg_0]);
 
-  setInterval_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setInterval", [__arg_0, __arg_1]);
+  setInterval_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setInterval", [__arg_0, __arg_1]);
 
-  setInterval_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setInterval", [__arg_0, __arg_1, __arg_2]);
+  setInterval_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setInterval", [__arg_0, __arg_1, __arg_2]);
 
-  setTimeout_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setTimeout", []);
+  setTimeout_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setTimeout", []);
 
-  setTimeout_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setTimeout", [__arg_0]);
+  setTimeout_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setTimeout", [__arg_0]);
 
-  setTimeout_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setTimeout", [__arg_0, __arg_1]);
+  setTimeout_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setTimeout", [__arg_0, __arg_1]);
 
-  setTimeout_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setTimeout", [__arg_0, __arg_1, __arg_2]);
+  setTimeout_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setTimeout", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkWindowBase64 {
   static final instance = new BlinkWindowBase64();
 
-  atob_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "atob", []);
+  atob_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowBase64 */, "atob", []);
 
-  atob_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "atob", [__arg_0]);
+  atob_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowBase64 */, "atob", [__arg_0]);
 
-  btoa_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "btoa", []);
+  btoa_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowBase64 */, "btoa", []);
 
-  btoa_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "btoa", [__arg_0]);
+  btoa_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowBase64 */, "btoa", [__arg_0]);
 
 }
 
 class BlinkWindowClient extends BlinkClient {
   static final instance = new BlinkWindowClient();
 
-  focused_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "focused");
+  focused_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowClient */, "focused");
 
-  visibilityState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "visibilityState");
+  visibilityState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowClient */, "visibilityState");
 
-  focus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "focus", []);
+  focus_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowClient */, "focus", []);
 
 }
 
 class BlinkWindowEventHandlers {
   static final instance = new BlinkWindowEventHandlers();
 
-  onbeforeunload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onbeforeunload");
+  onbeforeunload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onbeforeunload");
 
-  onbeforeunload_Setter_(mthis, __arg_0) => mthis["onbeforeunload"] = __arg_0;
+  onbeforeunload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onbeforeunload", __arg_0);
 
-  onhashchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onhashchange");
+  onhashchange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onhashchange");
 
-  onhashchange_Setter_(mthis, __arg_0) => mthis["onhashchange"] = __arg_0;
+  onhashchange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onhashchange", __arg_0);
 
-  onlanguagechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onlanguagechange");
+  onlanguagechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onlanguagechange");
 
-  onlanguagechange_Setter_(mthis, __arg_0) => mthis["onlanguagechange"] = __arg_0;
+  onlanguagechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onlanguagechange", __arg_0);
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onmessage", __arg_0);
 
-  onoffline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onoffline");
+  onoffline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onoffline");
 
-  onoffline_Setter_(mthis, __arg_0) => mthis["onoffline"] = __arg_0;
+  onoffline_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onoffline", __arg_0);
 
-  ononline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ononline");
+  ononline_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "ononline");
 
-  ononline_Setter_(mthis, __arg_0) => mthis["ononline"] = __arg_0;
+  ononline_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "ononline", __arg_0);
 
-  onpagehide_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpagehide");
+  onpagehide_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onpagehide");
 
-  onpagehide_Setter_(mthis, __arg_0) => mthis["onpagehide"] = __arg_0;
+  onpagehide_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onpagehide", __arg_0);
 
-  onpageshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpageshow");
+  onpageshow_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onpageshow");
 
-  onpageshow_Setter_(mthis, __arg_0) => mthis["onpageshow"] = __arg_0;
+  onpageshow_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onpageshow", __arg_0);
 
-  onpopstate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onpopstate");
+  onpopstate_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onpopstate");
 
-  onpopstate_Setter_(mthis, __arg_0) => mthis["onpopstate"] = __arg_0;
+  onpopstate_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onpopstate", __arg_0);
 
-  onrejectionhandled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onrejectionhandled");
+  onrejectionhandled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onrejectionhandled");
 
-  onrejectionhandled_Setter_(mthis, __arg_0) => mthis["onrejectionhandled"] = __arg_0;
+  onrejectionhandled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onrejectionhandled", __arg_0);
 
-  onstorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onstorage");
+  onstorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onstorage");
 
-  onstorage_Setter_(mthis, __arg_0) => mthis["onstorage"] = __arg_0;
+  onstorage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onstorage", __arg_0);
 
-  onunhandledrejection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onunhandledrejection");
+  onunhandledrejection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onunhandledrejection");
 
-  onunhandledrejection_Setter_(mthis, __arg_0) => mthis["onunhandledrejection"] = __arg_0;
+  onunhandledrejection_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onunhandledrejection", __arg_0);
 
-  onunload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onunload");
+  onunload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WindowEventHandlers */, "onunload");
 
-  onunload_Setter_(mthis, __arg_0) => mthis["onunload"] = __arg_0;
+  onunload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WindowEventHandlers */, "onunload", __arg_0);
 
 }
 
 class BlinkWindowTimers {
   static final instance = new BlinkWindowTimers();
 
-  clearInterval_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearInterval", []);
+  clearInterval_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "clearInterval", []);
 
-  clearInterval_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearInterval", [__arg_0]);
+  clearInterval_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "clearInterval", [__arg_0]);
 
-  clearTimeout_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearTimeout", []);
+  clearTimeout_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "clearTimeout", []);
 
-  clearTimeout_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearTimeout", [__arg_0]);
+  clearTimeout_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "clearTimeout", [__arg_0]);
 
-  setInterval_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setInterval", []);
+  setInterval_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setInterval", []);
 
-  setInterval_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setInterval", [__arg_0]);
+  setInterval_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setInterval", [__arg_0]);
 
-  setInterval_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setInterval", [__arg_0, __arg_1]);
+  setInterval_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setInterval", [__arg_0, __arg_1]);
 
-  setInterval_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setInterval", [__arg_0, __arg_1, __arg_2]);
+  setInterval_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setInterval", [__arg_0, __arg_1, __arg_2]);
 
-  setTimeout_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setTimeout", []);
+  setTimeout_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setTimeout", []);
 
-  setTimeout_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setTimeout", [__arg_0]);
+  setTimeout_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setTimeout", [__arg_0]);
 
-  setTimeout_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setTimeout", [__arg_0, __arg_1]);
+  setTimeout_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setTimeout", [__arg_0, __arg_1]);
 
-  setTimeout_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setTimeout", [__arg_0, __arg_1, __arg_2]);
+  setTimeout_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setTimeout", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkWorker extends BlinkEventTarget {
   static final instance = new BlinkWorker();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Worker"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("Worker");
 
-  constructorCallback_1_(__arg_0) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "Worker"), [__arg_0]);
+  constructorCallback_1_(__arg_0) => Blink_JsNative_DomException.callConstructor("Worker", [__arg_0]);
 
-  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onmessage");
+  onmessage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* Worker */, "onmessage");
 
-  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
+  onmessage_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* Worker */, "onmessage", __arg_0);
 
-  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", []);
+  postMessage_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Worker */, "postMessage", []);
 
-  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0]);
+  postMessage_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* Worker */, "postMessage", [__arg_0]);
 
-  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "postMessage", [__arg_0, __arg_1]);
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* Worker */, "postMessage", [__arg_0, __arg_1]);
 
-  terminate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "terminate", []);
+  terminate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* Worker */, "terminate", []);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* AbstractWorker */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* AbstractWorker */, "onerror", __arg_0);
 
 }
 
@@ -22818,216 +22818,216 @@
 class BlinkWorkerGlobalScope extends BlinkEventTarget {
   static final instance = new BlinkWorkerGlobalScope();
 
-  caches_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "caches");
+  caches_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerGlobalScope */, "caches");
 
-  console_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "console");
+  console_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerGlobalScope */, "console");
 
-  crypto_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "crypto");
+  crypto_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerGlobalScope */, "crypto");
 
-  indexedDB_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "indexedDB");
+  indexedDB_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerGlobalScope */, "indexedDB");
 
-  location_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "location");
+  location_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerGlobalScope */, "location");
 
-  navigator_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "navigator");
+  navigator_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerGlobalScope */, "navigator");
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerGlobalScope */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WorkerGlobalScope */, "onerror", __arg_0);
 
-  onrejectionhandled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onrejectionhandled");
+  onrejectionhandled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerGlobalScope */, "onrejectionhandled");
 
-  onrejectionhandled_Setter_(mthis, __arg_0) => mthis["onrejectionhandled"] = __arg_0;
+  onrejectionhandled_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WorkerGlobalScope */, "onrejectionhandled", __arg_0);
 
-  onunhandledrejection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onunhandledrejection");
+  onunhandledrejection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerGlobalScope */, "onunhandledrejection");
 
-  onunhandledrejection_Setter_(mthis, __arg_0) => mthis["onunhandledrejection"] = __arg_0;
+  onunhandledrejection_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WorkerGlobalScope */, "onunhandledrejection", __arg_0);
 
-  performance_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "performance");
+  performance_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerGlobalScope */, "performance");
 
-  self_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "self");
+  self_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerGlobalScope */, "self");
 
-  webkitIndexedDB_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitIndexedDB");
+  webkitIndexedDB_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerGlobalScope */, "webkitIndexedDB");
 
-  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "close", []);
+  close_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "close", []);
 
-  fetch_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "fetch", []);
+  fetch_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "fetch", []);
 
-  fetch_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "fetch", [__arg_0]);
+  fetch_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "fetch", [__arg_0]);
 
-  fetch_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "fetch", [__arg_0, __arg_1]);
+  fetch_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "fetch", [__arg_0, __arg_1]);
 
-  importScripts_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "importScripts", []);
+  importScripts_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "importScripts", []);
 
-  importScripts_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "importScripts", [__arg_0]);
+  importScripts_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "importScripts", [__arg_0]);
 
-  webkitRequestFileSystem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitRequestFileSystem", []);
+  webkitRequestFileSystem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "webkitRequestFileSystem", []);
 
-  webkitRequestFileSystem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "webkitRequestFileSystem", [__arg_0]);
+  webkitRequestFileSystem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "webkitRequestFileSystem", [__arg_0]);
 
-  webkitRequestFileSystem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "webkitRequestFileSystem", [__arg_0, __arg_1]);
+  webkitRequestFileSystem_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "webkitRequestFileSystem", [__arg_0, __arg_1]);
 
-  webkitRequestFileSystem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "webkitRequestFileSystem", [__arg_0, __arg_1, __arg_2]);
+  webkitRequestFileSystem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "webkitRequestFileSystem", [__arg_0, __arg_1, __arg_2]);
 
-  webkitRequestFileSystem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "webkitRequestFileSystem", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  webkitRequestFileSystem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "webkitRequestFileSystem", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  webkitRequestFileSystemSync_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitRequestFileSystemSync", []);
+  webkitRequestFileSystemSync_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "webkitRequestFileSystemSync", []);
 
-  webkitRequestFileSystemSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "webkitRequestFileSystemSync", [__arg_0]);
+  webkitRequestFileSystemSync_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "webkitRequestFileSystemSync", [__arg_0]);
 
-  webkitRequestFileSystemSync_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "webkitRequestFileSystemSync", [__arg_0, __arg_1]);
+  webkitRequestFileSystemSync_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "webkitRequestFileSystemSync", [__arg_0, __arg_1]);
 
-  webkitResolveLocalFileSystemSyncURL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitResolveLocalFileSystemSyncURL", []);
+  webkitResolveLocalFileSystemSyncURL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "webkitResolveLocalFileSystemSyncURL", []);
 
-  webkitResolveLocalFileSystemSyncURL_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "webkitResolveLocalFileSystemSyncURL", [__arg_0]);
+  webkitResolveLocalFileSystemSyncURL_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "webkitResolveLocalFileSystemSyncURL", [__arg_0]);
 
-  webkitResolveLocalFileSystemURL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitResolveLocalFileSystemURL", []);
+  webkitResolveLocalFileSystemURL_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "webkitResolveLocalFileSystemURL", []);
 
-  webkitResolveLocalFileSystemURL_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "webkitResolveLocalFileSystemURL", [__arg_0]);
+  webkitResolveLocalFileSystemURL_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "webkitResolveLocalFileSystemURL", [__arg_0]);
 
-  webkitResolveLocalFileSystemURL_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "webkitResolveLocalFileSystemURL", [__arg_0, __arg_1]);
+  webkitResolveLocalFileSystemURL_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "webkitResolveLocalFileSystemURL", [__arg_0, __arg_1]);
 
-  webkitResolveLocalFileSystemURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "webkitResolveLocalFileSystemURL", [__arg_0, __arg_1, __arg_2]);
+  webkitResolveLocalFileSystemURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WorkerGlobalScope */, "webkitResolveLocalFileSystemURL", [__arg_0, __arg_1, __arg_2]);
 
-  atob_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "atob", []);
+  atob_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowBase64 */, "atob", []);
 
-  atob_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "atob", [__arg_0]);
+  atob_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowBase64 */, "atob", [__arg_0]);
 
-  btoa_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "btoa", []);
+  btoa_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowBase64 */, "btoa", []);
 
-  btoa_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "btoa", [__arg_0]);
+  btoa_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowBase64 */, "btoa", [__arg_0]);
 
-  clearInterval_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearInterval", []);
+  clearInterval_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "clearInterval", []);
 
-  clearInterval_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearInterval", [__arg_0]);
+  clearInterval_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "clearInterval", [__arg_0]);
 
-  clearTimeout_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearTimeout", []);
+  clearTimeout_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "clearTimeout", []);
 
-  clearTimeout_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearTimeout", [__arg_0]);
+  clearTimeout_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "clearTimeout", [__arg_0]);
 
-  setInterval_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setInterval", []);
+  setInterval_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setInterval", []);
 
-  setInterval_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setInterval", [__arg_0]);
+  setInterval_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setInterval", [__arg_0]);
 
-  setInterval_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setInterval", [__arg_0, __arg_1]);
+  setInterval_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setInterval", [__arg_0, __arg_1]);
 
-  setInterval_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setInterval", [__arg_0, __arg_1, __arg_2]);
+  setInterval_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setInterval", [__arg_0, __arg_1, __arg_2]);
 
-  setTimeout_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setTimeout", []);
+  setTimeout_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setTimeout", []);
 
-  setTimeout_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setTimeout", [__arg_0]);
+  setTimeout_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setTimeout", [__arg_0]);
 
-  setTimeout_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setTimeout", [__arg_0, __arg_1]);
+  setTimeout_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setTimeout", [__arg_0, __arg_1]);
 
-  setTimeout_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setTimeout", [__arg_0, __arg_1, __arg_2]);
+  setTimeout_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WindowTimers */, "setTimeout", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkWorkerLocation {
   static final instance = new BlinkWorkerLocation();
 
-  hash_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hash");
+  hash_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "hash");
 
-  host_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "host");
+  host_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "host");
 
-  hostname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hostname");
+  hostname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "hostname");
 
-  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "href");
+  href_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "href");
 
-  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "origin");
+  origin_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "origin");
 
-  pathname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "pathname");
+  pathname_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "pathname");
 
-  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "port");
+  port_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "port");
 
-  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "protocol");
+  protocol_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "protocol");
 
-  search_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "search");
+  search_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* URLUtilsReadOnly */, "search");
 
-  toString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "toString", []);
+  toString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* URLUtilsReadOnly */, "toString", []);
 
 }
 
 class BlinkWorkerNavigator {
   static final instance = new BlinkWorkerNavigator();
 
-  connection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "connection");
+  connection_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerNavigator */, "connection");
 
-  geofencing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "geofencing");
+  geofencing_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerNavigator */, "geofencing");
 
-  permissions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "permissions");
+  permissions_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerNavigator */, "permissions");
 
-  services_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "services");
+  services_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerNavigator */, "services");
 
-  webkitPersistentStorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitPersistentStorage");
+  webkitPersistentStorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerNavigator */, "webkitPersistentStorage");
 
-  webkitTemporaryStorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "webkitTemporaryStorage");
+  webkitTemporaryStorage_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerNavigator */, "webkitTemporaryStorage");
 
-  hardwareConcurrency_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "hardwareConcurrency");
+  hardwareConcurrency_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorCPU */, "hardwareConcurrency");
 
-  appCodeName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "appCodeName");
+  appCodeName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "appCodeName");
 
-  appName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "appName");
+  appName_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "appName");
 
-  appVersion_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "appVersion");
+  appVersion_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "appVersion");
 
-  dartEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "dartEnabled");
+  dartEnabled_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "dartEnabled");
 
-  platform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "platform");
+  platform_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "platform");
 
-  product_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "product");
+  product_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "product");
 
-  userAgent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "userAgent");
+  userAgent_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorID */, "userAgent");
 
-  onLine_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onLine");
+  onLine_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* NavigatorOnLine */, "onLine");
 
 }
 
 class BlinkWorkerPerformance extends BlinkEventTarget {
   static final instance = new BlinkWorkerPerformance();
 
-  memory_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "memory");
+  memory_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerPerformance */, "memory");
 
-  onwebkitresourcetimingbufferfull_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onwebkitresourcetimingbufferfull");
+  onwebkitresourcetimingbufferfull_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* WorkerPerformance */, "onwebkitresourcetimingbufferfull");
 
-  onwebkitresourcetimingbufferfull_Setter_(mthis, __arg_0) => mthis["onwebkitresourcetimingbufferfull"] = __arg_0;
+  onwebkitresourcetimingbufferfull_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* WorkerPerformance */, "onwebkitresourcetimingbufferfull", __arg_0);
 
-  clearMarks_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearMarks", []);
+  clearMarks_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "clearMarks", []);
 
-  clearMarks_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearMarks", [__arg_0]);
+  clearMarks_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "clearMarks", [__arg_0]);
 
-  clearMeasures_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearMeasures", []);
+  clearMeasures_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "clearMeasures", []);
 
-  clearMeasures_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "clearMeasures", [__arg_0]);
+  clearMeasures_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "clearMeasures", [__arg_0]);
 
-  getEntries_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getEntries", []);
+  getEntries_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "getEntries", []);
 
-  getEntriesByName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getEntriesByName", []);
+  getEntriesByName_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "getEntriesByName", []);
 
-  getEntriesByName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getEntriesByName", [__arg_0]);
+  getEntriesByName_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "getEntriesByName", [__arg_0]);
 
-  getEntriesByName_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getEntriesByName", [__arg_0, __arg_1]);
+  getEntriesByName_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "getEntriesByName", [__arg_0, __arg_1]);
 
-  getEntriesByType_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getEntriesByType", []);
+  getEntriesByType_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "getEntriesByType", []);
 
-  getEntriesByType_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getEntriesByType", [__arg_0]);
+  getEntriesByType_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "getEntriesByType", [__arg_0]);
 
-  mark_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "mark", []);
+  mark_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "mark", []);
 
-  mark_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "mark", [__arg_0]);
+  mark_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "mark", [__arg_0]);
 
-  measure_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "measure", [__arg_0]);
+  measure_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "measure", [__arg_0]);
 
-  measure_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "measure", [__arg_0, __arg_1]);
+  measure_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "measure", [__arg_0, __arg_1]);
 
-  measure_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "measure", [__arg_0, __arg_1, __arg_2]);
+  measure_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "measure", [__arg_0, __arg_1, __arg_2]);
 
-  now_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "now", []);
+  now_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "now", []);
 
-  webkitClearResourceTimings_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitClearResourceTimings", []);
+  webkitClearResourceTimings_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "webkitClearResourceTimings", []);
 
-  webkitSetResourceTimingBufferSize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "webkitSetResourceTimingBufferSize", []);
+  webkitSetResourceTimingBufferSize_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "webkitSetResourceTimingBufferSize", []);
 
-  webkitSetResourceTimingBufferSize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "webkitSetResourceTimingBufferSize", [__arg_0]);
+  webkitSetResourceTimingBufferSize_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* WorkerPerformance */, "webkitSetResourceTimingBufferSize", [__arg_0]);
 
 }
 
@@ -23039,115 +23039,115 @@
 class BlinkXMLHttpRequest extends BlinkXMLHttpRequestEventTarget {
   static final instance = new BlinkXMLHttpRequest();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "XMLHttpRequest"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("XMLHttpRequest");
 
-  onreadystatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onreadystatechange");
+  onreadystatechange_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequest */, "onreadystatechange");
 
-  onreadystatechange_Setter_(mthis, __arg_0) => mthis["onreadystatechange"] = __arg_0;
+  onreadystatechange_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* XMLHttpRequest */, "onreadystatechange", __arg_0);
 
-  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "readyState");
+  readyState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequest */, "readyState");
 
-  response_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "response");
+  response_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequest */, "response");
 
-  responseText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "responseText");
+  responseText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequest */, "responseText");
 
-  responseType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "responseType");
+  responseType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequest */, "responseType");
 
-  responseType_Setter_(mthis, __arg_0) => mthis["responseType"] = __arg_0;
+  responseType_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* XMLHttpRequest */, "responseType", __arg_0);
 
-  responseURL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "responseURL");
+  responseURL_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequest */, "responseURL");
 
-  responseXML_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "responseXML");
+  responseXML_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequest */, "responseXML");
 
-  status_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "status");
+  status_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequest */, "status");
 
-  statusText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "statusText");
+  statusText_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequest */, "statusText");
 
-  timeout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "timeout");
+  timeout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequest */, "timeout");
 
-  timeout_Setter_(mthis, __arg_0) => mthis["timeout"] = __arg_0;
+  timeout_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* XMLHttpRequest */, "timeout", __arg_0);
 
-  upload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "upload");
+  upload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequest */, "upload");
 
-  withCredentials_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "withCredentials");
+  withCredentials_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequest */, "withCredentials");
 
-  withCredentials_Setter_(mthis, __arg_0) => mthis["withCredentials"] = __arg_0;
+  withCredentials_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* XMLHttpRequest */, "withCredentials", __arg_0);
 
-  abort_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "abort", []);
+  abort_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "abort", []);
 
-  getAllResponseHeaders_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getAllResponseHeaders", []);
+  getAllResponseHeaders_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "getAllResponseHeaders", []);
 
-  getResponseHeader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getResponseHeader", []);
+  getResponseHeader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "getResponseHeader", []);
 
-  getResponseHeader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getResponseHeader", [__arg_0]);
+  getResponseHeader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "getResponseHeader", [__arg_0]);
 
-  open_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "open", []);
+  open_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "open", []);
 
-  open_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "open", [__arg_0]);
+  open_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "open", [__arg_0]);
 
-  open_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "open", [__arg_0, __arg_1]);
+  open_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "open", [__arg_0, __arg_1]);
 
-  open_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "open", [__arg_0, __arg_1, __arg_2]);
+  open_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "open", [__arg_0, __arg_1, __arg_2]);
 
-  open_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "open", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  open_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "open", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  open_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "open", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  open_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "open", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  overrideMimeType_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "overrideMimeType", []);
+  overrideMimeType_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "overrideMimeType", []);
 
-  overrideMimeType_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "overrideMimeType", [__arg_0]);
+  overrideMimeType_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "overrideMimeType", [__arg_0]);
 
-  send_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "send", []);
+  send_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "send", []);
 
-  send_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "send", [__arg_0]);
+  send_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "send", [__arg_0]);
 
-  setRequestHeader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "setRequestHeader", []);
+  setRequestHeader_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "setRequestHeader", []);
 
-  setRequestHeader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setRequestHeader", [__arg_0]);
+  setRequestHeader_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "setRequestHeader", [__arg_0]);
 
-  setRequestHeader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setRequestHeader", [__arg_0, __arg_1]);
+  setRequestHeader_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* XMLHttpRequest */, "setRequestHeader", [__arg_0, __arg_1]);
 
 }
 
 class BlinkXMLHttpRequestEventTarget extends BlinkEventTarget {
   static final instance = new BlinkXMLHttpRequestEventTarget();
 
-  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onabort");
+  onabort_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequestEventTarget */, "onabort");
 
-  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
+  onabort_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* XMLHttpRequestEventTarget */, "onabort", __arg_0);
 
-  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onerror");
+  onerror_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequestEventTarget */, "onerror");
 
-  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
+  onerror_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* XMLHttpRequestEventTarget */, "onerror", __arg_0);
 
-  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onload");
+  onload_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequestEventTarget */, "onload");
 
-  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
+  onload_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* XMLHttpRequestEventTarget */, "onload", __arg_0);
 
-  onloadend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadend");
+  onloadend_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequestEventTarget */, "onloadend");
 
-  onloadend_Setter_(mthis, __arg_0) => mthis["onloadend"] = __arg_0;
+  onloadend_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* XMLHttpRequestEventTarget */, "onloadend", __arg_0);
 
-  onloadstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onloadstart");
+  onloadstart_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequestEventTarget */, "onloadstart");
 
-  onloadstart_Setter_(mthis, __arg_0) => mthis["onloadstart"] = __arg_0;
+  onloadstart_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* XMLHttpRequestEventTarget */, "onloadstart", __arg_0);
 
-  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "onprogress");
+  onprogress_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequestEventTarget */, "onprogress");
 
-  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
+  onprogress_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* XMLHttpRequestEventTarget */, "onprogress", __arg_0);
 
-  ontimeout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "ontimeout");
+  ontimeout_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequestEventTarget */, "ontimeout");
 
-  ontimeout_Setter_(mthis, __arg_0) => mthis["ontimeout"] = __arg_0;
+  ontimeout_Setter_(mthis, __arg_0) => Blink_JsNative_DomException.setProperty(mthis /* XMLHttpRequestEventTarget */, "ontimeout", __arg_0);
 
 }
 
 class BlinkXMLHttpRequestProgressEvent extends BlinkProgressEvent {
   static final instance = new BlinkXMLHttpRequestProgressEvent();
 
-  position_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "position");
+  position_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequestProgressEvent */, "position");
 
-  totalSize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "totalSize");
+  totalSize_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XMLHttpRequestProgressEvent */, "totalSize");
 
 }
 
@@ -23159,128 +23159,128 @@
 class BlinkXMLSerializer {
   static final instance = new BlinkXMLSerializer();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "XMLSerializer"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("XMLSerializer");
 
-  serializeToString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "serializeToString", []);
+  serializeToString_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XMLSerializer */, "serializeToString", []);
 
-  serializeToString_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "serializeToString", [__arg_0]);
+  serializeToString_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XMLSerializer */, "serializeToString", [__arg_0]);
 
 }
 
 class BlinkXPathEvaluator {
   static final instance = new BlinkXPathEvaluator();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "XPathEvaluator"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("XPathEvaluator");
 
-  createExpression_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createExpression", []);
+  createExpression_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XPathEvaluator */, "createExpression", []);
 
-  createExpression_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createExpression", [__arg_0]);
+  createExpression_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XPathEvaluator */, "createExpression", [__arg_0]);
 
-  createExpression_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "createExpression", [__arg_0, __arg_1]);
+  createExpression_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* XPathEvaluator */, "createExpression", [__arg_0, __arg_1]);
 
-  createNSResolver_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "createNSResolver", []);
+  createNSResolver_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XPathEvaluator */, "createNSResolver", []);
 
-  createNSResolver_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "createNSResolver", [__arg_0]);
+  createNSResolver_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XPathEvaluator */, "createNSResolver", [__arg_0]);
 
-  evaluate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "evaluate", [__arg_0]);
+  evaluate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XPathEvaluator */, "evaluate", [__arg_0]);
 
-  evaluate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "evaluate", [__arg_0, __arg_1]);
+  evaluate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* XPathEvaluator */, "evaluate", [__arg_0, __arg_1]);
 
-  evaluate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "evaluate", [__arg_0, __arg_1, __arg_2]);
+  evaluate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* XPathEvaluator */, "evaluate", [__arg_0, __arg_1, __arg_2]);
 
-  evaluate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis, "evaluate", [__arg_0, __arg_1, __arg_2, __arg_3]);
+  evaluate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => Blink_JsNative_DomException.callMethod(mthis /* XPathEvaluator */, "evaluate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  evaluate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis, "evaluate", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
+  evaluate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => Blink_JsNative_DomException.callMethod(mthis /* XPathEvaluator */, "evaluate", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
 }
 
 class BlinkXPathExpression {
   static final instance = new BlinkXPathExpression();
 
-  evaluate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "evaluate", []);
+  evaluate_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XPathExpression */, "evaluate", []);
 
-  evaluate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "evaluate", [__arg_0]);
+  evaluate_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XPathExpression */, "evaluate", [__arg_0]);
 
-  evaluate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "evaluate", [__arg_0, __arg_1]);
+  evaluate_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* XPathExpression */, "evaluate", [__arg_0, __arg_1]);
 
-  evaluate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "evaluate", [__arg_0, __arg_1, __arg_2]);
+  evaluate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* XPathExpression */, "evaluate", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkXPathNSResolver {
   static final instance = new BlinkXPathNSResolver();
 
-  lookupNamespaceURI_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "lookupNamespaceURI", []);
+  lookupNamespaceURI_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XPathNSResolver */, "lookupNamespaceURI", []);
 
-  lookupNamespaceURI_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "lookupNamespaceURI", [__arg_0]);
+  lookupNamespaceURI_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XPathNSResolver */, "lookupNamespaceURI", [__arg_0]);
 
 }
 
 class BlinkXPathResult {
   static final instance = new BlinkXPathResult();
 
-  booleanValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "booleanValue");
+  booleanValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XPathResult */, "booleanValue");
 
-  invalidIteratorState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "invalidIteratorState");
+  invalidIteratorState_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XPathResult */, "invalidIteratorState");
 
-  numberValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "numberValue");
+  numberValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XPathResult */, "numberValue");
 
-  resultType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "resultType");
+  resultType_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XPathResult */, "resultType");
 
-  singleNodeValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "singleNodeValue");
+  singleNodeValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XPathResult */, "singleNodeValue");
 
-  snapshotLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "snapshotLength");
+  snapshotLength_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XPathResult */, "snapshotLength");
 
-  stringValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "stringValue");
+  stringValue_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis /* XPathResult */, "stringValue");
 
-  iterateNext_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "iterateNext", []);
+  iterateNext_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XPathResult */, "iterateNext", []);
 
-  snapshotItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "snapshotItem", []);
+  snapshotItem_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XPathResult */, "snapshotItem", []);
 
-  snapshotItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "snapshotItem", [__arg_0]);
+  snapshotItem_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XPathResult */, "snapshotItem", [__arg_0]);
 
 }
 
 class BlinkXSLTProcessor {
   static final instance = new BlinkXSLTProcessor();
 
-  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "XSLTProcessor"), []);
+  constructorCallback_0_() => Blink_JsNative_DomException.callConstructor0("XSLTProcessor");
 
-  clearParameters_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "clearParameters", []);
+  clearParameters_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "clearParameters", []);
 
-  getParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "getParameter", []);
+  getParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "getParameter", []);
 
-  getParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "getParameter", [__arg_0]);
+  getParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "getParameter", [__arg_0]);
 
-  getParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "getParameter", [__arg_0, __arg_1]);
+  getParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "getParameter", [__arg_0, __arg_1]);
 
-  importStylesheet_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "importStylesheet", []);
+  importStylesheet_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "importStylesheet", []);
 
-  importStylesheet_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "importStylesheet", [__arg_0]);
+  importStylesheet_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "importStylesheet", [__arg_0]);
 
-  removeParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "removeParameter", []);
+  removeParameter_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "removeParameter", []);
 
-  removeParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "removeParameter", [__arg_0]);
+  removeParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "removeParameter", [__arg_0]);
 
-  removeParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "removeParameter", [__arg_0, __arg_1]);
+  removeParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "removeParameter", [__arg_0, __arg_1]);
 
-  reset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "reset", []);
+  reset_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "reset", []);
 
-  setParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "setParameter", [__arg_0]);
+  setParameter_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "setParameter", [__arg_0]);
 
-  setParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "setParameter", [__arg_0, __arg_1]);
+  setParameter_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "setParameter", [__arg_0, __arg_1]);
 
-  setParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis, "setParameter", [__arg_0, __arg_1, __arg_2]);
+  setParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "setParameter", [__arg_0, __arg_1, __arg_2]);
 
-  transformToDocument_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "transformToDocument", []);
+  transformToDocument_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "transformToDocument", []);
 
-  transformToDocument_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "transformToDocument", [__arg_0]);
+  transformToDocument_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "transformToDocument", [__arg_0]);
 
-  transformToFragment_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "transformToFragment", []);
+  transformToFragment_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "transformToFragment", []);
 
-  transformToFragment_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "transformToFragment", [__arg_0]);
+  transformToFragment_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "transformToFragment", [__arg_0]);
 
-  transformToFragment_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "transformToFragment", [__arg_0, __arg_1]);
+  transformToFragment_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis /* XSLTProcessor */, "transformToFragment", [__arg_0, __arg_1]);
 
 }
 
@@ -23297,13 +23297,14 @@
 
   static register(document, tag, customType, extendsTagName) native "Utils_register";
 
-  static createElement(document, tagName) native "Utils_createElement";
+  // Defines an interceptor if there is an appropriate JavaScript prototype to define it on.
+  // In any case, returns a typed JS wrapper compatibile with dart:html and the new
+  // typed JS Interop.
+  static defineInterceptorCustomElement(jsObject, Type type) native "Utils_defineInterceptorCustomElement";
+  static setInstanceInterceptor(o, Type type, {bool customElement: false}) native "Utils_setInstanceInterceptor";
 
-  static constructElement(element_type, jsObject) native "Utils_constructor_create";
-
+  // This method will throw if the element isn't actually a real Element.
   static initializeCustomElement(element) native "Utils_initializeCustomElement";
-
-  static changeElementWrapper(element, type) native "Utils_changeElementWrapper";
 }
 
 class Blink_DOMWindowCrossFrame {
@@ -23353,9 +23354,63 @@
 }
 
 // Calls through JsNative but returns DomException instead of error strings.
+class Stats {
+  Stats(this.name) {
+    counts = new Map<String, int>();
+  }
+
+  String name;
+  Map<String, int> counts;
+  clear() {
+    counts.clear();
+  }
+
+  track(String v) {
+    counts[v] = counts.putIfAbsent(v, ()=> 0) + 1;
+  }
+  toString() {
+    StringBuffer sb = new StringBuffer();
+    sb.write('================');
+    sb.write('$name ${counts.length}');
+    var keys = counts.keys.toList();
+    keys.sort((a,b) => counts[b].compareTo(counts[a]));
+    for (var key in keys) {
+      print("$key => ${counts[key]}");
+    }
+    sb.write('---------------');
+    sb.write('================');
+    return sb;
+  }
+}
+
+bool TRACK_STATS = true;
+dumpStats() {
+  print("------------ STATS ----------------");
+  print(Blink_JsNative_DomException.getPropertyStats.toString()); 
+  print(Blink_JsNative_DomException.setPropertyStats.toString());
+  print(Blink_JsNative_DomException.callMethodStats.toString());
+  print(Blink_JsNative_DomException.constructorStats.toString());
+  print("-----------------------------------");
+}
+
+clearStats() {
+  Blink_JsNative_DomException.getPropertyStats.clear();
+  Blink_JsNative_DomException.setPropertyStats.clear();
+  Blink_JsNative_DomException.callMethodStats.clear();  
+  Blink_JsNative_DomException.constructorStats.clear();  
+}
+
 class Blink_JsNative_DomException {
-  static getProperty(js.JsObject o, name) {
+  static var getPropertyStats = new Stats('get property');
+  static var setPropertyStats = new Stats('set property');
+  static var callMethodStats = new Stats('call method');
+  static var constructorStats = new Stats('constructor');
+
+  static var constructors = new Map<String, dynamic>();
+
+  static getProperty(o, String name) {
     try {
+      if (TRACK_STATS) getPropertyStats.track(name);
       return js.JsNative.getProperty(o, name);
     } catch (e) {
       // Re-throw any errors (returned as a string) as a DomException.
@@ -23363,8 +23418,51 @@
     }
   }
 
-  static callMethod(js.JsObject o, String method, List args) {
+  static propertyQuery(o, String name) {
     try {
+      if (TRACK_STATS) getPropertyStats.track('__propertyQuery__');
+      return js.JsNative.getProperty(o, name);
+    } catch (e) {
+      // Re-throw any errors (returned as a string) as a DomException.
+      throw new DomException.jsInterop(e);
+    }
+  }
+
+  static callConstructor0(String name) {
+    try {
+      if (TRACK_STATS) constructorStats.track(name);
+      var constructor = constructors.putIfAbsent(name, () => js.context[name]);
+      return js.JsNative.callConstructor0(constructor);
+    } catch (e) {
+      // Re-throw any errors (returned as a string) as a DomException.
+      throw new DomException.jsInterop(e);
+    }
+  }
+
+  static callConstructor(String name, List args) {
+    try {
+      if (TRACK_STATS) constructorStats.track(name);
+      var constructor = constructors.putIfAbsent(name, () => js.context[name]);
+      return js.JsNative.callConstructor(constructor, args);
+    } catch (e) {
+      // Re-throw any errors (returned as a string) as a DomException.
+      throw new DomException.jsInterop(e);
+    }
+  }
+
+  static setProperty(o, String name, value) {
+    try {
+      if (TRACK_STATS) setPropertyStats.track(name);
+      return js.JsNative.setProperty(o, name, value);
+    } catch (e) {
+      // Re-throw any errors (returned as a string) as a DomException.
+      throw new DomException.jsInterop(e);
+    }
+  }
+
+  static callMethod(o, String method, List args) {
+    try {
+      if (TRACK_STATS) callMethodStats.track(method);
       return js.JsNative.callMethod(o, method, args);
     } catch (e) {
       // Re-throw any errors (returned as a string) as a DomException.
diff --git a/sdk/lib/_internal/js_runtime/lib/js_helper.dart b/sdk/lib/_internal/js_runtime/lib/js_helper.dart
index 4976562..7d2e968 100644
--- a/sdk/lib/_internal/js_runtime/lib/js_helper.dart
+++ b/sdk/lib/_internal/js_runtime/lib/js_helper.dart
@@ -1953,13 +1953,17 @@
     // Replace the patterns with a regular expression wildcard.
     // Note: in a perfect world, one would use "(.*)", but not in
     // JavaScript, "." does not match newlines.
-    String pattern = JS('String',
-                        r"#.replace('\\$arguments\\$', '((?:x|[^x])*)')"
-                        r".replace('\\$argumentsExpr\\$',  '((?:x|[^x])*)')"
-                        r".replace('\\$expr\\$',  '((?:x|[^x])*)')"
-                        r".replace('\\$method\\$',  '((?:x|[^x])*)')"
-                        r".replace('\\$receiver\\$',  '((?:x|[^x])*)')",
-                        message);
+    String pattern = JS(
+        'String',
+        r"#.replace(new RegExp('\\\\\\$arguments\\\\\\$', 'g'), "
+            r"'((?:x|[^x])*)')"
+        r".replace(new RegExp('\\\\\\$argumentsExpr\\\\\\$', 'g'),  "
+            r"'((?:x|[^x])*)')"
+        r".replace(new RegExp('\\\\\\$expr\\\\\\$', 'g'),  '((?:x|[^x])*)')"
+        r".replace(new RegExp('\\\\\\$method\\\\\\$', 'g'),  '((?:x|[^x])*)')"
+        r".replace(new RegExp('\\\\\\$receiver\\\\\\$', 'g'),  "
+            r"'((?:x|[^x])*)')",
+        message);
 
     return new TypeErrorDecoder(arguments,
                                 argumentsExpr,
diff --git a/sdk/lib/async/future_impl.dart b/sdk/lib/async/future_impl.dart
index 8ca10c9..a8e71f6 100644
--- a/sdk/lib/async/future_impl.dart
+++ b/sdk/lib/async/future_impl.dart
@@ -191,7 +191,7 @@
     _resultOrListeners = source;
   }
 
-  Future then(f(T value), { Function onError }) {
+  Future/*<S>*/ then/*<S>*/(f(T value), { Function onError }) {
     Zone currentZone = Zone.current;
     if (!identical(currentZone, _ROOT_ZONE)) {
       f = currentZone.registerUnaryCallback(f);
diff --git a/sdk/lib/async/stream.dart b/sdk/lib/async/stream.dart
index b69c6fc..89565e1 100644
--- a/sdk/lib/async/stream.dart
+++ b/sdk/lib/async/stream.dart
@@ -532,7 +532,7 @@
    * If a broadcast stream is listened to more than once, each subscription
    * will individually call `convert` and expand the events.
    */
-  Stream/*<S>*/ expand(Iterable/*<S>*/ convert(T value)) {
+  Stream/*<S>*/ expand/*<S>*/(Iterable/*<S>*/ convert(T value)) {
     return new _ExpandStream<T, dynamic/*=S*/>(this, convert);
   }
 
@@ -566,7 +566,8 @@
    * The `streamTransformer` can decide whether it wants to return a
    * broadcast stream or not.
    */
-  Stream transform(StreamTransformer<T, dynamic> streamTransformer) {
+  Stream/*<S>*/ transform/*<S>*/(
+      StreamTransformer<T, dynamic/*=S*/ > streamTransformer) {
     return streamTransformer.bind(this);
   }
 
@@ -1696,7 +1697,7 @@
    */
   const factory StreamTransformer(
       StreamSubscription<T> transformer(Stream<S> stream, bool cancelOnError))
-      = _StreamSubscriptionTransformer;
+      = _StreamSubscriptionTransformer<S, T>;
 
   /**
    * Creates a [StreamTransformer] that delegates events to the given functions.
@@ -1713,7 +1714,7 @@
       void handleData(S data, EventSink<T> sink),
       void handleError(Object error, StackTrace stackTrace, EventSink<T> sink),
       void handleDone(EventSink<T> sink)})
-          = _StreamHandlerTransformer;
+          = _StreamHandlerTransformer<S, T>;
 
   /**
    * Transform the incoming [stream]'s events.
diff --git a/sdk/lib/collection/set.dart b/sdk/lib/collection/set.dart
index 309355c..4dd32cb 100644
--- a/sdk/lib/collection/set.dart
+++ b/sdk/lib/collection/set.dart
@@ -120,8 +120,8 @@
     return result;
   }
 
-  Iterable map(f(E element)) =>
-      new EfficientLengthMappedIterable<E, dynamic>(this, f);
+  Iterable/*<T>*/ map/*<T>*/(/*=T*/f(E element)) =>
+      new EfficientLengthMappedIterable<E, dynamic/*=T*/>(this, f);
 
   E get single {
     if (length > 1) throw IterableElementError.tooMany();
@@ -138,8 +138,8 @@
 
   Iterable<E> where(bool f(E element)) => new WhereIterable<E>(this, f);
 
-  Iterable expand(Iterable f(E element)) =>
-      new ExpandIterable<E, dynamic>(this, f);
+  Iterable/*<T>*/ expand/*<T>*/(Iterable/*<T>*/ f(E element)) =>
+      new ExpandIterable<E, dynamic/*=T*/>(this, f);
 
   void forEach(void f(E element)) {
     for (E element in this) f(element);
@@ -157,8 +157,8 @@
     return value;
   }
 
-  dynamic fold(var initialValue,
-               dynamic combine(var previousValue, E element)) {
+  dynamic/*=T*/ fold/*<T>*/(var/*=T*/ initialValue,
+      dynamic/*=T*/ combine(var/*=T*/ previousValue, E element)) {
     var value = initialValue;
     for (E element in this) value = combine(value, element);
     return value;
diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart
index 7b17154..50e16be 100644
--- a/sdk/lib/html/dart2js/html_dart2js.dart
+++ b/sdk/lib/html/dart2js/html_dart2js.dart
@@ -123,9 +123,6 @@
   throw new UnimplementedError();
 }
 
-/// Dartium functions that are a NOOP in dart2js.
-unwrap_jso(dartClass_instance) => dartClass_instance;
-wrap_jso(jsObject) => jsObject;
 createCustomUpgrader(Type customElementClass, $this) => $this;
 // 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
diff --git a/sdk/lib/html/dartium/html_dartium.dart b/sdk/lib/html/dartium/html_dartium.dart
index bbb5d14..b54fc76 100644
--- a/sdk/lib/html/dartium/html_dartium.dart
+++ b/sdk/lib/html/dartium/html_dartium.dart
@@ -30,7 +30,6 @@
 import 'dart:html_common';
 import 'dart:indexed_db';
 import 'dart:indexed_db' show indexed_dbBlinkMap;
-import 'dart:indexed_db' show indexed_dbBlinkFunctionMap;
 import 'dart:isolate';
 import 'dart:js' as js;
 import "dart:convert";
@@ -40,16 +39,13 @@
 import 'dart:typed_data';
 import 'dart:web_gl' as gl;
 import 'dart:web_gl' show web_glBlinkMap;
-import 'dart:web_gl' show web_glBlinkFunctionMap;
 import 'dart:web_sql';
 import 'dart:svg' as svg;
 import 'dart:svg' show svgBlinkMap;
-import 'dart:svg' show svgBlinkFunctionMap;
 import 'dart:svg' show Matrix;
 import 'dart:svg' show SvgSvgElement;
 import 'dart:web_audio' as web_audio;
 import 'dart:web_audio' show web_audioBlinkMap;
-import 'dart:web_audio' show web_audioBlinkFunctionMap;
 import 'dart:_blink' as _blink;
 import 'dart:developer';
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -90,7 +86,7 @@
   if (_window != null) {
     return _window;
   }
-  _window = wrap_jso(js.JsNative.getProperty(js.context, 'window'));
+  _window = js.JsNative.toTypedObject(js.context);
   return _window;
 }
 
@@ -129,460 +125,468 @@
   'JsObject': () => js.JsObject,
   'JsFunction': () => js.JsFunction,
   'JsArray': () => js.JsArray,
-  'AbstractWorker': () => AbstractWorker,
-  'Animation': () => Animation,
-  'AnimationEffectReadOnly': () => AnimationEffectReadOnly,
-  'AnimationEffectTiming': () => AnimationEffectTiming,
-  'AnimationEvent': () => AnimationEvent,
-  'AnimationPlayerEvent': () => AnimationPlayerEvent,
-  'AnimationTimeline': () => AnimationTimeline,
-  'AppBannerPromptResult': () => AppBannerPromptResult,
-  'ApplicationCache': () => ApplicationCache,
-  'ApplicationCacheErrorEvent': () => ApplicationCacheErrorEvent,
-  'Attr': () => _Attr,
-  'AudioTrack': () => AudioTrack,
-  'AudioTrackList': () => AudioTrackList,
-  'AutocompleteErrorEvent': () => AutocompleteErrorEvent,
-  'BarProp': () => BarProp,
-  'BatteryManager': () => BatteryManager,
-  'BeforeInstallPromptEvent': () => BeforeInstallPromptEvent,
-  'BeforeUnloadEvent': () => BeforeUnloadEvent,
-  'Blob': () => Blob,
-  'Bluetooth': () => Bluetooth,
-  'BluetoothDevice': () => BluetoothDevice,
-  'BluetoothGATTCharacteristic': () => BluetoothGattCharacteristic,
-  'BluetoothGATTRemoteServer': () => BluetoothGattRemoteServer,
-  'BluetoothGATTService': () => BluetoothGattService,
-  'BluetoothUUID': () => BluetoothUuid,
-  'Body': () => Body,
-  'CDATASection': () => CDataSection,
-  'CHROMIUMValuebuffer': () => ChromiumValuebuffer,
-  'CSS': () => Css,
-  'CSSCharsetRule': () => CssCharsetRule,
-  'CSSFontFaceRule': () => CssFontFaceRule,
-  'CSSGroupingRule': () => CssGroupingRule,
-  'CSSImportRule': () => CssImportRule,
-  'CSSKeyframeRule': () => CssKeyframeRule,
-  'CSSKeyframesRule': () => CssKeyframesRule,
-  'CSSMediaRule': () => CssMediaRule,
-  'CSSPageRule': () => CssPageRule,
-  'CSSRule': () => CssRule,
-  'CSSRuleList': () => _CssRuleList,
-  'CSSStyleDeclaration': () => CssStyleDeclaration,
-  'CSSStyleRule': () => CssStyleRule,
-  'CSSStyleSheet': () => CssStyleSheet,
-  'CSSSupportsRule': () => CssSupportsRule,
-  'CSSViewportRule': () => CssViewportRule,
-  'Cache': () => _Cache,
-  'CacheStorage': () => CacheStorage,
-  'CanvasGradient': () => CanvasGradient,
-  'CanvasPathMethods': () => _CanvasPathMethods,
-  'CanvasPattern': () => CanvasPattern,
-  'CanvasRenderingContext2D': () => CanvasRenderingContext2D,
-  'CharacterData': () => CharacterData,
-  'ChildNode': () => ChildNode,
-  'CircularGeofencingRegion': () => CircularGeofencingRegion,
-  'Client': () => Client,
-  'ClientRect': () => _ClientRect,
-  'ClientRectList': () => _ClientRectList,
-  'Clients': () => Clients,
-  'ClipboardEvent': () => ClipboardEvent,
-  'CloseEvent': () => CloseEvent,
-  'Comment': () => Comment,
-  'CompositionEvent': () => CompositionEvent,
-  'CompositorProxy': () => CompositorProxy,
-  'CompositorWorker': () => CompositorWorker,
-  'CompositorWorkerGlobalScope': () => CompositorWorkerGlobalScope,
-  'Console': () => Console,
-  'ConsoleBase': () => ConsoleBase,
-  'Coordinates': () => Coordinates,
-  'Credential': () => Credential,
-  'CredentialsContainer': () => CredentialsContainer,
-  'CrossOriginConnectEvent': () => CrossOriginConnectEvent,
-  'CrossOriginServiceWorkerClient': () => CrossOriginServiceWorkerClient,
-  'Crypto': () => Crypto,
-  'CryptoKey': () => CryptoKey,
-  'CustomEvent': () => CustomEvent,
-  'DOMError': () => DomError,
-  'DOMException': () => DomException,
-  'DOMFileSystem': () => FileSystem,
-  'DOMFileSystemSync': () => _DOMFileSystemSync,
-  'DOMImplementation': () => DomImplementation,
-  'DOMMatrix': () => DomMatrix,
-  'DOMMatrixReadOnly': () => DomMatrixReadOnly,
-  'DOMParser': () => DomParser,
-  'DOMPoint': () => DomPoint,
-  'DOMPointReadOnly': () => DomPointReadOnly,
-  'DOMRect': () => _DomRect,
-  'DOMRectReadOnly': () => DomRectReadOnly,
-  'DOMSettableTokenList': () => DomSettableTokenList,
-  'DOMStringList': () => DomStringList,
-  'DOMStringMap': () => DomStringMap,
-  'DOMTokenList': () => DomTokenList,
-  'DataTransfer': () => DataTransfer,
-  'DataTransferItem': () => DataTransferItem,
-  'DataTransferItemList': () => DataTransferItemList,
-  'DedicatedWorkerGlobalScope': () => DedicatedWorkerGlobalScope,
-  'DefaultSessionStartEvent': () => DefaultSessionStartEvent,
-  'DeprecatedStorageInfo': () => DeprecatedStorageInfo,
-  'DeprecatedStorageQuota': () => DeprecatedStorageQuota,
-  'DeviceAcceleration': () => DeviceAcceleration,
-  'DeviceLightEvent': () => DeviceLightEvent,
-  'DeviceMotionEvent': () => DeviceMotionEvent,
-  'DeviceOrientationEvent': () => DeviceOrientationEvent,
-  'DeviceRotationRate': () => DeviceRotationRate,
-  'DirectoryEntry': () => DirectoryEntry,
-  'DirectoryEntrySync': () => _DirectoryEntrySync,
-  'DirectoryReader': () => DirectoryReader,
-  'DirectoryReaderSync': () => _DirectoryReaderSync,
-  'Document': () => Document,
-  'DocumentFragment': () => DocumentFragment,
-  'DocumentType': () => _DocumentType,
-  'EffectModel': () => EffectModel,
-  'Element': () => Element,
-  'Entry': () => Entry,
-  'EntrySync': () => _EntrySync,
-  'ErrorEvent': () => ErrorEvent,
-  'Event': () => Event,
-  'EventSource': () => EventSource,
-  'EventTarget': () => EventTarget,
-  'ExtendableEvent': () => ExtendableEvent,
-  'FederatedCredential': () => FederatedCredential,
-  'FetchEvent': () => FetchEvent,
-  'File': () => File,
-  'FileEntry': () => FileEntry,
-  'FileEntrySync': () => _FileEntrySync,
-  'FileError': () => FileError,
-  'FileList': () => FileList,
-  'FileReader': () => FileReader,
-  'FileReaderSync': () => _FileReaderSync,
-  'FileWriter': () => FileWriter,
-  'FileWriterSync': () => _FileWriterSync,
-  'FocusEvent': () => FocusEvent,
-  'FontFace': () => FontFace,
-  'FontFaceSet': () => FontFaceSet,
-  'FontFaceSetLoadEvent': () => FontFaceSetLoadEvent,
-  'FormData': () => FormData,
-  'Gamepad': () => Gamepad,
-  'GamepadButton': () => GamepadButton,
-  'GamepadEvent': () => GamepadEvent,
-  'GamepadList': () => _GamepadList,
-  'Geofencing': () => Geofencing,
-  'GeofencingEvent': () => GeofencingEvent,
-  'GeofencingRegion': () => GeofencingRegion,
-  'Geolocation': () => Geolocation,
-  'Geoposition': () => Geoposition,
-  'GlobalEventHandlers': () => GlobalEventHandlers,
-  'HMDVRDevice': () => HmdvrDevice,
-  'HTMLAllCollection': () => _HTMLAllCollection,
-  'HTMLAnchorElement': () => AnchorElement,
-  'HTMLAppletElement': () => _HTMLAppletElement,
-  'HTMLAreaElement': () => AreaElement,
-  'HTMLAudioElement': () => AudioElement,
-  'HTMLBRElement': () => BRElement,
-  'HTMLBaseElement': () => BaseElement,
-  'HTMLBodyElement': () => BodyElement,
-  'HTMLButtonElement': () => ButtonElement,
-  'HTMLCanvasElement': () => CanvasElement,
-  'HTMLCollection': () => HtmlCollection,
-  'HTMLContentElement': () => ContentElement,
-  'HTMLDListElement': () => DListElement,
-  'HTMLDataListElement': () => DataListElement,
-  'HTMLDetailsElement': () => DetailsElement,
-  'HTMLDialogElement': () => DialogElement,
-  'HTMLDirectoryElement': () => _HTMLDirectoryElement,
-  'HTMLDivElement': () => DivElement,
-  'HTMLDocument': () => HtmlDocument,
-  'HTMLElement': () => HtmlElement,
-  'HTMLEmbedElement': () => EmbedElement,
-  'HTMLFieldSetElement': () => FieldSetElement,
-  'HTMLFontElement': () => _HTMLFontElement,
-  'HTMLFormControlsCollection': () => HtmlFormControlsCollection,
-  'HTMLFormElement': () => FormElement,
-  'HTMLFrameElement': () => _HTMLFrameElement,
-  'HTMLFrameSetElement': () => _HTMLFrameSetElement,
-  'HTMLHRElement': () => HRElement,
-  'HTMLHeadElement': () => HeadElement,
-  'HTMLHeadingElement': () => HeadingElement,
-  'HTMLHtmlElement': () => HtmlHtmlElement,
-  'HTMLIFrameElement': () => IFrameElement,
-  'HTMLImageElement': () => ImageElement,
-  'HTMLInputElement': () => InputElement,
-  'HTMLKeygenElement': () => KeygenElement,
-  'HTMLLIElement': () => LIElement,
-  'HTMLLabelElement': () => LabelElement,
-  'HTMLLegendElement': () => LegendElement,
-  'HTMLLinkElement': () => LinkElement,
-  'HTMLMapElement': () => MapElement,
-  'HTMLMarqueeElement': () => _HTMLMarqueeElement,
-  'HTMLMediaElement': () => MediaElement,
-  'HTMLMenuElement': () => MenuElement,
-  'HTMLMenuItemElement': () => MenuItemElement,
-  'HTMLMetaElement': () => MetaElement,
-  'HTMLMeterElement': () => MeterElement,
-  'HTMLModElement': () => ModElement,
-  'HTMLOListElement': () => OListElement,
-  'HTMLObjectElement': () => ObjectElement,
-  'HTMLOptGroupElement': () => OptGroupElement,
-  'HTMLOptionElement': () => OptionElement,
-  'HTMLOptionsCollection': () => HtmlOptionsCollection,
-  'HTMLOutputElement': () => OutputElement,
-  'HTMLParagraphElement': () => ParagraphElement,
-  'HTMLParamElement': () => ParamElement,
-  'HTMLPictureElement': () => PictureElement,
-  'HTMLPreElement': () => PreElement,
-  'HTMLProgressElement': () => ProgressElement,
-  'HTMLQuoteElement': () => QuoteElement,
-  'HTMLScriptElement': () => ScriptElement,
-  'HTMLSelectElement': () => SelectElement,
-  'HTMLShadowElement': () => ShadowElement,
-  'HTMLSourceElement': () => SourceElement,
-  'HTMLSpanElement': () => SpanElement,
-  'HTMLStyleElement': () => StyleElement,
-  'HTMLTableCaptionElement': () => TableCaptionElement,
-  'HTMLTableCellElement': () => TableCellElement,
-  'HTMLTableColElement': () => TableColElement,
-  'HTMLTableElement': () => TableElement,
-  'HTMLTableRowElement': () => TableRowElement,
-  'HTMLTableSectionElement': () => TableSectionElement,
-  'HTMLTemplateElement': () => TemplateElement,
-  'HTMLTextAreaElement': () => TextAreaElement,
-  'HTMLTitleElement': () => TitleElement,
-  'HTMLTrackElement': () => TrackElement,
-  'HTMLUListElement': () => UListElement,
-  'HTMLUnknownElement': () => UnknownElement,
-  'HTMLVideoElement': () => VideoElement,
-  'HashChangeEvent': () => HashChangeEvent,
-  'Headers': () => Headers,
-  'History': () => History,
-  'ImageBitmap': () => ImageBitmap,
-  'ImageData': () => ImageData,
-  'InjectedScriptHost': () => InjectedScriptHost,
-  'InputDevice': () => InputDevice,
-  'Iterator': () => DomIterator,
-  'KeyboardEvent': () => KeyboardEvent,
-  'KeyframeEffect': () => KeyframeEffect,
-  'Location': () => Location,
-  'MIDIAccess': () => MidiAccess,
-  'MIDIConnectionEvent': () => MidiConnectionEvent,
-  'MIDIInput': () => MidiInput,
-  'MIDIInputMap': () => MidiInputMap,
-  'MIDIMessageEvent': () => MidiMessageEvent,
-  'MIDIOutput': () => MidiOutput,
-  'MIDIOutputMap': () => MidiOutputMap,
-  'MIDIPort': () => MidiPort,
-  'MediaController': () => MediaController,
-  'MediaDeviceInfo': () => MediaDeviceInfo,
-  'MediaDevices': () => MediaDevices,
-  'MediaEncryptedEvent': () => MediaEncryptedEvent,
-  'MediaError': () => MediaError,
-  'MediaKeyError': () => MediaKeyError,
-  'MediaKeyEvent': () => MediaKeyEvent,
-  'MediaKeyMessageEvent': () => MediaKeyMessageEvent,
-  'MediaKeySession': () => MediaKeySession,
-  'MediaKeyStatusMap': () => MediaKeyStatusMap,
-  'MediaKeySystemAccess': () => MediaKeySystemAccess,
-  'MediaKeys': () => MediaKeys,
-  'MediaList': () => MediaList,
-  'MediaQueryList': () => MediaQueryList,
-  'MediaQueryListEvent': () => MediaQueryListEvent,
-  'MediaSession': () => MediaSession,
-  'MediaSource': () => MediaSource,
-  'MediaStream': () => MediaStream,
-  'MediaStreamEvent': () => MediaStreamEvent,
-  'MediaStreamTrack': () => MediaStreamTrack,
-  'MediaStreamTrackEvent': () => MediaStreamTrackEvent,
-  'MemoryInfo': () => MemoryInfo,
-  'MessageChannel': () => MessageChannel,
-  'MessageEvent': () => MessageEvent,
-  'MessagePort': () => MessagePort,
-  'Metadata': () => Metadata,
-  'MimeType': () => MimeType,
-  'MimeTypeArray': () => MimeTypeArray,
-  'MouseEvent': () => MouseEvent,
-  'MutationEvent': () => _MutationEvent,
-  'MutationObserver': () => MutationObserver,
-  'MutationRecord': () => MutationRecord,
-  'NamedNodeMap': () => _NamedNodeMap,
-  'Navigator': () => Navigator,
-  'NavigatorCPU': () => NavigatorCpu,
-  'NavigatorID': () => NavigatorID,
-  'NavigatorLanguage': () => NavigatorLanguage,
-  'NavigatorOnLine': () => NavigatorOnLine,
-  'NavigatorStorageUtils': () => NavigatorStorageUtils,
-  'NavigatorUserMediaError': () => NavigatorUserMediaError,
-  'NetworkInformation': () => NetworkInformation,
-  'Node': () => Node,
-  'NodeFilter': () => NodeFilter,
-  'NodeIterator': () => NodeIterator,
-  'NodeList': () => NodeList,
-  'NonDocumentTypeChildNode': () => NonDocumentTypeChildNode,
-  'NonElementParentNode': () => NonElementParentNode,
-  'Notification': () => Notification,
-  'NotificationEvent': () => NotificationEvent,
-  'PagePopupController': () => _PagePopupController,
-  'PageTransitionEvent': () => PageTransitionEvent,
-  'ParentNode': () => ParentNode,
-  'PasswordCredential': () => PasswordCredential,
-  'Path2D': () => Path2D,
-  'Performance': () => Performance,
-  'PerformanceCompositeTiming': () => PerformanceCompositeTiming,
-  'PerformanceEntry': () => PerformanceEntry,
-  'PerformanceMark': () => PerformanceMark,
-  'PerformanceMeasure': () => PerformanceMeasure,
-  'PerformanceNavigation': () => PerformanceNavigation,
-  'PerformanceRenderTiming': () => PerformanceRenderTiming,
-  'PerformanceResourceTiming': () => PerformanceResourceTiming,
-  'PerformanceTiming': () => PerformanceTiming,
-  'PeriodicSyncEvent': () => PeriodicSyncEvent,
-  'PeriodicSyncManager': () => PeriodicSyncManager,
-  'PeriodicSyncRegistration': () => PeriodicSyncRegistration,
-  'PermissionStatus': () => PermissionStatus,
-  'Permissions': () => Permissions,
-  'Plugin': () => Plugin,
-  'PluginArray': () => PluginArray,
-  'PluginPlaceholderElement': () => PluginPlaceholderElement,
-  'PointerEvent': () => PointerEvent,
-  'PopStateEvent': () => PopStateEvent,
-  'PositionError': () => PositionError,
-  'PositionSensorVRDevice': () => PositionSensorVRDevice,
-  'Presentation': () => Presentation,
-  'PresentationAvailability': () => PresentationAvailability,
-  'PresentationSession': () => PresentationSession,
-  'ProcessingInstruction': () => ProcessingInstruction,
-  'ProgressEvent': () => ProgressEvent,
-  'PromiseRejectionEvent': () => PromiseRejectionEvent,
-  'PushEvent': () => PushEvent,
-  'PushManager': () => PushManager,
-  'PushMessageData': () => PushMessageData,
-  'PushSubscription': () => PushSubscription,
-  'RTCDTMFSender': () => RtcDtmfSender,
-  'RTCDTMFToneChangeEvent': () => RtcDtmfToneChangeEvent,
-  'RTCDataChannel': () => RtcDataChannel,
-  'RTCDataChannelEvent': () => RtcDataChannelEvent,
-  'RTCIceCandidate': () => RtcIceCandidate,
-  'RTCIceCandidateEvent': () => RtcIceCandidateEvent,
-  'RTCPeerConnection': () => RtcPeerConnection,
-  'RTCSessionDescription': () => RtcSessionDescription,
-  'RTCStatsReport': () => RtcStatsReport,
-  'RTCStatsResponse': () => RtcStatsResponse,
-  'RadioNodeList': () => _RadioNodeList,
-  'Range': () => Range,
-  'ReadableByteStream': () => ReadableByteStream,
-  'ReadableByteStreamReader': () => ReadableByteStreamReader,
-  'ReadableStream': () => ReadableStream,
-  'ReadableStreamReader': () => ReadableStreamReader,
-  'RelatedEvent': () => RelatedEvent,
-  'Request': () => _Request,
-  'ResourceProgressEvent': () => ResourceProgressEvent,
-  'Response': () => _Response,
-  'Screen': () => Screen,
-  'ScreenOrientation': () => ScreenOrientation,
-  'ScrollState': () => ScrollState,
-  'SecurityPolicyViolationEvent': () => SecurityPolicyViolationEvent,
-  'Selection': () => Selection,
-  'ServicePort': () => ServicePort,
-  'ServicePortCollection': () => ServicePortCollection,
-  'ServicePortConnectEvent': () => ServicePortConnectEvent,
-  'ServiceWorker': () => _ServiceWorker,
-  'ServiceWorkerContainer': () => ServiceWorkerContainer,
-  'ServiceWorkerGlobalScope': () => ServiceWorkerGlobalScope,
-  'ServiceWorkerMessageEvent': () => ServiceWorkerMessageEvent,
-  'ServiceWorkerRegistration': () => ServiceWorkerRegistration,
-  'ShadowRoot': () => ShadowRoot,
-  'SharedArrayBuffer': () => SharedArrayBuffer,
-  'SharedWorker': () => SharedWorker,
-  'SharedWorkerGlobalScope': () => SharedWorkerGlobalScope,
-  'SourceBuffer': () => SourceBuffer,
-  'SourceBufferList': () => SourceBufferList,
-  'SourceInfo': () => SourceInfo,
-  'SpeechGrammar': () => SpeechGrammar,
-  'SpeechGrammarList': () => SpeechGrammarList,
-  'SpeechRecognition': () => SpeechRecognition,
-  'SpeechRecognitionAlternative': () => SpeechRecognitionAlternative,
-  'SpeechRecognitionError': () => SpeechRecognitionError,
-  'SpeechRecognitionEvent': () => SpeechRecognitionEvent,
-  'SpeechRecognitionResult': () => SpeechRecognitionResult,
-  'SpeechRecognitionResultList': () => _SpeechRecognitionResultList,
-  'SpeechSynthesis': () => SpeechSynthesis,
-  'SpeechSynthesisEvent': () => SpeechSynthesisEvent,
-  'SpeechSynthesisUtterance': () => SpeechSynthesisUtterance,
-  'SpeechSynthesisVoice': () => SpeechSynthesisVoice,
-  'StashedMessagePort': () => StashedMessagePort,
-  'StashedPortCollection': () => StashedPortCollection,
-  'Storage': () => Storage,
-  'StorageEvent': () => StorageEvent,
-  'StorageInfo': () => StorageInfo,
-  'StorageQuota': () => StorageQuota,
-  'Stream': () => FileStream,
-  'StyleMedia': () => StyleMedia,
-  'StyleSheet': () => StyleSheet,
-  'StyleSheetList': () => _StyleSheetList,
-  'SubtleCrypto': () => _SubtleCrypto,
-  'SyncEvent': () => SyncEvent,
-  'SyncManager': () => SyncManager,
-  'SyncRegistration': () => SyncRegistration,
-  'Text': () => Text,
-  'TextEvent': () => TextEvent,
-  'TextMetrics': () => TextMetrics,
-  'TextTrack': () => TextTrack,
-  'TextTrackCue': () => TextTrackCue,
-  'TextTrackCueList': () => TextTrackCueList,
-  'TextTrackList': () => TextTrackList,
-  'TimeRanges': () => TimeRanges,
-  'Touch': () => Touch,
-  'TouchEvent': () => TouchEvent,
-  'TouchList': () => TouchList,
-  'TrackDefault': () => TrackDefault,
-  'TrackDefaultList': () => TrackDefaultList,
-  'TrackEvent': () => TrackEvent,
-  'TransitionEvent': () => TransitionEvent,
-  'TreeWalker': () => TreeWalker,
-  'UIEvent': () => UIEvent,
-  'URL': () => Url,
-  'URLUtils': () => UrlUtils,
-  'URLUtilsReadOnly': () => UrlUtilsReadOnly,
-  'VRDevice': () => VRDevice,
-  'VREyeParameters': () => VREyeParameters,
-  'VRFieldOfView': () => VRFieldOfView,
-  'VRPositionState': () => VRPositionState,
-  'VTTCue': () => VttCue,
-  'VTTRegion': () => VttRegion,
-  'VTTRegionList': () => VttRegionList,
-  'ValidityState': () => ValidityState,
-  'VideoPlaybackQuality': () => VideoPlaybackQuality,
-  'VideoTrack': () => VideoTrack,
-  'VideoTrackList': () => VideoTrackList,
-  'WebKitCSSMatrix': () => _WebKitCSSMatrix,
-  'WebSocket': () => WebSocket,
-  'WheelEvent': () => WheelEvent,
-  'Window': () => Window,
-  'WindowBase64': () => WindowBase64,
-  'WindowClient': () => WindowClient,
-  'WindowEventHandlers': () => WindowEventHandlers,
-  'WindowTimers': () => _WindowTimers,
-  'Worker': () => Worker,
-  'WorkerConsole': () => WorkerConsole,
-  'WorkerGlobalScope': () => WorkerGlobalScope,
-  'WorkerLocation': () => _WorkerLocation,
-  'WorkerNavigator': () => _WorkerNavigator,
-  'WorkerPerformance': () => WorkerPerformance,
-  'XMLDocument': () => XmlDocument,
-  'XMLHttpRequest': () => HttpRequest,
-  'XMLHttpRequestEventTarget': () => HttpRequestEventTarget,
-  'XMLHttpRequestProgressEvent': () => _XMLHttpRequestProgressEvent,
-  'XMLHttpRequestUpload': () => HttpRequestUpload,
-  'XMLSerializer': () => XmlSerializer,
-  'XPathEvaluator': () => XPathEvaluator,
-  'XPathExpression': () => XPathExpression,
-  'XPathNSResolver': () => XPathNSResolver,
-  'XPathResult': () => XPathResult,
-  'XSLTProcessor': () => XsltProcessor,
+  // We have to call .instanceRuntimeType as these classes have a private
+  // implementation class defined dynamically at runtime via a patch file.
+  'JSObject': () => js.JSObject.instanceRuntimeType,
+  'JSFunction': () => js.JSFunction.instanceRuntimeType,
+  'JSArray': () => js.JSArray.instanceRuntimeType,
+  'AbstractWorker': () => AbstractWorker.instanceRuntimeType,
+  'Animation': () => Animation.instanceRuntimeType,
+  'AnimationEffectReadOnly': () => AnimationEffectReadOnly.instanceRuntimeType,
+  'AnimationEffectTiming': () => AnimationEffectTiming.instanceRuntimeType,
+  'AnimationEvent': () => AnimationEvent.instanceRuntimeType,
+  'AnimationPlayerEvent': () => AnimationPlayerEvent.instanceRuntimeType,
+  'AnimationTimeline': () => AnimationTimeline.instanceRuntimeType,
+  'AppBannerPromptResult': () => AppBannerPromptResult.instanceRuntimeType,
+  'ApplicationCache': () => ApplicationCache.instanceRuntimeType,
+  'ApplicationCacheErrorEvent': () => ApplicationCacheErrorEvent.instanceRuntimeType,
+  'Attr': () => _Attr.instanceRuntimeType,
+  'AudioTrack': () => AudioTrack.instanceRuntimeType,
+  'AudioTrackList': () => AudioTrackList.instanceRuntimeType,
+  'AutocompleteErrorEvent': () => AutocompleteErrorEvent.instanceRuntimeType,
+  'BarProp': () => BarProp.instanceRuntimeType,
+  'BatteryManager': () => BatteryManager.instanceRuntimeType,
+  'BeforeInstallPromptEvent': () => BeforeInstallPromptEvent.instanceRuntimeType,
+  'BeforeUnloadEvent': () => BeforeUnloadEvent.instanceRuntimeType,
+  'Blob': () => Blob.instanceRuntimeType,
+  'Bluetooth': () => Bluetooth.instanceRuntimeType,
+  'BluetoothDevice': () => BluetoothDevice.instanceRuntimeType,
+  'BluetoothGATTCharacteristic': () => BluetoothGattCharacteristic.instanceRuntimeType,
+  'BluetoothGATTRemoteServer': () => BluetoothGattRemoteServer.instanceRuntimeType,
+  'BluetoothGATTService': () => BluetoothGattService.instanceRuntimeType,
+  'BluetoothUUID': () => BluetoothUuid.instanceRuntimeType,
+  'Body': () => Body.instanceRuntimeType,
+  'CDATASection': () => CDataSection.instanceRuntimeType,
+  'CHROMIUMValuebuffer': () => ChromiumValuebuffer.instanceRuntimeType,
+  'CSS': () => Css.instanceRuntimeType,
+  'CSSCharsetRule': () => CssCharsetRule.instanceRuntimeType,
+  'CSSFontFaceRule': () => CssFontFaceRule.instanceRuntimeType,
+  'CSSGroupingRule': () => CssGroupingRule.instanceRuntimeType,
+  'CSSImportRule': () => CssImportRule.instanceRuntimeType,
+  'CSSKeyframeRule': () => CssKeyframeRule.instanceRuntimeType,
+  'CSSKeyframesRule': () => CssKeyframesRule.instanceRuntimeType,
+  'CSSMediaRule': () => CssMediaRule.instanceRuntimeType,
+  'CSSPageRule': () => CssPageRule.instanceRuntimeType,
+  'CSSRule': () => CssRule.instanceRuntimeType,
+  'CSSRuleList': () => _CssRuleList.instanceRuntimeType,
+  'CSSStyleDeclaration': () => CssStyleDeclaration.instanceRuntimeType,
+  'CSSStyleRule': () => CssStyleRule.instanceRuntimeType,
+  'CSSStyleSheet': () => CssStyleSheet.instanceRuntimeType,
+  'CSSSupportsRule': () => CssSupportsRule.instanceRuntimeType,
+  'CSSViewportRule': () => CssViewportRule.instanceRuntimeType,
+  'Cache': () => _Cache.instanceRuntimeType,
+  'CacheStorage': () => CacheStorage.instanceRuntimeType,
+  'CanvasGradient': () => CanvasGradient.instanceRuntimeType,
+  'CanvasPathMethods': () => _CanvasPathMethods.instanceRuntimeType,
+  'CanvasPattern': () => CanvasPattern.instanceRuntimeType,
+  'CanvasRenderingContext2D': () => CanvasRenderingContext2D.instanceRuntimeType,
+  'CharacterData': () => CharacterData.instanceRuntimeType,
+  'ChildNode': () => ChildNode.instanceRuntimeType,
+  'CircularGeofencingRegion': () => CircularGeofencingRegion.instanceRuntimeType,
+  'Client': () => Client.instanceRuntimeType,
+  'ClientRect': () => _ClientRect.instanceRuntimeType,
+  'ClientRectList': () => _ClientRectList.instanceRuntimeType,
+  'Clients': () => Clients.instanceRuntimeType,
+  'ClipboardEvent': () => ClipboardEvent.instanceRuntimeType,
+  'CloseEvent': () => CloseEvent.instanceRuntimeType,
+  'Comment': () => Comment.instanceRuntimeType,
+  'CompositionEvent': () => CompositionEvent.instanceRuntimeType,
+  'CompositorProxy': () => CompositorProxy.instanceRuntimeType,
+  'CompositorWorker': () => CompositorWorker.instanceRuntimeType,
+  'CompositorWorkerGlobalScope': () => CompositorWorkerGlobalScope.instanceRuntimeType,
+  'Console': () => Console.instanceRuntimeType,
+  'ConsoleBase': () => ConsoleBase.instanceRuntimeType,
+  'Coordinates': () => Coordinates.instanceRuntimeType,
+  'Credential': () => Credential.instanceRuntimeType,
+  'CredentialsContainer': () => CredentialsContainer.instanceRuntimeType,
+  'CrossOriginConnectEvent': () => CrossOriginConnectEvent.instanceRuntimeType,
+  'CrossOriginServiceWorkerClient': () => CrossOriginServiceWorkerClient.instanceRuntimeType,
+  'Crypto': () => Crypto.instanceRuntimeType,
+  'CryptoKey': () => CryptoKey.instanceRuntimeType,
+  'CustomEvent': () => CustomEvent.instanceRuntimeType,
+  'DOMError': () => DomError.instanceRuntimeType,
+  'DOMException': () => DomException.instanceRuntimeType,
+  'DOMFileSystem': () => FileSystem.instanceRuntimeType,
+  'DOMFileSystemSync': () => _DOMFileSystemSync.instanceRuntimeType,
+  'DOMImplementation': () => DomImplementation.instanceRuntimeType,
+  'DOMMatrix': () => DomMatrix.instanceRuntimeType,
+  'DOMMatrixReadOnly': () => DomMatrixReadOnly.instanceRuntimeType,
+  'DOMParser': () => DomParser.instanceRuntimeType,
+  'DOMPoint': () => DomPoint.instanceRuntimeType,
+  'DOMPointReadOnly': () => DomPointReadOnly.instanceRuntimeType,
+  'DOMRect': () => _DomRect.instanceRuntimeType,
+  'DOMRectReadOnly': () => DomRectReadOnly.instanceRuntimeType,
+  'DOMSettableTokenList': () => DomSettableTokenList.instanceRuntimeType,
+  'DOMStringList': () => DomStringList.instanceRuntimeType,
+  'DOMStringMap': () => DomStringMap.instanceRuntimeType,
+  'DOMTokenList': () => DomTokenList.instanceRuntimeType,
+  'DataTransfer': () => DataTransfer.instanceRuntimeType,
+  'DataTransferItem': () => DataTransferItem.instanceRuntimeType,
+  'DataTransferItemList': () => DataTransferItemList.instanceRuntimeType,
+  'DedicatedWorkerGlobalScope': () => DedicatedWorkerGlobalScope.instanceRuntimeType,
+  'DefaultSessionStartEvent': () => DefaultSessionStartEvent.instanceRuntimeType,
+  'DeprecatedStorageInfo': () => DeprecatedStorageInfo.instanceRuntimeType,
+  'DeprecatedStorageQuota': () => DeprecatedStorageQuota.instanceRuntimeType,
+  'DeviceAcceleration': () => DeviceAcceleration.instanceRuntimeType,
+  'DeviceLightEvent': () => DeviceLightEvent.instanceRuntimeType,
+  'DeviceMotionEvent': () => DeviceMotionEvent.instanceRuntimeType,
+  'DeviceOrientationEvent': () => DeviceOrientationEvent.instanceRuntimeType,
+  'DeviceRotationRate': () => DeviceRotationRate.instanceRuntimeType,
+  'DirectoryEntry': () => DirectoryEntry.instanceRuntimeType,
+  'DirectoryEntrySync': () => _DirectoryEntrySync.instanceRuntimeType,
+  'DirectoryReader': () => DirectoryReader.instanceRuntimeType,
+  'DirectoryReaderSync': () => _DirectoryReaderSync.instanceRuntimeType,
+  'Document': () => Document.instanceRuntimeType,
+  'DocumentFragment': () => DocumentFragment.instanceRuntimeType,
+  'DocumentType': () => _DocumentType.instanceRuntimeType,
+  'EffectModel': () => EffectModel.instanceRuntimeType,
+  'Element': () => Element.instanceRuntimeType,
+  'Entry': () => Entry.instanceRuntimeType,
+  'EntrySync': () => _EntrySync.instanceRuntimeType,
+  'ErrorEvent': () => ErrorEvent.instanceRuntimeType,
+  'Event': () => Event.instanceRuntimeType,
+  'EventSource': () => EventSource.instanceRuntimeType,
+  'EventTarget': () => EventTarget.instanceRuntimeType,
+  'ExtendableEvent': () => ExtendableEvent.instanceRuntimeType,
+  'FederatedCredential': () => FederatedCredential.instanceRuntimeType,
+  'FetchEvent': () => FetchEvent.instanceRuntimeType,
+  'File': () => File.instanceRuntimeType,
+  'FileEntry': () => FileEntry.instanceRuntimeType,
+  'FileEntrySync': () => _FileEntrySync.instanceRuntimeType,
+  'FileError': () => FileError.instanceRuntimeType,
+  'FileList': () => FileList.instanceRuntimeType,
+  'FileReader': () => FileReader.instanceRuntimeType,
+  'FileReaderSync': () => _FileReaderSync.instanceRuntimeType,
+  'FileWriter': () => FileWriter.instanceRuntimeType,
+  'FileWriterSync': () => _FileWriterSync.instanceRuntimeType,
+  'FocusEvent': () => FocusEvent.instanceRuntimeType,
+  'FontFace': () => FontFace.instanceRuntimeType,
+  'FontFaceSet': () => FontFaceSet.instanceRuntimeType,
+  'FontFaceSetLoadEvent': () => FontFaceSetLoadEvent.instanceRuntimeType,
+  'FormData': () => FormData.instanceRuntimeType,
+  'Gamepad': () => Gamepad.instanceRuntimeType,
+  'GamepadButton': () => GamepadButton.instanceRuntimeType,
+  'GamepadEvent': () => GamepadEvent.instanceRuntimeType,
+  'GamepadList': () => _GamepadList.instanceRuntimeType,
+  'Geofencing': () => Geofencing.instanceRuntimeType,
+  'GeofencingEvent': () => GeofencingEvent.instanceRuntimeType,
+  'GeofencingRegion': () => GeofencingRegion.instanceRuntimeType,
+  'Geolocation': () => Geolocation.instanceRuntimeType,
+  'Geoposition': () => Geoposition.instanceRuntimeType,
+  'GlobalEventHandlers': () => GlobalEventHandlers.instanceRuntimeType,
+  'HMDVRDevice': () => HmdvrDevice.instanceRuntimeType,
+  'HTMLAllCollection': () => _HTMLAllCollection.instanceRuntimeType,
+  'HTMLAnchorElement': () => AnchorElement.instanceRuntimeType,
+  'HTMLAppletElement': () => _HTMLAppletElement.instanceRuntimeType,
+  'HTMLAreaElement': () => AreaElement.instanceRuntimeType,
+  'HTMLAudioElement': () => AudioElement.instanceRuntimeType,
+  'HTMLBRElement': () => BRElement.instanceRuntimeType,
+  'HTMLBaseElement': () => BaseElement.instanceRuntimeType,
+  'HTMLBodyElement': () => BodyElement.instanceRuntimeType,
+  'HTMLButtonElement': () => ButtonElement.instanceRuntimeType,
+  'HTMLCanvasElement': () => CanvasElement.instanceRuntimeType,
+  'HTMLCollection': () => HtmlCollection.instanceRuntimeType,
+  'HTMLContentElement': () => ContentElement.instanceRuntimeType,
+  'HTMLDListElement': () => DListElement.instanceRuntimeType,
+  'HTMLDataListElement': () => DataListElement.instanceRuntimeType,
+  'HTMLDetailsElement': () => DetailsElement.instanceRuntimeType,
+  'HTMLDialogElement': () => DialogElement.instanceRuntimeType,
+  'HTMLDirectoryElement': () => _HTMLDirectoryElement.instanceRuntimeType,
+  'HTMLDivElement': () => DivElement.instanceRuntimeType,
+  'HTMLDocument': () => HtmlDocument.instanceRuntimeType,
+  'HTMLElement': () => HtmlElement.instanceRuntimeType,
+  'HTMLEmbedElement': () => EmbedElement.instanceRuntimeType,
+  'HTMLFieldSetElement': () => FieldSetElement.instanceRuntimeType,
+  'HTMLFontElement': () => _HTMLFontElement.instanceRuntimeType,
+  'HTMLFormControlsCollection': () => HtmlFormControlsCollection.instanceRuntimeType,
+  'HTMLFormElement': () => FormElement.instanceRuntimeType,
+  'HTMLFrameElement': () => _HTMLFrameElement.instanceRuntimeType,
+  'HTMLFrameSetElement': () => _HTMLFrameSetElement.instanceRuntimeType,
+  'HTMLHRElement': () => HRElement.instanceRuntimeType,
+  'HTMLHeadElement': () => HeadElement.instanceRuntimeType,
+  'HTMLHeadingElement': () => HeadingElement.instanceRuntimeType,
+  'HTMLHtmlElement': () => HtmlHtmlElement.instanceRuntimeType,
+  'HTMLIFrameElement': () => IFrameElement.instanceRuntimeType,
+  'HTMLImageElement': () => ImageElement.instanceRuntimeType,
+  'HTMLInputElement': () => InputElement.instanceRuntimeType,
+  'HTMLKeygenElement': () => KeygenElement.instanceRuntimeType,
+  'HTMLLIElement': () => LIElement.instanceRuntimeType,
+  'HTMLLabelElement': () => LabelElement.instanceRuntimeType,
+  'HTMLLegendElement': () => LegendElement.instanceRuntimeType,
+  'HTMLLinkElement': () => LinkElement.instanceRuntimeType,
+  'HTMLMapElement': () => MapElement.instanceRuntimeType,
+  'HTMLMarqueeElement': () => _HTMLMarqueeElement.instanceRuntimeType,
+  'HTMLMediaElement': () => MediaElement.instanceRuntimeType,
+  'HTMLMenuElement': () => MenuElement.instanceRuntimeType,
+  'HTMLMenuItemElement': () => MenuItemElement.instanceRuntimeType,
+  'HTMLMetaElement': () => MetaElement.instanceRuntimeType,
+  'HTMLMeterElement': () => MeterElement.instanceRuntimeType,
+  'HTMLModElement': () => ModElement.instanceRuntimeType,
+  'HTMLOListElement': () => OListElement.instanceRuntimeType,
+  'HTMLObjectElement': () => ObjectElement.instanceRuntimeType,
+  'HTMLOptGroupElement': () => OptGroupElement.instanceRuntimeType,
+  'HTMLOptionElement': () => OptionElement.instanceRuntimeType,
+  'HTMLOptionsCollection': () => HtmlOptionsCollection.instanceRuntimeType,
+  'HTMLOutputElement': () => OutputElement.instanceRuntimeType,
+  'HTMLParagraphElement': () => ParagraphElement.instanceRuntimeType,
+  'HTMLParamElement': () => ParamElement.instanceRuntimeType,
+  'HTMLPictureElement': () => PictureElement.instanceRuntimeType,
+  'HTMLPreElement': () => PreElement.instanceRuntimeType,
+  'HTMLProgressElement': () => ProgressElement.instanceRuntimeType,
+  'HTMLQuoteElement': () => QuoteElement.instanceRuntimeType,
+  'HTMLScriptElement': () => ScriptElement.instanceRuntimeType,
+  'HTMLSelectElement': () => SelectElement.instanceRuntimeType,
+  'HTMLShadowElement': () => ShadowElement.instanceRuntimeType,
+  'HTMLSourceElement': () => SourceElement.instanceRuntimeType,
+  'HTMLSpanElement': () => SpanElement.instanceRuntimeType,
+  'HTMLStyleElement': () => StyleElement.instanceRuntimeType,
+  'HTMLTableCaptionElement': () => TableCaptionElement.instanceRuntimeType,
+  'HTMLTableCellElement': () => TableCellElement.instanceRuntimeType,
+  'HTMLTableColElement': () => TableColElement.instanceRuntimeType,
+  'HTMLTableElement': () => TableElement.instanceRuntimeType,
+  'HTMLTableRowElement': () => TableRowElement.instanceRuntimeType,
+  'HTMLTableSectionElement': () => TableSectionElement.instanceRuntimeType,
+  'HTMLTemplateElement': () => TemplateElement.instanceRuntimeType,
+  'HTMLTextAreaElement': () => TextAreaElement.instanceRuntimeType,
+  'HTMLTitleElement': () => TitleElement.instanceRuntimeType,
+  'HTMLTrackElement': () => TrackElement.instanceRuntimeType,
+  'HTMLUListElement': () => UListElement.instanceRuntimeType,
+  'HTMLUnknownElement': () => UnknownElement.instanceRuntimeType,
+  'HTMLVideoElement': () => VideoElement.instanceRuntimeType,
+  'HashChangeEvent': () => HashChangeEvent.instanceRuntimeType,
+  'Headers': () => Headers.instanceRuntimeType,
+  'History': () => History.instanceRuntimeType,
+  'ImageBitmap': () => ImageBitmap.instanceRuntimeType,
+  'ImageData': () => ImageData.instanceRuntimeType,
+  'InjectedScriptHost': () => InjectedScriptHost.instanceRuntimeType,
+  'InputDevice': () => InputDevice.instanceRuntimeType,
+  'Iterator': () => DomIterator.instanceRuntimeType,
+  'KeyboardEvent': () => KeyboardEvent.instanceRuntimeType,
+  'KeyframeEffect': () => KeyframeEffect.instanceRuntimeType,
+  'Location': () => Location.instanceRuntimeType,
+  'MIDIAccess': () => MidiAccess.instanceRuntimeType,
+  'MIDIConnectionEvent': () => MidiConnectionEvent.instanceRuntimeType,
+  'MIDIInput': () => MidiInput.instanceRuntimeType,
+  'MIDIInputMap': () => MidiInputMap.instanceRuntimeType,
+  'MIDIMessageEvent': () => MidiMessageEvent.instanceRuntimeType,
+  'MIDIOutput': () => MidiOutput.instanceRuntimeType,
+  'MIDIOutputMap': () => MidiOutputMap.instanceRuntimeType,
+  'MIDIPort': () => MidiPort.instanceRuntimeType,
+  'MediaController': () => MediaController.instanceRuntimeType,
+  'MediaDeviceInfo': () => MediaDeviceInfo.instanceRuntimeType,
+  'MediaDevices': () => MediaDevices.instanceRuntimeType,
+  'MediaEncryptedEvent': () => MediaEncryptedEvent.instanceRuntimeType,
+  'MediaError': () => MediaError.instanceRuntimeType,
+  'MediaKeyError': () => MediaKeyError.instanceRuntimeType,
+  'MediaKeyEvent': () => MediaKeyEvent.instanceRuntimeType,
+  'MediaKeyMessageEvent': () => MediaKeyMessageEvent.instanceRuntimeType,
+  'MediaKeySession': () => MediaKeySession.instanceRuntimeType,
+  'MediaKeyStatusMap': () => MediaKeyStatusMap.instanceRuntimeType,
+  'MediaKeySystemAccess': () => MediaKeySystemAccess.instanceRuntimeType,
+  'MediaKeys': () => MediaKeys.instanceRuntimeType,
+  'MediaList': () => MediaList.instanceRuntimeType,
+  'MediaQueryList': () => MediaQueryList.instanceRuntimeType,
+  'MediaQueryListEvent': () => MediaQueryListEvent.instanceRuntimeType,
+  'MediaSession': () => MediaSession.instanceRuntimeType,
+  'MediaSource': () => MediaSource.instanceRuntimeType,
+  'MediaStream': () => MediaStream.instanceRuntimeType,
+  'MediaStreamEvent': () => MediaStreamEvent.instanceRuntimeType,
+  'MediaStreamTrack': () => MediaStreamTrack.instanceRuntimeType,
+  'MediaStreamTrackEvent': () => MediaStreamTrackEvent.instanceRuntimeType,
+  'MemoryInfo': () => MemoryInfo.instanceRuntimeType,
+  'MessageChannel': () => MessageChannel.instanceRuntimeType,
+  'MessageEvent': () => MessageEvent.instanceRuntimeType,
+  'MessagePort': () => MessagePort.instanceRuntimeType,
+  'Metadata': () => Metadata.instanceRuntimeType,
+  'MimeType': () => MimeType.instanceRuntimeType,
+  'MimeTypeArray': () => MimeTypeArray.instanceRuntimeType,
+  'MouseEvent': () => MouseEvent.instanceRuntimeType,
+  'MutationEvent': () => _MutationEvent.instanceRuntimeType,
+  'MutationObserver': () => MutationObserver.instanceRuntimeType,
+  'MutationRecord': () => MutationRecord.instanceRuntimeType,
+  'NamedNodeMap': () => _NamedNodeMap.instanceRuntimeType,
+  'Navigator': () => Navigator.instanceRuntimeType,
+  'NavigatorCPU': () => NavigatorCpu.instanceRuntimeType,
+  'NavigatorID': () => NavigatorID.instanceRuntimeType,
+  'NavigatorLanguage': () => NavigatorLanguage.instanceRuntimeType,
+  'NavigatorOnLine': () => NavigatorOnLine.instanceRuntimeType,
+  'NavigatorStorageUtils': () => NavigatorStorageUtils.instanceRuntimeType,
+  'NavigatorUserMediaError': () => NavigatorUserMediaError.instanceRuntimeType,
+  'NetworkInformation': () => NetworkInformation.instanceRuntimeType,
+  'Node': () => Node.instanceRuntimeType,
+  'NodeFilter': () => NodeFilter.instanceRuntimeType,
+  'NodeIterator': () => NodeIterator.instanceRuntimeType,
+  'NodeList': () => NodeList.instanceRuntimeType,
+  'NonDocumentTypeChildNode': () => NonDocumentTypeChildNode.instanceRuntimeType,
+  'NonElementParentNode': () => NonElementParentNode.instanceRuntimeType,
+  'Notification': () => Notification.instanceRuntimeType,
+  'NotificationEvent': () => NotificationEvent.instanceRuntimeType,
+  'PagePopupController': () => _PagePopupController.instanceRuntimeType,
+  'PageTransitionEvent': () => PageTransitionEvent.instanceRuntimeType,
+  'ParentNode': () => ParentNode.instanceRuntimeType,
+  'PasswordCredential': () => PasswordCredential.instanceRuntimeType,
+  'Path2D': () => Path2D.instanceRuntimeType,
+  'Performance': () => Performance.instanceRuntimeType,
+  'PerformanceCompositeTiming': () => PerformanceCompositeTiming.instanceRuntimeType,
+  'PerformanceEntry': () => PerformanceEntry.instanceRuntimeType,
+  'PerformanceMark': () => PerformanceMark.instanceRuntimeType,
+  'PerformanceMeasure': () => PerformanceMeasure.instanceRuntimeType,
+  'PerformanceNavigation': () => PerformanceNavigation.instanceRuntimeType,
+  'PerformanceRenderTiming': () => PerformanceRenderTiming.instanceRuntimeType,
+  'PerformanceResourceTiming': () => PerformanceResourceTiming.instanceRuntimeType,
+  'PerformanceTiming': () => PerformanceTiming.instanceRuntimeType,
+  'PeriodicSyncEvent': () => PeriodicSyncEvent.instanceRuntimeType,
+  'PeriodicSyncManager': () => PeriodicSyncManager.instanceRuntimeType,
+  'PeriodicSyncRegistration': () => PeriodicSyncRegistration.instanceRuntimeType,
+  'PermissionStatus': () => PermissionStatus.instanceRuntimeType,
+  'Permissions': () => Permissions.instanceRuntimeType,
+  'Plugin': () => Plugin.instanceRuntimeType,
+  'PluginArray': () => PluginArray.instanceRuntimeType,
+  'PluginPlaceholderElement': () => PluginPlaceholderElement.instanceRuntimeType,
+  'PointerEvent': () => PointerEvent.instanceRuntimeType,
+  'PopStateEvent': () => PopStateEvent.instanceRuntimeType,
+  'PositionError': () => PositionError.instanceRuntimeType,
+  'PositionSensorVRDevice': () => PositionSensorVRDevice.instanceRuntimeType,
+  'Presentation': () => Presentation.instanceRuntimeType,
+  'PresentationAvailability': () => PresentationAvailability.instanceRuntimeType,
+  'PresentationSession': () => PresentationSession.instanceRuntimeType,
+  'ProcessingInstruction': () => ProcessingInstruction.instanceRuntimeType,
+  'ProgressEvent': () => ProgressEvent.instanceRuntimeType,
+  'PromiseRejectionEvent': () => PromiseRejectionEvent.instanceRuntimeType,
+  'PushEvent': () => PushEvent.instanceRuntimeType,
+  'PushManager': () => PushManager.instanceRuntimeType,
+  'PushMessageData': () => PushMessageData.instanceRuntimeType,
+  'PushSubscription': () => PushSubscription.instanceRuntimeType,
+  'RTCDTMFSender': () => RtcDtmfSender.instanceRuntimeType,
+  'RTCDTMFToneChangeEvent': () => RtcDtmfToneChangeEvent.instanceRuntimeType,
+  'RTCDataChannel': () => RtcDataChannel.instanceRuntimeType,
+  'RTCDataChannelEvent': () => RtcDataChannelEvent.instanceRuntimeType,
+  'RTCIceCandidate': () => RtcIceCandidate.instanceRuntimeType,
+  'RTCIceCandidateEvent': () => RtcIceCandidateEvent.instanceRuntimeType,
+  'RTCPeerConnection': () => RtcPeerConnection.instanceRuntimeType,
+  'RTCSessionDescription': () => RtcSessionDescription.instanceRuntimeType,
+  'RTCStatsReport': () => RtcStatsReport.instanceRuntimeType,
+  'RTCStatsResponse': () => RtcStatsResponse.instanceRuntimeType,
+  'RadioNodeList': () => _RadioNodeList.instanceRuntimeType,
+  'Range': () => Range.instanceRuntimeType,
+  'ReadableByteStream': () => ReadableByteStream.instanceRuntimeType,
+  'ReadableByteStreamReader': () => ReadableByteStreamReader.instanceRuntimeType,
+  'ReadableStream': () => ReadableStream.instanceRuntimeType,
+  'ReadableStreamReader': () => ReadableStreamReader.instanceRuntimeType,
+  'RelatedEvent': () => RelatedEvent.instanceRuntimeType,
+  'Request': () => _Request.instanceRuntimeType,
+  'ResourceProgressEvent': () => ResourceProgressEvent.instanceRuntimeType,
+  'Response': () => _Response.instanceRuntimeType,
+  'Screen': () => Screen.instanceRuntimeType,
+  'ScreenOrientation': () => ScreenOrientation.instanceRuntimeType,
+  'ScrollState': () => ScrollState.instanceRuntimeType,
+  'SecurityPolicyViolationEvent': () => SecurityPolicyViolationEvent.instanceRuntimeType,
+  'Selection': () => Selection.instanceRuntimeType,
+  'ServicePort': () => ServicePort.instanceRuntimeType,
+  'ServicePortCollection': () => ServicePortCollection.instanceRuntimeType,
+  'ServicePortConnectEvent': () => ServicePortConnectEvent.instanceRuntimeType,
+  'ServiceWorker': () => _ServiceWorker.instanceRuntimeType,
+  'ServiceWorkerContainer': () => ServiceWorkerContainer.instanceRuntimeType,
+  'ServiceWorkerGlobalScope': () => ServiceWorkerGlobalScope.instanceRuntimeType,
+  'ServiceWorkerMessageEvent': () => ServiceWorkerMessageEvent.instanceRuntimeType,
+  'ServiceWorkerRegistration': () => ServiceWorkerRegistration.instanceRuntimeType,
+  'ShadowRoot': () => ShadowRoot.instanceRuntimeType,
+  'SharedArrayBuffer': () => SharedArrayBuffer.instanceRuntimeType,
+  'SharedWorker': () => SharedWorker.instanceRuntimeType,
+  'SharedWorkerGlobalScope': () => SharedWorkerGlobalScope.instanceRuntimeType,
+  'SourceBuffer': () => SourceBuffer.instanceRuntimeType,
+  'SourceBufferList': () => SourceBufferList.instanceRuntimeType,
+  'SourceInfo': () => SourceInfo.instanceRuntimeType,
+  'SpeechGrammar': () => SpeechGrammar.instanceRuntimeType,
+  'SpeechGrammarList': () => SpeechGrammarList.instanceRuntimeType,
+  'SpeechRecognition': () => SpeechRecognition.instanceRuntimeType,
+  'SpeechRecognitionAlternative': () => SpeechRecognitionAlternative.instanceRuntimeType,
+  'SpeechRecognitionError': () => SpeechRecognitionError.instanceRuntimeType,
+  'SpeechRecognitionEvent': () => SpeechRecognitionEvent.instanceRuntimeType,
+  'SpeechRecognitionResult': () => SpeechRecognitionResult.instanceRuntimeType,
+  'SpeechRecognitionResultList': () => _SpeechRecognitionResultList.instanceRuntimeType,
+  'SpeechSynthesis': () => SpeechSynthesis.instanceRuntimeType,
+  'SpeechSynthesisEvent': () => SpeechSynthesisEvent.instanceRuntimeType,
+  'SpeechSynthesisUtterance': () => SpeechSynthesisUtterance.instanceRuntimeType,
+  'SpeechSynthesisVoice': () => SpeechSynthesisVoice.instanceRuntimeType,
+  'StashedMessagePort': () => StashedMessagePort.instanceRuntimeType,
+  'StashedPortCollection': () => StashedPortCollection.instanceRuntimeType,
+  'Storage': () => Storage.instanceRuntimeType,
+  'StorageEvent': () => StorageEvent.instanceRuntimeType,
+  'StorageInfo': () => StorageInfo.instanceRuntimeType,
+  'StorageQuota': () => StorageQuota.instanceRuntimeType,
+  'Stream': () => FileStream.instanceRuntimeType,
+  'StyleMedia': () => StyleMedia.instanceRuntimeType,
+  'StyleSheet': () => StyleSheet.instanceRuntimeType,
+  'StyleSheetList': () => _StyleSheetList.instanceRuntimeType,
+  'SubtleCrypto': () => _SubtleCrypto.instanceRuntimeType,
+  'SyncEvent': () => SyncEvent.instanceRuntimeType,
+  'SyncManager': () => SyncManager.instanceRuntimeType,
+  'SyncRegistration': () => SyncRegistration.instanceRuntimeType,
+  'Text': () => Text.instanceRuntimeType,
+  'TextEvent': () => TextEvent.instanceRuntimeType,
+  'TextMetrics': () => TextMetrics.instanceRuntimeType,
+  'TextTrack': () => TextTrack.instanceRuntimeType,
+  'TextTrackCue': () => TextTrackCue.instanceRuntimeType,
+  'TextTrackCueList': () => TextTrackCueList.instanceRuntimeType,
+  'TextTrackList': () => TextTrackList.instanceRuntimeType,
+  'TimeRanges': () => TimeRanges.instanceRuntimeType,
+  'Touch': () => Touch.instanceRuntimeType,
+  'TouchEvent': () => TouchEvent.instanceRuntimeType,
+  'TouchList': () => TouchList.instanceRuntimeType,
+  'TrackDefault': () => TrackDefault.instanceRuntimeType,
+  'TrackDefaultList': () => TrackDefaultList.instanceRuntimeType,
+  'TrackEvent': () => TrackEvent.instanceRuntimeType,
+  'TransitionEvent': () => TransitionEvent.instanceRuntimeType,
+  'TreeWalker': () => TreeWalker.instanceRuntimeType,
+  'UIEvent': () => UIEvent.instanceRuntimeType,
+  'URL': () => Url.instanceRuntimeType,
+  'URLUtils': () => UrlUtils.instanceRuntimeType,
+  'URLUtilsReadOnly': () => UrlUtilsReadOnly.instanceRuntimeType,
+  'VRDevice': () => VRDevice.instanceRuntimeType,
+  'VREyeParameters': () => VREyeParameters.instanceRuntimeType,
+  'VRFieldOfView': () => VRFieldOfView.instanceRuntimeType,
+  'VRPositionState': () => VRPositionState.instanceRuntimeType,
+  'VTTCue': () => VttCue.instanceRuntimeType,
+  'VTTRegion': () => VttRegion.instanceRuntimeType,
+  'VTTRegionList': () => VttRegionList.instanceRuntimeType,
+  'ValidityState': () => ValidityState.instanceRuntimeType,
+  'VideoPlaybackQuality': () => VideoPlaybackQuality.instanceRuntimeType,
+  'VideoTrack': () => VideoTrack.instanceRuntimeType,
+  'VideoTrackList': () => VideoTrackList.instanceRuntimeType,
+  'WebKitCSSMatrix': () => _WebKitCSSMatrix.instanceRuntimeType,
+  'WebSocket': () => WebSocket.instanceRuntimeType,
+  'WheelEvent': () => WheelEvent.instanceRuntimeType,
+  'Window': () => Window.instanceRuntimeType,
+  'WindowBase64': () => WindowBase64.instanceRuntimeType,
+  'WindowClient': () => WindowClient.instanceRuntimeType,
+  'WindowEventHandlers': () => WindowEventHandlers.instanceRuntimeType,
+  'WindowTimers': () => _WindowTimers.instanceRuntimeType,
+  'Worker': () => Worker.instanceRuntimeType,
+  'WorkerConsole': () => WorkerConsole.instanceRuntimeType,
+  'WorkerGlobalScope': () => WorkerGlobalScope.instanceRuntimeType,
+  'WorkerLocation': () => _WorkerLocation.instanceRuntimeType,
+  'WorkerNavigator': () => _WorkerNavigator.instanceRuntimeType,
+  'WorkerPerformance': () => WorkerPerformance.instanceRuntimeType,
+  'XMLDocument': () => XmlDocument.instanceRuntimeType,
+  'XMLHttpRequest': () => HttpRequest.instanceRuntimeType,
+  'XMLHttpRequestEventTarget': () => HttpRequestEventTarget.instanceRuntimeType,
+  'XMLHttpRequestProgressEvent': () => _XMLHttpRequestProgressEvent.instanceRuntimeType,
+  'XMLHttpRequestUpload': () => HttpRequestUpload.instanceRuntimeType,
+  'XMLSerializer': () => XmlSerializer.instanceRuntimeType,
+  'XPathEvaluator': () => XPathEvaluator.instanceRuntimeType,
+  'XPathExpression': () => XPathExpression.instanceRuntimeType,
+  'XPathNSResolver': () => XPathNSResolver.instanceRuntimeType,
+  'XPathResult': () => XPathResult.instanceRuntimeType,
+  'XSLTProcessor': () => XsltProcessor.instanceRuntimeType,
 
 };
 
 // TODO(leafp): We may want to move this elsewhere if html becomes
 // a package to avoid dartium depending on pkg:html.
+@Deprecated("Internal Use Only")
+getHtmlCreateType(String key) => _getType(key);
+
 Type _getType(String key) {
   var result;
 
@@ -669,534 +673,12 @@
   return null;
 }
 
-// FIXME: Can we make this private?
-@Deprecated("Internal Use Only")
-final htmlBlinkFunctionMap = {
-  'Animation': () => Animation.internalCreateAnimation,
-  'AnimationEffectReadOnly': () => AnimationEffectReadOnly.internalCreateAnimationEffectReadOnly,
-  'AnimationEffectTiming': () => AnimationEffectTiming.internalCreateAnimationEffectTiming,
-  'AnimationEvent': () => AnimationEvent.internalCreateAnimationEvent,
-  'AnimationPlayerEvent': () => AnimationPlayerEvent.internalCreateAnimationPlayerEvent,
-  'AnimationTimeline': () => AnimationTimeline.internalCreateAnimationTimeline,
-  'AppBannerPromptResult': () => AppBannerPromptResult.internalCreateAppBannerPromptResult,
-  'ApplicationCache': () => ApplicationCache.internalCreateApplicationCache,
-  'ApplicationCacheErrorEvent': () => ApplicationCacheErrorEvent.internalCreateApplicationCacheErrorEvent,
-  'Attr': () => _Attr.internalCreate_Attr,
-  'AudioTrack': () => AudioTrack.internalCreateAudioTrack,
-  'AudioTrackList': () => AudioTrackList.internalCreateAudioTrackList,
-  'AutocompleteErrorEvent': () => AutocompleteErrorEvent.internalCreateAutocompleteErrorEvent,
-  'BarProp': () => BarProp.internalCreateBarProp,
-  'BatteryManager': () => BatteryManager.internalCreateBatteryManager,
-  'BeforeInstallPromptEvent': () => BeforeInstallPromptEvent.internalCreateBeforeInstallPromptEvent,
-  'BeforeUnloadEvent': () => BeforeUnloadEvent.internalCreateBeforeUnloadEvent,
-  'Blob': () => Blob.internalCreateBlob,
-  'Bluetooth': () => Bluetooth.internalCreateBluetooth,
-  'BluetoothDevice': () => BluetoothDevice.internalCreateBluetoothDevice,
-  'BluetoothGATTCharacteristic': () => BluetoothGattCharacteristic.internalCreateBluetoothGattCharacteristic,
-  'BluetoothGATTRemoteServer': () => BluetoothGattRemoteServer.internalCreateBluetoothGattRemoteServer,
-  'BluetoothGATTService': () => BluetoothGattService.internalCreateBluetoothGattService,
-  'BluetoothUUID': () => BluetoothUuid.internalCreateBluetoothUuid,
-  'Body': () => Body.internalCreateBody,
-  'CDATASection': () => CDataSection.internalCreateCDataSection,
-  'CHROMIUMValuebuffer': () => ChromiumValuebuffer.internalCreateChromiumValuebuffer,
-  'CSS': () => Css.internalCreateCss,
-  'CSSCharsetRule': () => CssCharsetRule.internalCreateCssCharsetRule,
-  'CSSFontFaceRule': () => CssFontFaceRule.internalCreateCssFontFaceRule,
-  'CSSGroupingRule': () => CssGroupingRule.internalCreateCssGroupingRule,
-  'CSSImportRule': () => CssImportRule.internalCreateCssImportRule,
-  'CSSKeyframeRule': () => CssKeyframeRule.internalCreateCssKeyframeRule,
-  'CSSKeyframesRule': () => CssKeyframesRule.internalCreateCssKeyframesRule,
-  'CSSMediaRule': () => CssMediaRule.internalCreateCssMediaRule,
-  'CSSPageRule': () => CssPageRule.internalCreateCssPageRule,
-  'CSSRule': () => CssRule.internalCreateCssRule,
-  'CSSRuleList': () => _CssRuleList.internalCreate_CssRuleList,
-  'CSSStyleDeclaration': () => CssStyleDeclaration.internalCreateCssStyleDeclaration,
-  'CSSStyleRule': () => CssStyleRule.internalCreateCssStyleRule,
-  'CSSStyleSheet': () => CssStyleSheet.internalCreateCssStyleSheet,
-  'CSSSupportsRule': () => CssSupportsRule.internalCreateCssSupportsRule,
-  'CSSViewportRule': () => CssViewportRule.internalCreateCssViewportRule,
-  'Cache': () => _Cache.internalCreate_Cache,
-  'CacheStorage': () => CacheStorage.internalCreateCacheStorage,
-  'CanvasGradient': () => CanvasGradient.internalCreateCanvasGradient,
-  'CanvasPattern': () => CanvasPattern.internalCreateCanvasPattern,
-  'CanvasRenderingContext2D': () => CanvasRenderingContext2D.internalCreateCanvasRenderingContext2D,
-  'CharacterData': () => CharacterData.internalCreateCharacterData,
-  'CircularGeofencingRegion': () => CircularGeofencingRegion.internalCreateCircularGeofencingRegion,
-  'Client': () => Client.internalCreateClient,
-  'ClientRect': () => _ClientRect.internalCreate_ClientRect,
-  'ClientRectList': () => _ClientRectList.internalCreate_ClientRectList,
-  'Clients': () => Clients.internalCreateClients,
-  'ClipboardEvent': () => ClipboardEvent.internalCreateClipboardEvent,
-  'CloseEvent': () => CloseEvent.internalCreateCloseEvent,
-  'Comment': () => Comment.internalCreateComment,
-  'CompositionEvent': () => CompositionEvent.internalCreateCompositionEvent,
-  'CompositorProxy': () => CompositorProxy.internalCreateCompositorProxy,
-  'CompositorWorker': () => CompositorWorker.internalCreateCompositorWorker,
-  'CompositorWorkerGlobalScope': () => CompositorWorkerGlobalScope.internalCreateCompositorWorkerGlobalScope,
-  'Console': () => Console.internalCreateConsole,
-  'ConsoleBase': () => ConsoleBase.internalCreateConsoleBase,
-  'Coordinates': () => Coordinates.internalCreateCoordinates,
-  'Credential': () => Credential.internalCreateCredential,
-  'CredentialsContainer': () => CredentialsContainer.internalCreateCredentialsContainer,
-  'CrossOriginConnectEvent': () => CrossOriginConnectEvent.internalCreateCrossOriginConnectEvent,
-  'CrossOriginServiceWorkerClient': () => CrossOriginServiceWorkerClient.internalCreateCrossOriginServiceWorkerClient,
-  'Crypto': () => Crypto.internalCreateCrypto,
-  'CryptoKey': () => CryptoKey.internalCreateCryptoKey,
-  'CustomEvent': () => CustomEvent.internalCreateCustomEvent,
-  'DOMError': () => DomError.internalCreateDomError,
-  'DOMException': () => DomException.internalCreateDomException,
-  'DOMFileSystem': () => FileSystem.internalCreateFileSystem,
-  'DOMFileSystemSync': () => _DOMFileSystemSync.internalCreate_DOMFileSystemSync,
-  'DOMImplementation': () => DomImplementation.internalCreateDomImplementation,
-  'DOMMatrix': () => DomMatrix.internalCreateDomMatrix,
-  'DOMMatrixReadOnly': () => DomMatrixReadOnly.internalCreateDomMatrixReadOnly,
-  'DOMParser': () => DomParser.internalCreateDomParser,
-  'DOMPoint': () => DomPoint.internalCreateDomPoint,
-  'DOMPointReadOnly': () => DomPointReadOnly.internalCreateDomPointReadOnly,
-  'DOMRect': () => _DomRect.internalCreate_DomRect,
-  'DOMRectReadOnly': () => DomRectReadOnly.internalCreateDomRectReadOnly,
-  'DOMSettableTokenList': () => DomSettableTokenList.internalCreateDomSettableTokenList,
-  'DOMStringList': () => DomStringList.internalCreateDomStringList,
-  'DOMTokenList': () => DomTokenList.internalCreateDomTokenList,
-  'DataTransfer': () => DataTransfer.internalCreateDataTransfer,
-  'DataTransferItem': () => DataTransferItem.internalCreateDataTransferItem,
-  'DataTransferItemList': () => DataTransferItemList.internalCreateDataTransferItemList,
-  'DedicatedWorkerGlobalScope': () => DedicatedWorkerGlobalScope.internalCreateDedicatedWorkerGlobalScope,
-  'DefaultSessionStartEvent': () => DefaultSessionStartEvent.internalCreateDefaultSessionStartEvent,
-  'DeprecatedStorageInfo': () => DeprecatedStorageInfo.internalCreateDeprecatedStorageInfo,
-  'DeprecatedStorageQuota': () => DeprecatedStorageQuota.internalCreateDeprecatedStorageQuota,
-  'DeviceAcceleration': () => DeviceAcceleration.internalCreateDeviceAcceleration,
-  'DeviceLightEvent': () => DeviceLightEvent.internalCreateDeviceLightEvent,
-  'DeviceMotionEvent': () => DeviceMotionEvent.internalCreateDeviceMotionEvent,
-  'DeviceOrientationEvent': () => DeviceOrientationEvent.internalCreateDeviceOrientationEvent,
-  'DeviceRotationRate': () => DeviceRotationRate.internalCreateDeviceRotationRate,
-  'DirectoryEntry': () => DirectoryEntry.internalCreateDirectoryEntry,
-  'DirectoryEntrySync': () => _DirectoryEntrySync.internalCreate_DirectoryEntrySync,
-  'DirectoryReader': () => DirectoryReader.internalCreateDirectoryReader,
-  'DirectoryReaderSync': () => _DirectoryReaderSync.internalCreate_DirectoryReaderSync,
-  'Document': () => Document.internalCreateDocument,
-  'DocumentFragment': () => DocumentFragment.internalCreateDocumentFragment,
-  'DocumentType': () => _DocumentType.internalCreate_DocumentType,
-  'EffectModel': () => EffectModel.internalCreateEffectModel,
-  'Element': () => Element.internalCreateElement,
-  'Entry': () => Entry.internalCreateEntry,
-  'EntrySync': () => _EntrySync.internalCreate_EntrySync,
-  'ErrorEvent': () => ErrorEvent.internalCreateErrorEvent,
-  'Event': () => Event.internalCreateEvent,
-  'EventSource': () => EventSource.internalCreateEventSource,
-  'EventTarget': () => EventTarget.internalCreateEventTarget,
-  'ExtendableEvent': () => ExtendableEvent.internalCreateExtendableEvent,
-  'FederatedCredential': () => FederatedCredential.internalCreateFederatedCredential,
-  'FetchEvent': () => FetchEvent.internalCreateFetchEvent,
-  'File': () => File.internalCreateFile,
-  'FileEntry': () => FileEntry.internalCreateFileEntry,
-  'FileEntrySync': () => _FileEntrySync.internalCreate_FileEntrySync,
-  'FileError': () => FileError.internalCreateFileError,
-  'FileList': () => FileList.internalCreateFileList,
-  'FileReader': () => FileReader.internalCreateFileReader,
-  'FileReaderSync': () => _FileReaderSync.internalCreate_FileReaderSync,
-  'FileWriter': () => FileWriter.internalCreateFileWriter,
-  'FileWriterSync': () => _FileWriterSync.internalCreate_FileWriterSync,
-  'FocusEvent': () => FocusEvent.internalCreateFocusEvent,
-  'FontFace': () => FontFace.internalCreateFontFace,
-  'FontFaceSet': () => FontFaceSet.internalCreateFontFaceSet,
-  'FontFaceSetLoadEvent': () => FontFaceSetLoadEvent.internalCreateFontFaceSetLoadEvent,
-  'FormData': () => FormData.internalCreateFormData,
-  'Gamepad': () => Gamepad.internalCreateGamepad,
-  'GamepadButton': () => GamepadButton.internalCreateGamepadButton,
-  'GamepadEvent': () => GamepadEvent.internalCreateGamepadEvent,
-  'GamepadList': () => _GamepadList.internalCreate_GamepadList,
-  'Geofencing': () => Geofencing.internalCreateGeofencing,
-  'GeofencingEvent': () => GeofencingEvent.internalCreateGeofencingEvent,
-  'GeofencingRegion': () => GeofencingRegion.internalCreateGeofencingRegion,
-  'Geolocation': () => Geolocation.internalCreateGeolocation,
-  'Geoposition': () => Geoposition.internalCreateGeoposition,
-  'HMDVRDevice': () => HmdvrDevice.internalCreateHmdvrDevice,
-  'HTMLAllCollection': () => _HTMLAllCollection.internalCreate_HTMLAllCollection,
-  'HTMLAnchorElement': () => AnchorElement.internalCreateAnchorElement,
-  'HTMLAppletElement': () => _HTMLAppletElement.internalCreate_HTMLAppletElement,
-  'HTMLAreaElement': () => AreaElement.internalCreateAreaElement,
-  'HTMLAudioElement': () => AudioElement.internalCreateAudioElement,
-  'HTMLBRElement': () => BRElement.internalCreateBRElement,
-  'HTMLBaseElement': () => BaseElement.internalCreateBaseElement,
-  'HTMLBodyElement': () => BodyElement.internalCreateBodyElement,
-  'HTMLButtonElement': () => ButtonElement.internalCreateButtonElement,
-  'HTMLCanvasElement': () => CanvasElement.internalCreateCanvasElement,
-  'HTMLCollection': () => HtmlCollection.internalCreateHtmlCollection,
-  'HTMLContentElement': () => ContentElement.internalCreateContentElement,
-  'HTMLDListElement': () => DListElement.internalCreateDListElement,
-  'HTMLDataListElement': () => DataListElement.internalCreateDataListElement,
-  'HTMLDetailsElement': () => DetailsElement.internalCreateDetailsElement,
-  'HTMLDialogElement': () => DialogElement.internalCreateDialogElement,
-  'HTMLDirectoryElement': () => _HTMLDirectoryElement.internalCreate_HTMLDirectoryElement,
-  'HTMLDivElement': () => DivElement.internalCreateDivElement,
-  'HTMLDocument': () => HtmlDocument.internalCreateHtmlDocument,
-  'HTMLElement': () => HtmlElement.internalCreateHtmlElement,
-  'HTMLEmbedElement': () => EmbedElement.internalCreateEmbedElement,
-  'HTMLFieldSetElement': () => FieldSetElement.internalCreateFieldSetElement,
-  'HTMLFontElement': () => _HTMLFontElement.internalCreate_HTMLFontElement,
-  'HTMLFormControlsCollection': () => HtmlFormControlsCollection.internalCreateHtmlFormControlsCollection,
-  'HTMLFormElement': () => FormElement.internalCreateFormElement,
-  'HTMLFrameElement': () => _HTMLFrameElement.internalCreate_HTMLFrameElement,
-  'HTMLFrameSetElement': () => _HTMLFrameSetElement.internalCreate_HTMLFrameSetElement,
-  'HTMLHRElement': () => HRElement.internalCreateHRElement,
-  'HTMLHeadElement': () => HeadElement.internalCreateHeadElement,
-  'HTMLHeadingElement': () => HeadingElement.internalCreateHeadingElement,
-  'HTMLHtmlElement': () => HtmlHtmlElement.internalCreateHtmlHtmlElement,
-  'HTMLIFrameElement': () => IFrameElement.internalCreateIFrameElement,
-  'HTMLImageElement': () => ImageElement.internalCreateImageElement,
-  'HTMLInputElement': () => InputElement.internalCreateInputElement,
-  'HTMLKeygenElement': () => KeygenElement.internalCreateKeygenElement,
-  'HTMLLIElement': () => LIElement.internalCreateLIElement,
-  'HTMLLabelElement': () => LabelElement.internalCreateLabelElement,
-  'HTMLLegendElement': () => LegendElement.internalCreateLegendElement,
-  'HTMLLinkElement': () => LinkElement.internalCreateLinkElement,
-  'HTMLMapElement': () => MapElement.internalCreateMapElement,
-  'HTMLMarqueeElement': () => _HTMLMarqueeElement.internalCreate_HTMLMarqueeElement,
-  'HTMLMediaElement': () => MediaElement.internalCreateMediaElement,
-  'HTMLMenuElement': () => MenuElement.internalCreateMenuElement,
-  'HTMLMenuItemElement': () => MenuItemElement.internalCreateMenuItemElement,
-  'HTMLMetaElement': () => MetaElement.internalCreateMetaElement,
-  'HTMLMeterElement': () => MeterElement.internalCreateMeterElement,
-  'HTMLModElement': () => ModElement.internalCreateModElement,
-  'HTMLOListElement': () => OListElement.internalCreateOListElement,
-  'HTMLObjectElement': () => ObjectElement.internalCreateObjectElement,
-  'HTMLOptGroupElement': () => OptGroupElement.internalCreateOptGroupElement,
-  'HTMLOptionElement': () => OptionElement.internalCreateOptionElement,
-  'HTMLOptionsCollection': () => HtmlOptionsCollection.internalCreateHtmlOptionsCollection,
-  'HTMLOutputElement': () => OutputElement.internalCreateOutputElement,
-  'HTMLParagraphElement': () => ParagraphElement.internalCreateParagraphElement,
-  'HTMLParamElement': () => ParamElement.internalCreateParamElement,
-  'HTMLPictureElement': () => PictureElement.internalCreatePictureElement,
-  'HTMLPreElement': () => PreElement.internalCreatePreElement,
-  'HTMLProgressElement': () => ProgressElement.internalCreateProgressElement,
-  'HTMLQuoteElement': () => QuoteElement.internalCreateQuoteElement,
-  'HTMLScriptElement': () => ScriptElement.internalCreateScriptElement,
-  'HTMLSelectElement': () => SelectElement.internalCreateSelectElement,
-  'HTMLShadowElement': () => ShadowElement.internalCreateShadowElement,
-  'HTMLSourceElement': () => SourceElement.internalCreateSourceElement,
-  'HTMLSpanElement': () => SpanElement.internalCreateSpanElement,
-  'HTMLStyleElement': () => StyleElement.internalCreateStyleElement,
-  'HTMLTableCaptionElement': () => TableCaptionElement.internalCreateTableCaptionElement,
-  'HTMLTableCellElement': () => TableCellElement.internalCreateTableCellElement,
-  'HTMLTableColElement': () => TableColElement.internalCreateTableColElement,
-  'HTMLTableElement': () => TableElement.internalCreateTableElement,
-  'HTMLTableRowElement': () => TableRowElement.internalCreateTableRowElement,
-  'HTMLTableSectionElement': () => TableSectionElement.internalCreateTableSectionElement,
-  'HTMLTemplateElement': () => TemplateElement.internalCreateTemplateElement,
-  'HTMLTextAreaElement': () => TextAreaElement.internalCreateTextAreaElement,
-  'HTMLTitleElement': () => TitleElement.internalCreateTitleElement,
-  'HTMLTrackElement': () => TrackElement.internalCreateTrackElement,
-  'HTMLUListElement': () => UListElement.internalCreateUListElement,
-  'HTMLUnknownElement': () => UnknownElement.internalCreateUnknownElement,
-  'HTMLVideoElement': () => VideoElement.internalCreateVideoElement,
-  'HashChangeEvent': () => HashChangeEvent.internalCreateHashChangeEvent,
-  'Headers': () => Headers.internalCreateHeaders,
-  'History': () => History.internalCreateHistory,
-  'ImageBitmap': () => ImageBitmap.internalCreateImageBitmap,
-  'ImageData': () => ImageData.internalCreateImageData,
-  'InjectedScriptHost': () => InjectedScriptHost.internalCreateInjectedScriptHost,
-  'InputDevice': () => InputDevice.internalCreateInputDevice,
-  'Iterator': () => DomIterator.internalCreateDomIterator,
-  'KeyboardEvent': () => KeyboardEvent.internalCreateKeyboardEvent,
-  'KeyframeEffect': () => KeyframeEffect.internalCreateKeyframeEffect,
-  'Location': () => Location.internalCreateLocation,
-  'MIDIAccess': () => MidiAccess.internalCreateMidiAccess,
-  'MIDIConnectionEvent': () => MidiConnectionEvent.internalCreateMidiConnectionEvent,
-  'MIDIInput': () => MidiInput.internalCreateMidiInput,
-  'MIDIInputMap': () => MidiInputMap.internalCreateMidiInputMap,
-  'MIDIMessageEvent': () => MidiMessageEvent.internalCreateMidiMessageEvent,
-  'MIDIOutput': () => MidiOutput.internalCreateMidiOutput,
-  'MIDIOutputMap': () => MidiOutputMap.internalCreateMidiOutputMap,
-  'MIDIPort': () => MidiPort.internalCreateMidiPort,
-  'MediaController': () => MediaController.internalCreateMediaController,
-  'MediaDeviceInfo': () => MediaDeviceInfo.internalCreateMediaDeviceInfo,
-  'MediaDevices': () => MediaDevices.internalCreateMediaDevices,
-  'MediaEncryptedEvent': () => MediaEncryptedEvent.internalCreateMediaEncryptedEvent,
-  'MediaError': () => MediaError.internalCreateMediaError,
-  'MediaKeyError': () => MediaKeyError.internalCreateMediaKeyError,
-  'MediaKeyEvent': () => MediaKeyEvent.internalCreateMediaKeyEvent,
-  'MediaKeyMessageEvent': () => MediaKeyMessageEvent.internalCreateMediaKeyMessageEvent,
-  'MediaKeySession': () => MediaKeySession.internalCreateMediaKeySession,
-  'MediaKeyStatusMap': () => MediaKeyStatusMap.internalCreateMediaKeyStatusMap,
-  'MediaKeySystemAccess': () => MediaKeySystemAccess.internalCreateMediaKeySystemAccess,
-  'MediaKeys': () => MediaKeys.internalCreateMediaKeys,
-  'MediaList': () => MediaList.internalCreateMediaList,
-  'MediaQueryList': () => MediaQueryList.internalCreateMediaQueryList,
-  'MediaQueryListEvent': () => MediaQueryListEvent.internalCreateMediaQueryListEvent,
-  'MediaSession': () => MediaSession.internalCreateMediaSession,
-  'MediaSource': () => MediaSource.internalCreateMediaSource,
-  'MediaStream': () => MediaStream.internalCreateMediaStream,
-  'MediaStreamEvent': () => MediaStreamEvent.internalCreateMediaStreamEvent,
-  'MediaStreamTrack': () => MediaStreamTrack.internalCreateMediaStreamTrack,
-  'MediaStreamTrackEvent': () => MediaStreamTrackEvent.internalCreateMediaStreamTrackEvent,
-  'MemoryInfo': () => MemoryInfo.internalCreateMemoryInfo,
-  'MessageChannel': () => MessageChannel.internalCreateMessageChannel,
-  'MessageEvent': () => MessageEvent.internalCreateMessageEvent,
-  'MessagePort': () => MessagePort.internalCreateMessagePort,
-  'Metadata': () => Metadata.internalCreateMetadata,
-  'MimeType': () => MimeType.internalCreateMimeType,
-  'MimeTypeArray': () => MimeTypeArray.internalCreateMimeTypeArray,
-  'MouseEvent': () => MouseEvent.internalCreateMouseEvent,
-  'MutationEvent': () => _MutationEvent.internalCreate_MutationEvent,
-  'MutationObserver': () => MutationObserver.internalCreateMutationObserver,
-  'MutationRecord': () => MutationRecord.internalCreateMutationRecord,
-  'NamedNodeMap': () => _NamedNodeMap.internalCreate_NamedNodeMap,
-  'Navigator': () => Navigator.internalCreateNavigator,
-  'NavigatorStorageUtils': () => NavigatorStorageUtils.internalCreateNavigatorStorageUtils,
-  'NavigatorUserMediaError': () => NavigatorUserMediaError.internalCreateNavigatorUserMediaError,
-  'NetworkInformation': () => NetworkInformation.internalCreateNetworkInformation,
-  'Node': () => Node.internalCreateNode,
-  'NodeFilter': () => NodeFilter.internalCreateNodeFilter,
-  'NodeIterator': () => NodeIterator.internalCreateNodeIterator,
-  'NodeList': () => NodeList.internalCreateNodeList,
-  'NonDocumentTypeChildNode': () => NonDocumentTypeChildNode.internalCreateNonDocumentTypeChildNode,
-  'NonElementParentNode': () => NonElementParentNode.internalCreateNonElementParentNode,
-  'Notification': () => Notification.internalCreateNotification,
-  'NotificationEvent': () => NotificationEvent.internalCreateNotificationEvent,
-  'PagePopupController': () => _PagePopupController.internalCreate_PagePopupController,
-  'PageTransitionEvent': () => PageTransitionEvent.internalCreatePageTransitionEvent,
-  'PasswordCredential': () => PasswordCredential.internalCreatePasswordCredential,
-  'Path2D': () => Path2D.internalCreatePath2D,
-  'Performance': () => Performance.internalCreatePerformance,
-  'PerformanceCompositeTiming': () => PerformanceCompositeTiming.internalCreatePerformanceCompositeTiming,
-  'PerformanceEntry': () => PerformanceEntry.internalCreatePerformanceEntry,
-  'PerformanceMark': () => PerformanceMark.internalCreatePerformanceMark,
-  'PerformanceMeasure': () => PerformanceMeasure.internalCreatePerformanceMeasure,
-  'PerformanceNavigation': () => PerformanceNavigation.internalCreatePerformanceNavigation,
-  'PerformanceRenderTiming': () => PerformanceRenderTiming.internalCreatePerformanceRenderTiming,
-  'PerformanceResourceTiming': () => PerformanceResourceTiming.internalCreatePerformanceResourceTiming,
-  'PerformanceTiming': () => PerformanceTiming.internalCreatePerformanceTiming,
-  'PeriodicSyncEvent': () => PeriodicSyncEvent.internalCreatePeriodicSyncEvent,
-  'PeriodicSyncManager': () => PeriodicSyncManager.internalCreatePeriodicSyncManager,
-  'PeriodicSyncRegistration': () => PeriodicSyncRegistration.internalCreatePeriodicSyncRegistration,
-  'PermissionStatus': () => PermissionStatus.internalCreatePermissionStatus,
-  'Permissions': () => Permissions.internalCreatePermissions,
-  'Plugin': () => Plugin.internalCreatePlugin,
-  'PluginArray': () => PluginArray.internalCreatePluginArray,
-  'PluginPlaceholderElement': () => PluginPlaceholderElement.internalCreatePluginPlaceholderElement,
-  'PointerEvent': () => PointerEvent.internalCreatePointerEvent,
-  'PopStateEvent': () => PopStateEvent.internalCreatePopStateEvent,
-  'PositionError': () => PositionError.internalCreatePositionError,
-  'PositionSensorVRDevice': () => PositionSensorVRDevice.internalCreatePositionSensorVRDevice,
-  'Presentation': () => Presentation.internalCreatePresentation,
-  'PresentationAvailability': () => PresentationAvailability.internalCreatePresentationAvailability,
-  'PresentationSession': () => PresentationSession.internalCreatePresentationSession,
-  'ProcessingInstruction': () => ProcessingInstruction.internalCreateProcessingInstruction,
-  'ProgressEvent': () => ProgressEvent.internalCreateProgressEvent,
-  'PromiseRejectionEvent': () => PromiseRejectionEvent.internalCreatePromiseRejectionEvent,
-  'PushEvent': () => PushEvent.internalCreatePushEvent,
-  'PushManager': () => PushManager.internalCreatePushManager,
-  'PushMessageData': () => PushMessageData.internalCreatePushMessageData,
-  'PushSubscription': () => PushSubscription.internalCreatePushSubscription,
-  'RTCDTMFSender': () => RtcDtmfSender.internalCreateRtcDtmfSender,
-  'RTCDTMFToneChangeEvent': () => RtcDtmfToneChangeEvent.internalCreateRtcDtmfToneChangeEvent,
-  'RTCDataChannel': () => RtcDataChannel.internalCreateRtcDataChannel,
-  'RTCDataChannelEvent': () => RtcDataChannelEvent.internalCreateRtcDataChannelEvent,
-  'RTCIceCandidate': () => RtcIceCandidate.internalCreateRtcIceCandidate,
-  'RTCIceCandidateEvent': () => RtcIceCandidateEvent.internalCreateRtcIceCandidateEvent,
-  'RTCPeerConnection': () => RtcPeerConnection.internalCreateRtcPeerConnection,
-  'RTCSessionDescription': () => RtcSessionDescription.internalCreateRtcSessionDescription,
-  'RTCStatsReport': () => RtcStatsReport.internalCreateRtcStatsReport,
-  'RTCStatsResponse': () => RtcStatsResponse.internalCreateRtcStatsResponse,
-  'RadioNodeList': () => _RadioNodeList.internalCreate_RadioNodeList,
-  'Range': () => Range.internalCreateRange,
-  'ReadableByteStream': () => ReadableByteStream.internalCreateReadableByteStream,
-  'ReadableByteStreamReader': () => ReadableByteStreamReader.internalCreateReadableByteStreamReader,
-  'ReadableStream': () => ReadableStream.internalCreateReadableStream,
-  'ReadableStreamReader': () => ReadableStreamReader.internalCreateReadableStreamReader,
-  'RelatedEvent': () => RelatedEvent.internalCreateRelatedEvent,
-  'Request': () => _Request.internalCreate_Request,
-  'ResourceProgressEvent': () => ResourceProgressEvent.internalCreateResourceProgressEvent,
-  'Response': () => _Response.internalCreate_Response,
-  'Screen': () => Screen.internalCreateScreen,
-  'ScreenOrientation': () => ScreenOrientation.internalCreateScreenOrientation,
-  'ScrollState': () => ScrollState.internalCreateScrollState,
-  'SecurityPolicyViolationEvent': () => SecurityPolicyViolationEvent.internalCreateSecurityPolicyViolationEvent,
-  'Selection': () => Selection.internalCreateSelection,
-  'ServicePort': () => ServicePort.internalCreateServicePort,
-  'ServicePortCollection': () => ServicePortCollection.internalCreateServicePortCollection,
-  'ServicePortConnectEvent': () => ServicePortConnectEvent.internalCreateServicePortConnectEvent,
-  'ServiceWorker': () => _ServiceWorker.internalCreate_ServiceWorker,
-  'ServiceWorkerContainer': () => ServiceWorkerContainer.internalCreateServiceWorkerContainer,
-  'ServiceWorkerGlobalScope': () => ServiceWorkerGlobalScope.internalCreateServiceWorkerGlobalScope,
-  'ServiceWorkerMessageEvent': () => ServiceWorkerMessageEvent.internalCreateServiceWorkerMessageEvent,
-  'ServiceWorkerRegistration': () => ServiceWorkerRegistration.internalCreateServiceWorkerRegistration,
-  'ShadowRoot': () => ShadowRoot.internalCreateShadowRoot,
-  'SharedArrayBuffer': () => SharedArrayBuffer.internalCreateSharedArrayBuffer,
-  'SharedWorker': () => SharedWorker.internalCreateSharedWorker,
-  'SharedWorkerGlobalScope': () => SharedWorkerGlobalScope.internalCreateSharedWorkerGlobalScope,
-  'SourceBuffer': () => SourceBuffer.internalCreateSourceBuffer,
-  'SourceBufferList': () => SourceBufferList.internalCreateSourceBufferList,
-  'SourceInfo': () => SourceInfo.internalCreateSourceInfo,
-  'SpeechGrammar': () => SpeechGrammar.internalCreateSpeechGrammar,
-  'SpeechGrammarList': () => SpeechGrammarList.internalCreateSpeechGrammarList,
-  'SpeechRecognition': () => SpeechRecognition.internalCreateSpeechRecognition,
-  'SpeechRecognitionAlternative': () => SpeechRecognitionAlternative.internalCreateSpeechRecognitionAlternative,
-  'SpeechRecognitionError': () => SpeechRecognitionError.internalCreateSpeechRecognitionError,
-  'SpeechRecognitionEvent': () => SpeechRecognitionEvent.internalCreateSpeechRecognitionEvent,
-  'SpeechRecognitionResult': () => SpeechRecognitionResult.internalCreateSpeechRecognitionResult,
-  'SpeechRecognitionResultList': () => _SpeechRecognitionResultList.internalCreate_SpeechRecognitionResultList,
-  'SpeechSynthesis': () => SpeechSynthesis.internalCreateSpeechSynthesis,
-  'SpeechSynthesisEvent': () => SpeechSynthesisEvent.internalCreateSpeechSynthesisEvent,
-  'SpeechSynthesisUtterance': () => SpeechSynthesisUtterance.internalCreateSpeechSynthesisUtterance,
-  'SpeechSynthesisVoice': () => SpeechSynthesisVoice.internalCreateSpeechSynthesisVoice,
-  'StashedMessagePort': () => StashedMessagePort.internalCreateStashedMessagePort,
-  'StashedPortCollection': () => StashedPortCollection.internalCreateStashedPortCollection,
-  'Storage': () => Storage.internalCreateStorage,
-  'StorageEvent': () => StorageEvent.internalCreateStorageEvent,
-  'StorageInfo': () => StorageInfo.internalCreateStorageInfo,
-  'StorageQuota': () => StorageQuota.internalCreateStorageQuota,
-  'Stream': () => FileStream.internalCreateFileStream,
-  'StyleMedia': () => StyleMedia.internalCreateStyleMedia,
-  'StyleSheet': () => StyleSheet.internalCreateStyleSheet,
-  'StyleSheetList': () => _StyleSheetList.internalCreate_StyleSheetList,
-  'SubtleCrypto': () => _SubtleCrypto.internalCreate_SubtleCrypto,
-  'SyncEvent': () => SyncEvent.internalCreateSyncEvent,
-  'SyncManager': () => SyncManager.internalCreateSyncManager,
-  'SyncRegistration': () => SyncRegistration.internalCreateSyncRegistration,
-  'Text': () => Text.internalCreateText,
-  'TextEvent': () => TextEvent.internalCreateTextEvent,
-  'TextMetrics': () => TextMetrics.internalCreateTextMetrics,
-  'TextTrack': () => TextTrack.internalCreateTextTrack,
-  'TextTrackCue': () => TextTrackCue.internalCreateTextTrackCue,
-  'TextTrackCueList': () => TextTrackCueList.internalCreateTextTrackCueList,
-  'TextTrackList': () => TextTrackList.internalCreateTextTrackList,
-  'TimeRanges': () => TimeRanges.internalCreateTimeRanges,
-  'Touch': () => Touch.internalCreateTouch,
-  'TouchEvent': () => TouchEvent.internalCreateTouchEvent,
-  'TouchList': () => TouchList.internalCreateTouchList,
-  'TrackDefault': () => TrackDefault.internalCreateTrackDefault,
-  'TrackDefaultList': () => TrackDefaultList.internalCreateTrackDefaultList,
-  'TrackEvent': () => TrackEvent.internalCreateTrackEvent,
-  'TransitionEvent': () => TransitionEvent.internalCreateTransitionEvent,
-  'TreeWalker': () => TreeWalker.internalCreateTreeWalker,
-  'UIEvent': () => UIEvent.internalCreateUIEvent,
-  'URL': () => Url.internalCreateUrl,
-  'VRDevice': () => VRDevice.internalCreateVRDevice,
-  'VREyeParameters': () => VREyeParameters.internalCreateVREyeParameters,
-  'VRFieldOfView': () => VRFieldOfView.internalCreateVRFieldOfView,
-  'VRPositionState': () => VRPositionState.internalCreateVRPositionState,
-  'VTTCue': () => VttCue.internalCreateVttCue,
-  'VTTRegion': () => VttRegion.internalCreateVttRegion,
-  'VTTRegionList': () => VttRegionList.internalCreateVttRegionList,
-  'ValidityState': () => ValidityState.internalCreateValidityState,
-  'VideoPlaybackQuality': () => VideoPlaybackQuality.internalCreateVideoPlaybackQuality,
-  'VideoTrack': () => VideoTrack.internalCreateVideoTrack,
-  'VideoTrackList': () => VideoTrackList.internalCreateVideoTrackList,
-  'WebKitCSSMatrix': () => _WebKitCSSMatrix.internalCreate_WebKitCSSMatrix,
-  'WebSocket': () => WebSocket.internalCreateWebSocket,
-  'WheelEvent': () => WheelEvent.internalCreateWheelEvent,
-  'Window': () => Window.internalCreateWindow,
-  'WindowClient': () => WindowClient.internalCreateWindowClient,
-  'Worker': () => Worker.internalCreateWorker,
-  'WorkerConsole': () => WorkerConsole.internalCreateWorkerConsole,
-  'WorkerGlobalScope': () => WorkerGlobalScope.internalCreateWorkerGlobalScope,
-  'WorkerLocation': () => _WorkerLocation.internalCreate_WorkerLocation,
-  'WorkerNavigator': () => _WorkerNavigator.internalCreate_WorkerNavigator,
-  'WorkerPerformance': () => WorkerPerformance.internalCreateWorkerPerformance,
-  'XMLDocument': () => XmlDocument.internalCreateXmlDocument,
-  'XMLHttpRequest': () => HttpRequest.internalCreateHttpRequest,
-  'XMLHttpRequestEventTarget': () => HttpRequestEventTarget.internalCreateHttpRequestEventTarget,
-  'XMLHttpRequestProgressEvent': () => _XMLHttpRequestProgressEvent.internalCreate_XMLHttpRequestProgressEvent,
-  'XMLHttpRequestUpload': () => HttpRequestUpload.internalCreateHttpRequestUpload,
-  'XMLSerializer': () => XmlSerializer.internalCreateXmlSerializer,
-  'XPathEvaluator': () => XPathEvaluator.internalCreateXPathEvaluator,
-  'XPathExpression': () => XPathExpression.internalCreateXPathExpression,
-  'XPathNSResolver': () => XPathNSResolver.internalCreateXPathNSResolver,
-  'XPathResult': () => XPathResult.internalCreateXPathResult,
-  'XSLTProcessor': () => XsltProcessor.internalCreateXsltProcessor,
-  'polymer-element': () => HtmlElement.internalCreateHtmlElement,
-
-};
-
-// TODO(terry): We may want to move this elsewhere if html becomes
-// a package to avoid dartium depending on pkg:html.
-@Deprecated("Internal Use Only")
-getHtmlCreateFunction(String key) {
-  var result;
-
-  // TODO(vsm): Add Cross Frame and JS types here as well.
-
-  // Check the html library.
-  result = _getHtmlFunction(key);
-  if (result != null) {
-    return result;
+// TODO(jacobr): it would be nice to place this in a consistent place for dart2js and dartium.
+_convertNativeToDart_XHR_Response(o) {
+  if (o is Document) {
+    return o;
   }
-
-  // Check the web gl library.
-  result = _getWebGlFunction(key);
-  if (result != null) {
-    return result;
-  }
-
-  // Check the indexed db library.
-  result = _getIndexDbFunction(key);
-  if (result != null) {
-    return result;
-  }
-
-  // Check the web audio library.
-  result = _getWebAudioFunction(key);
-  if (result != null) {
-    return result;
-  }
-
-  // Check the web sql library.
-  result = _getWebSqlFunction(key);
-  if (result != null) {
-    return result;
-  }
-
-  // Check the svg library.
-  result = _getSvgFunction(key);
-  if (result != null) {
-    return result;
-  }
-
-  return null;
-}
-
-Function _getHtmlFunction(String key) {
-  if (htmlBlinkFunctionMap.containsKey(key)) {
-    return htmlBlinkFunctionMap[key]();
-  }
-  return null;
-}
-
-Function _getWebGlFunction(String key) {
-  if (web_glBlinkFunctionMap.containsKey(key)) {
-    return web_glBlinkFunctionMap[key]();
-  }
-  return null;
-}
-
-Function _getIndexDbFunction(String key) {
-  if (indexed_dbBlinkFunctionMap.containsKey(key)) {
-    return indexed_dbBlinkFunctionMap[key]();
-  }
-  return null;
-}
-
-Function _getWebAudioFunction(String key) {
-  if (web_audioBlinkFunctionMap.containsKey(key)) {
-    return web_audioBlinkFunctionMap[key]();
-  }
-  return null;
-}
-
-Function _getWebSqlFunction(String key) {
-  if (web_sqlBlinkFunctionMap.containsKey(key)) {
-    return web_sqlBlinkFunctionMap[key]();
-  }
-  return null;
-}
-
-Function _getSvgFunction(String key) {
-  if (svgBlinkFunctionMap.containsKey(key)) {
-    return svgBlinkFunctionMap[key]();
-  }
-  return null;
+  return convertNativeToDart_SerializedScriptValue(o);
 }
 
 
@@ -1219,22 +701,14 @@
   var jsObject;
   var tag = "";
   var runtimeType = element.runtimeType;
-  if (runtimeType == HtmlElement) {
-    tag = element.localName;
-  } else if (runtimeType == TemplateElement) {
+  if (runtimeType == TemplateElement) {
     // Data binding with a Dart class.
     tag = element.attributes['is'];
-  } else if (runtimeType == js.JsObject) {
-    // It's a Polymer core element (written in JS).
-    // Make sure it's an element anything else we can ignore.
-    if (element.hasProperty('nodeType') && element['nodeType'] == 1) {
-      if (js.JsNative.callMethod(element, 'hasAttribute', ['is'])) {
-        // It's data binding use the is attribute.
-        tag = js.JsNative.callMethod(element, 'getAttribute', ['is']);
-      } else {
-        // It's a custom element we want the local name.
-        tag = element['localName'];
-      }
+  } else if (element is HtmlElement) {
+    tag = element.attributes['is'];
+    if (tag == null) {
+      // It's a custom element we want the local name.
+      tag = element.localName;
     }
   } else {
     throw new UnsupportedError('Element is incorrect type. Got ${runtimeType}, expected HtmlElement/HtmlTemplate/JsObject.');
@@ -1263,12 +737,16 @@
   }
 }
 
+// TODO(jacobr): we shouldn't be generating this call in the dart:html
+// bindings but we are.
+_convertDartToNative_EventTarget(target) => target;
+
 @Deprecated("Internal Use Only")
 Map<String, dynamic> convertNativeObjectToDartMap(js.JsObject jsObject) {
   var result = new Map();
   var keys = js.JsNative.callMethod(js.JsNative.getProperty(js.context, 'Object'), 'keys', [jsObject]);
   for (var key in keys) {
-    result[key] = wrap_jso(js.JsNative.getProperty(jsObject, key));
+    result[key] = js.JsNative.getProperty(jsObject, key);
   }
   return result;
 }
@@ -1277,25 +755,7 @@
  * Upgrade the JS HTMLElement to the Dart class.  Used by Dart's Polymer.
  */
 _createCustomUpgrader(Type customElementClass, $this) {
-  var dartClass;
-  try {
-    dartClass = _blink.Blink_Utils.constructElement(customElementClass, $this);
-  } catch (e) {
-    // Did the dartClass get allocated but the created failed?  Otherwise, other
-    // components inside of this failed somewhere (could be JS custom element).
-    if (dartClass != null) {
-      // Yes, mark as didn't upgrade.
-      dartClass._badUpgrade();
-    }
-    throw e;
-  } finally {
-    // Need to remember the Dart class that was created for this custom so
-    // return it and setup the blink_jsObject to the $this that we'll be working
-    // with as we talk to blink.
-    js.setDartHtmlWrapperFor($this, dartClass);
-  }
-
-  return dartClass;
+  return _blink.Blink_Utils.setInstanceInterceptor($this, customElementClass, customElement: true);
 }
 
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -1347,11 +807,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static AnchorElement internalCreateAnchorElement() {
-    return new AnchorElement._internalWrap();
-  }
-
-  external factory AnchorElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnchorElement.internal_() : super.internal_();
@@ -1365,137 +821,137 @@
 
   @DomName('HTMLAnchorElement.download')
   @DocsEditable()
-  String get download => _blink.BlinkHTMLAnchorElement.instance.download_Getter_(unwrap_jso(this));
+  String get download => _blink.BlinkHTMLAnchorElement.instance.download_Getter_(this);
   
   @DomName('HTMLAnchorElement.download')
   @DocsEditable()
-  set download(String value) => _blink.BlinkHTMLAnchorElement.instance.download_Setter_(unwrap_jso(this), value);
+  set download(String value) => _blink.BlinkHTMLAnchorElement.instance.download_Setter_(this, value);
   
   @DomName('HTMLAnchorElement.hreflang')
   @DocsEditable()
-  String get hreflang => _blink.BlinkHTMLAnchorElement.instance.hreflang_Getter_(unwrap_jso(this));
+  String get hreflang => _blink.BlinkHTMLAnchorElement.instance.hreflang_Getter_(this);
   
   @DomName('HTMLAnchorElement.hreflang')
   @DocsEditable()
-  set hreflang(String value) => _blink.BlinkHTMLAnchorElement.instance.hreflang_Setter_(unwrap_jso(this), value);
+  set hreflang(String value) => _blink.BlinkHTMLAnchorElement.instance.hreflang_Setter_(this, value);
   
   @DomName('HTMLAnchorElement.rel')
   @DocsEditable()
-  String get rel => _blink.BlinkHTMLAnchorElement.instance.rel_Getter_(unwrap_jso(this));
+  String get rel => _blink.BlinkHTMLAnchorElement.instance.rel_Getter_(this);
   
   @DomName('HTMLAnchorElement.rel')
   @DocsEditable()
-  set rel(String value) => _blink.BlinkHTMLAnchorElement.instance.rel_Setter_(unwrap_jso(this), value);
+  set rel(String value) => _blink.BlinkHTMLAnchorElement.instance.rel_Setter_(this, value);
   
   @DomName('HTMLAnchorElement.target')
   @DocsEditable()
-  String get target => _blink.BlinkHTMLAnchorElement.instance.target_Getter_(unwrap_jso(this));
+  String get target => _blink.BlinkHTMLAnchorElement.instance.target_Getter_(this);
   
   @DomName('HTMLAnchorElement.target')
   @DocsEditable()
-  set target(String value) => _blink.BlinkHTMLAnchorElement.instance.target_Setter_(unwrap_jso(this), value);
+  set target(String value) => _blink.BlinkHTMLAnchorElement.instance.target_Setter_(this, value);
   
   @DomName('HTMLAnchorElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLAnchorElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLAnchorElement.instance.type_Getter_(this);
   
   @DomName('HTMLAnchorElement.type')
   @DocsEditable()
-  set type(String value) => _blink.BlinkHTMLAnchorElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLAnchorElement.instance.type_Setter_(this, value);
   
   @DomName('HTMLAnchorElement.hash')
   @DocsEditable()
-  String get hash => _blink.BlinkHTMLAnchorElement.instance.hash_Getter_(unwrap_jso(this));
+  String get hash => _blink.BlinkHTMLAnchorElement.instance.hash_Getter_(this);
   
   @DomName('HTMLAnchorElement.hash')
   @DocsEditable()
-  set hash(String value) => _blink.BlinkHTMLAnchorElement.instance.hash_Setter_(unwrap_jso(this), value);
+  set hash(String value) => _blink.BlinkHTMLAnchorElement.instance.hash_Setter_(this, value);
   
   @DomName('HTMLAnchorElement.host')
   @DocsEditable()
-  String get host => _blink.BlinkHTMLAnchorElement.instance.host_Getter_(unwrap_jso(this));
+  String get host => _blink.BlinkHTMLAnchorElement.instance.host_Getter_(this);
   
   @DomName('HTMLAnchorElement.host')
   @DocsEditable()
-  set host(String value) => _blink.BlinkHTMLAnchorElement.instance.host_Setter_(unwrap_jso(this), value);
+  set host(String value) => _blink.BlinkHTMLAnchorElement.instance.host_Setter_(this, value);
   
   @DomName('HTMLAnchorElement.hostname')
   @DocsEditable()
-  String get hostname => _blink.BlinkHTMLAnchorElement.instance.hostname_Getter_(unwrap_jso(this));
+  String get hostname => _blink.BlinkHTMLAnchorElement.instance.hostname_Getter_(this);
   
   @DomName('HTMLAnchorElement.hostname')
   @DocsEditable()
-  set hostname(String value) => _blink.BlinkHTMLAnchorElement.instance.hostname_Setter_(unwrap_jso(this), value);
+  set hostname(String value) => _blink.BlinkHTMLAnchorElement.instance.hostname_Setter_(this, value);
   
   @DomName('HTMLAnchorElement.href')
   @DocsEditable()
-  String get href => _blink.BlinkHTMLAnchorElement.instance.href_Getter_(unwrap_jso(this));
+  String get href => _blink.BlinkHTMLAnchorElement.instance.href_Getter_(this);
   
   @DomName('HTMLAnchorElement.href')
   @DocsEditable()
-  set href(String value) => _blink.BlinkHTMLAnchorElement.instance.href_Setter_(unwrap_jso(this), value);
+  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.instance.origin_Getter_(unwrap_jso(this));
+  String get origin => _blink.BlinkHTMLAnchorElement.instance.origin_Getter_(this);
   
   @DomName('HTMLAnchorElement.password')
   @DocsEditable()
   @Experimental() // untriaged
-  String get password => _blink.BlinkHTMLAnchorElement.instance.password_Getter_(unwrap_jso(this));
+  String get password => _blink.BlinkHTMLAnchorElement.instance.password_Getter_(this);
   
   @DomName('HTMLAnchorElement.password')
   @DocsEditable()
   @Experimental() // untriaged
-  set password(String value) => _blink.BlinkHTMLAnchorElement.instance.password_Setter_(unwrap_jso(this), value);
+  set password(String value) => _blink.BlinkHTMLAnchorElement.instance.password_Setter_(this, value);
   
   @DomName('HTMLAnchorElement.pathname')
   @DocsEditable()
-  String get pathname => _blink.BlinkHTMLAnchorElement.instance.pathname_Getter_(unwrap_jso(this));
+  String get pathname => _blink.BlinkHTMLAnchorElement.instance.pathname_Getter_(this);
   
   @DomName('HTMLAnchorElement.pathname')
   @DocsEditable()
-  set pathname(String value) => _blink.BlinkHTMLAnchorElement.instance.pathname_Setter_(unwrap_jso(this), value);
+  set pathname(String value) => _blink.BlinkHTMLAnchorElement.instance.pathname_Setter_(this, value);
   
   @DomName('HTMLAnchorElement.port')
   @DocsEditable()
-  String get port => _blink.BlinkHTMLAnchorElement.instance.port_Getter_(unwrap_jso(this));
+  String get port => _blink.BlinkHTMLAnchorElement.instance.port_Getter_(this);
   
   @DomName('HTMLAnchorElement.port')
   @DocsEditable()
-  set port(String value) => _blink.BlinkHTMLAnchorElement.instance.port_Setter_(unwrap_jso(this), value);
+  set port(String value) => _blink.BlinkHTMLAnchorElement.instance.port_Setter_(this, value);
   
   @DomName('HTMLAnchorElement.protocol')
   @DocsEditable()
-  String get protocol => _blink.BlinkHTMLAnchorElement.instance.protocol_Getter_(unwrap_jso(this));
+  String get protocol => _blink.BlinkHTMLAnchorElement.instance.protocol_Getter_(this);
   
   @DomName('HTMLAnchorElement.protocol')
   @DocsEditable()
-  set protocol(String value) => _blink.BlinkHTMLAnchorElement.instance.protocol_Setter_(unwrap_jso(this), value);
+  set protocol(String value) => _blink.BlinkHTMLAnchorElement.instance.protocol_Setter_(this, value);
   
   @DomName('HTMLAnchorElement.search')
   @DocsEditable()
-  String get search => _blink.BlinkHTMLAnchorElement.instance.search_Getter_(unwrap_jso(this));
+  String get search => _blink.BlinkHTMLAnchorElement.instance.search_Getter_(this);
   
   @DomName('HTMLAnchorElement.search')
   @DocsEditable()
-  set search(String value) => _blink.BlinkHTMLAnchorElement.instance.search_Setter_(unwrap_jso(this), value);
+  set search(String value) => _blink.BlinkHTMLAnchorElement.instance.search_Setter_(this, value);
   
   @DomName('HTMLAnchorElement.username')
   @DocsEditable()
   @Experimental() // untriaged
-  String get username => _blink.BlinkHTMLAnchorElement.instance.username_Getter_(unwrap_jso(this));
+  String get username => _blink.BlinkHTMLAnchorElement.instance.username_Getter_(this);
   
   @DomName('HTMLAnchorElement.username')
   @DocsEditable()
   @Experimental() // untriaged
-  set username(String value) => _blink.BlinkHTMLAnchorElement.instance.username_Setter_(unwrap_jso(this), value);
+  set username(String value) => _blink.BlinkHTMLAnchorElement.instance.username_Setter_(this, value);
   
   @DomName('HTMLAnchorElement.toString')
   @DocsEditable()
-  String toString() => _blink.BlinkHTMLAnchorElement.instance.toString_Callback_0_(unwrap_jso(this));
+  String toString() => _blink.BlinkHTMLAnchorElement.instance.toString_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1514,11 +970,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static Animation internalCreateAnimation() {
-    return new Animation._internalWrap();
-  }
-
-  external factory Animation._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Animation.internal_() : super.internal_();
@@ -1530,102 +982,102 @@
   @DomName('Animation.currentTime')
   @DocsEditable()
   @Experimental() // untriaged
-  num get currentTime => _blink.BlinkAnimation.instance.currentTime_Getter_(unwrap_jso(this));
+  num get currentTime => _blink.BlinkAnimation.instance.currentTime_Getter_(this);
   
   @DomName('Animation.currentTime')
   @DocsEditable()
   @Experimental() // untriaged
-  set currentTime(num value) => _blink.BlinkAnimation.instance.currentTime_Setter_(unwrap_jso(this), value);
+  set currentTime(num value) => _blink.BlinkAnimation.instance.currentTime_Setter_(this, value);
   
   @DomName('Animation.effect')
   @DocsEditable()
   @Experimental() // untriaged
-  AnimationEffectReadOnly get effect => wrap_jso(_blink.BlinkAnimation.instance.effect_Getter_(unwrap_jso(this)));
+  AnimationEffectReadOnly get effect => _blink.BlinkAnimation.instance.effect_Getter_(this);
   
   @DomName('Animation.effect')
   @DocsEditable()
   @Experimental() // untriaged
-  set effect(AnimationEffectReadOnly value) => _blink.BlinkAnimation.instance.effect_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set effect(AnimationEffectReadOnly value) => _blink.BlinkAnimation.instance.effect_Setter_(this, value);
   
   @DomName('Animation.endClip')
   @DocsEditable()
   @Experimental() // untriaged
-  num get endClip => _blink.BlinkAnimation.instance.endClip_Getter_(unwrap_jso(this));
+  num get endClip => _blink.BlinkAnimation.instance.endClip_Getter_(this);
   
   @DomName('Animation.endClip')
   @DocsEditable()
   @Experimental() // untriaged
-  set endClip(num value) => _blink.BlinkAnimation.instance.endClip_Setter_(unwrap_jso(this), value);
+  set endClip(num value) => _blink.BlinkAnimation.instance.endClip_Setter_(this, value);
   
   @DomName('Animation.finished')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get finished => wrap_jso(_blink.BlinkAnimation.instance.finished_Getter_(unwrap_jso(this)));
+  Future get finished => convertNativePromiseToDartFuture(_blink.BlinkAnimation.instance.finished_Getter_(this));
   
   @DomName('Animation.playState')
   @DocsEditable()
   @Experimental() // untriaged
-  String get playState => _blink.BlinkAnimation.instance.playState_Getter_(unwrap_jso(this));
+  String get playState => _blink.BlinkAnimation.instance.playState_Getter_(this);
   
   @DomName('Animation.playbackRate')
   @DocsEditable()
   @Experimental() // untriaged
-  num get playbackRate => _blink.BlinkAnimation.instance.playbackRate_Getter_(unwrap_jso(this));
+  num get playbackRate => _blink.BlinkAnimation.instance.playbackRate_Getter_(this);
   
   @DomName('Animation.playbackRate')
   @DocsEditable()
   @Experimental() // untriaged
-  set playbackRate(num value) => _blink.BlinkAnimation.instance.playbackRate_Setter_(unwrap_jso(this), value);
+  set playbackRate(num value) => _blink.BlinkAnimation.instance.playbackRate_Setter_(this, value);
   
   @DomName('Animation.ready')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get ready => wrap_jso(_blink.BlinkAnimation.instance.ready_Getter_(unwrap_jso(this)));
+  Future get ready => convertNativePromiseToDartFuture(_blink.BlinkAnimation.instance.ready_Getter_(this));
   
   @DomName('Animation.startClip')
   @DocsEditable()
   @Experimental() // untriaged
-  num get startClip => _blink.BlinkAnimation.instance.startClip_Getter_(unwrap_jso(this));
+  num get startClip => _blink.BlinkAnimation.instance.startClip_Getter_(this);
   
   @DomName('Animation.startClip')
   @DocsEditable()
   @Experimental() // untriaged
-  set startClip(num value) => _blink.BlinkAnimation.instance.startClip_Setter_(unwrap_jso(this), value);
+  set startClip(num value) => _blink.BlinkAnimation.instance.startClip_Setter_(this, value);
   
   @DomName('Animation.startTime')
   @DocsEditable()
   @Experimental() // untriaged
-  num get startTime => _blink.BlinkAnimation.instance.startTime_Getter_(unwrap_jso(this));
+  num get startTime => _blink.BlinkAnimation.instance.startTime_Getter_(this);
   
   @DomName('Animation.startTime')
   @DocsEditable()
   @Experimental() // untriaged
-  set startTime(num value) => _blink.BlinkAnimation.instance.startTime_Setter_(unwrap_jso(this), value);
+  set startTime(num value) => _blink.BlinkAnimation.instance.startTime_Setter_(this, value);
   
   @DomName('Animation.cancel')
   @DocsEditable()
   @Experimental() // untriaged
-  void cancel() => _blink.BlinkAnimation.instance.cancel_Callback_0_(unwrap_jso(this));
+  void cancel() => _blink.BlinkAnimation.instance.cancel_Callback_0_(this);
   
   @DomName('Animation.finish')
   @DocsEditable()
   @Experimental() // untriaged
-  void finish() => _blink.BlinkAnimation.instance.finish_Callback_0_(unwrap_jso(this));
+  void finish() => _blink.BlinkAnimation.instance.finish_Callback_0_(this);
   
   @DomName('Animation.pause')
   @DocsEditable()
   @Experimental() // untriaged
-  void pause() => _blink.BlinkAnimation.instance.pause_Callback_0_(unwrap_jso(this));
+  void pause() => _blink.BlinkAnimation.instance.pause_Callback_0_(this);
   
   @DomName('Animation.play')
   @DocsEditable()
   @Experimental() // untriaged
-  void play() => _blink.BlinkAnimation.instance.play_Callback_0_(unwrap_jso(this));
+  void play() => _blink.BlinkAnimation.instance.play_Callback_0_(this);
   
   @DomName('Animation.reverse')
   @DocsEditable()
   @Experimental() // untriaged
-  void reverse() => _blink.BlinkAnimation.instance.reverse_Callback_0_(unwrap_jso(this));
+  void reverse() => _blink.BlinkAnimation.instance.reverse_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1642,30 +1094,22 @@
   // To suppress missing implicit constructor warnings.
   factory AnimationEffectReadOnly._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AnimationEffectReadOnly internalCreateAnimationEffectReadOnly() {
-    return new AnimationEffectReadOnly._internalWrap();
-  }
 
-  factory AnimationEffectReadOnly._internalWrap() {
-    return new AnimationEffectReadOnly.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimationEffectReadOnly.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('AnimationEffectReadOnly.computedTiming')
   @DocsEditable()
   @Experimental() // untriaged
-   get computedTiming => convertNativeDictionaryToDartDictionary(wrap_jso(_blink.BlinkAnimationEffectReadOnly.instance.computedTiming_Getter_(unwrap_jso(this))));
+   get computedTiming => convertNativeDictionaryToDartDictionary((_blink.BlinkAnimationEffectReadOnly.instance.computedTiming_Getter_(this)));
   
   @DomName('AnimationEffectReadOnly.timing')
   @DocsEditable()
   @Experimental() // untriaged
-  AnimationEffectTiming get timing => wrap_jso(_blink.BlinkAnimationEffectReadOnly.instance.timing_Getter_(unwrap_jso(this)));
+  AnimationEffectTiming get timing => _blink.BlinkAnimationEffectReadOnly.instance.timing_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1682,110 +1126,102 @@
   // To suppress missing implicit constructor warnings.
   factory AnimationEffectTiming._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AnimationEffectTiming internalCreateAnimationEffectTiming() {
-    return new AnimationEffectTiming._internalWrap();
-  }
 
-  factory AnimationEffectTiming._internalWrap() {
-    return new AnimationEffectTiming.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimationEffectTiming.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('AnimationEffectTiming.delay')
   @DocsEditable()
   @Experimental() // untriaged
-  num get delay => _blink.BlinkAnimationEffectTiming.instance.delay_Getter_(unwrap_jso(this));
+  num get delay => _blink.BlinkAnimationEffectTiming.instance.delay_Getter_(this);
   
   @DomName('AnimationEffectTiming.delay')
   @DocsEditable()
   @Experimental() // untriaged
-  set delay(num value) => _blink.BlinkAnimationEffectTiming.instance.delay_Setter_(unwrap_jso(this), value);
+  set delay(num value) => _blink.BlinkAnimationEffectTiming.instance.delay_Setter_(this, value);
   
   @DomName('AnimationEffectTiming.direction')
   @DocsEditable()
   @Experimental() // untriaged
-  String get direction => _blink.BlinkAnimationEffectTiming.instance.direction_Getter_(unwrap_jso(this));
+  String get direction => _blink.BlinkAnimationEffectTiming.instance.direction_Getter_(this);
   
   @DomName('AnimationEffectTiming.direction')
   @DocsEditable()
   @Experimental() // untriaged
-  set direction(String value) => _blink.BlinkAnimationEffectTiming.instance.direction_Setter_(unwrap_jso(this), value);
+  set direction(String value) => _blink.BlinkAnimationEffectTiming.instance.direction_Setter_(this, value);
   
   @DomName('AnimationEffectTiming.duration')
   @DocsEditable()
   @Experimental() // untriaged
-  Object get duration => wrap_jso(_blink.BlinkAnimationEffectTiming.instance.duration_Getter_(unwrap_jso(this)));
+  Object get duration => (_blink.BlinkAnimationEffectTiming.instance.duration_Getter_(this));
   
   @DomName('AnimationEffectTiming.duration')
   @DocsEditable()
   @Experimental() // untriaged
-  set duration(Object value) => _blink.BlinkAnimationEffectTiming.instance.duration_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set duration(Object value) => _blink.BlinkAnimationEffectTiming.instance.duration_Setter_(this, value);
   
   @DomName('AnimationEffectTiming.easing')
   @DocsEditable()
   @Experimental() // untriaged
-  String get easing => _blink.BlinkAnimationEffectTiming.instance.easing_Getter_(unwrap_jso(this));
+  String get easing => _blink.BlinkAnimationEffectTiming.instance.easing_Getter_(this);
   
   @DomName('AnimationEffectTiming.easing')
   @DocsEditable()
   @Experimental() // untriaged
-  set easing(String value) => _blink.BlinkAnimationEffectTiming.instance.easing_Setter_(unwrap_jso(this), value);
+  set easing(String value) => _blink.BlinkAnimationEffectTiming.instance.easing_Setter_(this, value);
   
   @DomName('AnimationEffectTiming.endDelay')
   @DocsEditable()
   @Experimental() // untriaged
-  num get endDelay => _blink.BlinkAnimationEffectTiming.instance.endDelay_Getter_(unwrap_jso(this));
+  num get endDelay => _blink.BlinkAnimationEffectTiming.instance.endDelay_Getter_(this);
   
   @DomName('AnimationEffectTiming.endDelay')
   @DocsEditable()
   @Experimental() // untriaged
-  set endDelay(num value) => _blink.BlinkAnimationEffectTiming.instance.endDelay_Setter_(unwrap_jso(this), value);
+  set endDelay(num value) => _blink.BlinkAnimationEffectTiming.instance.endDelay_Setter_(this, value);
   
   @DomName('AnimationEffectTiming.fill')
   @DocsEditable()
   @Experimental() // untriaged
-  String get fill => _blink.BlinkAnimationEffectTiming.instance.fill_Getter_(unwrap_jso(this));
+  String get fill => _blink.BlinkAnimationEffectTiming.instance.fill_Getter_(this);
   
   @DomName('AnimationEffectTiming.fill')
   @DocsEditable()
   @Experimental() // untriaged
-  set fill(String value) => _blink.BlinkAnimationEffectTiming.instance.fill_Setter_(unwrap_jso(this), value);
+  set fill(String value) => _blink.BlinkAnimationEffectTiming.instance.fill_Setter_(this, value);
   
   @DomName('AnimationEffectTiming.iterationStart')
   @DocsEditable()
   @Experimental() // untriaged
-  num get iterationStart => _blink.BlinkAnimationEffectTiming.instance.iterationStart_Getter_(unwrap_jso(this));
+  num get iterationStart => _blink.BlinkAnimationEffectTiming.instance.iterationStart_Getter_(this);
   
   @DomName('AnimationEffectTiming.iterationStart')
   @DocsEditable()
   @Experimental() // untriaged
-  set iterationStart(num value) => _blink.BlinkAnimationEffectTiming.instance.iterationStart_Setter_(unwrap_jso(this), value);
+  set iterationStart(num value) => _blink.BlinkAnimationEffectTiming.instance.iterationStart_Setter_(this, value);
   
   @DomName('AnimationEffectTiming.iterations')
   @DocsEditable()
   @Experimental() // untriaged
-  num get iterations => _blink.BlinkAnimationEffectTiming.instance.iterations_Getter_(unwrap_jso(this));
+  num get iterations => _blink.BlinkAnimationEffectTiming.instance.iterations_Getter_(this);
   
   @DomName('AnimationEffectTiming.iterations')
   @DocsEditable()
   @Experimental() // untriaged
-  set iterations(num value) => _blink.BlinkAnimationEffectTiming.instance.iterations_Setter_(unwrap_jso(this), value);
+  set iterations(num value) => _blink.BlinkAnimationEffectTiming.instance.iterations_Setter_(this, value);
   
   @DomName('AnimationEffectTiming.playbackRate')
   @DocsEditable()
   @Experimental() // untriaged
-  num get playbackRate => _blink.BlinkAnimationEffectTiming.instance.playbackRate_Getter_(unwrap_jso(this));
+  num get playbackRate => _blink.BlinkAnimationEffectTiming.instance.playbackRate_Getter_(this);
   
   @DomName('AnimationEffectTiming.playbackRate')
   @DocsEditable()
   @Experimental() // untriaged
-  set playbackRate(num value) => _blink.BlinkAnimationEffectTiming.instance.playbackRate_Setter_(unwrap_jso(this), value);
+  set playbackRate(num value) => _blink.BlinkAnimationEffectTiming.instance.playbackRate_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1807,18 +1243,14 @@
   factory AnimationEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkAnimationEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkAnimationEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkAnimationEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkAnimationEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static AnimationEvent internalCreateAnimationEvent() {
-    return new AnimationEvent._internalWrap();
-  }
-
-  external factory AnimationEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimationEvent.internal_() : super.internal_();
@@ -1827,12 +1259,12 @@
   @DomName('AnimationEvent.animationName')
   @DocsEditable()
   @Experimental() // untriaged
-  String get animationName => _blink.BlinkAnimationEvent.instance.animationName_Getter_(unwrap_jso(this));
+  String get animationName => _blink.BlinkAnimationEvent.instance.animationName_Getter_(this);
   
   @DomName('AnimationEvent.elapsedTime')
   @DocsEditable()
   @Experimental() // untriaged
-  num get elapsedTime => _blink.BlinkAnimationEvent.instance.elapsedTime_Getter_(unwrap_jso(this));
+  num get elapsedTime => _blink.BlinkAnimationEvent.instance.elapsedTime_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1854,18 +1286,14 @@
   factory AnimationPlayerEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkAnimationPlayerEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkAnimationPlayerEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkAnimationPlayerEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkAnimationPlayerEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static AnimationPlayerEvent internalCreateAnimationPlayerEvent() {
-    return new AnimationPlayerEvent._internalWrap();
-  }
-
-  external factory AnimationPlayerEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimationPlayerEvent.internal_() : super.internal_();
@@ -1874,12 +1302,12 @@
   @DomName('AnimationPlayerEvent.currentTime')
   @DocsEditable()
   @Experimental() // untriaged
-  num get currentTime => _blink.BlinkAnimationPlayerEvent.instance.currentTime_Getter_(unwrap_jso(this));
+  num get currentTime => _blink.BlinkAnimationPlayerEvent.instance.currentTime_Getter_(this);
   
   @DomName('AnimationPlayerEvent.timelineTime')
   @DocsEditable()
   @Experimental() // untriaged
-  num get timelineTime => _blink.BlinkAnimationPlayerEvent.instance.timelineTime_Getter_(unwrap_jso(this));
+  num get timelineTime => _blink.BlinkAnimationPlayerEvent.instance.timelineTime_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1896,50 +1324,42 @@
   // To suppress missing implicit constructor warnings.
   factory AnimationTimeline._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AnimationTimeline internalCreateAnimationTimeline() {
-    return new AnimationTimeline._internalWrap();
-  }
 
-  factory AnimationTimeline._internalWrap() {
-    return new AnimationTimeline.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimationTimeline.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('AnimationTimeline.currentTime')
   @DocsEditable()
   @Experimental() // untriaged
-  num get currentTime => _blink.BlinkAnimationTimeline.instance.currentTime_Getter_(unwrap_jso(this));
+  num get currentTime => _blink.BlinkAnimationTimeline.instance.currentTime_Getter_(this);
   
   @DomName('AnimationTimeline.currentTime')
   @DocsEditable()
   @Experimental() // untriaged
-  set currentTime(num value) => _blink.BlinkAnimationTimeline.instance.currentTime_Setter_(unwrap_jso(this), value);
+  set currentTime(num value) => _blink.BlinkAnimationTimeline.instance.currentTime_Setter_(this, value);
   
   @DomName('AnimationTimeline.playbackRate')
   @DocsEditable()
   @Experimental() // untriaged
-  num get playbackRate => _blink.BlinkAnimationTimeline.instance.playbackRate_Getter_(unwrap_jso(this));
+  num get playbackRate => _blink.BlinkAnimationTimeline.instance.playbackRate_Getter_(this);
   
   @DomName('AnimationTimeline.playbackRate')
   @DocsEditable()
   @Experimental() // untriaged
-  set playbackRate(num value) => _blink.BlinkAnimationTimeline.instance.playbackRate_Setter_(unwrap_jso(this), value);
+  set playbackRate(num value) => _blink.BlinkAnimationTimeline.instance.playbackRate_Setter_(this, value);
   
   @DomName('AnimationTimeline.getAnimations')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Animation> getAnimations() => wrap_jso(_blink.BlinkAnimationTimeline.instance.getAnimations_Callback_0_(unwrap_jso(this)));
+  List<Animation> getAnimations() => (_blink.BlinkAnimationTimeline.instance.getAnimations_Callback_0_(this));
   
   @DomName('AnimationTimeline.play')
   @DocsEditable()
   @Experimental() // untriaged
-  Animation play(AnimationEffectReadOnly source) => wrap_jso(_blink.BlinkAnimationTimeline.instance.play_Callback_1_(unwrap_jso(this), unwrap_jso(source)));
+  Animation play(AnimationEffectReadOnly source) => _blink.BlinkAnimationTimeline.instance.play_Callback_1_(this, source);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1956,30 +1376,22 @@
   // To suppress missing implicit constructor warnings.
   factory AppBannerPromptResult._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AppBannerPromptResult internalCreateAppBannerPromptResult() {
-    return new AppBannerPromptResult._internalWrap();
-  }
 
-  factory AppBannerPromptResult._internalWrap() {
-    return new AppBannerPromptResult.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AppBannerPromptResult.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('AppBannerPromptResult.outcome')
   @DocsEditable()
   @Experimental() // untriaged
-  String get outcome => _blink.BlinkAppBannerPromptResult.instance.outcome_Getter_(unwrap_jso(this));
+  String get outcome => _blink.BlinkAppBannerPromptResult.instance.outcome_Getter_(this);
   
   @DomName('AppBannerPromptResult.platform')
   @DocsEditable()
   @Experimental() // untriaged
-  String get platform => _blink.BlinkAppBannerPromptResult.instance.platform_Getter_(unwrap_jso(this));
+  String get platform => _blink.BlinkAppBannerPromptResult.instance.platform_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2086,11 +1498,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ApplicationCache internalCreateApplicationCache() {
-    return new ApplicationCache._internalWrap();
-  }
-
-  external factory ApplicationCache._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ApplicationCache.internal_() : super.internal_();
@@ -2125,19 +1533,19 @@
 
   @DomName('ApplicationCache.status')
   @DocsEditable()
-  int get status => _blink.BlinkApplicationCache.instance.status_Getter_(unwrap_jso(this));
+  int get status => _blink.BlinkApplicationCache.instance.status_Getter_(this);
   
   @DomName('ApplicationCache.abort')
   @DocsEditable()
-  void abort() => _blink.BlinkApplicationCache.instance.abort_Callback_0_(unwrap_jso(this));
+  void abort() => _blink.BlinkApplicationCache.instance.abort_Callback_0_(this);
   
   @DomName('ApplicationCache.swapCache')
   @DocsEditable()
-  void swapCache() => _blink.BlinkApplicationCache.instance.swapCache_Callback_0_(unwrap_jso(this));
+  void swapCache() => _blink.BlinkApplicationCache.instance.swapCache_Callback_0_(this);
   
   @DomName('ApplicationCache.update')
   @DocsEditable()
-  void update() => _blink.BlinkApplicationCache.instance.update_Callback_0_(unwrap_jso(this));
+  void update() => _blink.BlinkApplicationCache.instance.update_Callback_0_(this);
   
   /// Stream of `cached` events handled by this [ApplicationCache].
   @DomName('ApplicationCache.oncached')
@@ -2199,18 +1607,14 @@
   factory ApplicationCacheErrorEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkApplicationCacheErrorEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkApplicationCacheErrorEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkApplicationCacheErrorEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkApplicationCacheErrorEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static ApplicationCacheErrorEvent internalCreateApplicationCacheErrorEvent() {
-    return new ApplicationCacheErrorEvent._internalWrap();
-  }
-
-  external factory ApplicationCacheErrorEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ApplicationCacheErrorEvent.internal_() : super.internal_();
@@ -2219,22 +1623,22 @@
   @DomName('ApplicationCacheErrorEvent.message')
   @DocsEditable()
   @Experimental() // untriaged
-  String get message => _blink.BlinkApplicationCacheErrorEvent.instance.message_Getter_(unwrap_jso(this));
+  String get message => _blink.BlinkApplicationCacheErrorEvent.instance.message_Getter_(this);
   
   @DomName('ApplicationCacheErrorEvent.reason')
   @DocsEditable()
   @Experimental() // untriaged
-  String get reason => _blink.BlinkApplicationCacheErrorEvent.instance.reason_Getter_(unwrap_jso(this));
+  String get reason => _blink.BlinkApplicationCacheErrorEvent.instance.reason_Getter_(this);
   
   @DomName('ApplicationCacheErrorEvent.status')
   @DocsEditable()
   @Experimental() // untriaged
-  int get status => _blink.BlinkApplicationCacheErrorEvent.instance.status_Getter_(unwrap_jso(this));
+  int get status => _blink.BlinkApplicationCacheErrorEvent.instance.status_Getter_(this);
   
   @DomName('ApplicationCacheErrorEvent.url')
   @DocsEditable()
   @Experimental() // untriaged
-  String get url => _blink.BlinkApplicationCacheErrorEvent.instance.url_Getter_(unwrap_jso(this));
+  String get url => _blink.BlinkApplicationCacheErrorEvent.instance.url_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2266,11 +1670,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static AreaElement internalCreateAreaElement() {
-    return new AreaElement._internalWrap();
-  }
-
-  external factory AreaElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AreaElement.internal_() : super.internal_();
@@ -2284,129 +1684,129 @@
 
   @DomName('HTMLAreaElement.alt')
   @DocsEditable()
-  String get alt => _blink.BlinkHTMLAreaElement.instance.alt_Getter_(unwrap_jso(this));
+  String get alt => _blink.BlinkHTMLAreaElement.instance.alt_Getter_(this);
   
   @DomName('HTMLAreaElement.alt')
   @DocsEditable()
-  set alt(String value) => _blink.BlinkHTMLAreaElement.instance.alt_Setter_(unwrap_jso(this), value);
+  set alt(String value) => _blink.BlinkHTMLAreaElement.instance.alt_Setter_(this, value);
   
   @DomName('HTMLAreaElement.coords')
   @DocsEditable()
-  String get coords => _blink.BlinkHTMLAreaElement.instance.coords_Getter_(unwrap_jso(this));
+  String get coords => _blink.BlinkHTMLAreaElement.instance.coords_Getter_(this);
   
   @DomName('HTMLAreaElement.coords')
   @DocsEditable()
-  set coords(String value) => _blink.BlinkHTMLAreaElement.instance.coords_Setter_(unwrap_jso(this), value);
+  set coords(String value) => _blink.BlinkHTMLAreaElement.instance.coords_Setter_(this, value);
   
   @DomName('HTMLAreaElement.shape')
   @DocsEditable()
-  String get shape => _blink.BlinkHTMLAreaElement.instance.shape_Getter_(unwrap_jso(this));
+  String get shape => _blink.BlinkHTMLAreaElement.instance.shape_Getter_(this);
   
   @DomName('HTMLAreaElement.shape')
   @DocsEditable()
-  set shape(String value) => _blink.BlinkHTMLAreaElement.instance.shape_Setter_(unwrap_jso(this), value);
+  set shape(String value) => _blink.BlinkHTMLAreaElement.instance.shape_Setter_(this, value);
   
   @DomName('HTMLAreaElement.target')
   @DocsEditable()
-  String get target => _blink.BlinkHTMLAreaElement.instance.target_Getter_(unwrap_jso(this));
+  String get target => _blink.BlinkHTMLAreaElement.instance.target_Getter_(this);
   
   @DomName('HTMLAreaElement.target')
   @DocsEditable()
-  set target(String value) => _blink.BlinkHTMLAreaElement.instance.target_Setter_(unwrap_jso(this), value);
+  set target(String value) => _blink.BlinkHTMLAreaElement.instance.target_Setter_(this, value);
   
   @DomName('HTMLAreaElement.hash')
   @DocsEditable()
-  String get hash => _blink.BlinkHTMLAreaElement.instance.hash_Getter_(unwrap_jso(this));
+  String get hash => _blink.BlinkHTMLAreaElement.instance.hash_Getter_(this);
   
   @DomName('HTMLAreaElement.hash')
   @DocsEditable()
-  set hash(String value) => _blink.BlinkHTMLAreaElement.instance.hash_Setter_(unwrap_jso(this), value);
+  set hash(String value) => _blink.BlinkHTMLAreaElement.instance.hash_Setter_(this, value);
   
   @DomName('HTMLAreaElement.host')
   @DocsEditable()
-  String get host => _blink.BlinkHTMLAreaElement.instance.host_Getter_(unwrap_jso(this));
+  String get host => _blink.BlinkHTMLAreaElement.instance.host_Getter_(this);
   
   @DomName('HTMLAreaElement.host')
   @DocsEditable()
-  set host(String value) => _blink.BlinkHTMLAreaElement.instance.host_Setter_(unwrap_jso(this), value);
+  set host(String value) => _blink.BlinkHTMLAreaElement.instance.host_Setter_(this, value);
   
   @DomName('HTMLAreaElement.hostname')
   @DocsEditable()
-  String get hostname => _blink.BlinkHTMLAreaElement.instance.hostname_Getter_(unwrap_jso(this));
+  String get hostname => _blink.BlinkHTMLAreaElement.instance.hostname_Getter_(this);
   
   @DomName('HTMLAreaElement.hostname')
   @DocsEditable()
-  set hostname(String value) => _blink.BlinkHTMLAreaElement.instance.hostname_Setter_(unwrap_jso(this), value);
+  set hostname(String value) => _blink.BlinkHTMLAreaElement.instance.hostname_Setter_(this, value);
   
   @DomName('HTMLAreaElement.href')
   @DocsEditable()
-  String get href => _blink.BlinkHTMLAreaElement.instance.href_Getter_(unwrap_jso(this));
+  String get href => _blink.BlinkHTMLAreaElement.instance.href_Getter_(this);
   
   @DomName('HTMLAreaElement.href')
   @DocsEditable()
-  set href(String value) => _blink.BlinkHTMLAreaElement.instance.href_Setter_(unwrap_jso(this), value);
+  set href(String value) => _blink.BlinkHTMLAreaElement.instance.href_Setter_(this, value);
   
   @DomName('HTMLAreaElement.origin')
   @DocsEditable()
   @Experimental() // untriaged
-  String get origin => _blink.BlinkHTMLAreaElement.instance.origin_Getter_(unwrap_jso(this));
+  String get origin => _blink.BlinkHTMLAreaElement.instance.origin_Getter_(this);
   
   @DomName('HTMLAreaElement.password')
   @DocsEditable()
   @Experimental() // untriaged
-  String get password => _blink.BlinkHTMLAreaElement.instance.password_Getter_(unwrap_jso(this));
+  String get password => _blink.BlinkHTMLAreaElement.instance.password_Getter_(this);
   
   @DomName('HTMLAreaElement.password')
   @DocsEditable()
   @Experimental() // untriaged
-  set password(String value) => _blink.BlinkHTMLAreaElement.instance.password_Setter_(unwrap_jso(this), value);
+  set password(String value) => _blink.BlinkHTMLAreaElement.instance.password_Setter_(this, value);
   
   @DomName('HTMLAreaElement.pathname')
   @DocsEditable()
-  String get pathname => _blink.BlinkHTMLAreaElement.instance.pathname_Getter_(unwrap_jso(this));
+  String get pathname => _blink.BlinkHTMLAreaElement.instance.pathname_Getter_(this);
   
   @DomName('HTMLAreaElement.pathname')
   @DocsEditable()
-  set pathname(String value) => _blink.BlinkHTMLAreaElement.instance.pathname_Setter_(unwrap_jso(this), value);
+  set pathname(String value) => _blink.BlinkHTMLAreaElement.instance.pathname_Setter_(this, value);
   
   @DomName('HTMLAreaElement.port')
   @DocsEditable()
-  String get port => _blink.BlinkHTMLAreaElement.instance.port_Getter_(unwrap_jso(this));
+  String get port => _blink.BlinkHTMLAreaElement.instance.port_Getter_(this);
   
   @DomName('HTMLAreaElement.port')
   @DocsEditable()
-  set port(String value) => _blink.BlinkHTMLAreaElement.instance.port_Setter_(unwrap_jso(this), value);
+  set port(String value) => _blink.BlinkHTMLAreaElement.instance.port_Setter_(this, value);
   
   @DomName('HTMLAreaElement.protocol')
   @DocsEditable()
-  String get protocol => _blink.BlinkHTMLAreaElement.instance.protocol_Getter_(unwrap_jso(this));
+  String get protocol => _blink.BlinkHTMLAreaElement.instance.protocol_Getter_(this);
   
   @DomName('HTMLAreaElement.protocol')
   @DocsEditable()
-  set protocol(String value) => _blink.BlinkHTMLAreaElement.instance.protocol_Setter_(unwrap_jso(this), value);
+  set protocol(String value) => _blink.BlinkHTMLAreaElement.instance.protocol_Setter_(this, value);
   
   @DomName('HTMLAreaElement.search')
   @DocsEditable()
-  String get search => _blink.BlinkHTMLAreaElement.instance.search_Getter_(unwrap_jso(this));
+  String get search => _blink.BlinkHTMLAreaElement.instance.search_Getter_(this);
   
   @DomName('HTMLAreaElement.search')
   @DocsEditable()
-  set search(String value) => _blink.BlinkHTMLAreaElement.instance.search_Setter_(unwrap_jso(this), value);
+  set search(String value) => _blink.BlinkHTMLAreaElement.instance.search_Setter_(this, value);
   
   @DomName('HTMLAreaElement.username')
   @DocsEditable()
   @Experimental() // untriaged
-  String get username => _blink.BlinkHTMLAreaElement.instance.username_Getter_(unwrap_jso(this));
+  String get username => _blink.BlinkHTMLAreaElement.instance.username_Getter_(this);
   
   @DomName('HTMLAreaElement.username')
   @DocsEditable()
   @Experimental() // untriaged
-  set username(String value) => _blink.BlinkHTMLAreaElement.instance.username_Setter_(unwrap_jso(this), value);
+  set username(String value) => _blink.BlinkHTMLAreaElement.instance.username_Setter_(this, value);
   
   @DomName('HTMLAreaElement.toString')
   @DocsEditable()
   @Experimental() // untriaged
-  String toString() => _blink.BlinkHTMLAreaElement.instance.toString_Callback_0_(unwrap_jso(this));
+  String toString() => _blink.BlinkHTMLAreaElement.instance.toString_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2421,16 +1821,12 @@
   @DomName('HTMLAudioElement.HTMLAudioElement')
   @DocsEditable()
   factory AudioElement._([String src]) {
-    return wrap_jso(_blink.BlinkHTMLAudioElement.instance.constructorCallback_1_(src));
+    return _blink.BlinkHTMLAudioElement.instance.constructorCallback_1_(src);
   }
 
 
   @Deprecated("Internal Use Only")
-  static AudioElement internalCreateAudioElement() {
-    return new AudioElement._internalWrap();
-  }
-
-  external factory AudioElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AudioElement.internal_() : super.internal_();
@@ -2444,9 +1840,9 @@
 
   factory AudioElement([String src]) {
     if (src == null)
-      return wrap_jso(_blink.BlinkHTMLAudioElement.instance.constructorCallback_0_());
+      return _blink.BlinkHTMLAudioElement.instance.constructorCallback_0_();
     else
-      return wrap_jso(_blink.BlinkHTMLAudioElement.instance.constructorCallback_1_(src));
+      return _blink.BlinkHTMLAudioElement.instance.constructorCallback_1_(src);
   }
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2463,50 +1859,42 @@
   // To suppress missing implicit constructor warnings.
   factory AudioTrack._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AudioTrack internalCreateAudioTrack() {
-    return new AudioTrack._internalWrap();
-  }
 
-  factory AudioTrack._internalWrap() {
-    return new AudioTrack.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AudioTrack.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('AudioTrack.enabled')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get enabled => _blink.BlinkAudioTrack.instance.enabled_Getter_(unwrap_jso(this));
+  bool get enabled => _blink.BlinkAudioTrack.instance.enabled_Getter_(this);
   
   @DomName('AudioTrack.enabled')
   @DocsEditable()
   @Experimental() // untriaged
-  set enabled(bool value) => _blink.BlinkAudioTrack.instance.enabled_Setter_(unwrap_jso(this), value);
+  set enabled(bool value) => _blink.BlinkAudioTrack.instance.enabled_Setter_(this, value);
   
   @DomName('AudioTrack.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkAudioTrack.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkAudioTrack.instance.id_Getter_(this);
   
   @DomName('AudioTrack.kind')
   @DocsEditable()
   @Experimental() // untriaged
-  String get kind => _blink.BlinkAudioTrack.instance.kind_Getter_(unwrap_jso(this));
+  String get kind => _blink.BlinkAudioTrack.instance.kind_Getter_(this);
   
   @DomName('AudioTrack.label')
   @DocsEditable()
   @Experimental() // untriaged
-  String get label => _blink.BlinkAudioTrack.instance.label_Getter_(unwrap_jso(this));
+  String get label => _blink.BlinkAudioTrack.instance.label_Getter_(this);
   
   @DomName('AudioTrack.language')
   @DocsEditable()
   @Experimental() // untriaged
-  String get language => _blink.BlinkAudioTrack.instance.language_Getter_(unwrap_jso(this));
+  String get language => _blink.BlinkAudioTrack.instance.language_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2530,11 +1918,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static AudioTrackList internalCreateAudioTrackList() {
-    return new AudioTrackList._internalWrap();
-  }
-
-  external factory AudioTrackList._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AudioTrackList.internal_() : super.internal_();
@@ -2543,17 +1927,17 @@
   @DomName('AudioTrackList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkAudioTrackList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkAudioTrackList.instance.length_Getter_(this);
   
   @DomName('AudioTrackList.__getter__')
   @DocsEditable()
   @Experimental() // untriaged
-  AudioTrack __getter__(int index) => wrap_jso(_blink.BlinkAudioTrackList.instance.$__getter___Callback_1_(unwrap_jso(this), index));
+  AudioTrack __getter__(int index) => _blink.BlinkAudioTrackList.instance.$__getter___Callback_1_(this, index);
   
   @DomName('AudioTrackList.getTrackById')
   @DocsEditable()
   @Experimental() // untriaged
-  AudioTrack getTrackById(String id) => wrap_jso(_blink.BlinkAudioTrackList.instance.getTrackById_Callback_1_(unwrap_jso(this), id));
+  AudioTrack getTrackById(String id) => _blink.BlinkAudioTrackList.instance.getTrackById_Callback_1_(this, id);
   
   @DomName('AudioTrackList.onchange')
   @DocsEditable()
@@ -2581,18 +1965,14 @@
   factory AutocompleteErrorEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkAutocompleteErrorEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkAutocompleteErrorEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkAutocompleteErrorEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkAutocompleteErrorEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static AutocompleteErrorEvent internalCreateAutocompleteErrorEvent() {
-    return new AutocompleteErrorEvent._internalWrap();
-  }
-
-  external factory AutocompleteErrorEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AutocompleteErrorEvent.internal_() : super.internal_();
@@ -2600,7 +1980,7 @@
 
   @DomName('AutocompleteErrorEvent.reason')
   @DocsEditable()
-  String get reason => _blink.BlinkAutocompleteErrorEvent.instance.reason_Getter_(unwrap_jso(this));
+  String get reason => _blink.BlinkAutocompleteErrorEvent.instance.reason_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2622,11 +2002,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static BRElement internalCreateBRElement() {
-    return new BRElement._internalWrap();
-  }
-
-  external factory BRElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   BRElement.internal_() : super.internal_();
@@ -2654,24 +2030,16 @@
   // To suppress missing implicit constructor warnings.
   factory BarProp._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static BarProp internalCreateBarProp() {
-    return new BarProp._internalWrap();
-  }
 
-  factory BarProp._internalWrap() {
-    return new BarProp.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   BarProp.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('BarProp.visible')
   @DocsEditable()
-  bool get visible => _blink.BlinkBarProp.instance.visible_Getter_(unwrap_jso(this));
+  bool get visible => _blink.BlinkBarProp.instance.visible_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2693,11 +2061,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static BaseElement internalCreateBaseElement() {
-    return new BaseElement._internalWrap();
-  }
-
-  external factory BaseElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   BaseElement.internal_() : super.internal_();
@@ -2711,19 +2075,19 @@
 
   @DomName('HTMLBaseElement.href')
   @DocsEditable()
-  String get href => _blink.BlinkHTMLBaseElement.instance.href_Getter_(unwrap_jso(this));
+  String get href => _blink.BlinkHTMLBaseElement.instance.href_Getter_(this);
   
   @DomName('HTMLBaseElement.href')
   @DocsEditable()
-  set href(String value) => _blink.BlinkHTMLBaseElement.instance.href_Setter_(unwrap_jso(this), value);
+  set href(String value) => _blink.BlinkHTMLBaseElement.instance.href_Setter_(this, value);
   
   @DomName('HTMLBaseElement.target')
   @DocsEditable()
-  String get target => _blink.BlinkHTMLBaseElement.instance.target_Getter_(unwrap_jso(this));
+  String get target => _blink.BlinkHTMLBaseElement.instance.target_Getter_(this);
   
   @DomName('HTMLBaseElement.target')
   @DocsEditable()
-  set target(String value) => _blink.BlinkHTMLBaseElement.instance.target_Setter_(unwrap_jso(this), value);
+  set target(String value) => _blink.BlinkHTMLBaseElement.instance.target_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2743,11 +2107,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static BatteryManager internalCreateBatteryManager() {
-    return new BatteryManager._internalWrap();
-  }
-
-  external factory BatteryManager._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   BatteryManager.internal_() : super.internal_();
@@ -2755,19 +2115,19 @@
 
   @DomName('BatteryManager.charging')
   @DocsEditable()
-  bool get charging => _blink.BlinkBatteryManager.instance.charging_Getter_(unwrap_jso(this));
+  bool get charging => _blink.BlinkBatteryManager.instance.charging_Getter_(this);
   
   @DomName('BatteryManager.chargingTime')
   @DocsEditable()
-  num get chargingTime => _blink.BlinkBatteryManager.instance.chargingTime_Getter_(unwrap_jso(this));
+  num get chargingTime => _blink.BlinkBatteryManager.instance.chargingTime_Getter_(this);
   
   @DomName('BatteryManager.dischargingTime')
   @DocsEditable()
-  num get dischargingTime => _blink.BlinkBatteryManager.instance.dischargingTime_Getter_(unwrap_jso(this));
+  num get dischargingTime => _blink.BlinkBatteryManager.instance.dischargingTime_Getter_(this);
   
   @DomName('BatteryManager.level')
   @DocsEditable()
-  num get level => _blink.BlinkBatteryManager.instance.level_Getter_(unwrap_jso(this));
+  num get level => _blink.BlinkBatteryManager.instance.level_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2789,18 +2149,14 @@
   factory BeforeInstallPromptEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkBeforeInstallPromptEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkBeforeInstallPromptEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkBeforeInstallPromptEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkBeforeInstallPromptEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static BeforeInstallPromptEvent internalCreateBeforeInstallPromptEvent() {
-    return new BeforeInstallPromptEvent._internalWrap();
-  }
-
-  external factory BeforeInstallPromptEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   BeforeInstallPromptEvent.internal_() : super.internal_();
@@ -2809,17 +2165,17 @@
   @DomName('BeforeInstallPromptEvent.platforms')
   @DocsEditable()
   @Experimental() // untriaged
-  List<String> get platforms => _blink.BlinkBeforeInstallPromptEvent.instance.platforms_Getter_(unwrap_jso(this));
+  List<String> get platforms => _blink.BlinkBeforeInstallPromptEvent.instance.platforms_Getter_(this);
   
   @DomName('BeforeInstallPromptEvent.userChoice')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get userChoice => wrap_jso(_blink.BlinkBeforeInstallPromptEvent.instance.userChoice_Getter_(unwrap_jso(this)));
+  Future get userChoice => convertNativePromiseToDartFuture(_blink.BlinkBeforeInstallPromptEvent.instance.userChoice_Getter_(this));
   
   @DomName('BeforeInstallPromptEvent.prompt')
   @DocsEditable()
   @Experimental() // untriaged
-  Future prompt() => wrap_jso(_blink.BlinkBeforeInstallPromptEvent.instance.prompt_Callback_0_(unwrap_jso(this)));
+  Future prompt() => convertNativePromiseToDartFuture(_blink.BlinkBeforeInstallPromptEvent.instance.prompt_Callback_0_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2837,11 +2193,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static BeforeUnloadEvent internalCreateBeforeUnloadEvent() {
-    return new BeforeUnloadEvent._internalWrap();
-  }
-
-  external factory BeforeUnloadEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   BeforeUnloadEvent.internal_() : super.internal_();
@@ -2849,11 +2201,11 @@
 
   @DomName('BeforeUnloadEvent.returnValue')
   @DocsEditable()
-  String get returnValue => _blink.BlinkBeforeUnloadEvent.instance.returnValue_Getter_(unwrap_jso(this));
+  String get returnValue => _blink.BlinkBeforeUnloadEvent.instance.returnValue_Getter_(this);
   
   @DomName('BeforeUnloadEvent.returnValue')
   @DocsEditable()
-  set returnValue(String value) => _blink.BlinkBeforeUnloadEvent.instance.returnValue_Setter_(unwrap_jso(this), value);
+  set returnValue(String value) => _blink.BlinkBeforeUnloadEvent.instance.returnValue_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2866,60 +2218,52 @@
   // To suppress missing implicit constructor warnings.
   factory Blob._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Blob internalCreateBlob() {
-    return new Blob._internalWrap();
-  }
 
-  factory Blob._internalWrap() {
-    return new Blob.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Blob.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Blob.size')
   @DocsEditable()
-  int get size => _blink.BlinkBlob.instance.size_Getter_(unwrap_jso(this));
+  int get size => _blink.BlinkBlob.instance.size_Getter_(this);
   
   @DomName('Blob.type')
   @DocsEditable()
-  String get type => _blink.BlinkBlob.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkBlob.instance.type_Getter_(this);
   
   @DomName('Blob.close')
   @DocsEditable()
   @Experimental() // untriaged
-  void close() => _blink.BlinkBlob.instance.close_Callback_0_(unwrap_jso(this));
+  void close() => _blink.BlinkBlob.instance.close_Callback_0_(this);
   
   Blob slice([int start, int end, String contentType]) {
     if (contentType != null) {
-      return wrap_jso(_blink.BlinkBlob.instance.slice_Callback_3_(unwrap_jso(this), start, end, contentType));
+      return _blink.BlinkBlob.instance.slice_Callback_3_(this, start, end, contentType);
     }
     if (end != null) {
-      return wrap_jso(_blink.BlinkBlob.instance.slice_Callback_2_(unwrap_jso(this), start, end));
+      return _blink.BlinkBlob.instance.slice_Callback_2_(this, start, end);
     }
     if (start != null) {
-      return wrap_jso(_blink.BlinkBlob.instance.slice_Callback_1_(unwrap_jso(this), start));
+      return _blink.BlinkBlob.instance.slice_Callback_1_(this, start);
     }
-    return wrap_jso(_blink.BlinkBlob.instance.slice_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkBlob.instance.slice_Callback_0_(this);
   }
 
   factory Blob(List blobParts, [String type, String endings]) {
     // TODO: any coercions on the elements of blobParts, e.g. coerce a typed
     // array to ArrayBuffer if it is a total view.
 
-    var parts = convertDartToNative_List(blobParts.map(unwrap_jso).toList());
+    var parts = convertDartToNative_List(blobParts);
     if (type == null && endings == null) {
-      return wrap_jso(_blink.BlinkBlob.instance.constructorCallback_1_(parts));
+      return _blink.BlinkBlob.instance.constructorCallback_1_(parts);
     }
     var bag = {};
     if (type != null) bag['type'] = type;
     if (endings != null) bag['endings'] = endings;
-    return wrap_jso(_blink.BlinkBlob.instance.constructorCallback_2_(parts,
-        convertDartToNative_Dictionary(bag)));
+    return _blink.BlinkBlob.instance.constructorCallback_2_(parts,
+        convertDartToNative_Dictionary(bag));
   }
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2936,25 +2280,17 @@
   // To suppress missing implicit constructor warnings.
   factory Bluetooth._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Bluetooth internalCreateBluetooth() {
-    return new Bluetooth._internalWrap();
-  }
 
-  factory Bluetooth._internalWrap() {
-    return new Bluetooth.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Bluetooth.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Bluetooth.requestDevice')
   @DocsEditable()
   @Experimental() // untriaged
-  Future requestDevice(Map options) => wrap_jso(_blink.BlinkBluetooth.instance.requestDevice_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(options)));
+  Future requestDevice(Map options) => convertNativePromiseToDartFuture(_blink.BlinkBluetooth.instance.requestDevice_Callback_1_(this, convertDartToNative_Dictionary(options)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2971,65 +2307,57 @@
   // To suppress missing implicit constructor warnings.
   factory BluetoothDevice._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static BluetoothDevice internalCreateBluetoothDevice() {
-    return new BluetoothDevice._internalWrap();
-  }
 
-  factory BluetoothDevice._internalWrap() {
-    return new BluetoothDevice.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   BluetoothDevice.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('BluetoothDevice.deviceClass')
   @DocsEditable()
   @Experimental() // untriaged
-  int get deviceClass => _blink.BlinkBluetoothDevice.instance.deviceClass_Getter_(unwrap_jso(this));
+  int get deviceClass => _blink.BlinkBluetoothDevice.instance.deviceClass_Getter_(this);
   
   @DomName('BluetoothDevice.instanceID')
   @DocsEditable()
   @Experimental() // untriaged
-  String get instanceID => _blink.BlinkBluetoothDevice.instance.instanceID_Getter_(unwrap_jso(this));
+  String get instanceID => _blink.BlinkBluetoothDevice.instance.instanceID_Getter_(this);
   
   @DomName('BluetoothDevice.name')
   @DocsEditable()
   @Experimental() // untriaged
-  String get name => _blink.BlinkBluetoothDevice.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkBluetoothDevice.instance.name_Getter_(this);
   
   @DomName('BluetoothDevice.paired')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get paired => _blink.BlinkBluetoothDevice.instance.paired_Getter_(unwrap_jso(this));
+  bool get paired => _blink.BlinkBluetoothDevice.instance.paired_Getter_(this);
   
   @DomName('BluetoothDevice.productID')
   @DocsEditable()
   @Experimental() // untriaged
-  int get productID => _blink.BlinkBluetoothDevice.instance.productID_Getter_(unwrap_jso(this));
+  int get productID => _blink.BlinkBluetoothDevice.instance.productID_Getter_(this);
   
   @DomName('BluetoothDevice.productVersion')
   @DocsEditable()
   @Experimental() // untriaged
-  int get productVersion => _blink.BlinkBluetoothDevice.instance.productVersion_Getter_(unwrap_jso(this));
+  int get productVersion => _blink.BlinkBluetoothDevice.instance.productVersion_Getter_(this);
   
   @DomName('BluetoothDevice.vendorID')
   @DocsEditable()
   @Experimental() // untriaged
-  int get vendorID => _blink.BlinkBluetoothDevice.instance.vendorID_Getter_(unwrap_jso(this));
+  int get vendorID => _blink.BlinkBluetoothDevice.instance.vendorID_Getter_(this);
   
   @DomName('BluetoothDevice.vendorIDSource')
   @DocsEditable()
   @Experimental() // untriaged
-  String get vendorIDSource => _blink.BlinkBluetoothDevice.instance.vendorIDSource_Getter_(unwrap_jso(this));
+  String get vendorIDSource => _blink.BlinkBluetoothDevice.instance.vendorIDSource_Getter_(this);
   
   @DomName('BluetoothDevice.connectGATT')
   @DocsEditable()
   @Experimental() // untriaged
-  Future connectGatt() => wrap_jso(_blink.BlinkBluetoothDevice.instance.connectGATT_Callback_0_(unwrap_jso(this)));
+  Future connectGatt() => convertNativePromiseToDartFuture(_blink.BlinkBluetoothDevice.instance.connectGATT_Callback_0_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3046,35 +2374,27 @@
   // To suppress missing implicit constructor warnings.
   factory BluetoothGattCharacteristic._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static BluetoothGattCharacteristic internalCreateBluetoothGattCharacteristic() {
-    return new BluetoothGattCharacteristic._internalWrap();
-  }
 
-  factory BluetoothGattCharacteristic._internalWrap() {
-    return new BluetoothGattCharacteristic.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   BluetoothGattCharacteristic.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('BluetoothGATTCharacteristic.uuid')
   @DocsEditable()
   @Experimental() // untriaged
-  String get uuid => _blink.BlinkBluetoothGATTCharacteristic.instance.uuid_Getter_(unwrap_jso(this));
+  String get uuid => _blink.BlinkBluetoothGATTCharacteristic.instance.uuid_Getter_(this);
   
   @DomName('BluetoothGATTCharacteristic.readValue')
   @DocsEditable()
   @Experimental() // untriaged
-  Future readValue() => wrap_jso(_blink.BlinkBluetoothGATTCharacteristic.instance.readValue_Callback_0_(unwrap_jso(this)));
+  Future readValue() => convertNativePromiseToDartFuture(_blink.BlinkBluetoothGATTCharacteristic.instance.readValue_Callback_0_(this));
   
   @DomName('BluetoothGATTCharacteristic.writeValue')
   @DocsEditable()
   @Experimental() // untriaged
-  Future writeValue(/*BufferSource*/ value) => wrap_jso(_blink.BlinkBluetoothGATTCharacteristic.instance.writeValue_Callback_1_(unwrap_jso(this), value));
+  Future writeValue(/*BufferSource*/ value) => convertNativePromiseToDartFuture(_blink.BlinkBluetoothGATTCharacteristic.instance.writeValue_Callback_1_(this, value));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3091,30 +2411,22 @@
   // To suppress missing implicit constructor warnings.
   factory BluetoothGattRemoteServer._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static BluetoothGattRemoteServer internalCreateBluetoothGattRemoteServer() {
-    return new BluetoothGattRemoteServer._internalWrap();
-  }
 
-  factory BluetoothGattRemoteServer._internalWrap() {
-    return new BluetoothGattRemoteServer.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   BluetoothGattRemoteServer.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('BluetoothGATTRemoteServer.connected')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get connected => _blink.BlinkBluetoothGATTRemoteServer.instance.connected_Getter_(unwrap_jso(this));
+  bool get connected => _blink.BlinkBluetoothGATTRemoteServer.instance.connected_Getter_(this);
   
   @DomName('BluetoothGATTRemoteServer.getPrimaryService')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getPrimaryService(/*BluetoothServiceUUID*/ service) => wrap_jso(_blink.BlinkBluetoothGATTRemoteServer.instance.getPrimaryService_Callback_1_(unwrap_jso(this), service));
+  Future getPrimaryService(/*BluetoothServiceUUID*/ service) => convertNativePromiseToDartFuture(_blink.BlinkBluetoothGATTRemoteServer.instance.getPrimaryService_Callback_1_(this, service));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3131,35 +2443,27 @@
   // To suppress missing implicit constructor warnings.
   factory BluetoothGattService._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static BluetoothGattService internalCreateBluetoothGattService() {
-    return new BluetoothGattService._internalWrap();
-  }
 
-  factory BluetoothGattService._internalWrap() {
-    return new BluetoothGattService.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   BluetoothGattService.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('BluetoothGATTService.isPrimary')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get isPrimary => _blink.BlinkBluetoothGATTService.instance.isPrimary_Getter_(unwrap_jso(this));
+  bool get isPrimary => _blink.BlinkBluetoothGATTService.instance.isPrimary_Getter_(this);
   
   @DomName('BluetoothGATTService.uuid')
   @DocsEditable()
   @Experimental() // untriaged
-  String get uuid => _blink.BlinkBluetoothGATTService.instance.uuid_Getter_(unwrap_jso(this));
+  String get uuid => _blink.BlinkBluetoothGATTService.instance.uuid_Getter_(this);
   
   @DomName('BluetoothGATTService.getCharacteristic')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getCharacteristic(/*BluetoothCharacteristicUUID*/ characteristic) => wrap_jso(_blink.BlinkBluetoothGATTService.instance.getCharacteristic_Callback_1_(unwrap_jso(this), characteristic));
+  Future getCharacteristic(/*BluetoothCharacteristicUUID*/ characteristic) => convertNativePromiseToDartFuture(_blink.BlinkBluetoothGATTService.instance.getCharacteristic_Callback_1_(this, characteristic));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3176,21 +2480,13 @@
   // To suppress missing implicit constructor warnings.
   factory BluetoothUuid._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static BluetoothUuid internalCreateBluetoothUuid() {
-    return new BluetoothUuid._internalWrap();
-  }
 
-  factory BluetoothUuid._internalWrap() {
-    return new BluetoothUuid.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   BluetoothUuid.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('BluetoothUUID.canonicalUUID')
   @DocsEditable()
   @Experimental() // untriaged
@@ -3226,45 +2522,37 @@
   // To suppress missing implicit constructor warnings.
   factory Body._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Body internalCreateBody() {
-    return new Body._internalWrap();
-  }
 
-  factory Body._internalWrap() {
-    return new Body.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Body.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Body.bodyUsed')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get bodyUsed => _blink.BlinkBody.instance.bodyUsed_Getter_(unwrap_jso(this));
+  bool get bodyUsed => _blink.BlinkBody.instance.bodyUsed_Getter_(this);
   
   @DomName('Body.arrayBuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  Future arrayBuffer() => wrap_jso(_blink.BlinkBody.instance.arrayBuffer_Callback_0_(unwrap_jso(this)));
+  Future arrayBuffer() => convertNativePromiseToDartFuture(_blink.BlinkBody.instance.arrayBuffer_Callback_0_(this));
   
   @DomName('Body.blob')
   @DocsEditable()
   @Experimental() // untriaged
-  Future blob() => wrap_jso(_blink.BlinkBody.instance.blob_Callback_0_(unwrap_jso(this)));
+  Future blob() => convertNativePromiseToDartFuture(_blink.BlinkBody.instance.blob_Callback_0_(this));
   
   @DomName('Body.json')
   @DocsEditable()
   @Experimental() // untriaged
-  Future json() => wrap_jso(_blink.BlinkBody.instance.json_Callback_0_(unwrap_jso(this)));
+  Future json() => convertNativePromiseToDartFuture(_blink.BlinkBody.instance.json_Callback_0_(this));
   
   @DomName('Body.text')
   @DocsEditable()
   @Experimental() // untriaged
-  Future text() => wrap_jso(_blink.BlinkBody.instance.text_Callback_0_(unwrap_jso(this)));
+  Future text() => convertNativePromiseToDartFuture(_blink.BlinkBody.instance.text_Callback_0_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3411,11 +2699,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static BodyElement internalCreateBodyElement() {
-    return new BodyElement._internalWrap();
-  }
-
-  external factory BodyElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   BodyElement.internal_() : super.internal_();
@@ -3512,11 +2796,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ButtonElement internalCreateButtonElement() {
-    return new ButtonElement._internalWrap();
-  }
-
-  external factory ButtonElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ButtonElement.internal_() : super.internal_();
@@ -3530,117 +2810,117 @@
 
   @DomName('HTMLButtonElement.autofocus')
   @DocsEditable()
-  bool get autofocus => _blink.BlinkHTMLButtonElement.instance.autofocus_Getter_(unwrap_jso(this));
+  bool get autofocus => _blink.BlinkHTMLButtonElement.instance.autofocus_Getter_(this);
   
   @DomName('HTMLButtonElement.autofocus')
   @DocsEditable()
-  set autofocus(bool value) => _blink.BlinkHTMLButtonElement.instance.autofocus_Setter_(unwrap_jso(this), value);
+  set autofocus(bool value) => _blink.BlinkHTMLButtonElement.instance.autofocus_Setter_(this, value);
   
   @DomName('HTMLButtonElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLButtonElement.instance.disabled_Getter_(unwrap_jso(this));
+  bool get disabled => _blink.BlinkHTMLButtonElement.instance.disabled_Getter_(this);
   
   @DomName('HTMLButtonElement.disabled')
   @DocsEditable()
-  set disabled(bool value) => _blink.BlinkHTMLButtonElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLButtonElement.instance.disabled_Setter_(this, value);
   
   @DomName('HTMLButtonElement.form')
   @DocsEditable()
-  FormElement get form => wrap_jso(_blink.BlinkHTMLButtonElement.instance.form_Getter_(unwrap_jso(this)));
+  FormElement get form => _blink.BlinkHTMLButtonElement.instance.form_Getter_(this);
   
   @DomName('HTMLButtonElement.formAction')
   @DocsEditable()
-  String get formAction => _blink.BlinkHTMLButtonElement.instance.formAction_Getter_(unwrap_jso(this));
+  String get formAction => _blink.BlinkHTMLButtonElement.instance.formAction_Getter_(this);
   
   @DomName('HTMLButtonElement.formAction')
   @DocsEditable()
-  set formAction(String value) => _blink.BlinkHTMLButtonElement.instance.formAction_Setter_(unwrap_jso(this), value);
+  set formAction(String value) => _blink.BlinkHTMLButtonElement.instance.formAction_Setter_(this, value);
   
   @DomName('HTMLButtonElement.formEnctype')
   @DocsEditable()
-  String get formEnctype => _blink.BlinkHTMLButtonElement.instance.formEnctype_Getter_(unwrap_jso(this));
+  String get formEnctype => _blink.BlinkHTMLButtonElement.instance.formEnctype_Getter_(this);
   
   @DomName('HTMLButtonElement.formEnctype')
   @DocsEditable()
-  set formEnctype(String value) => _blink.BlinkHTMLButtonElement.instance.formEnctype_Setter_(unwrap_jso(this), value);
+  set formEnctype(String value) => _blink.BlinkHTMLButtonElement.instance.formEnctype_Setter_(this, value);
   
   @DomName('HTMLButtonElement.formMethod')
   @DocsEditable()
-  String get formMethod => _blink.BlinkHTMLButtonElement.instance.formMethod_Getter_(unwrap_jso(this));
+  String get formMethod => _blink.BlinkHTMLButtonElement.instance.formMethod_Getter_(this);
   
   @DomName('HTMLButtonElement.formMethod')
   @DocsEditable()
-  set formMethod(String value) => _blink.BlinkHTMLButtonElement.instance.formMethod_Setter_(unwrap_jso(this), value);
+  set formMethod(String value) => _blink.BlinkHTMLButtonElement.instance.formMethod_Setter_(this, value);
   
   @DomName('HTMLButtonElement.formNoValidate')
   @DocsEditable()
-  bool get formNoValidate => _blink.BlinkHTMLButtonElement.instance.formNoValidate_Getter_(unwrap_jso(this));
+  bool get formNoValidate => _blink.BlinkHTMLButtonElement.instance.formNoValidate_Getter_(this);
   
   @DomName('HTMLButtonElement.formNoValidate')
   @DocsEditable()
-  set formNoValidate(bool value) => _blink.BlinkHTMLButtonElement.instance.formNoValidate_Setter_(unwrap_jso(this), value);
+  set formNoValidate(bool value) => _blink.BlinkHTMLButtonElement.instance.formNoValidate_Setter_(this, value);
   
   @DomName('HTMLButtonElement.formTarget')
   @DocsEditable()
-  String get formTarget => _blink.BlinkHTMLButtonElement.instance.formTarget_Getter_(unwrap_jso(this));
+  String get formTarget => _blink.BlinkHTMLButtonElement.instance.formTarget_Getter_(this);
   
   @DomName('HTMLButtonElement.formTarget')
   @DocsEditable()
-  set formTarget(String value) => _blink.BlinkHTMLButtonElement.instance.formTarget_Setter_(unwrap_jso(this), value);
+  set formTarget(String value) => _blink.BlinkHTMLButtonElement.instance.formTarget_Setter_(this, value);
   
   @DomName('HTMLButtonElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => wrap_jso(_blink.BlinkHTMLButtonElement.instance.labels_Getter_(unwrap_jso(this)));
+  List<Node> get labels => (_blink.BlinkHTMLButtonElement.instance.labels_Getter_(this));
   
   @DomName('HTMLButtonElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLButtonElement.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkHTMLButtonElement.instance.name_Getter_(this);
   
   @DomName('HTMLButtonElement.name')
   @DocsEditable()
-  set name(String value) => _blink.BlinkHTMLButtonElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLButtonElement.instance.name_Setter_(this, value);
   
   @DomName('HTMLButtonElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLButtonElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLButtonElement.instance.type_Getter_(this);
   
   @DomName('HTMLButtonElement.type')
   @DocsEditable()
-  set type(String value) => _blink.BlinkHTMLButtonElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLButtonElement.instance.type_Setter_(this, value);
   
   @DomName('HTMLButtonElement.validationMessage')
   @DocsEditable()
-  String get validationMessage => _blink.BlinkHTMLButtonElement.instance.validationMessage_Getter_(unwrap_jso(this));
+  String get validationMessage => _blink.BlinkHTMLButtonElement.instance.validationMessage_Getter_(this);
   
   @DomName('HTMLButtonElement.validity')
   @DocsEditable()
-  ValidityState get validity => wrap_jso(_blink.BlinkHTMLButtonElement.instance.validity_Getter_(unwrap_jso(this)));
+  ValidityState get validity => _blink.BlinkHTMLButtonElement.instance.validity_Getter_(this);
   
   @DomName('HTMLButtonElement.value')
   @DocsEditable()
-  String get value => _blink.BlinkHTMLButtonElement.instance.value_Getter_(unwrap_jso(this));
+  String get value => _blink.BlinkHTMLButtonElement.instance.value_Getter_(this);
   
   @DomName('HTMLButtonElement.value')
   @DocsEditable()
-  set value(String value) => _blink.BlinkHTMLButtonElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkHTMLButtonElement.instance.value_Setter_(this, value);
   
   @DomName('HTMLButtonElement.willValidate')
   @DocsEditable()
-  bool get willValidate => _blink.BlinkHTMLButtonElement.instance.willValidate_Getter_(unwrap_jso(this));
+  bool get willValidate => _blink.BlinkHTMLButtonElement.instance.willValidate_Getter_(this);
   
   @DomName('HTMLButtonElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLButtonElement.instance.checkValidity_Callback_0_(unwrap_jso(this));
+  bool checkValidity() => _blink.BlinkHTMLButtonElement.instance.checkValidity_Callback_0_(this);
   
   @DomName('HTMLButtonElement.reportValidity')
   @DocsEditable()
   @Experimental() // untriaged
-  bool reportValidity() => _blink.BlinkHTMLButtonElement.instance.reportValidity_Callback_0_(unwrap_jso(this));
+  bool reportValidity() => _blink.BlinkHTMLButtonElement.instance.reportValidity_Callback_0_(this);
   
   @DomName('HTMLButtonElement.setCustomValidity')
   @DocsEditable()
-  void setCustomValidity(String error) => _blink.BlinkHTMLButtonElement.instance.setCustomValidity_Callback_1_(unwrap_jso(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
@@ -3660,11 +2940,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CDataSection internalCreateCDataSection() {
-    return new CDataSection._internalWrap();
-  }
-
-  external factory CDataSection._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CDataSection.internal_() : super.internal_();
@@ -3685,47 +2961,39 @@
   // To suppress missing implicit constructor warnings.
   factory CacheStorage._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static CacheStorage internalCreateCacheStorage() {
-    return new CacheStorage._internalWrap();
-  }
 
-  factory CacheStorage._internalWrap() {
-    return new CacheStorage.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CacheStorage.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('CacheStorage.delete')
   @DocsEditable()
   @Experimental() // untriaged
-  Future delete(String cacheName) => wrap_jso(_blink.BlinkCacheStorage.instance.delete_Callback_1_(unwrap_jso(this), cacheName));
+  Future delete(String cacheName) => convertNativePromiseToDartFuture(_blink.BlinkCacheStorage.instance.delete_Callback_1_(this, cacheName));
   
   @DomName('CacheStorage.has')
   @DocsEditable()
   @Experimental() // untriaged
-  Future has(String cacheName) => wrap_jso(_blink.BlinkCacheStorage.instance.has_Callback_1_(unwrap_jso(this), cacheName));
+  Future has(String cacheName) => convertNativePromiseToDartFuture(_blink.BlinkCacheStorage.instance.has_Callback_1_(this, cacheName));
   
   @DomName('CacheStorage.keys')
   @DocsEditable()
   @Experimental() // untriaged
-  Future keys() => wrap_jso(_blink.BlinkCacheStorage.instance.keys_Callback_0_(unwrap_jso(this)));
+  Future keys() => convertNativePromiseToDartFuture(_blink.BlinkCacheStorage.instance.keys_Callback_0_(this));
   
   Future match(/*RequestInfo*/ request, [Map options]) {
     if (options != null) {
-      return wrap_jso(_blink.BlinkCacheStorage.instance.match_Callback_2_(unwrap_jso(this), request, convertDartToNative_Dictionary(options)));
+      return _blink.BlinkCacheStorage.instance.match_Callback_2_(this, request, convertDartToNative_Dictionary(options));
     }
-    return wrap_jso(_blink.BlinkCacheStorage.instance.match_Callback_1_(unwrap_jso(this), request));
+    return _blink.BlinkCacheStorage.instance.match_Callback_1_(this, request);
   }
 
   @DomName('CacheStorage.open')
   @DocsEditable()
   @Experimental() // untriaged
-  Future open(String cacheName) => wrap_jso(_blink.BlinkCacheStorage.instance.open_Callback_1_(unwrap_jso(this), cacheName));
+  Future open(String cacheName) => convertNativePromiseToDartFuture(_blink.BlinkCacheStorage.instance.open_Callback_1_(this, cacheName));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3769,11 +3037,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CanvasElement internalCreateCanvasElement() {
-    return new CanvasElement._internalWrap();
-  }
-
-  external factory CanvasElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CanvasElement.internal_() : super.internal_();
@@ -3788,42 +3052,42 @@
   /// The height of this canvas element in CSS pixels.
   @DomName('HTMLCanvasElement.height')
   @DocsEditable()
-  int get height => _blink.BlinkHTMLCanvasElement.instance.height_Getter_(unwrap_jso(this));
+  int get height => _blink.BlinkHTMLCanvasElement.instance.height_Getter_(this);
   
   /// The height of this canvas element in CSS pixels.
   @DomName('HTMLCanvasElement.height')
   @DocsEditable()
-  set height(int value) => _blink.BlinkHTMLCanvasElement.instance.height_Setter_(unwrap_jso(this), value);
+  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.instance.width_Getter_(unwrap_jso(this));
+  int get width => _blink.BlinkHTMLCanvasElement.instance.width_Getter_(this);
   
   /// The width of this canvas element in CSS pixels.
   @DomName('HTMLCanvasElement.width')
   @DocsEditable()
-  set width(int value) => _blink.BlinkHTMLCanvasElement.instance.width_Setter_(unwrap_jso(this), value);
+  set width(int value) => _blink.BlinkHTMLCanvasElement.instance.width_Setter_(this, value);
   
   Object getContext(String contextId, [Map attributes]) {
     if (attributes != null) {
-      return wrap_jso(_blink.BlinkHTMLCanvasElement.instance.getContext_Callback_2_(unwrap_jso(this), contextId, convertDartToNative_Dictionary(attributes)));
+      return _blink.BlinkHTMLCanvasElement.instance.getContext_Callback_2_(this, contextId, convertDartToNative_Dictionary(attributes));
     }
-    return wrap_jso(_blink.BlinkHTMLCanvasElement.instance.getContext_Callback_1_(unwrap_jso(this), contextId));
+    return _blink.BlinkHTMLCanvasElement.instance.getContext_Callback_1_(this, contextId);
   }
 
   String _toDataUrl(String type, [arguments_OR_quality]) {
     if ((type is String || type == null) && arguments_OR_quality == null) {
-      return _blink.BlinkHTMLCanvasElement.instance.toDataURL_Callback_1_(unwrap_jso(this), type);
+      return _blink.BlinkHTMLCanvasElement.instance.toDataURL_Callback_1_(this, type);
     }
     if (arguments_OR_quality != null && (type is String || type == null)) {
-      return _blink.BlinkHTMLCanvasElement.instance.toDataURL_Callback_2_(unwrap_jso(this), type, unwrap_jso(arguments_OR_quality));
+      return _blink.BlinkHTMLCanvasElement.instance.toDataURL_Callback_2_(this, type, arguments_OR_quality);
     }
     if ((type is String || type == null) && arguments_OR_quality == null) {
-      return _blink.BlinkHTMLCanvasElement.instance.toDataURL_Callback_1_(unwrap_jso(this), type);
+      return _blink.BlinkHTMLCanvasElement.instance.toDataURL_Callback_1_(this, type);
     }
     if ((arguments_OR_quality is num || arguments_OR_quality == null) && (type is String || type == null)) {
-      return _blink.BlinkHTMLCanvasElement.instance.toDataURL_Callback_2_(unwrap_jso(this), type, unwrap_jso(arguments_OR_quality));
+      return _blink.BlinkHTMLCanvasElement.instance.toDataURL_Callback_2_(this, type, arguments_OR_quality);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -3958,21 +3222,13 @@
   // To suppress missing implicit constructor warnings.
   factory CanvasGradient._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static CanvasGradient internalCreateCanvasGradient() {
-    return new CanvasGradient._internalWrap();
-  }
 
-  factory CanvasGradient._internalWrap() {
-    return new CanvasGradient.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CanvasGradient.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   /**
    * Adds a color stop to this gradient at the offset.
    *
@@ -3984,7 +3240,7 @@
    */
   @DomName('CanvasGradient.addColorStop')
   @DocsEditable()
-  void addColorStop(num offset, String color) => _blink.BlinkCanvasGradient.instance.addColorStop_Callback_2_(unwrap_jso(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
@@ -4028,25 +3284,17 @@
   // To suppress missing implicit constructor warnings.
   factory CanvasPattern._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static CanvasPattern internalCreateCanvasPattern() {
-    return new CanvasPattern._internalWrap();
-  }
 
-  factory CanvasPattern._internalWrap() {
-    return new CanvasPattern.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CanvasPattern.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('CanvasPattern.setTransform')
   @DocsEditable()
   @Experimental() // untriaged
-  void setTransform(Matrix transform) => _blink.BlinkCanvasPattern.instance.setTransform_Callback_1_(unwrap_jso(this), unwrap_jso(transform));
+  void setTransform(Matrix transform) => _blink.BlinkCanvasPattern.instance.setTransform_Callback_1_(this, transform);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4063,87 +3311,79 @@
   // To suppress missing implicit constructor warnings.
   factory CanvasRenderingContext2D._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static CanvasRenderingContext2D internalCreateCanvasRenderingContext2D() {
-    return new CanvasRenderingContext2D._internalWrap();
-  }
 
-  factory CanvasRenderingContext2D._internalWrap() {
-    return new CanvasRenderingContext2D.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CanvasRenderingContext2D.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('CanvasRenderingContext2D.canvas')
   @DocsEditable()
   @Experimental() // untriaged
-  CanvasElement get canvas => wrap_jso(_blink.BlinkCanvasRenderingContext2D.instance.canvas_Getter_(unwrap_jso(this)));
+  CanvasElement get canvas => _blink.BlinkCanvasRenderingContext2D.instance.canvas_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.currentTransform')
   @DocsEditable()
   @Experimental() // untriaged
-  Matrix get currentTransform => wrap_jso(_blink.BlinkCanvasRenderingContext2D.instance.currentTransform_Getter_(unwrap_jso(this)));
+  Matrix get currentTransform => _blink.BlinkCanvasRenderingContext2D.instance.currentTransform_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.currentTransform')
   @DocsEditable()
   @Experimental() // untriaged
-  set currentTransform(Matrix value) => _blink.BlinkCanvasRenderingContext2D.instance.currentTransform_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set currentTransform(Matrix value) => _blink.BlinkCanvasRenderingContext2D.instance.currentTransform_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.direction')
   @DocsEditable()
   @Experimental() // untriaged
-  String get direction => _blink.BlinkCanvasRenderingContext2D.instance.direction_Getter_(unwrap_jso(this));
+  String get direction => _blink.BlinkCanvasRenderingContext2D.instance.direction_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.direction')
   @DocsEditable()
   @Experimental() // untriaged
-  set direction(String value) => _blink.BlinkCanvasRenderingContext2D.instance.direction_Setter_(unwrap_jso(this), value);
+  set direction(String value) => _blink.BlinkCanvasRenderingContext2D.instance.direction_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.fillStyle')
   @DocsEditable()
-  Object get fillStyle => wrap_jso(_blink.BlinkCanvasRenderingContext2D.instance.fillStyle_Getter_(unwrap_jso(this)));
+  Object get fillStyle => (_blink.BlinkCanvasRenderingContext2D.instance.fillStyle_Getter_(this));
   
   @DomName('CanvasRenderingContext2D.fillStyle')
   @DocsEditable()
-  set fillStyle(Object value) => _blink.BlinkCanvasRenderingContext2D.instance.fillStyle_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set fillStyle(Object value) => _blink.BlinkCanvasRenderingContext2D.instance.fillStyle_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.filter')
   @DocsEditable()
   @Experimental() // untriaged
-  String get filter => _blink.BlinkCanvasRenderingContext2D.instance.filter_Getter_(unwrap_jso(this));
+  String get filter => _blink.BlinkCanvasRenderingContext2D.instance.filter_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.filter')
   @DocsEditable()
   @Experimental() // untriaged
-  set filter(String value) => _blink.BlinkCanvasRenderingContext2D.instance.filter_Setter_(unwrap_jso(this), value);
+  set filter(String value) => _blink.BlinkCanvasRenderingContext2D.instance.filter_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.font')
   @DocsEditable()
-  String get font => _blink.BlinkCanvasRenderingContext2D.instance.font_Getter_(unwrap_jso(this));
+  String get font => _blink.BlinkCanvasRenderingContext2D.instance.font_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.font')
   @DocsEditable()
-  set font(String value) => _blink.BlinkCanvasRenderingContext2D.instance.font_Setter_(unwrap_jso(this), value);
+  set font(String value) => _blink.BlinkCanvasRenderingContext2D.instance.font_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.globalAlpha')
   @DocsEditable()
-  num get globalAlpha => _blink.BlinkCanvasRenderingContext2D.instance.globalAlpha_Getter_(unwrap_jso(this));
+  num get globalAlpha => _blink.BlinkCanvasRenderingContext2D.instance.globalAlpha_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.globalAlpha')
   @DocsEditable()
-  set globalAlpha(num value) => _blink.BlinkCanvasRenderingContext2D.instance.globalAlpha_Setter_(unwrap_jso(this), value);
+  set globalAlpha(num value) => _blink.BlinkCanvasRenderingContext2D.instance.globalAlpha_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.globalCompositeOperation')
   @DocsEditable()
-  String get globalCompositeOperation => _blink.BlinkCanvasRenderingContext2D.instance.globalCompositeOperation_Getter_(unwrap_jso(this));
+  String get globalCompositeOperation => _blink.BlinkCanvasRenderingContext2D.instance.globalCompositeOperation_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.globalCompositeOperation')
   @DocsEditable()
-  set globalCompositeOperation(String value) => _blink.BlinkCanvasRenderingContext2D.instance.globalCompositeOperation_Setter_(unwrap_jso(this), value);
+  set globalCompositeOperation(String value) => _blink.BlinkCanvasRenderingContext2D.instance.globalCompositeOperation_Setter_(this, value);
   
   /**
    * Whether images and patterns on this canvas will be smoothed when this
@@ -4158,7 +3398,7 @@
   @DomName('CanvasRenderingContext2D.imageSmoothingEnabled')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get imageSmoothingEnabled => _blink.BlinkCanvasRenderingContext2D.instance.imageSmoothingEnabled_Getter_(unwrap_jso(this));
+  bool get imageSmoothingEnabled => _blink.BlinkCanvasRenderingContext2D.instance.imageSmoothingEnabled_Getter_(this);
   
   /**
    * Whether images and patterns on this canvas will be smoothed when this
@@ -4173,141 +3413,141 @@
   @DomName('CanvasRenderingContext2D.imageSmoothingEnabled')
   @DocsEditable()
   @Experimental() // untriaged
-  set imageSmoothingEnabled(bool value) => _blink.BlinkCanvasRenderingContext2D.instance.imageSmoothingEnabled_Setter_(unwrap_jso(this), value);
+  set imageSmoothingEnabled(bool value) => _blink.BlinkCanvasRenderingContext2D.instance.imageSmoothingEnabled_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.lineCap')
   @DocsEditable()
-  String get lineCap => _blink.BlinkCanvasRenderingContext2D.instance.lineCap_Getter_(unwrap_jso(this));
+  String get lineCap => _blink.BlinkCanvasRenderingContext2D.instance.lineCap_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.lineCap')
   @DocsEditable()
-  set lineCap(String value) => _blink.BlinkCanvasRenderingContext2D.instance.lineCap_Setter_(unwrap_jso(this), value);
+  set lineCap(String value) => _blink.BlinkCanvasRenderingContext2D.instance.lineCap_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.lineDashOffset')
   @DocsEditable()
-  num get lineDashOffset => _blink.BlinkCanvasRenderingContext2D.instance.lineDashOffset_Getter_(unwrap_jso(this));
+  num get lineDashOffset => _blink.BlinkCanvasRenderingContext2D.instance.lineDashOffset_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.lineDashOffset')
   @DocsEditable()
-  set lineDashOffset(num value) => _blink.BlinkCanvasRenderingContext2D.instance.lineDashOffset_Setter_(unwrap_jso(this), value);
+  set lineDashOffset(num value) => _blink.BlinkCanvasRenderingContext2D.instance.lineDashOffset_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.lineJoin')
   @DocsEditable()
-  String get lineJoin => _blink.BlinkCanvasRenderingContext2D.instance.lineJoin_Getter_(unwrap_jso(this));
+  String get lineJoin => _blink.BlinkCanvasRenderingContext2D.instance.lineJoin_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.lineJoin')
   @DocsEditable()
-  set lineJoin(String value) => _blink.BlinkCanvasRenderingContext2D.instance.lineJoin_Setter_(unwrap_jso(this), value);
+  set lineJoin(String value) => _blink.BlinkCanvasRenderingContext2D.instance.lineJoin_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.lineWidth')
   @DocsEditable()
-  num get lineWidth => _blink.BlinkCanvasRenderingContext2D.instance.lineWidth_Getter_(unwrap_jso(this));
+  num get lineWidth => _blink.BlinkCanvasRenderingContext2D.instance.lineWidth_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.lineWidth')
   @DocsEditable()
-  set lineWidth(num value) => _blink.BlinkCanvasRenderingContext2D.instance.lineWidth_Setter_(unwrap_jso(this), value);
+  set lineWidth(num value) => _blink.BlinkCanvasRenderingContext2D.instance.lineWidth_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.miterLimit')
   @DocsEditable()
-  num get miterLimit => _blink.BlinkCanvasRenderingContext2D.instance.miterLimit_Getter_(unwrap_jso(this));
+  num get miterLimit => _blink.BlinkCanvasRenderingContext2D.instance.miterLimit_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.miterLimit')
   @DocsEditable()
-  set miterLimit(num value) => _blink.BlinkCanvasRenderingContext2D.instance.miterLimit_Setter_(unwrap_jso(this), value);
+  set miterLimit(num value) => _blink.BlinkCanvasRenderingContext2D.instance.miterLimit_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.shadowBlur')
   @DocsEditable()
-  num get shadowBlur => _blink.BlinkCanvasRenderingContext2D.instance.shadowBlur_Getter_(unwrap_jso(this));
+  num get shadowBlur => _blink.BlinkCanvasRenderingContext2D.instance.shadowBlur_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.shadowBlur')
   @DocsEditable()
-  set shadowBlur(num value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowBlur_Setter_(unwrap_jso(this), value);
+  set shadowBlur(num value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowBlur_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.shadowColor')
   @DocsEditable()
-  String get shadowColor => _blink.BlinkCanvasRenderingContext2D.instance.shadowColor_Getter_(unwrap_jso(this));
+  String get shadowColor => _blink.BlinkCanvasRenderingContext2D.instance.shadowColor_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.shadowColor')
   @DocsEditable()
-  set shadowColor(String value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowColor_Setter_(unwrap_jso(this), value);
+  set shadowColor(String value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowColor_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.shadowOffsetX')
   @DocsEditable()
-  num get shadowOffsetX => _blink.BlinkCanvasRenderingContext2D.instance.shadowOffsetX_Getter_(unwrap_jso(this));
+  num get shadowOffsetX => _blink.BlinkCanvasRenderingContext2D.instance.shadowOffsetX_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.shadowOffsetX')
   @DocsEditable()
-  set shadowOffsetX(num value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowOffsetX_Setter_(unwrap_jso(this), value);
+  set shadowOffsetX(num value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowOffsetX_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.shadowOffsetY')
   @DocsEditable()
-  num get shadowOffsetY => _blink.BlinkCanvasRenderingContext2D.instance.shadowOffsetY_Getter_(unwrap_jso(this));
+  num get shadowOffsetY => _blink.BlinkCanvasRenderingContext2D.instance.shadowOffsetY_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.shadowOffsetY')
   @DocsEditable()
-  set shadowOffsetY(num value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowOffsetY_Setter_(unwrap_jso(this), value);
+  set shadowOffsetY(num value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowOffsetY_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.strokeStyle')
   @DocsEditable()
-  Object get strokeStyle => wrap_jso(_blink.BlinkCanvasRenderingContext2D.instance.strokeStyle_Getter_(unwrap_jso(this)));
+  Object get strokeStyle => (_blink.BlinkCanvasRenderingContext2D.instance.strokeStyle_Getter_(this));
   
   @DomName('CanvasRenderingContext2D.strokeStyle')
   @DocsEditable()
-  set strokeStyle(Object value) => _blink.BlinkCanvasRenderingContext2D.instance.strokeStyle_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set strokeStyle(Object value) => _blink.BlinkCanvasRenderingContext2D.instance.strokeStyle_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.textAlign')
   @DocsEditable()
-  String get textAlign => _blink.BlinkCanvasRenderingContext2D.instance.textAlign_Getter_(unwrap_jso(this));
+  String get textAlign => _blink.BlinkCanvasRenderingContext2D.instance.textAlign_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.textAlign')
   @DocsEditable()
-  set textAlign(String value) => _blink.BlinkCanvasRenderingContext2D.instance.textAlign_Setter_(unwrap_jso(this), value);
+  set textAlign(String value) => _blink.BlinkCanvasRenderingContext2D.instance.textAlign_Setter_(this, value);
   
   @DomName('CanvasRenderingContext2D.textBaseline')
   @DocsEditable()
-  String get textBaseline => _blink.BlinkCanvasRenderingContext2D.instance.textBaseline_Getter_(unwrap_jso(this));
+  String get textBaseline => _blink.BlinkCanvasRenderingContext2D.instance.textBaseline_Getter_(this);
   
   @DomName('CanvasRenderingContext2D.textBaseline')
   @DocsEditable()
-  set textBaseline(String value) => _blink.BlinkCanvasRenderingContext2D.instance.textBaseline_Setter_(unwrap_jso(this), value);
+  set textBaseline(String value) => _blink.BlinkCanvasRenderingContext2D.instance.textBaseline_Setter_(this, value);
   
   void addHitRegion([Map options]) {
     if (options != null) {
-      _blink.BlinkCanvasRenderingContext2D.instance.addHitRegion_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(options));
+      _blink.BlinkCanvasRenderingContext2D.instance.addHitRegion_Callback_1_(this, convertDartToNative_Dictionary(options));
       return;
     }
-    _blink.BlinkCanvasRenderingContext2D.instance.addHitRegion_Callback_0_(unwrap_jso(this));
+    _blink.BlinkCanvasRenderingContext2D.instance.addHitRegion_Callback_0_(this);
     return;
   }
 
   @DomName('CanvasRenderingContext2D.beginPath')
   @DocsEditable()
-  void beginPath() => _blink.BlinkCanvasRenderingContext2D.instance.beginPath_Callback_0_(unwrap_jso(this));
+  void beginPath() => _blink.BlinkCanvasRenderingContext2D.instance.beginPath_Callback_0_(this);
   
   @DomName('CanvasRenderingContext2D.clearHitRegions')
   @DocsEditable()
   @Experimental() // untriaged
-  void clearHitRegions() => _blink.BlinkCanvasRenderingContext2D.instance.clearHitRegions_Callback_0_(unwrap_jso(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.instance.clearRect_Callback_4_(unwrap_jso(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.instance.clip_Callback_0_(unwrap_jso(this));
+      _blink.BlinkCanvasRenderingContext2D.instance.clip_Callback_0_(this);
       return;
     }
     if ((path_OR_winding is String) && winding == null) {
-      _blink.BlinkCanvasRenderingContext2D.instance.clip_Callback_1_(unwrap_jso(this), unwrap_jso(path_OR_winding));
+      _blink.BlinkCanvasRenderingContext2D.instance.clip_Callback_1_(this, path_OR_winding);
       return;
     }
     if ((path_OR_winding is Path2D) && winding == null) {
-      _blink.BlinkCanvasRenderingContext2D.instance.clip_Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.clip_Callback_2_(unwrap_jso(this), unwrap_jso(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");
@@ -4315,33 +3555,33 @@
 
   ImageData createImageData(imagedata_OR_sw, [num sh]) {
     if ((imagedata_OR_sw is ImageData) && sh == null) {
-      return wrap_jso(_blink.BlinkCanvasRenderingContext2D.instance.createImageData_Callback_1_(unwrap_jso(this), unwrap_jso(imagedata_OR_sw)));
+      return _blink.BlinkCanvasRenderingContext2D.instance.createImageData_Callback_1_(this, imagedata_OR_sw);
     }
     if ((sh is num) && (imagedata_OR_sw is num)) {
-      return wrap_jso(_blink.BlinkCanvasRenderingContext2D.instance.createImageData_Callback_2_(unwrap_jso(this), unwrap_jso(imagedata_OR_sw), sh));
+      return _blink.BlinkCanvasRenderingContext2D.instance.createImageData_Callback_2_(this, imagedata_OR_sw, sh);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   @DomName('CanvasRenderingContext2D.createLinearGradient')
   @DocsEditable()
-  CanvasGradient createLinearGradient(num x0, num y0, num x1, num y1) => wrap_jso(_blink.BlinkCanvasRenderingContext2D.instance.createLinearGradient_Callback_4_(unwrap_jso(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);
   
   @DomName('CanvasRenderingContext2D.createPattern')
   @DocsEditable()
-  CanvasPattern createPattern(Object image, String repetitionType) => wrap_jso(_blink.BlinkCanvasRenderingContext2D.instance.createPattern_Callback_2_(unwrap_jso(this), image, repetitionType));
+  CanvasPattern createPattern(Object 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) => wrap_jso(_blink.BlinkCanvasRenderingContext2D.instance.createRadialGradient_Callback_6_(unwrap_jso(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.instance.drawFocusIfNeeded_Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.drawFocusIfNeeded_Callback_2_(unwrap_jso(this), unwrap_jso(element_OR_path), unwrap_jso(element));
+      _blink.BlinkCanvasRenderingContext2D.instance.drawFocusIfNeeded_Callback_2_(this, element_OR_path, element);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -4349,15 +3589,15 @@
 
   void _drawImage(Object image, 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) && image != null && sw_OR_width == null && height_OR_sh == null && dx == null && dy == null && dw == null && dh == null) {
-      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_3_(unwrap_jso(this), image, sx_OR_x, sy_OR_y);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_3_(this, image, 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) && image != null && dx == null && dy == null && dw == null && dh == null) {
-      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_5_(unwrap_jso(this), image, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_5_(this, image, 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) && image != null) {
-      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_9_(unwrap_jso(this), image, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_9_(this, image, 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");
@@ -4365,19 +3605,19 @@
 
   void fill([path_OR_winding, String winding]) {
     if (path_OR_winding == null && winding == null) {
-      _blink.BlinkCanvasRenderingContext2D.instance.fill_Callback_0_(unwrap_jso(this));
+      _blink.BlinkCanvasRenderingContext2D.instance.fill_Callback_0_(this);
       return;
     }
     if ((path_OR_winding is String) && winding == null) {
-      _blink.BlinkCanvasRenderingContext2D.instance.fill_Callback_1_(unwrap_jso(this), unwrap_jso(path_OR_winding));
+      _blink.BlinkCanvasRenderingContext2D.instance.fill_Callback_1_(this, path_OR_winding);
       return;
     }
     if ((path_OR_winding is Path2D) && winding == null) {
-      _blink.BlinkCanvasRenderingContext2D.instance.fill_Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.fill_Callback_2_(unwrap_jso(this), unwrap_jso(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");
@@ -4385,14 +3625,14 @@
 
   @DomName('CanvasRenderingContext2D.fillRect')
   @DocsEditable()
-  void fillRect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.instance.fillRect_Callback_4_(unwrap_jso(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.instance.fillText_Callback_4_(unwrap_jso(this), text, x, y, maxWidth);
+      _blink.BlinkCanvasRenderingContext2D.instance.fillText_Callback_4_(this, text, x, y, maxWidth);
       return;
     }
-    _blink.BlinkCanvasRenderingContext2D.instance.fillText_Callback_3_(unwrap_jso(this), text, x, y);
+    _blink.BlinkCanvasRenderingContext2D.instance.fillText_Callback_3_(this, text, x, y);
     return;
   }
 
@@ -4400,58 +3640,58 @@
   @DocsEditable()
   // http://wiki.whatwg.org/wiki/CanvasOpaque#Suggested_IDL
   @Experimental()
-   getContextAttributes() => convertNativeDictionaryToDartDictionary(wrap_jso(_blink.BlinkCanvasRenderingContext2D.instance.getContextAttributes_Callback_0_(unwrap_jso(this))));
+   getContextAttributes() => convertNativeDictionaryToDartDictionary((_blink.BlinkCanvasRenderingContext2D.instance.getContextAttributes_Callback_0_(this)));
   
   @DomName('CanvasRenderingContext2D.getImageData')
   @DocsEditable()
-  ImageData getImageData(num sx, num sy, num sw, num sh) => wrap_jso(_blink.BlinkCanvasRenderingContext2D.instance.getImageData_Callback_4_(unwrap_jso(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.instance.getLineDash_Callback_0_(unwrap_jso(this));
+  List<num> _getLineDash() => _blink.BlinkCanvasRenderingContext2D.instance.getLineDash_Callback_0_(this);
   
   @DomName('CanvasRenderingContext2D.isContextLost')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isContextLost() => _blink.BlinkCanvasRenderingContext2D.instance.isContextLost_Callback_0_(unwrap_jso(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.instance.isPointInPath_Callback_2_(unwrap_jso(this), unwrap_jso(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.instance.isPointInPath_Callback_3_(unwrap_jso(this), unwrap_jso(path_OR_x), x_OR_y, unwrap_jso(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.instance.isPointInPath_Callback_3_(unwrap_jso(this), unwrap_jso(path_OR_x), x_OR_y, unwrap_jso(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.instance.isPointInPath_Callback_4_(unwrap_jso(this), unwrap_jso(path_OR_x), x_OR_y, unwrap_jso(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.instance.isPointInStroke_Callback_2_(unwrap_jso(this), unwrap_jso(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.instance.isPointInStroke_Callback_3_(unwrap_jso(this), unwrap_jso(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) => wrap_jso(_blink.BlinkCanvasRenderingContext2D.instance.measureText_Callback_1_(unwrap_jso(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.instance.putImageData_Callback_3_(unwrap_jso(this), unwrap_jso(imagedata), dx, dy);
+      _blink.BlinkCanvasRenderingContext2D.instance.putImageData_Callback_3_(this, convertDartToNative_ImageData(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.instance.putImageData_Callback_7_(unwrap_jso(this), unwrap_jso(imagedata), dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
+      _blink.BlinkCanvasRenderingContext2D.instance.putImageData_Callback_7_(this, convertDartToNative_ImageData(imagedata), dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -4460,53 +3700,53 @@
   @DomName('CanvasRenderingContext2D.removeHitRegion')
   @DocsEditable()
   @Experimental() // untriaged
-  void removeHitRegion(String id) => _blink.BlinkCanvasRenderingContext2D.instance.removeHitRegion_Callback_1_(unwrap_jso(this), id);
+  void removeHitRegion(String id) => _blink.BlinkCanvasRenderingContext2D.instance.removeHitRegion_Callback_1_(this, id);
   
   @DomName('CanvasRenderingContext2D.resetTransform')
   @DocsEditable()
   @Experimental() // untriaged
-  void resetTransform() => _blink.BlinkCanvasRenderingContext2D.instance.resetTransform_Callback_0_(unwrap_jso(this));
+  void resetTransform() => _blink.BlinkCanvasRenderingContext2D.instance.resetTransform_Callback_0_(this);
   
   @DomName('CanvasRenderingContext2D.restore')
   @DocsEditable()
-  void restore() => _blink.BlinkCanvasRenderingContext2D.instance.restore_Callback_0_(unwrap_jso(this));
+  void restore() => _blink.BlinkCanvasRenderingContext2D.instance.restore_Callback_0_(this);
   
   @DomName('CanvasRenderingContext2D.rotate')
   @DocsEditable()
-  void rotate(num angle) => _blink.BlinkCanvasRenderingContext2D.instance.rotate_Callback_1_(unwrap_jso(this), angle);
+  void rotate(num angle) => _blink.BlinkCanvasRenderingContext2D.instance.rotate_Callback_1_(this, angle);
   
   @DomName('CanvasRenderingContext2D.save')
   @DocsEditable()
-  void save() => _blink.BlinkCanvasRenderingContext2D.instance.save_Callback_0_(unwrap_jso(this));
+  void save() => _blink.BlinkCanvasRenderingContext2D.instance.save_Callback_0_(this);
   
   @DomName('CanvasRenderingContext2D.scale')
   @DocsEditable()
-  void scale(num x, num y) => _blink.BlinkCanvasRenderingContext2D.instance.scale_Callback_2_(unwrap_jso(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.instance.scrollPathIntoView_Callback_1_(unwrap_jso(this), unwrap_jso(path));
+      _blink.BlinkCanvasRenderingContext2D.instance.scrollPathIntoView_Callback_1_(this, path);
       return;
     }
-    _blink.BlinkCanvasRenderingContext2D.instance.scrollPathIntoView_Callback_0_(unwrap_jso(this));
+    _blink.BlinkCanvasRenderingContext2D.instance.scrollPathIntoView_Callback_0_(this);
     return;
   }
 
   @DomName('CanvasRenderingContext2D.setLineDash')
   @DocsEditable()
-  void setLineDash(List<num> dash) => _blink.BlinkCanvasRenderingContext2D.instance.setLineDash_Callback_1_(unwrap_jso(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.instance.setTransform_Callback_6_(unwrap_jso(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.instance.stroke_Callback_0_(unwrap_jso(this));
+      _blink.BlinkCanvasRenderingContext2D.instance.stroke_Callback_0_(this);
       return;
     }
     if ((path is Path2D)) {
-      _blink.BlinkCanvasRenderingContext2D.instance.stroke_Callback_1_(unwrap_jso(this), unwrap_jso(path));
+      _blink.BlinkCanvasRenderingContext2D.instance.stroke_Callback_1_(this, path);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -4514,61 +3754,61 @@
 
   @DomName('CanvasRenderingContext2D.strokeRect')
   @DocsEditable()
-  void strokeRect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.instance.strokeRect_Callback_4_(unwrap_jso(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.instance.strokeText_Callback_4_(unwrap_jso(this), text, x, y, maxWidth);
+      _blink.BlinkCanvasRenderingContext2D.instance.strokeText_Callback_4_(this, text, x, y, maxWidth);
       return;
     }
-    _blink.BlinkCanvasRenderingContext2D.instance.strokeText_Callback_3_(unwrap_jso(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.instance.transform_Callback_6_(unwrap_jso(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.instance.translate_Callback_2_(unwrap_jso(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.instance.arc_Callback_6_(unwrap_jso(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.instance.arcTo_Callback_5_(unwrap_jso(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.instance.bezierCurveTo_Callback_6_(unwrap_jso(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.instance.closePath_Callback_0_(unwrap_jso(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.instance.ellipse_Callback_8_(unwrap_jso(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.instance.lineTo_Callback_2_(unwrap_jso(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.instance.moveTo_Callback_2_(unwrap_jso(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.instance.quadraticCurveTo_Callback_4_(unwrap_jso(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.instance.rect_Callback_4_(unwrap_jso(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);
   
 
   @DomName('CanvasRenderingContext2D.createImageDataFromImageData')
@@ -4829,11 +4069,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CharacterData internalCreateCharacterData() {
-    return new CharacterData._internalWrap();
-  }
-
-  external factory CharacterData._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CharacterData.internal_() : super.internal_();
@@ -4841,53 +4077,53 @@
 
   @DomName('CharacterData.data')
   @DocsEditable()
-  String get data => _blink.BlinkCharacterData.instance.data_Getter_(unwrap_jso(this));
+  String get data => _blink.BlinkCharacterData.instance.data_Getter_(this);
   
   @DomName('CharacterData.data')
   @DocsEditable()
-  set data(String value) => _blink.BlinkCharacterData.instance.data_Setter_(unwrap_jso(this), value);
+  set data(String value) => _blink.BlinkCharacterData.instance.data_Setter_(this, value);
   
   @DomName('CharacterData.length')
   @DocsEditable()
-  int get length => _blink.BlinkCharacterData.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkCharacterData.instance.length_Getter_(this);
   
   @DomName('CharacterData.appendData')
   @DocsEditable()
-  void appendData(String data) => _blink.BlinkCharacterData.instance.appendData_Callback_1_(unwrap_jso(this), data);
+  void appendData(String data) => _blink.BlinkCharacterData.instance.appendData_Callback_1_(this, data);
   
   @DomName('CharacterData.deleteData')
   @DocsEditable()
-  void deleteData(int offset, int count) => _blink.BlinkCharacterData.instance.deleteData_Callback_2_(unwrap_jso(this), offset, count);
+  void deleteData(int offset, int count) => _blink.BlinkCharacterData.instance.deleteData_Callback_2_(this, offset, count);
   
   @DomName('CharacterData.insertData')
   @DocsEditable()
-  void insertData(int offset, String data) => _blink.BlinkCharacterData.instance.insertData_Callback_2_(unwrap_jso(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 count, String data) => _blink.BlinkCharacterData.instance.replaceData_Callback_3_(unwrap_jso(this), offset, count, data);
+  void replaceData(int offset, int count, String data) => _blink.BlinkCharacterData.instance.replaceData_Callback_3_(this, offset, count, data);
   
   @DomName('CharacterData.substringData')
   @DocsEditable()
-  String substringData(int offset, int count) => _blink.BlinkCharacterData.instance.substringData_Callback_2_(unwrap_jso(this), offset, count);
+  String substringData(int offset, int count) => _blink.BlinkCharacterData.instance.substringData_Callback_2_(this, offset, count);
   
   @DomName('CharacterData.after')
   @DocsEditable()
   @Experimental() // untriaged
-  void after(Object nodes) => _blink.BlinkCharacterData.instance.after_Callback_1_(unwrap_jso(this), nodes);
+  void after(Object nodes) => _blink.BlinkCharacterData.instance.after_Callback_1_(this, nodes);
   
   @DomName('CharacterData.before')
   @DocsEditable()
   @Experimental() // untriaged
-  void before(Object nodes) => _blink.BlinkCharacterData.instance.before_Callback_1_(unwrap_jso(this), nodes);
+  void before(Object nodes) => _blink.BlinkCharacterData.instance.before_Callback_1_(this, nodes);
   
   @DomName('CharacterData.nextElementSibling')
   @DocsEditable()
-  Element get nextElementSibling => wrap_jso(_blink.BlinkCharacterData.instance.nextElementSibling_Getter_(unwrap_jso(this)));
+  Element get nextElementSibling => _blink.BlinkCharacterData.instance.nextElementSibling_Getter_(this);
   
   @DomName('CharacterData.previousElementSibling')
   @DocsEditable()
-  Element get previousElementSibling => wrap_jso(_blink.BlinkCharacterData.instance.previousElementSibling_Getter_(unwrap_jso(this)));
+  Element get previousElementSibling => _blink.BlinkCharacterData.instance.previousElementSibling_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4934,21 +4170,13 @@
   // To suppress missing implicit constructor warnings.
   factory ChromiumValuebuffer._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ChromiumValuebuffer internalCreateChromiumValuebuffer() {
-    return new ChromiumValuebuffer._internalWrap();
-  }
 
-  factory ChromiumValuebuffer._internalWrap() {
-    return new ChromiumValuebuffer.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ChromiumValuebuffer.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -4968,16 +4196,12 @@
   @DocsEditable()
   factory CircularGeofencingRegion(Map init) {
     var init_1 = convertDartToNative_Dictionary(init);
-    return wrap_jso(_blink.BlinkCircularGeofencingRegion.instance.constructorCallback_1_(init_1));
+    return _blink.BlinkCircularGeofencingRegion.instance.constructorCallback_1_(init_1);
   }
 
 
   @Deprecated("Internal Use Only")
-  static CircularGeofencingRegion internalCreateCircularGeofencingRegion() {
-    return new CircularGeofencingRegion._internalWrap();
-  }
-
-  external factory CircularGeofencingRegion._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CircularGeofencingRegion.internal_() : super.internal_();
@@ -4996,17 +4220,17 @@
   @DomName('CircularGeofencingRegion.latitude')
   @DocsEditable()
   @Experimental() // untriaged
-  num get latitude => _blink.BlinkCircularGeofencingRegion.instance.latitude_Getter_(unwrap_jso(this));
+  num get latitude => _blink.BlinkCircularGeofencingRegion.instance.latitude_Getter_(this);
   
   @DomName('CircularGeofencingRegion.longitude')
   @DocsEditable()
   @Experimental() // untriaged
-  num get longitude => _blink.BlinkCircularGeofencingRegion.instance.longitude_Getter_(unwrap_jso(this));
+  num get longitude => _blink.BlinkCircularGeofencingRegion.instance.longitude_Getter_(this);
   
   @DomName('CircularGeofencingRegion.radius')
   @DocsEditable()
   @Experimental() // untriaged
-  num get radius => _blink.BlinkCircularGeofencingRegion.instance.radius_Getter_(unwrap_jso(this));
+  num get radius => _blink.BlinkCircularGeofencingRegion.instance.radius_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5023,42 +4247,34 @@
   // To suppress missing implicit constructor warnings.
   factory Client._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Client internalCreateClient() {
-    return new Client._internalWrap();
-  }
 
-  factory Client._internalWrap() {
-    return new Client.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Client.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Client.frameType')
   @DocsEditable()
   @Experimental() // untriaged
-  String get frameType => _blink.BlinkClient.instance.frameType_Getter_(unwrap_jso(this));
+  String get frameType => _blink.BlinkClient.instance.frameType_Getter_(this);
   
   @DomName('Client.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkClient.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkClient.instance.id_Getter_(this);
   
   @DomName('Client.url')
   @DocsEditable()
   @Experimental() // untriaged
-  String get url => _blink.BlinkClient.instance.url_Getter_(unwrap_jso(this));
+  String get url => _blink.BlinkClient.instance.url_Getter_(this);
   
   void postMessage(/*SerializedScriptValue*/ message, [List<MessagePort> transfer]) {
     if (transfer != null) {
-      _blink.BlinkClient.instance.postMessage_Callback_2_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message), transfer);
+      _blink.BlinkClient.instance.postMessage_Callback_2_(this, convertDartToNative_SerializedScriptValue(message), transfer);
       return;
     }
-    _blink.BlinkClient.instance.postMessage_Callback_1_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message));
+    _blink.BlinkClient.instance.postMessage_Callback_1_(this, convertDartToNative_SerializedScriptValue(message));
     return;
   }
 
@@ -5077,37 +4293,29 @@
   // To suppress missing implicit constructor warnings.
   factory Clients._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Clients internalCreateClients() {
-    return new Clients._internalWrap();
-  }
 
-  factory Clients._internalWrap() {
-    return new Clients.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Clients.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Clients.claim')
   @DocsEditable()
   @Experimental() // untriaged
-  Future claim() => wrap_jso(_blink.BlinkClients.instance.claim_Callback_0_(unwrap_jso(this)));
+  Future claim() => convertNativePromiseToDartFuture(_blink.BlinkClients.instance.claim_Callback_0_(this));
   
   Future matchAll([Map options]) {
     if (options != null) {
-      return wrap_jso(_blink.BlinkClients.instance.matchAll_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(options)));
+      return _blink.BlinkClients.instance.matchAll_Callback_1_(this, convertDartToNative_Dictionary(options));
     }
-    return wrap_jso(_blink.BlinkClients.instance.matchAll_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkClients.instance.matchAll_Callback_0_(this);
   }
 
   @DomName('Clients.openWindow')
   @DocsEditable()
   @Experimental() // untriaged
-  Future openWindow(String url) => wrap_jso(_blink.BlinkClients.instance.openWindow_Callback_1_(unwrap_jso(this), url));
+  Future openWindow(String url) => convertNativePromiseToDartFuture(_blink.BlinkClients.instance.openWindow_Callback_1_(this, url));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5126,11 +4334,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ClipboardEvent internalCreateClipboardEvent() {
-    return new ClipboardEvent._internalWrap();
-  }
-
-  external factory ClipboardEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ClipboardEvent.internal_() : super.internal_();
@@ -5139,7 +4343,7 @@
   @DomName('ClipboardEvent.clipboardData')
   @DocsEditable()
   @Experimental() // untriaged
-  DataTransfer get clipboardData => wrap_jso(_blink.BlinkClipboardEvent.instance.clipboardData_Getter_(unwrap_jso(this)));
+  DataTransfer get clipboardData => _blink.BlinkClipboardEvent.instance.clipboardData_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5160,18 +4364,14 @@
   factory CloseEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkCloseEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkCloseEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkCloseEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkCloseEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static CloseEvent internalCreateCloseEvent() {
-    return new CloseEvent._internalWrap();
-  }
-
-  external factory CloseEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CloseEvent.internal_() : super.internal_();
@@ -5179,15 +4379,15 @@
 
   @DomName('CloseEvent.code')
   @DocsEditable()
-  int get code => _blink.BlinkCloseEvent.instance.code_Getter_(unwrap_jso(this));
+  int get code => _blink.BlinkCloseEvent.instance.code_Getter_(this);
   
   @DomName('CloseEvent.reason')
   @DocsEditable()
-  String get reason => _blink.BlinkCloseEvent.instance.reason_Getter_(unwrap_jso(this));
+  String get reason => _blink.BlinkCloseEvent.instance.reason_Getter_(this);
   
   @DomName('CloseEvent.wasClean')
   @DocsEditable()
-  bool get wasClean => _blink.BlinkCloseEvent.instance.wasClean_Getter_(unwrap_jso(this));
+  bool get wasClean => _blink.BlinkCloseEvent.instance.wasClean_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5205,18 +4405,14 @@
   @DocsEditable()
   factory Comment([String data]) {
     if (data != null) {
-      return wrap_jso(_blink.BlinkComment.instance.constructorCallback_1_(data));
+      return _blink.BlinkComment.instance.constructorCallback_1_(data);
     }
-    return wrap_jso(_blink.BlinkComment.instance.constructorCallback_0_());
+    return _blink.BlinkComment.instance.constructorCallback_0_();
   }
 
 
   @Deprecated("Internal Use Only")
-  static Comment internalCreateComment() {
-    return new Comment._internalWrap();
-  }
-
-  external factory Comment._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Comment.internal_() : super.internal_();
@@ -5250,18 +4446,14 @@
   factory CompositionEvent._(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkCompositionEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkCompositionEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkCompositionEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkCompositionEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static CompositionEvent internalCreateCompositionEvent() {
-    return new CompositionEvent._internalWrap();
-  }
-
-  external factory CompositionEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CompositionEvent.internal_() : super.internal_();
@@ -5269,11 +4461,11 @@
 
   @DomName('CompositionEvent.data')
   @DocsEditable()
-  String get data => _blink.BlinkCompositionEvent.instance.data_Getter_(unwrap_jso(this));
+  String get data => _blink.BlinkCompositionEvent.instance.data_Getter_(this);
   
   @DomName('CompositionEvent.initCompositionEvent')
   @DocsEditable()
-  void _initCompositionEvent(String type, bool bubbles, bool cancelable, Window view, String data) => _blink.BlinkCompositionEvent.instance.initCompositionEvent_Callback_5_(unwrap_jso(this), type, bubbles, cancelable, unwrap_jso(view), data);
+  void _initCompositionEvent(String type, bool bubbles, bool cancelable, Window view, String data) => _blink.BlinkCompositionEvent.instance.initCompositionEvent_Callback_5_(this, type, bubbles, cancelable, view, data);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5293,73 +4485,65 @@
   @DomName('CompositorProxy.CompositorProxy')
   @DocsEditable()
   factory CompositorProxy(Element element, List<String> attributeArray) {
-    return wrap_jso(_blink.BlinkCompositorProxy.instance.constructorCallback_2_(element, attributeArray));
+    return _blink.BlinkCompositorProxy.instance.constructorCallback_2_(element, attributeArray);
   }
 
+
   @Deprecated("Internal Use Only")
-  static CompositorProxy internalCreateCompositorProxy() {
-    return new CompositorProxy._internalWrap();
-  }
-
-  factory CompositorProxy._internalWrap() {
-    return new CompositorProxy.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CompositorProxy.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('CompositorProxy.opacity')
   @DocsEditable()
   @Experimental() // untriaged
-  num get opacity => _blink.BlinkCompositorProxy.instance.opacity_Getter_(unwrap_jso(this));
+  num get opacity => _blink.BlinkCompositorProxy.instance.opacity_Getter_(this);
   
   @DomName('CompositorProxy.opacity')
   @DocsEditable()
   @Experimental() // untriaged
-  set opacity(num value) => _blink.BlinkCompositorProxy.instance.opacity_Setter_(unwrap_jso(this), value);
+  set opacity(num value) => _blink.BlinkCompositorProxy.instance.opacity_Setter_(this, value);
   
   @DomName('CompositorProxy.scrollLeft')
   @DocsEditable()
   @Experimental() // untriaged
-  num get scrollLeft => _blink.BlinkCompositorProxy.instance.scrollLeft_Getter_(unwrap_jso(this));
+  num get scrollLeft => _blink.BlinkCompositorProxy.instance.scrollLeft_Getter_(this);
   
   @DomName('CompositorProxy.scrollLeft')
   @DocsEditable()
   @Experimental() // untriaged
-  set scrollLeft(num value) => _blink.BlinkCompositorProxy.instance.scrollLeft_Setter_(unwrap_jso(this), value);
+  set scrollLeft(num value) => _blink.BlinkCompositorProxy.instance.scrollLeft_Setter_(this, value);
   
   @DomName('CompositorProxy.scrollTop')
   @DocsEditable()
   @Experimental() // untriaged
-  num get scrollTop => _blink.BlinkCompositorProxy.instance.scrollTop_Getter_(unwrap_jso(this));
+  num get scrollTop => _blink.BlinkCompositorProxy.instance.scrollTop_Getter_(this);
   
   @DomName('CompositorProxy.scrollTop')
   @DocsEditable()
   @Experimental() // untriaged
-  set scrollTop(num value) => _blink.BlinkCompositorProxy.instance.scrollTop_Setter_(unwrap_jso(this), value);
+  set scrollTop(num value) => _blink.BlinkCompositorProxy.instance.scrollTop_Setter_(this, value);
   
   @DomName('CompositorProxy.transform')
   @DocsEditable()
   @Experimental() // untriaged
-  DomMatrix get transform => wrap_jso(_blink.BlinkCompositorProxy.instance.transform_Getter_(unwrap_jso(this)));
+  DomMatrix get transform => _blink.BlinkCompositorProxy.instance.transform_Getter_(this);
   
   @DomName('CompositorProxy.transform')
   @DocsEditable()
   @Experimental() // untriaged
-  set transform(DomMatrix value) => _blink.BlinkCompositorProxy.instance.transform_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set transform(DomMatrix value) => _blink.BlinkCompositorProxy.instance.transform_Setter_(this, value);
   
   @DomName('CompositorProxy.disconnect')
   @DocsEditable()
   @Experimental() // untriaged
-  void disconnect() => _blink.BlinkCompositorProxy.instance.disconnect_Callback_0_(unwrap_jso(this));
+  void disconnect() => _blink.BlinkCompositorProxy.instance.disconnect_Callback_0_(this);
   
   @DomName('CompositorProxy.supports')
   @DocsEditable()
   @Experimental() // untriaged
-  bool supports(String attribute) => _blink.BlinkCompositorProxy.instance.supports_Callback_1_(unwrap_jso(this), attribute);
+  bool supports(String attribute) => _blink.BlinkCompositorProxy.instance.supports_Callback_1_(this, attribute);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5389,16 +4573,12 @@
   @DomName('CompositorWorker.CompositorWorker')
   @DocsEditable()
   factory CompositorWorker(String scriptUrl) {
-    return wrap_jso(_blink.BlinkCompositorWorker.instance.constructorCallback_1_(scriptUrl));
+    return _blink.BlinkCompositorWorker.instance.constructorCallback_1_(scriptUrl);
   }
 
 
   @Deprecated("Internal Use Only")
-  static CompositorWorker internalCreateCompositorWorker() {
-    return new CompositorWorker._internalWrap();
-  }
-
-  external factory CompositorWorker._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CompositorWorker.internal_() : super.internal_();
@@ -5406,17 +4586,17 @@
 
   void postMessage(/*SerializedScriptValue*/ message, [List<MessagePort> transfer]) {
     if (transfer != null) {
-      _blink.BlinkCompositorWorker.instance.postMessage_Callback_2_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message), transfer);
+      _blink.BlinkCompositorWorker.instance.postMessage_Callback_2_(this, convertDartToNative_SerializedScriptValue(message), transfer);
       return;
     }
-    _blink.BlinkCompositorWorker.instance.postMessage_Callback_1_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message));
+    _blink.BlinkCompositorWorker.instance.postMessage_Callback_1_(this, convertDartToNative_SerializedScriptValue(message));
     return;
   }
 
   @DomName('CompositorWorker.terminate')
   @DocsEditable()
   @Experimental() // untriaged
-  void terminate() => _blink.BlinkCompositorWorker.instance.terminate_Callback_0_(unwrap_jso(this));
+  void terminate() => _blink.BlinkCompositorWorker.instance.terminate_Callback_0_(this);
   
   @DomName('CompositorWorker.onerror')
   @DocsEditable()
@@ -5450,11 +4630,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CompositorWorkerGlobalScope internalCreateCompositorWorkerGlobalScope() {
-    return new CompositorWorkerGlobalScope._internalWrap();
-  }
-
-  external factory CompositorWorkerGlobalScope._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CompositorWorkerGlobalScope.internal_() : super.internal_();
@@ -5463,21 +4639,21 @@
   @DomName('CompositorWorkerGlobalScope.cancelAnimationFrame')
   @DocsEditable()
   @Experimental() // untriaged
-  void cancelAnimationFrame(int handle) => _blink.BlinkCompositorWorkerGlobalScope.instance.cancelAnimationFrame_Callback_1_(unwrap_jso(this), handle);
+  void cancelAnimationFrame(int handle) => _blink.BlinkCompositorWorkerGlobalScope.instance.cancelAnimationFrame_Callback_1_(this, handle);
   
   void postMessage(Object message, [List<MessagePort> transfer]) {
     if (transfer != null) {
-      _blink.BlinkCompositorWorkerGlobalScope.instance.postMessage_Callback_2_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message), transfer);
+      _blink.BlinkCompositorWorkerGlobalScope.instance.postMessage_Callback_2_(this, convertDartToNative_SerializedScriptValue(message), transfer);
       return;
     }
-    _blink.BlinkCompositorWorkerGlobalScope.instance.postMessage_Callback_1_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message));
+    _blink.BlinkCompositorWorkerGlobalScope.instance.postMessage_Callback_1_(this, convertDartToNative_SerializedScriptValue(message));
     return;
   }
 
   @DomName('CompositorWorkerGlobalScope.requestAnimationFrame')
   @DocsEditable()
   @Experimental() // untriaged
-  int requestAnimationFrame(FrameRequestCallback callback) => _blink.BlinkCompositorWorkerGlobalScope.instance.requestAnimationFrame_Callback_1_(unwrap_jso(this), unwrap_jso((highResTime) => callback(highResTime)));
+  int requestAnimationFrame(FrameRequestCallback callback) => _blink.BlinkCompositorWorkerGlobalScope.instance.requestAnimationFrame_Callback_1_(this, callback);
   
   @DomName('CompositorWorkerGlobalScope.onmessage')
   @DocsEditable()
@@ -5500,11 +4676,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static Console internalCreateConsole() {
-    return new Console._internalWrap();
-  }
-
-  external factory Console._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Console.internal_() : super.internal_();
@@ -5513,12 +4685,12 @@
   @DomName('Console.memory')
   @DocsEditable()
   @Experimental()
-  MemoryInfo get memory => wrap_jso(_blink.BlinkConsole.instance.memory_Getter_(unwrap_jso(this)));
+  MemoryInfo get memory => _blink.BlinkConsole.instance.memory_Getter_(this);
   
   @DomName('Console.memory')
   @DocsEditable()
   @Experimental()
-  set memory(MemoryInfo value) => _blink.BlinkConsole.instance.memory_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set memory(MemoryInfo value) => _blink.BlinkConsole.instance.memory_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5535,135 +4707,127 @@
   // To suppress missing implicit constructor warnings.
   factory ConsoleBase._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ConsoleBase internalCreateConsoleBase() {
-    return new ConsoleBase._internalWrap();
-  }
 
-  factory ConsoleBase._internalWrap() {
-    return new ConsoleBase.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ConsoleBase.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('ConsoleBase.assert')
   @DocsEditable()
   @Experimental() // untriaged
-  void assertCondition(bool condition, Object arg) => _blink.BlinkConsoleBase.instance.assert_Callback_2_(unwrap_jso(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.instance.clear_Callback_1_(unwrap_jso(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.instance.count_Callback_1_(unwrap_jso(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.instance.debug_Callback_1_(unwrap_jso(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.instance.dir_Callback_1_(unwrap_jso(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.instance.dirxml_Callback_1_(unwrap_jso(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.instance.error_Callback_1_(unwrap_jso(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.instance.group_Callback_1_(unwrap_jso(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.instance.groupCollapsed_Callback_1_(unwrap_jso(this), arg);
+  void groupCollapsed(Object arg) => _blink.BlinkConsoleBase.instance.groupCollapsed_Callback_1_(this, arg);
   
   @DomName('ConsoleBase.groupEnd')
   @DocsEditable()
   @Experimental() // untriaged
-  void groupEnd() => _blink.BlinkConsoleBase.instance.groupEnd_Callback_0_(unwrap_jso(this));
+  void groupEnd() => _blink.BlinkConsoleBase.instance.groupEnd_Callback_0_(this);
   
   @DomName('ConsoleBase.info')
   @DocsEditable()
   @Experimental() // untriaged
-  void info(Object arg) => _blink.BlinkConsoleBase.instance.info_Callback_1_(unwrap_jso(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.instance.log_Callback_1_(unwrap_jso(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.instance.markTimeline_Callback_1_(unwrap_jso(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.instance.profile_Callback_1_(unwrap_jso(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.instance.profileEnd_Callback_1_(unwrap_jso(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.instance.table_Callback_1_(unwrap_jso(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.instance.time_Callback_1_(unwrap_jso(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.instance.timeEnd_Callback_1_(unwrap_jso(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.instance.timeStamp_Callback_1_(unwrap_jso(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.instance.timeline_Callback_1_(unwrap_jso(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.instance.timelineEnd_Callback_1_(unwrap_jso(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.instance.trace_Callback_1_(unwrap_jso(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.instance.warn_Callback_1_(unwrap_jso(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
@@ -5688,11 +4852,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ContentElement internalCreateContentElement() {
-    return new ContentElement._internalWrap();
-  }
-
-  external factory ContentElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ContentElement.internal_() : super.internal_();
@@ -5709,15 +4869,15 @@
 
   @DomName('HTMLContentElement.select')
   @DocsEditable()
-  String get select => _blink.BlinkHTMLContentElement.instance.select_Getter_(unwrap_jso(this));
+  String get select => _blink.BlinkHTMLContentElement.instance.select_Getter_(this);
   
   @DomName('HTMLContentElement.select')
   @DocsEditable()
-  set select(String value) => _blink.BlinkHTMLContentElement.instance.select_Setter_(unwrap_jso(this), value);
+  set select(String value) => _blink.BlinkHTMLContentElement.instance.select_Setter_(this, value);
   
   @DomName('HTMLContentElement.getDistributedNodes')
   @DocsEditable()
-  List<Node> getDistributedNodes() => wrap_jso(_blink.BlinkHTMLContentElement.instance.getDistributedNodes_Callback_0_(unwrap_jso(this)));
+  List<Node> getDistributedNodes() => (_blink.BlinkHTMLContentElement.instance.getDistributedNodes_Callback_0_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5733,48 +4893,40 @@
   // To suppress missing implicit constructor warnings.
   factory Coordinates._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Coordinates internalCreateCoordinates() {
-    return new Coordinates._internalWrap();
-  }
 
-  factory Coordinates._internalWrap() {
-    return new Coordinates.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Coordinates.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Coordinates.accuracy')
   @DocsEditable()
-  num get accuracy => _blink.BlinkCoordinates.instance.accuracy_Getter_(unwrap_jso(this));
+  num get accuracy => _blink.BlinkCoordinates.instance.accuracy_Getter_(this);
   
   @DomName('Coordinates.altitude')
   @DocsEditable()
-  num get altitude => _blink.BlinkCoordinates.instance.altitude_Getter_(unwrap_jso(this));
+  num get altitude => _blink.BlinkCoordinates.instance.altitude_Getter_(this);
   
   @DomName('Coordinates.altitudeAccuracy')
   @DocsEditable()
-  num get altitudeAccuracy => _blink.BlinkCoordinates.instance.altitudeAccuracy_Getter_(unwrap_jso(this));
+  num get altitudeAccuracy => _blink.BlinkCoordinates.instance.altitudeAccuracy_Getter_(this);
   
   @DomName('Coordinates.heading')
   @DocsEditable()
-  num get heading => _blink.BlinkCoordinates.instance.heading_Getter_(unwrap_jso(this));
+  num get heading => _blink.BlinkCoordinates.instance.heading_Getter_(this);
   
   @DomName('Coordinates.latitude')
   @DocsEditable()
-  num get latitude => _blink.BlinkCoordinates.instance.latitude_Getter_(unwrap_jso(this));
+  num get latitude => _blink.BlinkCoordinates.instance.latitude_Getter_(this);
   
   @DomName('Coordinates.longitude')
   @DocsEditable()
-  num get longitude => _blink.BlinkCoordinates.instance.longitude_Getter_(unwrap_jso(this));
+  num get longitude => _blink.BlinkCoordinates.instance.longitude_Getter_(this);
   
   @DomName('Coordinates.speed')
   @DocsEditable()
-  num get speed => _blink.BlinkCoordinates.instance.speed_Getter_(unwrap_jso(this));
+  num get speed => _blink.BlinkCoordinates.instance.speed_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5791,40 +4943,32 @@
   // To suppress missing implicit constructor warnings.
   factory Credential._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Credential internalCreateCredential() {
-    return new Credential._internalWrap();
-  }
 
-  factory Credential._internalWrap() {
-    return new Credential.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Credential.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Credential.iconURL')
   @DocsEditable()
   @Experimental() // untriaged
-  String get iconUrl => _blink.BlinkCredential.instance.iconURL_Getter_(unwrap_jso(this));
+  String get iconUrl => _blink.BlinkCredential.instance.iconURL_Getter_(this);
   
   @DomName('Credential.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkCredential.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkCredential.instance.id_Getter_(this);
   
   @DomName('Credential.name')
   @DocsEditable()
   @Experimental() // untriaged
-  String get name => _blink.BlinkCredential.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkCredential.instance.name_Getter_(this);
   
   @DomName('Credential.type')
   @DocsEditable()
   @Experimental() // untriaged
-  String get type => _blink.BlinkCredential.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkCredential.instance.type_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5841,37 +4985,29 @@
   // To suppress missing implicit constructor warnings.
   factory CredentialsContainer._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static CredentialsContainer internalCreateCredentialsContainer() {
-    return new CredentialsContainer._internalWrap();
-  }
 
-  factory CredentialsContainer._internalWrap() {
-    return new CredentialsContainer.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CredentialsContainer.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('CredentialsContainer.notifySignedIn')
   @DocsEditable()
   @Experimental() // untriaged
-  Future notifySignedIn(Credential credential) => wrap_jso(_blink.BlinkCredentialsContainer.instance.notifySignedIn_Callback_1_(unwrap_jso(this), unwrap_jso(credential)));
+  Future notifySignedIn(Credential credential) => convertNativePromiseToDartFuture(_blink.BlinkCredentialsContainer.instance.notifySignedIn_Callback_1_(this, credential));
   
   Future request([Map options]) {
     if (options != null) {
-      return wrap_jso(_blink.BlinkCredentialsContainer.instance.request_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(options)));
+      return _blink.BlinkCredentialsContainer.instance.request_Callback_1_(this, convertDartToNative_Dictionary(options));
     }
-    return wrap_jso(_blink.BlinkCredentialsContainer.instance.request_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkCredentialsContainer.instance.request_Callback_0_(this);
   }
 
   @DomName('CredentialsContainer.requireUserMediation')
   @DocsEditable()
   @Experimental() // untriaged
-  Future requireUserMediation() => wrap_jso(_blink.BlinkCredentialsContainer.instance.requireUserMediation_Callback_0_(unwrap_jso(this)));
+  Future requireUserMediation() => convertNativePromiseToDartFuture(_blink.BlinkCredentialsContainer.instance.requireUserMediation_Callback_0_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5890,11 +5026,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CrossOriginConnectEvent internalCreateCrossOriginConnectEvent() {
-    return new CrossOriginConnectEvent._internalWrap();
-  }
-
-  external factory CrossOriginConnectEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CrossOriginConnectEvent.internal_() : super.internal_();
@@ -5903,12 +5035,12 @@
   @DomName('CrossOriginConnectEvent.client')
   @DocsEditable()
   @Experimental() // untriaged
-  CrossOriginServiceWorkerClient get client => wrap_jso(_blink.BlinkCrossOriginConnectEvent.instance.client_Getter_(unwrap_jso(this)));
+  CrossOriginServiceWorkerClient get client => _blink.BlinkCrossOriginConnectEvent.instance.client_Getter_(this);
   
   @DomName('CrossOriginConnectEvent.acceptConnection')
   @DocsEditable()
   @Experimental() // untriaged
-  void acceptConnection(Future shouldAccept) => _blink.BlinkCrossOriginConnectEvent.instance.acceptConnection_Callback_1_(unwrap_jso(this), shouldAccept);
+  void acceptConnection(Future shouldAccept) => _blink.BlinkCrossOriginConnectEvent.instance.acceptConnection_Callback_1_(this, shouldAccept);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5927,11 +5059,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CrossOriginServiceWorkerClient internalCreateCrossOriginServiceWorkerClient() {
-    return new CrossOriginServiceWorkerClient._internalWrap();
-  }
-
-  external factory CrossOriginServiceWorkerClient._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CrossOriginServiceWorkerClient.internal_() : super.internal_();
@@ -5940,19 +5068,19 @@
   @DomName('CrossOriginServiceWorkerClient.origin')
   @DocsEditable()
   @Experimental() // untriaged
-  String get origin => _blink.BlinkCrossOriginServiceWorkerClient.instance.origin_Getter_(unwrap_jso(this));
+  String get origin => _blink.BlinkCrossOriginServiceWorkerClient.instance.origin_Getter_(this);
   
   @DomName('CrossOriginServiceWorkerClient.targetUrl')
   @DocsEditable()
   @Experimental() // untriaged
-  String get targetUrl => _blink.BlinkCrossOriginServiceWorkerClient.instance.targetUrl_Getter_(unwrap_jso(this));
+  String get targetUrl => _blink.BlinkCrossOriginServiceWorkerClient.instance.targetUrl_Getter_(this);
   
   void postMessage(/*SerializedScriptValue*/ message, [List<MessagePort> transfer]) {
     if (transfer != null) {
-      _blink.BlinkCrossOriginServiceWorkerClient.instance.postMessage_Callback_2_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message), transfer);
+      _blink.BlinkCrossOriginServiceWorkerClient.instance.postMessage_Callback_2_(this, convertDartToNative_SerializedScriptValue(message), transfer);
       return;
     }
-    _blink.BlinkCrossOriginServiceWorkerClient.instance.postMessage_Callback_1_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message));
+    _blink.BlinkCrossOriginServiceWorkerClient.instance.postMessage_Callback_1_(this, convertDartToNative_SerializedScriptValue(message));
     return;
   }
 
@@ -5984,32 +5112,24 @@
   // To suppress missing implicit constructor warnings.
   factory Crypto._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Crypto internalCreateCrypto() {
-    return new Crypto._internalWrap();
-  }
 
-  factory Crypto._internalWrap() {
-    return new Crypto.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Crypto.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
   @DomName('Crypto.subtle')
   @DocsEditable()
   @Experimental() // untriaged
-  _SubtleCrypto get subtle => wrap_jso(_blink.BlinkCrypto.instance.subtle_Getter_(unwrap_jso(this)));
+  _SubtleCrypto get subtle => _blink.BlinkCrypto.instance.subtle_Getter_(this);
   
   @DomName('Crypto.getRandomValues')
   @DocsEditable()
-  TypedData _getRandomValues(TypedData array) => wrap_jso(_blink.BlinkCrypto.instance.getRandomValues_Callback_1_(unwrap_jso(this), unwrap_jso(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
@@ -6026,40 +5146,32 @@
   // To suppress missing implicit constructor warnings.
   factory CryptoKey._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static CryptoKey internalCreateCryptoKey() {
-    return new CryptoKey._internalWrap();
-  }
 
-  factory CryptoKey._internalWrap() {
-    return new CryptoKey.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CryptoKey.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('CryptoKey.algorithm')
   @DocsEditable()
   @Experimental() // untriaged
-  Object get algorithm => wrap_jso(_blink.BlinkCryptoKey.instance.algorithm_Getter_(unwrap_jso(this)));
+  Object get algorithm => (_blink.BlinkCryptoKey.instance.algorithm_Getter_(this));
   
   @DomName('CryptoKey.extractable')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get extractable => _blink.BlinkCryptoKey.instance.extractable_Getter_(unwrap_jso(this));
+  bool get extractable => _blink.BlinkCryptoKey.instance.extractable_Getter_(this);
   
   @DomName('CryptoKey.type')
   @DocsEditable()
   @Experimental() // untriaged
-  String get type => _blink.BlinkCryptoKey.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkCryptoKey.instance.type_Getter_(this);
   
   @DomName('CryptoKey.usages')
   @DocsEditable()
   @Experimental() // untriaged
-  List<String> get usages => _blink.BlinkCryptoKey.instance.usages_Getter_(unwrap_jso(this));
+  List<String> get usages => _blink.BlinkCryptoKey.instance.usages_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6077,21 +5189,13 @@
   // To suppress missing implicit constructor warnings.
   factory Css._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Css internalCreateCss() {
-    return new Css._internalWrap();
-  }
 
-  factory Css._internalWrap() {
-    return new Css.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Css.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('CSS.supports')
   @DocsEditable()
   static bool supports(String property, String value) => _blink.BlinkCSS.instance.supports_Callback_2_(property, value);
@@ -6118,11 +5222,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CssCharsetRule internalCreateCssCharsetRule() {
-    return new CssCharsetRule._internalWrap();
-  }
-
-  external factory CssCharsetRule._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CssCharsetRule.internal_() : super.internal_();
@@ -6130,11 +5230,11 @@
 
   @DomName('CSSCharsetRule.encoding')
   @DocsEditable()
-  String get encoding => _blink.BlinkCSSCharsetRule.instance.encoding_Getter_(unwrap_jso(this));
+  String get encoding => _blink.BlinkCSSCharsetRule.instance.encoding_Getter_(this);
   
   @DomName('CSSCharsetRule.encoding')
   @DocsEditable()
-  set encoding(String value) => _blink.BlinkCSSCharsetRule.instance.encoding_Setter_(unwrap_jso(this), value);
+  set encoding(String value) => _blink.BlinkCSSCharsetRule.instance.encoding_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6152,11 +5252,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CssFontFaceRule internalCreateCssFontFaceRule() {
-    return new CssFontFaceRule._internalWrap();
-  }
-
-  external factory CssFontFaceRule._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CssFontFaceRule.internal_() : super.internal_();
@@ -6164,7 +5260,7 @@
 
   @DomName('CSSFontFaceRule.style')
   @DocsEditable()
-  CssStyleDeclaration get style => wrap_jso(_blink.BlinkCSSFontFaceRule.instance.style_Getter_(unwrap_jso(this)));
+  CssStyleDeclaration get style => _blink.BlinkCSSFontFaceRule.instance.style_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6183,11 +5279,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CssGroupingRule internalCreateCssGroupingRule() {
-    return new CssGroupingRule._internalWrap();
-  }
-
-  external factory CssGroupingRule._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CssGroupingRule.internal_() : super.internal_();
@@ -6196,17 +5288,17 @@
   @DomName('CSSGroupingRule.cssRules')
   @DocsEditable()
   @Experimental() // untriaged
-  List<CssRule> get cssRules => wrap_jso(_blink.BlinkCSSGroupingRule.instance.cssRules_Getter_(unwrap_jso(this)));
+  List<CssRule> get cssRules => _blink.BlinkCSSGroupingRule.instance.cssRules_Getter_(this);
   
   @DomName('CSSGroupingRule.deleteRule')
   @DocsEditable()
   @Experimental() // untriaged
-  void deleteRule(int index) => _blink.BlinkCSSGroupingRule.instance.deleteRule_Callback_1_(unwrap_jso(this), index);
+  void deleteRule(int index) => _blink.BlinkCSSGroupingRule.instance.deleteRule_Callback_1_(this, index);
   
   @DomName('CSSGroupingRule.insertRule')
   @DocsEditable()
   @Experimental() // untriaged
-  int insertRule(String rule, int index) => _blink.BlinkCSSGroupingRule.instance.insertRule_Callback_2_(unwrap_jso(this), rule, index);
+  int insertRule(String rule, int index) => _blink.BlinkCSSGroupingRule.instance.insertRule_Callback_2_(this, rule, index);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6224,11 +5316,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CssImportRule internalCreateCssImportRule() {
-    return new CssImportRule._internalWrap();
-  }
-
-  external factory CssImportRule._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CssImportRule.internal_() : super.internal_();
@@ -6236,15 +5324,15 @@
 
   @DomName('CSSImportRule.href')
   @DocsEditable()
-  String get href => _blink.BlinkCSSImportRule.instance.href_Getter_(unwrap_jso(this));
+  String get href => _blink.BlinkCSSImportRule.instance.href_Getter_(this);
   
   @DomName('CSSImportRule.media')
   @DocsEditable()
-  MediaList get media => wrap_jso(_blink.BlinkCSSImportRule.instance.media_Getter_(unwrap_jso(this)));
+  MediaList get media => _blink.BlinkCSSImportRule.instance.media_Getter_(this);
   
   @DomName('CSSImportRule.styleSheet')
   @DocsEditable()
-  CssStyleSheet get styleSheet => wrap_jso(_blink.BlinkCSSImportRule.instance.styleSheet_Getter_(unwrap_jso(this)));
+  CssStyleSheet get styleSheet => _blink.BlinkCSSImportRule.instance.styleSheet_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6263,11 +5351,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CssKeyframeRule internalCreateCssKeyframeRule() {
-    return new CssKeyframeRule._internalWrap();
-  }
-
-  external factory CssKeyframeRule._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CssKeyframeRule.internal_() : super.internal_();
@@ -6276,17 +5360,17 @@
   @DomName('CSSKeyframeRule.keyText')
   @DocsEditable()
   @Experimental() // untriaged
-  String get keyText => _blink.BlinkCSSKeyframeRule.instance.keyText_Getter_(unwrap_jso(this));
+  String get keyText => _blink.BlinkCSSKeyframeRule.instance.keyText_Getter_(this);
   
   @DomName('CSSKeyframeRule.keyText')
   @DocsEditable()
   @Experimental() // untriaged
-  set keyText(String value) => _blink.BlinkCSSKeyframeRule.instance.keyText_Setter_(unwrap_jso(this), value);
+  set keyText(String value) => _blink.BlinkCSSKeyframeRule.instance.keyText_Setter_(this, value);
   
   @DomName('CSSKeyframeRule.style')
   @DocsEditable()
   @Experimental() // untriaged
-  CssStyleDeclaration get style => wrap_jso(_blink.BlinkCSSKeyframeRule.instance.style_Getter_(unwrap_jso(this)));
+  CssStyleDeclaration get style => _blink.BlinkCSSKeyframeRule.instance.style_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6305,11 +5389,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CssKeyframesRule internalCreateCssKeyframesRule() {
-    return new CssKeyframesRule._internalWrap();
-  }
-
-  external factory CssKeyframesRule._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CssKeyframesRule.internal_() : super.internal_();
@@ -6318,37 +5398,37 @@
   @DomName('CSSKeyframesRule.cssRules')
   @DocsEditable()
   @Experimental() // untriaged
-  List<CssRule> get cssRules => wrap_jso(_blink.BlinkCSSKeyframesRule.instance.cssRules_Getter_(unwrap_jso(this)));
+  List<CssRule> get cssRules => _blink.BlinkCSSKeyframesRule.instance.cssRules_Getter_(this);
   
   @DomName('CSSKeyframesRule.name')
   @DocsEditable()
   @Experimental() // untriaged
-  String get name => _blink.BlinkCSSKeyframesRule.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkCSSKeyframesRule.instance.name_Getter_(this);
   
   @DomName('CSSKeyframesRule.name')
   @DocsEditable()
   @Experimental() // untriaged
-  set name(String value) => _blink.BlinkCSSKeyframesRule.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkCSSKeyframesRule.instance.name_Setter_(this, value);
   
   @DomName('CSSKeyframesRule.__getter__')
   @DocsEditable()
   @Experimental() // untriaged
-  CssKeyframeRule __getter__(int index) => wrap_jso(_blink.BlinkCSSKeyframesRule.instance.$__getter___Callback_1_(unwrap_jso(this), index));
+  CssKeyframeRule __getter__(int index) => _blink.BlinkCSSKeyframesRule.instance.$__getter___Callback_1_(this, index);
   
   @DomName('CSSKeyframesRule.appendRule')
   @DocsEditable()
   @Experimental() // untriaged
-  void appendRule(String rule) => _blink.BlinkCSSKeyframesRule.instance.appendRule_Callback_1_(unwrap_jso(this), rule);
+  void appendRule(String rule) => _blink.BlinkCSSKeyframesRule.instance.appendRule_Callback_1_(this, rule);
   
   @DomName('CSSKeyframesRule.deleteRule')
   @DocsEditable()
   @Experimental() // untriaged
-  void deleteRule(String select) => _blink.BlinkCSSKeyframesRule.instance.deleteRule_Callback_1_(unwrap_jso(this), select);
+  void deleteRule(String select) => _blink.BlinkCSSKeyframesRule.instance.deleteRule_Callback_1_(this, select);
   
   @DomName('CSSKeyframesRule.findRule')
   @DocsEditable()
   @Experimental() // untriaged
-  CssKeyframeRule findRule(String select) => wrap_jso(_blink.BlinkCSSKeyframesRule.instance.findRule_Callback_1_(unwrap_jso(this), select));
+  CssKeyframeRule findRule(String select) => _blink.BlinkCSSKeyframesRule.instance.findRule_Callback_1_(this, select);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6366,11 +5446,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CssMediaRule internalCreateCssMediaRule() {
-    return new CssMediaRule._internalWrap();
-  }
-
-  external factory CssMediaRule._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CssMediaRule.internal_() : super.internal_();
@@ -6378,7 +5454,7 @@
 
   @DomName('CSSMediaRule.media')
   @DocsEditable()
-  MediaList get media => wrap_jso(_blink.BlinkCSSMediaRule.instance.media_Getter_(unwrap_jso(this)));
+  MediaList get media => _blink.BlinkCSSMediaRule.instance.media_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6396,11 +5472,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CssPageRule internalCreateCssPageRule() {
-    return new CssPageRule._internalWrap();
-  }
-
-  external factory CssPageRule._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CssPageRule.internal_() : super.internal_();
@@ -6408,15 +5480,15 @@
 
   @DomName('CSSPageRule.selectorText')
   @DocsEditable()
-  String get selectorText => _blink.BlinkCSSPageRule.instance.selectorText_Getter_(unwrap_jso(this));
+  String get selectorText => _blink.BlinkCSSPageRule.instance.selectorText_Getter_(this);
   
   @DomName('CSSPageRule.selectorText')
   @DocsEditable()
-  set selectorText(String value) => _blink.BlinkCSSPageRule.instance.selectorText_Setter_(unwrap_jso(this), value);
+  set selectorText(String value) => _blink.BlinkCSSPageRule.instance.selectorText_Setter_(this, value);
   
   @DomName('CSSPageRule.style')
   @DocsEditable()
-  CssStyleDeclaration get style => wrap_jso(_blink.BlinkCSSPageRule.instance.style_Getter_(unwrap_jso(this)));
+  CssStyleDeclaration get style => _blink.BlinkCSSPageRule.instance.style_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6432,21 +5504,13 @@
   // To suppress missing implicit constructor warnings.
   factory CssRule._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static CssRule internalCreateCssRule() {
-    return new CssRule._internalWrap();
-  }
 
-  factory CssRule._internalWrap() {
-    return new CssRule.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CssRule.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('CSSRule.CHARSET_RULE')
   @DocsEditable()
   static const int CHARSET_RULE = 2;
@@ -6504,23 +5568,23 @@
 
   @DomName('CSSRule.cssText')
   @DocsEditable()
-  String get cssText => _blink.BlinkCSSRule.instance.cssText_Getter_(unwrap_jso(this));
+  String get cssText => _blink.BlinkCSSRule.instance.cssText_Getter_(this);
   
   @DomName('CSSRule.cssText')
   @DocsEditable()
-  set cssText(String value) => _blink.BlinkCSSRule.instance.cssText_Setter_(unwrap_jso(this), value);
+  set cssText(String value) => _blink.BlinkCSSRule.instance.cssText_Setter_(this, value);
   
   @DomName('CSSRule.parentRule')
   @DocsEditable()
-  CssRule get parentRule => wrap_jso(_blink.BlinkCSSRule.instance.parentRule_Getter_(unwrap_jso(this)));
+  CssRule get parentRule => _blink.BlinkCSSRule.instance.parentRule_Getter_(this);
   
   @DomName('CSSRule.parentStyleSheet')
   @DocsEditable()
-  CssStyleSheet get parentStyleSheet => wrap_jso(_blink.BlinkCSSRule.instance.parentStyleSheet_Getter_(unwrap_jso(this)));
+  CssStyleSheet get parentStyleSheet => _blink.BlinkCSSRule.instance.parentStyleSheet_Getter_(this);
   
   @DomName('CSSRule.type')
   @DocsEditable()
-  int get type => _blink.BlinkCSSRule.instance.type_Getter_(unwrap_jso(this));
+  int get type => _blink.BlinkCSSRule.instance.type_Getter_(this);
   
 }
 
@@ -6582,7 +5646,7 @@
   }
 
   bool _hasProperty(String propertyName) =>
-      _blink.BlinkCSSStyleDeclaration.instance.$__propertyQuery___Callback_1_(unwrap_jso(this), propertyName) != null;
+      _blink.BlinkCSSStyleDeclaration.instance.$__propertyQuery___Callback_1_(this, propertyName);
 
   @DomName('CSSStyleDeclaration.setProperty')
   void setProperty(String propertyName, String value, [String priority]) {
@@ -6626,61 +5690,53 @@
   // To suppress missing implicit constructor warnings.
   factory CssStyleDeclaration._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static CssStyleDeclaration internalCreateCssStyleDeclaration() {
-    return new CssStyleDeclaration._internalWrap();
-  }
 
-  factory CssStyleDeclaration._internalWrap() {
-    return new CssStyleDeclaration.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CssStyleDeclaration.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('CSSStyleDeclaration.cssText')
   @DocsEditable()
-  String get cssText => _blink.BlinkCSSStyleDeclaration.instance.cssText_Getter_(unwrap_jso(this));
+  String get cssText => _blink.BlinkCSSStyleDeclaration.instance.cssText_Getter_(this);
   
   @DomName('CSSStyleDeclaration.cssText')
   @DocsEditable()
-  set cssText(String value) => _blink.BlinkCSSStyleDeclaration.instance.cssText_Setter_(unwrap_jso(this), value);
+  set cssText(String value) => _blink.BlinkCSSStyleDeclaration.instance.cssText_Setter_(this, value);
   
   @DomName('CSSStyleDeclaration.length')
   @DocsEditable()
-  int get length => _blink.BlinkCSSStyleDeclaration.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkCSSStyleDeclaration.instance.length_Getter_(this);
   
   @DomName('CSSStyleDeclaration.parentRule')
   @DocsEditable()
-  CssRule get parentRule => wrap_jso(_blink.BlinkCSSStyleDeclaration.instance.parentRule_Getter_(unwrap_jso(this)));
+  CssRule get parentRule => _blink.BlinkCSSStyleDeclaration.instance.parentRule_Getter_(this);
   
   @DomName('CSSStyleDeclaration.__propertyQuery__')
   @DocsEditable()
   @Experimental() // untriaged
-  bool __propertyQuery__(String name) => _blink.BlinkCSSStyleDeclaration.instance.$__propertyQuery___Callback_1_(unwrap_jso(this), name);
+  bool __propertyQuery__(String name) => _blink.BlinkCSSStyleDeclaration.instance.$__propertyQuery___Callback_1_(this, name);
   
   @DomName('CSSStyleDeclaration.getPropertyPriority')
   @DocsEditable()
-  String getPropertyPriority(String property) => _blink.BlinkCSSStyleDeclaration.instance.getPropertyPriority_Callback_1_(unwrap_jso(this), property);
+  String getPropertyPriority(String property) => _blink.BlinkCSSStyleDeclaration.instance.getPropertyPriority_Callback_1_(this, property);
   
   @DomName('CSSStyleDeclaration.getPropertyValue')
   @DocsEditable()
-  String _getPropertyValue(String property) => _blink.BlinkCSSStyleDeclaration.instance.getPropertyValue_Callback_1_(unwrap_jso(this), property);
+  String _getPropertyValue(String property) => _blink.BlinkCSSStyleDeclaration.instance.getPropertyValue_Callback_1_(this, property);
   
   @DomName('CSSStyleDeclaration.item')
   @DocsEditable()
-  String item(int index) => _blink.BlinkCSSStyleDeclaration.instance.item_Callback_1_(unwrap_jso(this), index);
+  String item(int index) => _blink.BlinkCSSStyleDeclaration.instance.item_Callback_1_(this, index);
   
   @DomName('CSSStyleDeclaration.removeProperty')
   @DocsEditable()
-  String removeProperty(String property) => _blink.BlinkCSSStyleDeclaration.instance.removeProperty_Callback_1_(unwrap_jso(this), property);
+  String removeProperty(String property) => _blink.BlinkCSSStyleDeclaration.instance.removeProperty_Callback_1_(this, property);
   
   @DomName('CSSStyleDeclaration.setProperty')
   @DocsEditable()
-  void _setProperty(String property, String value, String priority) => _blink.BlinkCSSStyleDeclaration.instance.setProperty_Callback_3_(unwrap_jso(this), property, value, priority);
+  void _setProperty(String property, String value, String priority) => _blink.BlinkCSSStyleDeclaration.instance.setProperty_Callback_3_(this, property, value, priority);
   
 }
 
@@ -9816,11 +8872,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CssStyleRule internalCreateCssStyleRule() {
-    return new CssStyleRule._internalWrap();
-  }
-
-  external factory CssStyleRule._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CssStyleRule.internal_() : super.internal_();
@@ -9828,15 +8880,15 @@
 
   @DomName('CSSStyleRule.selectorText')
   @DocsEditable()
-  String get selectorText => _blink.BlinkCSSStyleRule.instance.selectorText_Getter_(unwrap_jso(this));
+  String get selectorText => _blink.BlinkCSSStyleRule.instance.selectorText_Getter_(this);
   
   @DomName('CSSStyleRule.selectorText')
   @DocsEditable()
-  set selectorText(String value) => _blink.BlinkCSSStyleRule.instance.selectorText_Setter_(unwrap_jso(this), value);
+  set selectorText(String value) => _blink.BlinkCSSStyleRule.instance.selectorText_Setter_(this, value);
   
   @DomName('CSSStyleRule.style')
   @DocsEditable()
-  CssStyleDeclaration get style => wrap_jso(_blink.BlinkCSSStyleRule.instance.style_Getter_(unwrap_jso(this)));
+  CssStyleDeclaration get style => _blink.BlinkCSSStyleRule.instance.style_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -9854,11 +8906,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CssStyleSheet internalCreateCssStyleSheet() {
-    return new CssStyleSheet._internalWrap();
-  }
-
-  external factory CssStyleSheet._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CssStyleSheet.internal_() : super.internal_();
@@ -9866,39 +8914,39 @@
 
   @DomName('CSSStyleSheet.cssRules')
   @DocsEditable()
-  List<CssRule> get cssRules => wrap_jso(_blink.BlinkCSSStyleSheet.instance.cssRules_Getter_(unwrap_jso(this)));
+  List<CssRule> get cssRules => _blink.BlinkCSSStyleSheet.instance.cssRules_Getter_(this);
   
   @DomName('CSSStyleSheet.ownerRule')
   @DocsEditable()
-  CssRule get ownerRule => wrap_jso(_blink.BlinkCSSStyleSheet.instance.ownerRule_Getter_(unwrap_jso(this)));
+  CssRule get ownerRule => _blink.BlinkCSSStyleSheet.instance.ownerRule_Getter_(this);
   
   @DomName('CSSStyleSheet.rules')
   @DocsEditable()
   @Experimental() // non-standard
-  List<CssRule> get rules => wrap_jso(_blink.BlinkCSSStyleSheet.instance.rules_Getter_(unwrap_jso(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.instance.addRule_Callback_3_(unwrap_jso(this), selector, style, index);
+      return _blink.BlinkCSSStyleSheet.instance.addRule_Callback_3_(this, selector, style, index);
     }
-    return _blink.BlinkCSSStyleSheet.instance.addRule_Callback_2_(unwrap_jso(this), selector, style);
+    return _blink.BlinkCSSStyleSheet.instance.addRule_Callback_2_(this, selector, style);
   }
 
   @DomName('CSSStyleSheet.deleteRule')
   @DocsEditable()
-  void deleteRule(int index) => _blink.BlinkCSSStyleSheet.instance.deleteRule_Callback_1_(unwrap_jso(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.instance.insertRule_Callback_2_(unwrap_jso(this), rule, index);
+      return _blink.BlinkCSSStyleSheet.instance.insertRule_Callback_2_(this, rule, index);
     }
-    return _blink.BlinkCSSStyleSheet.instance.insertRule_Callback_1_(unwrap_jso(this), rule);
+    return _blink.BlinkCSSStyleSheet.instance.insertRule_Callback_1_(this, rule);
   }
 
   @DomName('CSSStyleSheet.removeRule')
   @DocsEditable()
   @Experimental() // non-standard
-  void removeRule(int index) => _blink.BlinkCSSStyleSheet.instance.removeRule_Callback_1_(unwrap_jso(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
@@ -9916,11 +8964,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CssSupportsRule internalCreateCssSupportsRule() {
-    return new CssSupportsRule._internalWrap();
-  }
-
-  external factory CssSupportsRule._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CssSupportsRule.internal_() : super.internal_();
@@ -9928,19 +8972,19 @@
 
   @DomName('CSSSupportsRule.conditionText')
   @DocsEditable()
-  String get conditionText => _blink.BlinkCSSSupportsRule.instance.conditionText_Getter_(unwrap_jso(this));
+  String get conditionText => _blink.BlinkCSSSupportsRule.instance.conditionText_Getter_(this);
   
   @DomName('CSSSupportsRule.cssRules')
   @DocsEditable()
-  List<CssRule> get cssRules => wrap_jso(_blink.BlinkCSSSupportsRule.instance.cssRules_Getter_(unwrap_jso(this)));
+  List<CssRule> get cssRules => _blink.BlinkCSSSupportsRule.instance.cssRules_Getter_(this);
   
   @DomName('CSSSupportsRule.deleteRule')
   @DocsEditable()
-  void deleteRule(int index) => _blink.BlinkCSSSupportsRule.instance.deleteRule_Callback_1_(unwrap_jso(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.instance.insertRule_Callback_2_(unwrap_jso(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
@@ -9959,11 +9003,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CssViewportRule internalCreateCssViewportRule() {
-    return new CssViewportRule._internalWrap();
-  }
-
-  external factory CssViewportRule._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CssViewportRule.internal_() : super.internal_();
@@ -9972,7 +9012,7 @@
   @DomName('CSSViewportRule.style')
   @DocsEditable()
   @Experimental() // untriaged
-  CssStyleDeclaration get style => wrap_jso(_blink.BlinkCSSViewportRule.instance.style_Getter_(unwrap_jso(this)));
+  CssStyleDeclaration get style => _blink.BlinkCSSViewportRule.instance.style_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -9997,6 +9037,7 @@
     // first-chance exceptions. Can expand this list in the future as needed.
     if (detail is List || detail is Map || detail is String || detail is num) {
       try {
+        detail = convertDartToNative_SerializedScriptValue(detail);
         e._initCustomEvent(type, canBubble, cancelable, detail);
       } catch(_) {
         e._initCustomEvent(type, canBubble, cancelable, null);
@@ -10005,9 +9046,6 @@
       e._initCustomEvent(type, canBubble, cancelable, null);
     }
 
-    // Need for identity.
-    js.setDartHtmlWrapperFor(e.blink_jsObject, e);
-
     return e;
   }
 
@@ -10024,18 +9062,14 @@
   factory CustomEvent._(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkCustomEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkCustomEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkCustomEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkCustomEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static CustomEvent internalCreateCustomEvent() {
-    return new CustomEvent._internalWrap();
-  }
-
-  external factory CustomEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CustomEvent.internal_() : super.internal_();
@@ -10043,11 +9077,11 @@
 
   @DomName('CustomEvent.detail')
   @DocsEditable()
-  Object get _detail => wrap_jso(_blink.BlinkCustomEvent.instance.detail_Getter_(unwrap_jso(this)));
+  Object get _detail => convertNativeToDart_SerializedScriptValue(_blink.BlinkCustomEvent.instance.detail_Getter_(this));
   
   @DomName('CustomEvent.initCustomEvent')
   @DocsEditable()
-  void _initCustomEvent(String type, bool bubbles, bool cancelable, Object detail) => _blink.BlinkCustomEvent.instance.initCustomEvent_Callback_4_(unwrap_jso(this), type, bubbles, cancelable, detail);
+  void _initCustomEvent(String type, bool bubbles, bool cancelable, Object detail) => _blink.BlinkCustomEvent.instance.initCustomEvent_Callback_4_(this, type, bubbles, cancelable, detail);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -10069,11 +9103,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static DListElement internalCreateDListElement() {
-    return new DListElement._internalWrap();
-  }
-
-  external factory DListElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DListElement.internal_() : super.internal_();
@@ -10109,11 +9139,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static DataListElement internalCreateDataListElement() {
-    return new DataListElement._internalWrap();
-  }
-
-  external factory DataListElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DataListElement.internal_() : super.internal_();
@@ -10130,7 +9156,7 @@
 
   @DomName('HTMLDataListElement.options')
   @DocsEditable()
-  List<Node> get options => wrap_jso(_blink.BlinkHTMLDataListElement.instance.options_Getter_(unwrap_jso(this)));
+  List<Node> get options => (_blink.BlinkHTMLDataListElement.instance.options_Getter_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -10147,79 +9173,71 @@
   // To suppress missing implicit constructor warnings.
   factory DataTransfer._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DataTransfer internalCreateDataTransfer() {
-    return new DataTransfer._internalWrap();
-  }
 
-  factory DataTransfer._internalWrap() {
-    return new DataTransfer.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DataTransfer.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('DataTransfer.dropEffect')
   @DocsEditable()
   @Experimental() // untriaged
-  String get dropEffect => _blink.BlinkDataTransfer.instance.dropEffect_Getter_(unwrap_jso(this));
+  String get dropEffect => _blink.BlinkDataTransfer.instance.dropEffect_Getter_(this);
   
   @DomName('DataTransfer.dropEffect')
   @DocsEditable()
   @Experimental() // untriaged
-  set dropEffect(String value) => _blink.BlinkDataTransfer.instance.dropEffect_Setter_(unwrap_jso(this), value);
+  set dropEffect(String value) => _blink.BlinkDataTransfer.instance.dropEffect_Setter_(this, value);
   
   @DomName('DataTransfer.effectAllowed')
   @DocsEditable()
   @Experimental() // untriaged
-  String get effectAllowed => _blink.BlinkDataTransfer.instance.effectAllowed_Getter_(unwrap_jso(this));
+  String get effectAllowed => _blink.BlinkDataTransfer.instance.effectAllowed_Getter_(this);
   
   @DomName('DataTransfer.effectAllowed')
   @DocsEditable()
   @Experimental() // untriaged
-  set effectAllowed(String value) => _blink.BlinkDataTransfer.instance.effectAllowed_Setter_(unwrap_jso(this), value);
+  set effectAllowed(String value) => _blink.BlinkDataTransfer.instance.effectAllowed_Setter_(this, value);
   
   @DomName('DataTransfer.files')
   @DocsEditable()
   @Experimental() // untriaged
-  List<File> get files => wrap_jso(_blink.BlinkDataTransfer.instance.files_Getter_(unwrap_jso(this)));
+  List<File> get files => (_blink.BlinkDataTransfer.instance.files_Getter_(this));
   
   @DomName('DataTransfer.items')
   @DocsEditable()
   @Experimental() // untriaged
-  DataTransferItemList get items => wrap_jso(_blink.BlinkDataTransfer.instance.items_Getter_(unwrap_jso(this)));
+  DataTransferItemList get items => _blink.BlinkDataTransfer.instance.items_Getter_(this);
   
   @DomName('DataTransfer.types')
   @DocsEditable()
   @Experimental() // untriaged
-  List<String> get types => _blink.BlinkDataTransfer.instance.types_Getter_(unwrap_jso(this));
+  List<String> get types => _blink.BlinkDataTransfer.instance.types_Getter_(this);
   
   void clearData([String format]) {
     if (format != null) {
-      _blink.BlinkDataTransfer.instance.clearData_Callback_1_(unwrap_jso(this), format);
+      _blink.BlinkDataTransfer.instance.clearData_Callback_1_(this, format);
       return;
     }
-    _blink.BlinkDataTransfer.instance.clearData_Callback_0_(unwrap_jso(this));
+    _blink.BlinkDataTransfer.instance.clearData_Callback_0_(this);
     return;
   }
 
   @DomName('DataTransfer.getData')
   @DocsEditable()
   @Experimental() // untriaged
-  String getData(String format) => _blink.BlinkDataTransfer.instance.getData_Callback_1_(unwrap_jso(this), format);
+  String getData(String format) => _blink.BlinkDataTransfer.instance.getData_Callback_1_(this, format);
   
   @DomName('DataTransfer.setData')
   @DocsEditable()
   @Experimental() // untriaged
-  void setData(String format, String data) => _blink.BlinkDataTransfer.instance.setData_Callback_2_(unwrap_jso(this), format, data);
+  void setData(String format, String data) => _blink.BlinkDataTransfer.instance.setData_Callback_2_(this, format, data);
   
   @DomName('DataTransfer.setDragImage')
   @DocsEditable()
   @Experimental() // untriaged
-  void setDragImage(Element image, int x, int y) => _blink.BlinkDataTransfer.instance.setDragImage_Callback_3_(unwrap_jso(this), unwrap_jso(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
@@ -10237,36 +9255,28 @@
   // To suppress missing implicit constructor warnings.
   factory DataTransferItem._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DataTransferItem internalCreateDataTransferItem() {
-    return new DataTransferItem._internalWrap();
-  }
 
-  factory DataTransferItem._internalWrap() {
-    return new DataTransferItem.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DataTransferItem.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('DataTransferItem.kind')
   @DocsEditable()
-  String get kind => _blink.BlinkDataTransferItem.instance.kind_Getter_(unwrap_jso(this));
+  String get kind => _blink.BlinkDataTransferItem.instance.kind_Getter_(this);
   
   @DomName('DataTransferItem.type')
   @DocsEditable()
-  String get type => _blink.BlinkDataTransferItem.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkDataTransferItem.instance.type_Getter_(this);
   
   @DomName('DataTransferItem.getAsFile')
   @DocsEditable()
-  Blob getAsFile() => wrap_jso(_blink.BlinkDataTransferItem.instance.getAsFile_Callback_0_(unwrap_jso(this)));
+  Blob getAsFile() => _blink.BlinkDataTransferItem.instance.getAsFile_Callback_0_(this);
   
   @DomName('DataTransferItem.getAsString')
   @DocsEditable()
-  void _getAsString(_StringCallback callback) => _blink.BlinkDataTransferItem.instance.getAsString_Callback_1_(unwrap_jso(this), unwrap_jso((data) => callback(data)));
+  void _getAsString(_StringCallback callback) => _blink.BlinkDataTransferItem.instance.getAsString_Callback_1_(this, callback);
   
   Future<String> getAsString() {
     var completer = new Completer<String>();
@@ -10280,7 +9290,7 @@
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
-  Entry getAsEntry() => wrap_jso(_blink.BlinkDataTransferItem.instance.webkitGetAsEntry_Callback_0_(unwrap_jso(this)));
+  Entry getAsEntry() => _blink.BlinkDataTransferItem.instance.webkitGetAsEntry_Callback_0_(this);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -10296,62 +9306,54 @@
   // To suppress missing implicit constructor warnings.
   factory DataTransferItemList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DataTransferItemList internalCreateDataTransferItemList() {
-    return new DataTransferItemList._internalWrap();
-  }
 
-  factory DataTransferItemList._internalWrap() {
-    return new DataTransferItemList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DataTransferItemList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('DataTransferItemList.length')
   @DocsEditable()
-  int get length => _blink.BlinkDataTransferItemList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkDataTransferItemList.instance.length_Getter_(this);
   
   DataTransferItem add(data_OR_file, [String type]) {
     if ((type is String) && (data_OR_file is String)) {
-      return wrap_jso(_blink.BlinkDataTransferItemList.instance.add_Callback_2_(unwrap_jso(this), unwrap_jso(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 wrap_jso(_blink.BlinkDataTransferItemList.instance.add_Callback_1_(unwrap_jso(this), unwrap_jso(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) => wrap_jso(_blink.BlinkDataTransferItemList.instance.add_Callback_2_(unwrap_jso(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) => wrap_jso(_blink.BlinkDataTransferItemList.instance.add_Callback_1_(unwrap_jso(this), unwrap_jso(file)));
+  DataTransferItem addFile(File file) => _blink.BlinkDataTransferItemList.instance.add_Callback_1_(this, file);
   
   @DomName('DataTransferItemList.clear')
   @DocsEditable()
-  void clear() => _blink.BlinkDataTransferItemList.instance.clear_Callback_0_(unwrap_jso(this));
+  void clear() => _blink.BlinkDataTransferItemList.instance.clear_Callback_0_(this);
   
   @DomName('DataTransferItemList.item')
   @DocsEditable()
-  DataTransferItem item(int index) => wrap_jso(_blink.BlinkDataTransferItemList.instance.item_Callback_1_(unwrap_jso(this), index));
+  DataTransferItem item(int index) => _blink.BlinkDataTransferItemList.instance.item_Callback_1_(this, index);
   
   @DomName('DataTransferItemList.remove')
   @DocsEditable()
   @Experimental() // untriaged
-  void remove(int index) => _blink.BlinkDataTransferItemList.instance.remove_Callback_1_(unwrap_jso(this), index);
+  void remove(int index) => _blink.BlinkDataTransferItemList.instance.remove_Callback_1_(this, index);
   
 
   DataTransferItem operator[] (int index) {
     // TODO(alanknight): I think that all the __getter__ generators should just
     // do property access, but that's major surgery. This one is a problem, so
     // just hard-code it for now.
-    return _blink.Blink_JsNative_DomException.getProperty(unwrap_jso(this), index);
+    return _blink.Blink_JsNative_DomException.getProperty(this, index);
   }
 
 }
@@ -10393,11 +9395,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static DedicatedWorkerGlobalScope internalCreateDedicatedWorkerGlobalScope() {
-    return new DedicatedWorkerGlobalScope._internalWrap();
-  }
-
-  external factory DedicatedWorkerGlobalScope._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DedicatedWorkerGlobalScope.internal_() : super.internal_();
@@ -10405,10 +9403,10 @@
 
   void postMessage(Object message, [List<MessagePort> transfer]) {
     if (transfer != null) {
-      _blink.BlinkDedicatedWorkerGlobalScope.instance.postMessage_Callback_2_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message), transfer);
+      _blink.BlinkDedicatedWorkerGlobalScope.instance.postMessage_Callback_2_(this, convertDartToNative_SerializedScriptValue(message), transfer);
       return;
     }
-    _blink.BlinkDedicatedWorkerGlobalScope.instance.postMessage_Callback_1_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message));
+    _blink.BlinkDedicatedWorkerGlobalScope.instance.postMessage_Callback_1_(this, convertDartToNative_SerializedScriptValue(message));
     return;
   }
 
@@ -10438,18 +9436,14 @@
   factory DefaultSessionStartEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkDefaultSessionStartEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkDefaultSessionStartEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkDefaultSessionStartEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkDefaultSessionStartEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static DefaultSessionStartEvent internalCreateDefaultSessionStartEvent() {
-    return new DefaultSessionStartEvent._internalWrap();
-  }
-
-  external factory DefaultSessionStartEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DefaultSessionStartEvent.internal_() : super.internal_();
@@ -10458,7 +9452,7 @@
   @DomName('DefaultSessionStartEvent.session')
   @DocsEditable()
   @Experimental() // untriaged
-  PresentationSession get session => wrap_jso(_blink.BlinkDefaultSessionStartEvent.instance.session_Getter_(unwrap_jso(this)));
+  PresentationSession get session => _blink.BlinkDefaultSessionStartEvent.instance.session_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -10475,21 +9469,13 @@
   // To suppress missing implicit constructor warnings.
   factory DeprecatedStorageInfo._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DeprecatedStorageInfo internalCreateDeprecatedStorageInfo() {
-    return new DeprecatedStorageInfo._internalWrap();
-  }
 
-  factory DeprecatedStorageInfo._internalWrap() {
-    return new DeprecatedStorageInfo.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DeprecatedStorageInfo.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('DeprecatedStorageInfo.PERSISTENT')
   @DocsEditable()
   @Experimental() // untriaged
@@ -10502,27 +9488,27 @@
 
   void queryUsageAndQuota(int storageType, [StorageUsageCallback usageCallback, StorageErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkDeprecatedStorageInfo.instance.queryUsageAndQuota_Callback_3_(unwrap_jso(this), storageType, unwrap_jso((currentUsageInBytes, currentQuotaInBytes) => usageCallback(currentUsageInBytes, currentQuotaInBytes)), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkDeprecatedStorageInfo.instance.queryUsageAndQuota_Callback_3_(this, storageType, usageCallback, errorCallback);
       return;
     }
     if (usageCallback != null) {
-      _blink.BlinkDeprecatedStorageInfo.instance.queryUsageAndQuota_Callback_2_(unwrap_jso(this), storageType, unwrap_jso((currentUsageInBytes, currentQuotaInBytes) => usageCallback(currentUsageInBytes, currentQuotaInBytes)));
+      _blink.BlinkDeprecatedStorageInfo.instance.queryUsageAndQuota_Callback_2_(this, storageType, usageCallback);
       return;
     }
-    _blink.BlinkDeprecatedStorageInfo.instance.queryUsageAndQuota_Callback_1_(unwrap_jso(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.instance.requestQuota_Callback_4_(unwrap_jso(this), storageType, newQuotaInBytes, unwrap_jso((grantedQuotaInBytes) => quotaCallback(grantedQuotaInBytes)), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkDeprecatedStorageInfo.instance.requestQuota_Callback_4_(this, storageType, newQuotaInBytes, quotaCallback, errorCallback);
       return;
     }
     if (quotaCallback != null) {
-      _blink.BlinkDeprecatedStorageInfo.instance.requestQuota_Callback_3_(unwrap_jso(this), storageType, newQuotaInBytes, unwrap_jso((grantedQuotaInBytes) => quotaCallback(grantedQuotaInBytes)));
+      _blink.BlinkDeprecatedStorageInfo.instance.requestQuota_Callback_3_(this, storageType, newQuotaInBytes, quotaCallback);
       return;
     }
-    _blink.BlinkDeprecatedStorageInfo.instance.requestQuota_Callback_2_(unwrap_jso(this), storageType, newQuotaInBytes);
+    _blink.BlinkDeprecatedStorageInfo.instance.requestQuota_Callback_2_(this, storageType, newQuotaInBytes);
     return;
   }
 
@@ -10541,40 +9527,32 @@
   // To suppress missing implicit constructor warnings.
   factory DeprecatedStorageQuota._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DeprecatedStorageQuota internalCreateDeprecatedStorageQuota() {
-    return new DeprecatedStorageQuota._internalWrap();
-  }
 
-  factory DeprecatedStorageQuota._internalWrap() {
-    return new DeprecatedStorageQuota.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DeprecatedStorageQuota.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   void queryUsageAndQuota(StorageUsageCallback usageCallback, [StorageErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkDeprecatedStorageQuota.instance.queryUsageAndQuota_Callback_2_(unwrap_jso(this), unwrap_jso((currentUsageInBytes, currentQuotaInBytes) => usageCallback(currentUsageInBytes, currentQuotaInBytes)), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkDeprecatedStorageQuota.instance.queryUsageAndQuota_Callback_2_(this, usageCallback, errorCallback);
       return;
     }
-    _blink.BlinkDeprecatedStorageQuota.instance.queryUsageAndQuota_Callback_1_(unwrap_jso(this), unwrap_jso((currentUsageInBytes, currentQuotaInBytes) => usageCallback(currentUsageInBytes, currentQuotaInBytes)));
+    _blink.BlinkDeprecatedStorageQuota.instance.queryUsageAndQuota_Callback_1_(this, usageCallback);
     return;
   }
 
   void requestQuota(int newQuotaInBytes, [StorageQuotaCallback quotaCallback, StorageErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkDeprecatedStorageQuota.instance.requestQuota_Callback_3_(unwrap_jso(this), newQuotaInBytes, unwrap_jso((grantedQuotaInBytes) => quotaCallback(grantedQuotaInBytes)), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkDeprecatedStorageQuota.instance.requestQuota_Callback_3_(this, newQuotaInBytes, quotaCallback, errorCallback);
       return;
     }
     if (quotaCallback != null) {
-      _blink.BlinkDeprecatedStorageQuota.instance.requestQuota_Callback_2_(unwrap_jso(this), newQuotaInBytes, unwrap_jso((grantedQuotaInBytes) => quotaCallback(grantedQuotaInBytes)));
+      _blink.BlinkDeprecatedStorageQuota.instance.requestQuota_Callback_2_(this, newQuotaInBytes, quotaCallback);
       return;
     }
-    _blink.BlinkDeprecatedStorageQuota.instance.requestQuota_Callback_1_(unwrap_jso(this), newQuotaInBytes);
+    _blink.BlinkDeprecatedStorageQuota.instance.requestQuota_Callback_1_(this, newQuotaInBytes);
     return;
   }
 
@@ -10601,11 +9579,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static DetailsElement internalCreateDetailsElement() {
-    return new DetailsElement._internalWrap();
-  }
-
-  external factory DetailsElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DetailsElement.internal_() : super.internal_();
@@ -10622,11 +9596,11 @@
 
   @DomName('HTMLDetailsElement.open')
   @DocsEditable()
-  bool get open => _blink.BlinkHTMLDetailsElement.instance.open_Getter_(unwrap_jso(this));
+  bool get open => _blink.BlinkHTMLDetailsElement.instance.open_Getter_(this);
   
   @DomName('HTMLDetailsElement.open')
   @DocsEditable()
-  set open(bool value) => _blink.BlinkHTMLDetailsElement.instance.open_Setter_(unwrap_jso(this), value);
+  set open(bool value) => _blink.BlinkHTMLDetailsElement.instance.open_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -10644,32 +9618,24 @@
   // To suppress missing implicit constructor warnings.
   factory DeviceAcceleration._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DeviceAcceleration internalCreateDeviceAcceleration() {
-    return new DeviceAcceleration._internalWrap();
-  }
 
-  factory DeviceAcceleration._internalWrap() {
-    return new DeviceAcceleration.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DeviceAcceleration.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('DeviceAcceleration.x')
   @DocsEditable()
-  num get x => _blink.BlinkDeviceAcceleration.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkDeviceAcceleration.instance.x_Getter_(this);
   
   @DomName('DeviceAcceleration.y')
   @DocsEditable()
-  num get y => _blink.BlinkDeviceAcceleration.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkDeviceAcceleration.instance.y_Getter_(this);
   
   @DomName('DeviceAcceleration.z')
   @DocsEditable()
-  num get z => _blink.BlinkDeviceAcceleration.instance.z_Getter_(unwrap_jso(this));
+  num get z => _blink.BlinkDeviceAcceleration.instance.z_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -10691,18 +9657,14 @@
   factory DeviceLightEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkDeviceLightEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkDeviceLightEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkDeviceLightEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkDeviceLightEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static DeviceLightEvent internalCreateDeviceLightEvent() {
-    return new DeviceLightEvent._internalWrap();
-  }
-
-  external factory DeviceLightEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DeviceLightEvent.internal_() : super.internal_();
@@ -10711,7 +9673,7 @@
   @DomName('DeviceLightEvent.value')
   @DocsEditable()
   @Experimental() // untriaged
-  num get value => _blink.BlinkDeviceLightEvent.instance.value_Getter_(unwrap_jso(this));
+  num get value => _blink.BlinkDeviceLightEvent.instance.value_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -10731,11 +9693,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static DeviceMotionEvent internalCreateDeviceMotionEvent() {
-    return new DeviceMotionEvent._internalWrap();
-  }
-
-  external factory DeviceMotionEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DeviceMotionEvent.internal_() : super.internal_();
@@ -10743,24 +9701,24 @@
 
   @DomName('DeviceMotionEvent.acceleration')
   @DocsEditable()
-  DeviceAcceleration get acceleration => wrap_jso(_blink.BlinkDeviceMotionEvent.instance.acceleration_Getter_(unwrap_jso(this)));
+  DeviceAcceleration get acceleration => _blink.BlinkDeviceMotionEvent.instance.acceleration_Getter_(this);
   
   @DomName('DeviceMotionEvent.accelerationIncludingGravity')
   @DocsEditable()
-  DeviceAcceleration get accelerationIncludingGravity => wrap_jso(_blink.BlinkDeviceMotionEvent.instance.accelerationIncludingGravity_Getter_(unwrap_jso(this)));
+  DeviceAcceleration get accelerationIncludingGravity => _blink.BlinkDeviceMotionEvent.instance.accelerationIncludingGravity_Getter_(this);
   
   @DomName('DeviceMotionEvent.interval')
   @DocsEditable()
-  num get interval => _blink.BlinkDeviceMotionEvent.instance.interval_Getter_(unwrap_jso(this));
+  num get interval => _blink.BlinkDeviceMotionEvent.instance.interval_Getter_(this);
   
   @DomName('DeviceMotionEvent.rotationRate')
   @DocsEditable()
-  DeviceRotationRate get rotationRate => wrap_jso(_blink.BlinkDeviceMotionEvent.instance.rotationRate_Getter_(unwrap_jso(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.instance.initDeviceMotionEvent_Callback_7_(unwrap_jso(this), type, bubbles, cancelable, unwrap_jso(acceleration), unwrap_jso(accelerationIncludingGravity), unwrap_jso(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
@@ -10786,11 +9744,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static DeviceOrientationEvent internalCreateDeviceOrientationEvent() {
-    return new DeviceOrientationEvent._internalWrap();
-  }
-
-  external factory DeviceOrientationEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DeviceOrientationEvent.internal_() : super.internal_();
@@ -10798,23 +9752,23 @@
 
   @DomName('DeviceOrientationEvent.absolute')
   @DocsEditable()
-  bool get absolute => _blink.BlinkDeviceOrientationEvent.instance.absolute_Getter_(unwrap_jso(this));
+  bool get absolute => _blink.BlinkDeviceOrientationEvent.instance.absolute_Getter_(this);
   
   @DomName('DeviceOrientationEvent.alpha')
   @DocsEditable()
-  num get alpha => _blink.BlinkDeviceOrientationEvent.instance.alpha_Getter_(unwrap_jso(this));
+  num get alpha => _blink.BlinkDeviceOrientationEvent.instance.alpha_Getter_(this);
   
   @DomName('DeviceOrientationEvent.beta')
   @DocsEditable()
-  num get beta => _blink.BlinkDeviceOrientationEvent.instance.beta_Getter_(unwrap_jso(this));
+  num get beta => _blink.BlinkDeviceOrientationEvent.instance.beta_Getter_(this);
   
   @DomName('DeviceOrientationEvent.gamma')
   @DocsEditable()
-  num get gamma => _blink.BlinkDeviceOrientationEvent.instance.gamma_Getter_(unwrap_jso(this));
+  num 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.instance.initDeviceOrientationEvent_Callback_7_(unwrap_jso(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
@@ -10832,32 +9786,24 @@
   // To suppress missing implicit constructor warnings.
   factory DeviceRotationRate._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DeviceRotationRate internalCreateDeviceRotationRate() {
-    return new DeviceRotationRate._internalWrap();
-  }
 
-  factory DeviceRotationRate._internalWrap() {
-    return new DeviceRotationRate.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DeviceRotationRate.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('DeviceRotationRate.alpha')
   @DocsEditable()
-  num get alpha => _blink.BlinkDeviceRotationRate.instance.alpha_Getter_(unwrap_jso(this));
+  num get alpha => _blink.BlinkDeviceRotationRate.instance.alpha_Getter_(this);
   
   @DomName('DeviceRotationRate.beta')
   @DocsEditable()
-  num get beta => _blink.BlinkDeviceRotationRate.instance.beta_Getter_(unwrap_jso(this));
+  num get beta => _blink.BlinkDeviceRotationRate.instance.beta_Getter_(this);
   
   @DomName('DeviceRotationRate.gamma')
   @DocsEditable()
-  num get gamma => _blink.BlinkDeviceRotationRate.instance.gamma_Getter_(unwrap_jso(this));
+  num get gamma => _blink.BlinkDeviceRotationRate.instance.gamma_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -10876,11 +9822,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static DialogElement internalCreateDialogElement() {
-    return new DialogElement._internalWrap();
-  }
-
-  external factory DialogElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DialogElement.internal_() : super.internal_();
@@ -10894,33 +9836,33 @@
 
   @DomName('HTMLDialogElement.open')
   @DocsEditable()
-  bool get open => _blink.BlinkHTMLDialogElement.instance.open_Getter_(unwrap_jso(this));
+  bool get open => _blink.BlinkHTMLDialogElement.instance.open_Getter_(this);
   
   @DomName('HTMLDialogElement.open')
   @DocsEditable()
-  set open(bool value) => _blink.BlinkHTMLDialogElement.instance.open_Setter_(unwrap_jso(this), value);
+  set open(bool value) => _blink.BlinkHTMLDialogElement.instance.open_Setter_(this, value);
   
   @DomName('HTMLDialogElement.returnValue')
   @DocsEditable()
   @Experimental() // untriaged
-  String get returnValue => _blink.BlinkHTMLDialogElement.instance.returnValue_Getter_(unwrap_jso(this));
+  String get returnValue => _blink.BlinkHTMLDialogElement.instance.returnValue_Getter_(this);
   
   @DomName('HTMLDialogElement.returnValue')
   @DocsEditable()
   @Experimental() // untriaged
-  set returnValue(String value) => _blink.BlinkHTMLDialogElement.instance.returnValue_Setter_(unwrap_jso(this), value);
+  set returnValue(String value) => _blink.BlinkHTMLDialogElement.instance.returnValue_Setter_(this, value);
   
   @DomName('HTMLDialogElement.close')
   @DocsEditable()
-  void close(String returnValue) => _blink.BlinkHTMLDialogElement.instance.close_Callback_1_(unwrap_jso(this), returnValue);
+  void close(String returnValue) => _blink.BlinkHTMLDialogElement.instance.close_Callback_1_(this, returnValue);
   
   @DomName('HTMLDialogElement.show')
   @DocsEditable()
-  void show() => _blink.BlinkHTMLDialogElement.instance.show_Callback_0_(unwrap_jso(this));
+  void show() => _blink.BlinkHTMLDialogElement.instance.show_Callback_0_(this);
   
   @DomName('HTMLDialogElement.showModal')
   @DocsEditable()
-  void showModal() => _blink.BlinkHTMLDialogElement.instance.showModal_Callback_0_(unwrap_jso(this));
+  void showModal() => _blink.BlinkHTMLDialogElement.instance.showModal_Callback_0_(this);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -10974,11 +9916,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static DirectoryEntry internalCreateDirectoryEntry() {
-    return new DirectoryEntry._internalWrap();
-  }
-
-  external factory DirectoryEntry._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DirectoryEntry.internal_() : super.internal_();
@@ -10986,22 +9924,22 @@
 
   @DomName('DirectoryEntry.createReader')
   @DocsEditable()
-  DirectoryReader createReader() => wrap_jso(_blink.BlinkDirectoryEntry.instance.createReader_Callback_0_(unwrap_jso(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.instance.getDirectory_Callback_4_(unwrap_jso(this), path, convertDartToNative_Dictionary(options), unwrap_jso((entry) => successCallback(wrap_jso(entry))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_4_(this, path, convertDartToNative_Dictionary(options), successCallback, errorCallback);
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_3_(unwrap_jso(this), path, convertDartToNative_Dictionary(options), unwrap_jso((entry) => successCallback(wrap_jso(entry))));
+      _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_3_(this, path, convertDartToNative_Dictionary(options), successCallback);
       return;
     }
     if (options != null) {
-      _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_2_(unwrap_jso(this), path, convertDartToNative_Dictionary(options));
+      _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_2_(this, path, convertDartToNative_Dictionary(options));
       return;
     }
-    _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_1_(unwrap_jso(this), path);
+    _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_1_(this, path);
     return;
   }
 
@@ -11015,18 +9953,18 @@
 
   void __getFile(String path, {Map options, _EntryCallback successCallback, _ErrorCallback errorCallback}) {
     if (errorCallback != null) {
-      _blink.BlinkDirectoryEntry.instance.getFile_Callback_4_(unwrap_jso(this), path, convertDartToNative_Dictionary(options), unwrap_jso((entry) => successCallback(wrap_jso(entry))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkDirectoryEntry.instance.getFile_Callback_4_(this, path, convertDartToNative_Dictionary(options), successCallback, errorCallback);
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkDirectoryEntry.instance.getFile_Callback_3_(unwrap_jso(this), path, convertDartToNative_Dictionary(options), unwrap_jso((entry) => successCallback(wrap_jso(entry))));
+      _blink.BlinkDirectoryEntry.instance.getFile_Callback_3_(this, path, convertDartToNative_Dictionary(options), successCallback);
       return;
     }
     if (options != null) {
-      _blink.BlinkDirectoryEntry.instance.getFile_Callback_2_(unwrap_jso(this), path, convertDartToNative_Dictionary(options));
+      _blink.BlinkDirectoryEntry.instance.getFile_Callback_2_(this, path, convertDartToNative_Dictionary(options));
       return;
     }
-    _blink.BlinkDirectoryEntry.instance.getFile_Callback_1_(unwrap_jso(this), path);
+    _blink.BlinkDirectoryEntry.instance.getFile_Callback_1_(this, path);
     return;
   }
 
@@ -11040,10 +9978,10 @@
 
   void _removeRecursively(VoidCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkDirectoryEntry.instance.removeRecursively_Callback_2_(unwrap_jso(this), unwrap_jso(() => successCallback()), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkDirectoryEntry.instance.removeRecursively_Callback_2_(this, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkDirectoryEntry.instance.removeRecursively_Callback_1_(unwrap_jso(this), unwrap_jso(() => successCallback()));
+    _blink.BlinkDirectoryEntry.instance.removeRecursively_Callback_1_(this, successCallback);
     return;
   }
 
@@ -11071,27 +10009,19 @@
   // To suppress missing implicit constructor warnings.
   factory DirectoryReader._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DirectoryReader internalCreateDirectoryReader() {
-    return new DirectoryReader._internalWrap();
-  }
 
-  factory DirectoryReader._internalWrap() {
-    return new DirectoryReader.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DirectoryReader.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   void _readEntries(_EntriesCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkDirectoryReader.instance.readEntries_Callback_2_(unwrap_jso(this), unwrap_jso((entries) => successCallback(wrap_jso(entries))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkDirectoryReader.instance.readEntries_Callback_2_(this, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkDirectoryReader.instance.readEntries_Callback_1_(unwrap_jso(this), unwrap_jso((entries) => successCallback(wrap_jso(entries))));
+    _blink.BlinkDirectoryReader.instance.readEntries_Callback_1_(this, successCallback);
     return;
   }
 
@@ -11145,11 +10075,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static DivElement internalCreateDivElement() {
-    return new DivElement._internalWrap();
-  }
-
-  external factory DivElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DivElement.internal_() : super.internal_();
@@ -11228,11 +10154,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static Document internalCreateDocument() {
-    return new Document._internalWrap();
-  }
-
-  external factory Document._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Document.internal_() : super.internal_();
@@ -11241,139 +10163,139 @@
   @DomName('Document.activeElement')
   @DocsEditable()
   @Experimental() // untriaged
-  Element get activeElement => wrap_jso(_blink.BlinkDocument.instance.activeElement_Getter_(unwrap_jso(this)));
+  Element get activeElement => _blink.BlinkDocument.instance.activeElement_Getter_(this);
   
   @DomName('Document.body')
   @DocsEditable()
-  HtmlElement get _body => wrap_jso(_blink.BlinkDocument.instance.body_Getter_(unwrap_jso(this)));
+  HtmlElement get _body => _blink.BlinkDocument.instance.body_Getter_(this);
   
   @DomName('Document.body')
   @DocsEditable()
-  set _body(HtmlElement value) => _blink.BlinkDocument.instance.body_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set _body(HtmlElement value) => _blink.BlinkDocument.instance.body_Setter_(this, value);
   
   @DomName('Document.contentType')
   @DocsEditable()
   @Experimental() // untriaged
-  String get contentType => _blink.BlinkDocument.instance.contentType_Getter_(unwrap_jso(this));
+  String get contentType => _blink.BlinkDocument.instance.contentType_Getter_(this);
   
   @DomName('Document.cookie')
   @DocsEditable()
-  String get cookie => _blink.BlinkDocument.instance.cookie_Getter_(unwrap_jso(this));
+  String get cookie => _blink.BlinkDocument.instance.cookie_Getter_(this);
   
   @DomName('Document.cookie')
   @DocsEditable()
-  set cookie(String value) => _blink.BlinkDocument.instance.cookie_Setter_(unwrap_jso(this), value);
+  set cookie(String value) => _blink.BlinkDocument.instance.cookie_Setter_(this, value);
   
   @DomName('Document.currentScript')
   @DocsEditable()
   @Experimental() // untriaged
-  ScriptElement get currentScript => wrap_jso(_blink.BlinkDocument.instance.currentScript_Getter_(unwrap_jso(this)));
+  ScriptElement get currentScript => _blink.BlinkDocument.instance.currentScript_Getter_(this);
   
   @DomName('Document.defaultView')
   @DocsEditable()
-  WindowBase get window => wrap_jso(_blink.BlinkDocument.instance.defaultView_Getter_(unwrap_jso(this)));
+  WindowBase get window => _blink.BlinkDocument.instance.defaultView_Getter_(this);
   
   @DomName('Document.documentElement')
   @DocsEditable()
-  Element get documentElement => wrap_jso(_blink.BlinkDocument.instance.documentElement_Getter_(unwrap_jso(this)));
+  Element get documentElement => _blink.BlinkDocument.instance.documentElement_Getter_(this);
   
   @DomName('Document.domain')
   @DocsEditable()
-  String get domain => _blink.BlinkDocument.instance.domain_Getter_(unwrap_jso(this));
+  String get domain => _blink.BlinkDocument.instance.domain_Getter_(this);
   
   @DomName('Document.fonts')
   @DocsEditable()
   @Experimental() // untriaged
-  FontFaceSet get fonts => wrap_jso(_blink.BlinkDocument.instance.fonts_Getter_(unwrap_jso(this)));
+  FontFaceSet get fonts => _blink.BlinkDocument.instance.fonts_Getter_(this);
   
   @DomName('Document.fullscreenElement')
   @DocsEditable()
   @Experimental() // untriaged
-  Element get fullscreenElement => wrap_jso(_blink.BlinkDocument.instance.fullscreenElement_Getter_(unwrap_jso(this)));
+  Element get fullscreenElement => _blink.BlinkDocument.instance.fullscreenElement_Getter_(this);
   
   @DomName('Document.fullscreenEnabled')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get fullscreenEnabled => _blink.BlinkDocument.instance.fullscreenEnabled_Getter_(unwrap_jso(this));
+  bool get fullscreenEnabled => _blink.BlinkDocument.instance.fullscreenEnabled_Getter_(this);
   
   @DomName('Document.head')
   @DocsEditable()
-  HeadElement get _head => wrap_jso(_blink.BlinkDocument.instance.head_Getter_(unwrap_jso(this)));
+  HeadElement get _head => _blink.BlinkDocument.instance.head_Getter_(this);
   
   @DomName('Document.hidden')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get hidden => _blink.BlinkDocument.instance.hidden_Getter_(unwrap_jso(this));
+  bool get hidden => _blink.BlinkDocument.instance.hidden_Getter_(this);
   
   @DomName('Document.implementation')
   @DocsEditable()
-  DomImplementation get implementation => wrap_jso(_blink.BlinkDocument.instance.implementation_Getter_(unwrap_jso(this)));
+  DomImplementation get implementation => _blink.BlinkDocument.instance.implementation_Getter_(this);
   
   @DomName('Document.lastModified')
   @DocsEditable()
-  String get _lastModified => _blink.BlinkDocument.instance.lastModified_Getter_(unwrap_jso(this));
+  String get _lastModified => _blink.BlinkDocument.instance.lastModified_Getter_(this);
   
   @DomName('Document.origin')
   @DocsEditable()
   @Experimental() // untriaged
-  String get origin => _blink.BlinkDocument.instance.origin_Getter_(unwrap_jso(this));
+  String get origin => _blink.BlinkDocument.instance.origin_Getter_(this);
   
   @DomName('Document.pointerLockElement')
   @DocsEditable()
   @Experimental() // untriaged
-  Element get pointerLockElement => wrap_jso(_blink.BlinkDocument.instance.pointerLockElement_Getter_(unwrap_jso(this)));
+  Element get pointerLockElement => _blink.BlinkDocument.instance.pointerLockElement_Getter_(this);
   
   @DomName('Document.preferredStylesheetSet')
   @DocsEditable()
-  String get _preferredStylesheetSet => _blink.BlinkDocument.instance.preferredStylesheetSet_Getter_(unwrap_jso(this));
+  String get _preferredStylesheetSet => _blink.BlinkDocument.instance.preferredStylesheetSet_Getter_(this);
   
   @DomName('Document.readyState')
   @DocsEditable()
-  String get readyState => _blink.BlinkDocument.instance.readyState_Getter_(unwrap_jso(this));
+  String get readyState => _blink.BlinkDocument.instance.readyState_Getter_(this);
   
   @DomName('Document.referrer')
   @DocsEditable()
-  String get _referrer => _blink.BlinkDocument.instance.referrer_Getter_(unwrap_jso(this));
+  String get _referrer => _blink.BlinkDocument.instance.referrer_Getter_(this);
   
   @DomName('Document.rootElement')
   @DocsEditable()
   @Experimental() // untriaged
-  SvgSvgElement get rootElement => wrap_jso(_blink.BlinkDocument.instance.rootElement_Getter_(unwrap_jso(this)));
+  SvgSvgElement get rootElement => _blink.BlinkDocument.instance.rootElement_Getter_(this);
   
   @DomName('Document.scrollingElement')
   @DocsEditable()
   @Experimental() // untriaged
-  Element get scrollingElement => wrap_jso(_blink.BlinkDocument.instance.scrollingElement_Getter_(unwrap_jso(this)));
+  Element get scrollingElement => _blink.BlinkDocument.instance.scrollingElement_Getter_(this);
   
   @DomName('Document.selectedStylesheetSet')
   @DocsEditable()
-  String get _selectedStylesheetSet => _blink.BlinkDocument.instance.selectedStylesheetSet_Getter_(unwrap_jso(this));
+  String get _selectedStylesheetSet => _blink.BlinkDocument.instance.selectedStylesheetSet_Getter_(this);
   
   @DomName('Document.selectedStylesheetSet')
   @DocsEditable()
-  set _selectedStylesheetSet(String value) => _blink.BlinkDocument.instance.selectedStylesheetSet_Setter_(unwrap_jso(this), value);
+  set _selectedStylesheetSet(String value) => _blink.BlinkDocument.instance.selectedStylesheetSet_Setter_(this, value);
   
   @DomName('Document.styleSheets')
   @DocsEditable()
-  List<StyleSheet> get _styleSheets => wrap_jso(_blink.BlinkDocument.instance.styleSheets_Getter_(unwrap_jso(this)));
+  List<StyleSheet> get _styleSheets => (_blink.BlinkDocument.instance.styleSheets_Getter_(this));
   
   @DomName('Document.timeline')
   @DocsEditable()
   @Experimental() // untriaged
-  AnimationTimeline get timeline => wrap_jso(_blink.BlinkDocument.instance.timeline_Getter_(unwrap_jso(this)));
+  AnimationTimeline get timeline => _blink.BlinkDocument.instance.timeline_Getter_(this);
   
   @DomName('Document.title')
   @DocsEditable()
-  String get _title => _blink.BlinkDocument.instance.title_Getter_(unwrap_jso(this));
+  String get _title => _blink.BlinkDocument.instance.title_Getter_(this);
   
   @DomName('Document.title')
   @DocsEditable()
-  set _title(String value) => _blink.BlinkDocument.instance.title_Setter_(unwrap_jso(this), value);
+  set _title(String value) => _blink.BlinkDocument.instance.title_Setter_(this, value);
   
   @DomName('Document.visibilityState')
   @DocsEditable()
   @Experimental() // untriaged
-  String get visibilityState => _blink.BlinkDocument.instance.visibilityState_Getter_(unwrap_jso(this));
+  String get visibilityState => _blink.BlinkDocument.instance.visibilityState_Getter_(this);
   
   @DomName('Document.webkitFullscreenElement')
   @DocsEditable()
@@ -11381,7 +10303,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-fullscreenelement
-  Element get _webkitFullscreenElement => wrap_jso(_blink.BlinkDocument.instance.webkitFullscreenElement_Getter_(unwrap_jso(this)));
+  Element get _webkitFullscreenElement => _blink.BlinkDocument.instance.webkitFullscreenElement_Getter_(this);
   
   @DomName('Document.webkitFullscreenEnabled')
   @DocsEditable()
@@ -11389,7 +10311,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-fullscreenenabled
-  bool get _webkitFullscreenEnabled => _blink.BlinkDocument.instance.webkitFullscreenEnabled_Getter_(unwrap_jso(this));
+  bool get _webkitFullscreenEnabled => _blink.BlinkDocument.instance.webkitFullscreenEnabled_Getter_(this);
   
   @DomName('Document.webkitHidden')
   @DocsEditable()
@@ -11397,7 +10319,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PageVisibility/Overview.html#document
-  bool get _webkitHidden => _blink.BlinkDocument.instance.webkitHidden_Getter_(unwrap_jso(this));
+  bool get _webkitHidden => _blink.BlinkDocument.instance.webkitHidden_Getter_(this);
   
   @DomName('Document.webkitVisibilityState')
   @DocsEditable()
@@ -11405,146 +10327,146 @@
   @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.instance.webkitVisibilityState_Getter_(unwrap_jso(this));
+  String get _webkitVisibilityState => _blink.BlinkDocument.instance.webkitVisibilityState_Getter_(this);
   
   @DomName('Document.adoptNode')
   @DocsEditable()
-  Node adoptNode(Node node) => wrap_jso(_blink.BlinkDocument.instance.adoptNode_Callback_1_(unwrap_jso(this), unwrap_jso(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) => wrap_jso(_blink.BlinkDocument.instance.caretRangeFromPoint_Callback_2_(unwrap_jso(this), x, y));
+  Range _caretRangeFromPoint(int x, int y) => _blink.BlinkDocument.instance.caretRangeFromPoint_Callback_2_(this, x, y);
   
   @DomName('Document.createDocumentFragment')
   @DocsEditable()
-  DocumentFragment createDocumentFragment() => wrap_jso(_blink.BlinkDocument.instance.createDocumentFragment_Callback_0_(unwrap_jso(this)));
+  DocumentFragment createDocumentFragment() => _blink.BlinkDocument.instance.createDocumentFragment_Callback_0_(this);
   
   @DomName('Document.createElement')
   @DocsEditable()
-  Element _createElement(String localName_OR_tagName, [String typeExtension]) => wrap_jso(_blink.BlinkDocument.instance.createElement_Callback_2_(unwrap_jso(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]) => wrap_jso(_blink.BlinkDocument.instance.createElementNS_Callback_3_(unwrap_jso(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) => wrap_jso(_blink.BlinkDocument.instance.createEvent_Callback_1_(unwrap_jso(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 wrap_jso(_blink.BlinkDocument.instance.createNodeIterator_Callback_3_(unwrap_jso(this), unwrap_jso(root), whatToShow, unwrap_jso(filter)));
+      return _blink.BlinkDocument.instance.createNodeIterator_Callback_3_(this, root, whatToShow, filter);
     }
-    return wrap_jso(_blink.BlinkDocument.instance.createNodeIterator_Callback_1_(unwrap_jso(this), unwrap_jso(root)));
+    return _blink.BlinkDocument.instance.createNodeIterator_Callback_1_(this, root);
   }
 
   @DomName('Document.createRange')
   @DocsEditable()
-  Range createRange() => wrap_jso(_blink.BlinkDocument.instance.createRange_Callback_0_(unwrap_jso(this)));
+  Range createRange() => _blink.BlinkDocument.instance.createRange_Callback_0_(this);
   
   @DomName('Document.createTextNode')
   @DocsEditable()
-  Text _createTextNode(String data) => wrap_jso(_blink.BlinkDocument.instance.createTextNode_Callback_1_(unwrap_jso(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 radiusX, num radiusY, num rotationAngle, num force) => wrap_jso(_blink.BlinkDocument.instance.createTouch_Callback_11_(unwrap_jso(this), unwrap_jso(window), unwrap_jso(target), identifier, pageX, pageY, screenX, screenY, radiusX, radiusY, rotationAngle, force));
+  Touch _createTouch(Window window, EventTarget target, int identifier, num pageX, num pageY, num screenX, num screenY, num radiusX, num radiusY, num rotationAngle, num force) => _blink.BlinkDocument.instance.createTouch_Callback_11_(this, window, _convertDartToNative_EventTarget(target), identifier, pageX, pageY, screenX, screenY, radiusX, radiusY, rotationAngle, force);
   
   @DomName('Document.createTouchList')
   @DocsEditable()
   // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features
   @Experimental()
-  TouchList _createTouchList(Touch touches) => wrap_jso(_blink.BlinkDocument.instance.createTouchList_Callback_1_(unwrap_jso(this), unwrap_jso(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 wrap_jso(_blink.BlinkDocument.instance.createTreeWalker_Callback_3_(unwrap_jso(this), unwrap_jso(root), whatToShow, unwrap_jso(filter)));
+      return _blink.BlinkDocument.instance.createTreeWalker_Callback_3_(this, root, whatToShow, filter);
     }
-    return wrap_jso(_blink.BlinkDocument.instance.createTreeWalker_Callback_1_(unwrap_jso(this), unwrap_jso(root)));
+    return _blink.BlinkDocument.instance.createTreeWalker_Callback_1_(this, root);
   }
 
   @DomName('Document.elementFromPoint')
   @DocsEditable()
-  Element _elementFromPoint(int x, int y) => wrap_jso(_blink.BlinkDocument.instance.elementFromPoint_Callback_2_(unwrap_jso(this), x, y));
+  Element _elementFromPoint(int x, int y) => _blink.BlinkDocument.instance.elementFromPoint_Callback_2_(this, x, y);
   
   @DomName('Document.elementsFromPoint')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Element> elementsFromPoint(int x, int y) => wrap_jso(_blink.BlinkDocument.instance.elementsFromPoint_Callback_2_(unwrap_jso(this), x, y));
+  List<Element> elementsFromPoint(int x, int y) => (_blink.BlinkDocument.instance.elementsFromPoint_Callback_2_(this, x, y));
   
   bool execCommand(String commandId, [bool showUI, String value]) {
     if (value != null) {
-      return _blink.BlinkDocument.instance.execCommand_Callback_3_(unwrap_jso(this), commandId, showUI, value);
+      return _blink.BlinkDocument.instance.execCommand_Callback_3_(this, commandId, showUI, value);
     }
     if (showUI != null) {
-      return _blink.BlinkDocument.instance.execCommand_Callback_2_(unwrap_jso(this), commandId, showUI);
+      return _blink.BlinkDocument.instance.execCommand_Callback_2_(this, commandId, showUI);
     }
-    return _blink.BlinkDocument.instance.execCommand_Callback_1_(unwrap_jso(this), commandId);
+    return _blink.BlinkDocument.instance.execCommand_Callback_1_(this, commandId);
   }
 
   @DomName('Document.exitFullscreen')
   @DocsEditable()
   @Experimental() // untriaged
-  void exitFullscreen() => _blink.BlinkDocument.instance.exitFullscreen_Callback_0_(unwrap_jso(this));
+  void exitFullscreen() => _blink.BlinkDocument.instance.exitFullscreen_Callback_0_(this);
   
   @DomName('Document.exitPointerLock')
   @DocsEditable()
   @Experimental() // untriaged
-  void exitPointerLock() => _blink.BlinkDocument.instance.exitPointerLock_Callback_0_(unwrap_jso(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) => wrap_jso(_blink.BlinkDocument.instance.getCSSCanvasContext_Callback_4_(unwrap_jso(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.getElementsByClassName')
   @DocsEditable()
-  List<Node> getElementsByClassName(String classNames) => wrap_jso(_blink.BlinkDocument.instance.getElementsByClassName_Callback_1_(unwrap_jso(this), classNames));
+  List<Node> getElementsByClassName(String classNames) => (_blink.BlinkDocument.instance.getElementsByClassName_Callback_1_(this, classNames));
   
   @DomName('Document.getElementsByName')
   @DocsEditable()
-  List<Node> getElementsByName(String elementName) => wrap_jso(_blink.BlinkDocument.instance.getElementsByName_Callback_1_(unwrap_jso(this), elementName));
+  List<Node> getElementsByName(String elementName) => (_blink.BlinkDocument.instance.getElementsByName_Callback_1_(this, elementName));
   
   @DomName('Document.getElementsByTagName')
   @DocsEditable()
-  List<Node> getElementsByTagName(String localName) => wrap_jso(_blink.BlinkDocument.instance.getElementsByTagName_Callback_1_(unwrap_jso(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 wrap_jso(_blink.BlinkDocument.instance.importNode_Callback_2_(unwrap_jso(this), unwrap_jso(node), deep));
+      return _blink.BlinkDocument.instance.importNode_Callback_2_(this, node, deep);
     }
-    return wrap_jso(_blink.BlinkDocument.instance.importNode_Callback_1_(unwrap_jso(this), unwrap_jso(node)));
+    return _blink.BlinkDocument.instance.importNode_Callback_1_(this, node);
   }
 
   @DomName('Document.queryCommandEnabled')
   @DocsEditable()
-  bool queryCommandEnabled(String commandId) => _blink.BlinkDocument.instance.queryCommandEnabled_Callback_1_(unwrap_jso(this), commandId);
+  bool queryCommandEnabled(String commandId) => _blink.BlinkDocument.instance.queryCommandEnabled_Callback_1_(this, commandId);
   
   @DomName('Document.queryCommandIndeterm')
   @DocsEditable()
-  bool queryCommandIndeterm(String commandId) => _blink.BlinkDocument.instance.queryCommandIndeterm_Callback_1_(unwrap_jso(this), commandId);
+  bool queryCommandIndeterm(String commandId) => _blink.BlinkDocument.instance.queryCommandIndeterm_Callback_1_(this, commandId);
   
   @DomName('Document.queryCommandState')
   @DocsEditable()
-  bool queryCommandState(String commandId) => _blink.BlinkDocument.instance.queryCommandState_Callback_1_(unwrap_jso(this), commandId);
+  bool queryCommandState(String commandId) => _blink.BlinkDocument.instance.queryCommandState_Callback_1_(this, commandId);
   
   @DomName('Document.queryCommandSupported')
   @DocsEditable()
-  bool queryCommandSupported(String commandId) => _blink.BlinkDocument.instance.queryCommandSupported_Callback_1_(unwrap_jso(this), commandId);
+  bool queryCommandSupported(String commandId) => _blink.BlinkDocument.instance.queryCommandSupported_Callback_1_(this, commandId);
   
   @DomName('Document.queryCommandValue')
   @DocsEditable()
-  String queryCommandValue(String commandId) => _blink.BlinkDocument.instance.queryCommandValue_Callback_1_(unwrap_jso(this), commandId);
+  String queryCommandValue(String commandId) => _blink.BlinkDocument.instance.queryCommandValue_Callback_1_(this, commandId);
   
   @DomName('Document.transformDocumentToTreeView')
   @DocsEditable()
   @Experimental() // untriaged
-  void transformDocumentToTreeView(String noStyleMessage) => _blink.BlinkDocument.instance.transformDocumentToTreeView_Callback_1_(unwrap_jso(this), noStyleMessage);
+  void transformDocumentToTreeView(String noStyleMessage) => _blink.BlinkDocument.instance.transformDocumentToTreeView_Callback_1_(this, noStyleMessage);
   
   @DomName('Document.webkitExitFullscreen')
   @DocsEditable()
@@ -11552,27 +10474,27 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-exitfullscreen
-  void _webkitExitFullscreen() => _blink.BlinkDocument.instance.webkitExitFullscreen_Callback_0_(unwrap_jso(this));
+  void _webkitExitFullscreen() => _blink.BlinkDocument.instance.webkitExitFullscreen_Callback_0_(this);
   
   @DomName('Document.getElementById')
   @DocsEditable()
-  Element getElementById(String elementId) => wrap_jso(_blink.BlinkDocument.instance.getElementById_Callback_1_(unwrap_jso(this), elementId));
+  Element getElementById(String elementId) => _blink.BlinkDocument.instance.getElementById_Callback_1_(this, elementId);
   
   @DomName('Document.childElementCount')
   @DocsEditable()
-  int get _childElementCount => _blink.BlinkDocument.instance.childElementCount_Getter_(unwrap_jso(this));
+  int get _childElementCount => _blink.BlinkDocument.instance.childElementCount_Getter_(this);
   
   @DomName('Document.children')
   @DocsEditable()
-  List<Node> get _children => wrap_jso(_blink.BlinkDocument.instance.children_Getter_(unwrap_jso(this)));
+  List<Node> get _children => (_blink.BlinkDocument.instance.children_Getter_(this));
   
   @DomName('Document.firstElementChild')
   @DocsEditable()
-  Element get _firstElementChild => wrap_jso(_blink.BlinkDocument.instance.firstElementChild_Getter_(unwrap_jso(this)));
+  Element get _firstElementChild => _blink.BlinkDocument.instance.firstElementChild_Getter_(this);
   
   @DomName('Document.lastElementChild')
   @DocsEditable()
-  Element get _lastElementChild => wrap_jso(_blink.BlinkDocument.instance.lastElementChild_Getter_(unwrap_jso(this)));
+  Element get _lastElementChild => _blink.BlinkDocument.instance.lastElementChild_Getter_(this);
   
   /**
    * Finds the first descendant element of this document that matches the
@@ -11593,11 +10515,11 @@
    */
   @DomName('Document.querySelector')
   @DocsEditable()
-  Element querySelector(String selectors) => wrap_jso(_blink.BlinkDocument.instance.querySelector_Callback_1_(unwrap_jso(this), selectors));
+  Element querySelector(String selectors) => _blink.BlinkDocument.instance.querySelector_Callback_1_(this, selectors);
   
   @DomName('Document.querySelectorAll')
   @DocsEditable()
-  List<Node> _querySelectorAll(String selectors) => wrap_jso(_blink.BlinkDocument.instance.querySelectorAll_Callback_1_(unwrap_jso(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')
@@ -12022,47 +10944,17 @@
 
   @DomName('Document.createElement')
   Element createElement(String tagName, [String typeExtension]) {
-    var newElement = (typeExtension == null) ?
-      _blink.BlinkDocument.instance.createElement_Callback_1_(unwrap_jso(this), tagName) :
-      _blink.BlinkDocument.instance.createElement_Callback_2_(unwrap_jso(this), tagName, typeExtension);
-
-    var wrapped = js.getDartHtmlWrapperFor(newElement);  // Here's our Dart class.
-    if (wrapped != null) {
-      wrapped.blink_jsObject = newElement;
-    } else {
-      wrapped = wrap_jso(newElement);
-      if (wrapped == null) {
-        wrapped = wrap_jso_custom_element(newElement);
-      } else {
-        js.setDartHtmlWrapperFor(wrapped.blink_jsObject, wrapped);
-      }
-    }
-
-    return wrapped;
+    return (typeExtension == null) ?
+      _blink.BlinkDocument.instance.createElement_Callback_1_(this, tagName) :
+      _blink.BlinkDocument.instance.createElement_Callback_2_(this, tagName, typeExtension);
   }
 
   @DomName('Document.createElementNS')
   @DocsEditable()
   Element createElementNS(String namespaceURI, String qualifiedName, [String typeExtension]) {
-    var newElement = (typeExtension == null) ?
-      _blink.BlinkDocument.instance.createElementNS_Callback_2_(unwrap_jso(this), namespaceURI, qualifiedName) :
-      _blink.BlinkDocument.instance.createElementNS_Callback_3_(unwrap_jso(this), namespaceURI, qualifiedName, typeExtension);
-
-    var wrapped;
-
-    wrapped = js.getDartHtmlWrapperFor(newElement);  // Here's our Dart class.
-    if (wrapped != null) {
-      wrapped.blink_jsObject = newElement;
-    } else {
-      wrapped = wrap_jso(newElement);
-      if (wrapped == null) {
-        wrapped = wrap_jso_custom_element(newElement);
-      } else {
-        js.setDartHtmlWrapperFor(wrapped.blink_jsObject, wrapped);  // Here's our Dart class.
-      }
-    }
-
-    return wrapped;
+    return (typeExtension == null) ?
+      _blink.BlinkDocument.instance.createElementNS_Callback_2_(this, namespaceURI, qualifiedName) :
+      _blink.BlinkDocument.instance.createElementNS_Callback_3_(this, namespaceURI, qualifiedName, typeExtension);    
   }
 
 }
@@ -12186,11 +11078,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static DocumentFragment internalCreateDocumentFragment() {
-    return new DocumentFragment._internalWrap();
-  }
-
-  external factory DocumentFragment._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DocumentFragment.internal_() : super.internal_();
@@ -12199,19 +11087,19 @@
   @DomName('DocumentFragment.getElementById')
   @DocsEditable()
   @Experimental() // untriaged
-  Element getElementById(String elementId) => wrap_jso(_blink.BlinkDocumentFragment.instance.getElementById_Callback_1_(unwrap_jso(this), elementId));
+  Element getElementById(String elementId) => _blink.BlinkDocumentFragment.instance.getElementById_Callback_1_(this, elementId);
   
   @DomName('DocumentFragment.childElementCount')
   @DocsEditable()
-  int get _childElementCount => _blink.BlinkDocumentFragment.instance.childElementCount_Getter_(unwrap_jso(this));
+  int get _childElementCount => _blink.BlinkDocumentFragment.instance.childElementCount_Getter_(this);
   
   @DomName('DocumentFragment.firstElementChild')
   @DocsEditable()
-  Element get _firstElementChild => wrap_jso(_blink.BlinkDocumentFragment.instance.firstElementChild_Getter_(unwrap_jso(this)));
+  Element get _firstElementChild => _blink.BlinkDocumentFragment.instance.firstElementChild_Getter_(this);
   
   @DomName('DocumentFragment.lastElementChild')
   @DocsEditable()
-  Element get _lastElementChild => wrap_jso(_blink.BlinkDocumentFragment.instance.lastElementChild_Getter_(unwrap_jso(this)));
+  Element get _lastElementChild => _blink.BlinkDocumentFragment.instance.lastElementChild_Getter_(this);
   
   /**
    * Finds the first descendant element of this document fragment that matches
@@ -12227,11 +11115,11 @@
    */
   @DomName('DocumentFragment.querySelector')
   @DocsEditable()
-  Element querySelector(String selectors) => wrap_jso(_blink.BlinkDocumentFragment.instance.querySelector_Callback_1_(unwrap_jso(this), selectors));
+  Element querySelector(String selectors) => _blink.BlinkDocumentFragment.instance.querySelector_Callback_1_(this, selectors);
   
   @DomName('DocumentFragment.querySelectorAll')
   @DocsEditable()
-  List<Node> _querySelectorAll(String selectors) => wrap_jso(_blink.BlinkDocumentFragment.instance.querySelectorAll_Callback_1_(unwrap_jso(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
@@ -12250,32 +11138,24 @@
   @DomName('DOMError.DOMError')
   @DocsEditable()
   factory DomError(String name, [String message]) {
-    return wrap_jso(_blink.BlinkDOMError.instance.constructorCallback_2_(name, message));
+    return _blink.BlinkDOMError.instance.constructorCallback_2_(name, message);
   }
 
+
   @Deprecated("Internal Use Only")
-  static DomError internalCreateDomError() {
-    return new DomError._internalWrap();
-  }
-
-  factory DomError._internalWrap() {
-    return new DomError.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DomError.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('DOMError.message')
   @DocsEditable()
   @Experimental() // untriaged
-  String get message => _blink.BlinkDOMError.instance.message_Getter_(unwrap_jso(this));
+  String get message => _blink.BlinkDOMError.instance.message_Getter_(this);
   
   @DomName('DOMError.name')
   @DocsEditable()
-  String get name => _blink.BlinkDOMError.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkDOMError.instance.name_Getter_(this);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -12363,36 +11243,28 @@
   // To suppress missing implicit constructor warnings.
   factory DomImplementation._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DomImplementation internalCreateDomImplementation() {
-    return new DomImplementation._internalWrap();
-  }
 
-  factory DomImplementation._internalWrap() {
-    return new DomImplementation.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DomImplementation.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('DOMImplementation.createDocument')
   @DocsEditable()
-  XmlDocument createDocument(String namespaceURI, String qualifiedName, _DocumentType doctype) => wrap_jso(_blink.BlinkDOMImplementation.instance.createDocument_Callback_3_(unwrap_jso(this), namespaceURI, qualifiedName, unwrap_jso(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) => wrap_jso(_blink.BlinkDOMImplementation.instance.createDocumentType_Callback_3_(unwrap_jso(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) => wrap_jso(_blink.BlinkDOMImplementation.instance.createHTMLDocument_Callback_1_(unwrap_jso(this), title));
+  HtmlDocument createHtmlDocument(String title) => _blink.BlinkDOMImplementation.instance.createHTMLDocument_Callback_1_(this, title);
   
   @DomName('DOMImplementation.hasFeature')
   @DocsEditable()
-  bool hasFeature() => _blink.BlinkDOMImplementation.instance.hasFeature_Callback_0_(unwrap_jso(this));
+  bool hasFeature() => _blink.BlinkDOMImplementation.instance.hasFeature_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -12409,26 +11281,18 @@
   // To suppress missing implicit constructor warnings.
   factory DomIterator._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DomIterator internalCreateDomIterator() {
-    return new DomIterator._internalWrap();
-  }
 
-  factory DomIterator._internalWrap() {
-    return new DomIterator.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DomIterator.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   Object next([Object value]) {
     if (value != null) {
-      return wrap_jso(_blink.BlinkIterator.instance.next_Callback_1_(unwrap_jso(this), value));
+      return _blink.BlinkIterator.instance.next_Callback_1_(this, value);
     }
-    return wrap_jso(_blink.BlinkIterator.instance.next_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkIterator.instance.next_Callback_0_(this);
   }
 
 }
@@ -12450,21 +11314,17 @@
   @DocsEditable()
   factory DomMatrix([DomMatrixReadOnly other]) {
     if (other == null) {
-      return wrap_jso(_blink.BlinkDOMMatrix.instance.constructorCallback_0_());
+      return _blink.BlinkDOMMatrix.instance.constructorCallback_0_();
     }
     if ((other is DomMatrixReadOnly || other == null)) {
-      return wrap_jso(_blink.BlinkDOMMatrix.instance.constructorCallback_1_(other));
+      return _blink.BlinkDOMMatrix.instance.constructorCallback_1_(other);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
 
   @Deprecated("Internal Use Only")
-  static DomMatrix internalCreateDomMatrix() {
-    return new DomMatrix._internalWrap();
-  }
-
-  external factory DomMatrix._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DomMatrix.internal_() : super.internal_();
@@ -12473,280 +11333,280 @@
   @DomName('DOMMatrix.a')
   @DocsEditable()
   @Experimental() // untriaged
-  num get a => _blink.BlinkDOMMatrix.instance.a_Getter_(unwrap_jso(this));
+  num get a => _blink.BlinkDOMMatrix.instance.a_Getter_(this);
   
   @DomName('DOMMatrix.a')
   @DocsEditable()
   @Experimental() // untriaged
-  set a(num value) => _blink.BlinkDOMMatrix.instance.a_Setter_(unwrap_jso(this), value);
+  set a(num value) => _blink.BlinkDOMMatrix.instance.a_Setter_(this, value);
   
   @DomName('DOMMatrix.b')
   @DocsEditable()
   @Experimental() // untriaged
-  num get b => _blink.BlinkDOMMatrix.instance.b_Getter_(unwrap_jso(this));
+  num get b => _blink.BlinkDOMMatrix.instance.b_Getter_(this);
   
   @DomName('DOMMatrix.b')
   @DocsEditable()
   @Experimental() // untriaged
-  set b(num value) => _blink.BlinkDOMMatrix.instance.b_Setter_(unwrap_jso(this), value);
+  set b(num value) => _blink.BlinkDOMMatrix.instance.b_Setter_(this, value);
   
   @DomName('DOMMatrix.c')
   @DocsEditable()
   @Experimental() // untriaged
-  num get c => _blink.BlinkDOMMatrix.instance.c_Getter_(unwrap_jso(this));
+  num get c => _blink.BlinkDOMMatrix.instance.c_Getter_(this);
   
   @DomName('DOMMatrix.c')
   @DocsEditable()
   @Experimental() // untriaged
-  set c(num value) => _blink.BlinkDOMMatrix.instance.c_Setter_(unwrap_jso(this), value);
+  set c(num value) => _blink.BlinkDOMMatrix.instance.c_Setter_(this, value);
   
   @DomName('DOMMatrix.d')
   @DocsEditable()
   @Experimental() // untriaged
-  num get d => _blink.BlinkDOMMatrix.instance.d_Getter_(unwrap_jso(this));
+  num get d => _blink.BlinkDOMMatrix.instance.d_Getter_(this);
   
   @DomName('DOMMatrix.d')
   @DocsEditable()
   @Experimental() // untriaged
-  set d(num value) => _blink.BlinkDOMMatrix.instance.d_Setter_(unwrap_jso(this), value);
+  set d(num value) => _blink.BlinkDOMMatrix.instance.d_Setter_(this, value);
   
   @DomName('DOMMatrix.e')
   @DocsEditable()
   @Experimental() // untriaged
-  num get e => _blink.BlinkDOMMatrix.instance.e_Getter_(unwrap_jso(this));
+  num get e => _blink.BlinkDOMMatrix.instance.e_Getter_(this);
   
   @DomName('DOMMatrix.e')
   @DocsEditable()
   @Experimental() // untriaged
-  set e(num value) => _blink.BlinkDOMMatrix.instance.e_Setter_(unwrap_jso(this), value);
+  set e(num value) => _blink.BlinkDOMMatrix.instance.e_Setter_(this, value);
   
   @DomName('DOMMatrix.f')
   @DocsEditable()
   @Experimental() // untriaged
-  num get f => _blink.BlinkDOMMatrix.instance.f_Getter_(unwrap_jso(this));
+  num get f => _blink.BlinkDOMMatrix.instance.f_Getter_(this);
   
   @DomName('DOMMatrix.f')
   @DocsEditable()
   @Experimental() // untriaged
-  set f(num value) => _blink.BlinkDOMMatrix.instance.f_Setter_(unwrap_jso(this), value);
+  set f(num value) => _blink.BlinkDOMMatrix.instance.f_Setter_(this, value);
   
   @DomName('DOMMatrix.m11')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m11 => _blink.BlinkDOMMatrix.instance.m11_Getter_(unwrap_jso(this));
+  num get m11 => _blink.BlinkDOMMatrix.instance.m11_Getter_(this);
   
   @DomName('DOMMatrix.m11')
   @DocsEditable()
   @Experimental() // untriaged
-  set m11(num value) => _blink.BlinkDOMMatrix.instance.m11_Setter_(unwrap_jso(this), value);
+  set m11(num value) => _blink.BlinkDOMMatrix.instance.m11_Setter_(this, value);
   
   @DomName('DOMMatrix.m12')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m12 => _blink.BlinkDOMMatrix.instance.m12_Getter_(unwrap_jso(this));
+  num get m12 => _blink.BlinkDOMMatrix.instance.m12_Getter_(this);
   
   @DomName('DOMMatrix.m12')
   @DocsEditable()
   @Experimental() // untriaged
-  set m12(num value) => _blink.BlinkDOMMatrix.instance.m12_Setter_(unwrap_jso(this), value);
+  set m12(num value) => _blink.BlinkDOMMatrix.instance.m12_Setter_(this, value);
   
   @DomName('DOMMatrix.m13')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m13 => _blink.BlinkDOMMatrix.instance.m13_Getter_(unwrap_jso(this));
+  num get m13 => _blink.BlinkDOMMatrix.instance.m13_Getter_(this);
   
   @DomName('DOMMatrix.m13')
   @DocsEditable()
   @Experimental() // untriaged
-  set m13(num value) => _blink.BlinkDOMMatrix.instance.m13_Setter_(unwrap_jso(this), value);
+  set m13(num value) => _blink.BlinkDOMMatrix.instance.m13_Setter_(this, value);
   
   @DomName('DOMMatrix.m14')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m14 => _blink.BlinkDOMMatrix.instance.m14_Getter_(unwrap_jso(this));
+  num get m14 => _blink.BlinkDOMMatrix.instance.m14_Getter_(this);
   
   @DomName('DOMMatrix.m14')
   @DocsEditable()
   @Experimental() // untriaged
-  set m14(num value) => _blink.BlinkDOMMatrix.instance.m14_Setter_(unwrap_jso(this), value);
+  set m14(num value) => _blink.BlinkDOMMatrix.instance.m14_Setter_(this, value);
   
   @DomName('DOMMatrix.m21')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m21 => _blink.BlinkDOMMatrix.instance.m21_Getter_(unwrap_jso(this));
+  num get m21 => _blink.BlinkDOMMatrix.instance.m21_Getter_(this);
   
   @DomName('DOMMatrix.m21')
   @DocsEditable()
   @Experimental() // untriaged
-  set m21(num value) => _blink.BlinkDOMMatrix.instance.m21_Setter_(unwrap_jso(this), value);
+  set m21(num value) => _blink.BlinkDOMMatrix.instance.m21_Setter_(this, value);
   
   @DomName('DOMMatrix.m22')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m22 => _blink.BlinkDOMMatrix.instance.m22_Getter_(unwrap_jso(this));
+  num get m22 => _blink.BlinkDOMMatrix.instance.m22_Getter_(this);
   
   @DomName('DOMMatrix.m22')
   @DocsEditable()
   @Experimental() // untriaged
-  set m22(num value) => _blink.BlinkDOMMatrix.instance.m22_Setter_(unwrap_jso(this), value);
+  set m22(num value) => _blink.BlinkDOMMatrix.instance.m22_Setter_(this, value);
   
   @DomName('DOMMatrix.m23')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m23 => _blink.BlinkDOMMatrix.instance.m23_Getter_(unwrap_jso(this));
+  num get m23 => _blink.BlinkDOMMatrix.instance.m23_Getter_(this);
   
   @DomName('DOMMatrix.m23')
   @DocsEditable()
   @Experimental() // untriaged
-  set m23(num value) => _blink.BlinkDOMMatrix.instance.m23_Setter_(unwrap_jso(this), value);
+  set m23(num value) => _blink.BlinkDOMMatrix.instance.m23_Setter_(this, value);
   
   @DomName('DOMMatrix.m24')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m24 => _blink.BlinkDOMMatrix.instance.m24_Getter_(unwrap_jso(this));
+  num get m24 => _blink.BlinkDOMMatrix.instance.m24_Getter_(this);
   
   @DomName('DOMMatrix.m24')
   @DocsEditable()
   @Experimental() // untriaged
-  set m24(num value) => _blink.BlinkDOMMatrix.instance.m24_Setter_(unwrap_jso(this), value);
+  set m24(num value) => _blink.BlinkDOMMatrix.instance.m24_Setter_(this, value);
   
   @DomName('DOMMatrix.m31')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m31 => _blink.BlinkDOMMatrix.instance.m31_Getter_(unwrap_jso(this));
+  num get m31 => _blink.BlinkDOMMatrix.instance.m31_Getter_(this);
   
   @DomName('DOMMatrix.m31')
   @DocsEditable()
   @Experimental() // untriaged
-  set m31(num value) => _blink.BlinkDOMMatrix.instance.m31_Setter_(unwrap_jso(this), value);
+  set m31(num value) => _blink.BlinkDOMMatrix.instance.m31_Setter_(this, value);
   
   @DomName('DOMMatrix.m32')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m32 => _blink.BlinkDOMMatrix.instance.m32_Getter_(unwrap_jso(this));
+  num get m32 => _blink.BlinkDOMMatrix.instance.m32_Getter_(this);
   
   @DomName('DOMMatrix.m32')
   @DocsEditable()
   @Experimental() // untriaged
-  set m32(num value) => _blink.BlinkDOMMatrix.instance.m32_Setter_(unwrap_jso(this), value);
+  set m32(num value) => _blink.BlinkDOMMatrix.instance.m32_Setter_(this, value);
   
   @DomName('DOMMatrix.m33')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m33 => _blink.BlinkDOMMatrix.instance.m33_Getter_(unwrap_jso(this));
+  num get m33 => _blink.BlinkDOMMatrix.instance.m33_Getter_(this);
   
   @DomName('DOMMatrix.m33')
   @DocsEditable()
   @Experimental() // untriaged
-  set m33(num value) => _blink.BlinkDOMMatrix.instance.m33_Setter_(unwrap_jso(this), value);
+  set m33(num value) => _blink.BlinkDOMMatrix.instance.m33_Setter_(this, value);
   
   @DomName('DOMMatrix.m34')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m34 => _blink.BlinkDOMMatrix.instance.m34_Getter_(unwrap_jso(this));
+  num get m34 => _blink.BlinkDOMMatrix.instance.m34_Getter_(this);
   
   @DomName('DOMMatrix.m34')
   @DocsEditable()
   @Experimental() // untriaged
-  set m34(num value) => _blink.BlinkDOMMatrix.instance.m34_Setter_(unwrap_jso(this), value);
+  set m34(num value) => _blink.BlinkDOMMatrix.instance.m34_Setter_(this, value);
   
   @DomName('DOMMatrix.m41')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m41 => _blink.BlinkDOMMatrix.instance.m41_Getter_(unwrap_jso(this));
+  num get m41 => _blink.BlinkDOMMatrix.instance.m41_Getter_(this);
   
   @DomName('DOMMatrix.m41')
   @DocsEditable()
   @Experimental() // untriaged
-  set m41(num value) => _blink.BlinkDOMMatrix.instance.m41_Setter_(unwrap_jso(this), value);
+  set m41(num value) => _blink.BlinkDOMMatrix.instance.m41_Setter_(this, value);
   
   @DomName('DOMMatrix.m42')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m42 => _blink.BlinkDOMMatrix.instance.m42_Getter_(unwrap_jso(this));
+  num get m42 => _blink.BlinkDOMMatrix.instance.m42_Getter_(this);
   
   @DomName('DOMMatrix.m42')
   @DocsEditable()
   @Experimental() // untriaged
-  set m42(num value) => _blink.BlinkDOMMatrix.instance.m42_Setter_(unwrap_jso(this), value);
+  set m42(num value) => _blink.BlinkDOMMatrix.instance.m42_Setter_(this, value);
   
   @DomName('DOMMatrix.m43')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m43 => _blink.BlinkDOMMatrix.instance.m43_Getter_(unwrap_jso(this));
+  num get m43 => _blink.BlinkDOMMatrix.instance.m43_Getter_(this);
   
   @DomName('DOMMatrix.m43')
   @DocsEditable()
   @Experimental() // untriaged
-  set m43(num value) => _blink.BlinkDOMMatrix.instance.m43_Setter_(unwrap_jso(this), value);
+  set m43(num value) => _blink.BlinkDOMMatrix.instance.m43_Setter_(this, value);
   
   @DomName('DOMMatrix.m44')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m44 => _blink.BlinkDOMMatrix.instance.m44_Getter_(unwrap_jso(this));
+  num get m44 => _blink.BlinkDOMMatrix.instance.m44_Getter_(this);
   
   @DomName('DOMMatrix.m44')
   @DocsEditable()
   @Experimental() // untriaged
-  set m44(num value) => _blink.BlinkDOMMatrix.instance.m44_Setter_(unwrap_jso(this), value);
+  set m44(num value) => _blink.BlinkDOMMatrix.instance.m44_Setter_(this, value);
   
   @DomName('DOMMatrix.multiplySelf')
   @DocsEditable()
   @Experimental() // untriaged
-  DomMatrix multiplySelf(DomMatrix other) => wrap_jso(_blink.BlinkDOMMatrix.instance.multiplySelf_Callback_1_(unwrap_jso(this), unwrap_jso(other)));
+  DomMatrix multiplySelf(DomMatrix other) => _blink.BlinkDOMMatrix.instance.multiplySelf_Callback_1_(this, other);
   
   @DomName('DOMMatrix.preMultiplySelf')
   @DocsEditable()
   @Experimental() // untriaged
-  DomMatrix preMultiplySelf(DomMatrix other) => wrap_jso(_blink.BlinkDOMMatrix.instance.preMultiplySelf_Callback_1_(unwrap_jso(this), unwrap_jso(other)));
+  DomMatrix preMultiplySelf(DomMatrix other) => _blink.BlinkDOMMatrix.instance.preMultiplySelf_Callback_1_(this, other);
   
   DomMatrix scale3dSelf(num scale, [num originX, num originY, num originZ]) {
     if (originZ != null) {
-      return wrap_jso(_blink.BlinkDOMMatrix.instance.scale3dSelf_Callback_4_(unwrap_jso(this), scale, originX, originY, originZ));
+      return _blink.BlinkDOMMatrix.instance.scale3dSelf_Callback_4_(this, scale, originX, originY, originZ);
     }
     if (originY != null) {
-      return wrap_jso(_blink.BlinkDOMMatrix.instance.scale3dSelf_Callback_3_(unwrap_jso(this), scale, originX, originY));
+      return _blink.BlinkDOMMatrix.instance.scale3dSelf_Callback_3_(this, scale, originX, originY);
     }
     if (originX != null) {
-      return wrap_jso(_blink.BlinkDOMMatrix.instance.scale3dSelf_Callback_2_(unwrap_jso(this), scale, originX));
+      return _blink.BlinkDOMMatrix.instance.scale3dSelf_Callback_2_(this, scale, originX);
     }
-    return wrap_jso(_blink.BlinkDOMMatrix.instance.scale3dSelf_Callback_1_(unwrap_jso(this), scale));
+    return _blink.BlinkDOMMatrix.instance.scale3dSelf_Callback_1_(this, scale);
   }
 
   DomMatrix scaleNonUniformSelf(num scaleX, [num scaleY, num scaleZ, num originX, num originY, num originZ]) {
     if (originZ != null) {
-      return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_6_(unwrap_jso(this), scaleX, scaleY, scaleZ, originX, originY, originZ));
+      return _blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_6_(this, scaleX, scaleY, scaleZ, originX, originY, originZ);
     }
     if (originY != null) {
-      return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_5_(unwrap_jso(this), scaleX, scaleY, scaleZ, originX, originY));
+      return _blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_5_(this, scaleX, scaleY, scaleZ, originX, originY);
     }
     if (originX != null) {
-      return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_4_(unwrap_jso(this), scaleX, scaleY, scaleZ, originX));
+      return _blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_4_(this, scaleX, scaleY, scaleZ, originX);
     }
     if (scaleZ != null) {
-      return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_3_(unwrap_jso(this), scaleX, scaleY, scaleZ));
+      return _blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_3_(this, scaleX, scaleY, scaleZ);
     }
     if (scaleY != null) {
-      return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_2_(unwrap_jso(this), scaleX, scaleY));
+      return _blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_2_(this, scaleX, scaleY);
     }
-    return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_1_(unwrap_jso(this), scaleX));
+    return _blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_1_(this, scaleX);
   }
 
   DomMatrix scaleSelf(num scale, [num originX, num originY]) {
     if (originY != null) {
-      return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleSelf_Callback_3_(unwrap_jso(this), scale, originX, originY));
+      return _blink.BlinkDOMMatrix.instance.scaleSelf_Callback_3_(this, scale, originX, originY);
     }
     if (originX != null) {
-      return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleSelf_Callback_2_(unwrap_jso(this), scale, originX));
+      return _blink.BlinkDOMMatrix.instance.scaleSelf_Callback_2_(this, scale, originX);
     }
-    return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleSelf_Callback_1_(unwrap_jso(this), scale));
+    return _blink.BlinkDOMMatrix.instance.scaleSelf_Callback_1_(this, scale);
   }
 
   DomMatrix translateSelf(num tx, num ty, [num tz]) {
     if (tz != null) {
-      return wrap_jso(_blink.BlinkDOMMatrix.instance.translateSelf_Callback_3_(unwrap_jso(this), tx, ty, tz));
+      return _blink.BlinkDOMMatrix.instance.translateSelf_Callback_3_(this, tx, ty, tz);
     }
-    return wrap_jso(_blink.BlinkDOMMatrix.instance.translateSelf_Callback_2_(unwrap_jso(this), tx, ty));
+    return _blink.BlinkDOMMatrix.instance.translateSelf_Callback_2_(this, tx, ty);
   }
 
 }
@@ -12764,203 +11624,195 @@
   // To suppress missing implicit constructor warnings.
   factory DomMatrixReadOnly._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DomMatrixReadOnly internalCreateDomMatrixReadOnly() {
-    return new DomMatrixReadOnly._internalWrap();
-  }
 
-  factory DomMatrixReadOnly._internalWrap() {
-    return new DomMatrixReadOnly.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DomMatrixReadOnly.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('DOMMatrixReadOnly.a')
   @DocsEditable()
   @Experimental() // untriaged
-  num get a => _blink.BlinkDOMMatrixReadOnly.instance.a_Getter_(unwrap_jso(this));
+  num get a => _blink.BlinkDOMMatrixReadOnly.instance.a_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.b')
   @DocsEditable()
   @Experimental() // untriaged
-  num get b => _blink.BlinkDOMMatrixReadOnly.instance.b_Getter_(unwrap_jso(this));
+  num get b => _blink.BlinkDOMMatrixReadOnly.instance.b_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.c')
   @DocsEditable()
   @Experimental() // untriaged
-  num get c => _blink.BlinkDOMMatrixReadOnly.instance.c_Getter_(unwrap_jso(this));
+  num get c => _blink.BlinkDOMMatrixReadOnly.instance.c_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.d')
   @DocsEditable()
   @Experimental() // untriaged
-  num get d => _blink.BlinkDOMMatrixReadOnly.instance.d_Getter_(unwrap_jso(this));
+  num get d => _blink.BlinkDOMMatrixReadOnly.instance.d_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.e')
   @DocsEditable()
   @Experimental() // untriaged
-  num get e => _blink.BlinkDOMMatrixReadOnly.instance.e_Getter_(unwrap_jso(this));
+  num get e => _blink.BlinkDOMMatrixReadOnly.instance.e_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.f')
   @DocsEditable()
   @Experimental() // untriaged
-  num get f => _blink.BlinkDOMMatrixReadOnly.instance.f_Getter_(unwrap_jso(this));
+  num get f => _blink.BlinkDOMMatrixReadOnly.instance.f_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.is2D')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get is2D => _blink.BlinkDOMMatrixReadOnly.instance.is2D_Getter_(unwrap_jso(this));
+  bool get is2D => _blink.BlinkDOMMatrixReadOnly.instance.is2D_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.isIdentity')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get isIdentity => _blink.BlinkDOMMatrixReadOnly.instance.isIdentity_Getter_(unwrap_jso(this));
+  bool get isIdentity => _blink.BlinkDOMMatrixReadOnly.instance.isIdentity_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.m11')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m11 => _blink.BlinkDOMMatrixReadOnly.instance.m11_Getter_(unwrap_jso(this));
+  num get m11 => _blink.BlinkDOMMatrixReadOnly.instance.m11_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.m12')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m12 => _blink.BlinkDOMMatrixReadOnly.instance.m12_Getter_(unwrap_jso(this));
+  num get m12 => _blink.BlinkDOMMatrixReadOnly.instance.m12_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.m13')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m13 => _blink.BlinkDOMMatrixReadOnly.instance.m13_Getter_(unwrap_jso(this));
+  num get m13 => _blink.BlinkDOMMatrixReadOnly.instance.m13_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.m14')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m14 => _blink.BlinkDOMMatrixReadOnly.instance.m14_Getter_(unwrap_jso(this));
+  num get m14 => _blink.BlinkDOMMatrixReadOnly.instance.m14_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.m21')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m21 => _blink.BlinkDOMMatrixReadOnly.instance.m21_Getter_(unwrap_jso(this));
+  num get m21 => _blink.BlinkDOMMatrixReadOnly.instance.m21_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.m22')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m22 => _blink.BlinkDOMMatrixReadOnly.instance.m22_Getter_(unwrap_jso(this));
+  num get m22 => _blink.BlinkDOMMatrixReadOnly.instance.m22_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.m23')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m23 => _blink.BlinkDOMMatrixReadOnly.instance.m23_Getter_(unwrap_jso(this));
+  num get m23 => _blink.BlinkDOMMatrixReadOnly.instance.m23_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.m24')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m24 => _blink.BlinkDOMMatrixReadOnly.instance.m24_Getter_(unwrap_jso(this));
+  num get m24 => _blink.BlinkDOMMatrixReadOnly.instance.m24_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.m31')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m31 => _blink.BlinkDOMMatrixReadOnly.instance.m31_Getter_(unwrap_jso(this));
+  num get m31 => _blink.BlinkDOMMatrixReadOnly.instance.m31_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.m32')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m32 => _blink.BlinkDOMMatrixReadOnly.instance.m32_Getter_(unwrap_jso(this));
+  num get m32 => _blink.BlinkDOMMatrixReadOnly.instance.m32_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.m33')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m33 => _blink.BlinkDOMMatrixReadOnly.instance.m33_Getter_(unwrap_jso(this));
+  num get m33 => _blink.BlinkDOMMatrixReadOnly.instance.m33_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.m34')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m34 => _blink.BlinkDOMMatrixReadOnly.instance.m34_Getter_(unwrap_jso(this));
+  num get m34 => _blink.BlinkDOMMatrixReadOnly.instance.m34_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.m41')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m41 => _blink.BlinkDOMMatrixReadOnly.instance.m41_Getter_(unwrap_jso(this));
+  num get m41 => _blink.BlinkDOMMatrixReadOnly.instance.m41_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.m42')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m42 => _blink.BlinkDOMMatrixReadOnly.instance.m42_Getter_(unwrap_jso(this));
+  num get m42 => _blink.BlinkDOMMatrixReadOnly.instance.m42_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.m43')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m43 => _blink.BlinkDOMMatrixReadOnly.instance.m43_Getter_(unwrap_jso(this));
+  num get m43 => _blink.BlinkDOMMatrixReadOnly.instance.m43_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.m44')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m44 => _blink.BlinkDOMMatrixReadOnly.instance.m44_Getter_(unwrap_jso(this));
+  num get m44 => _blink.BlinkDOMMatrixReadOnly.instance.m44_Getter_(this);
   
   @DomName('DOMMatrixReadOnly.multiply')
   @DocsEditable()
   @Experimental() // untriaged
-  DomMatrix multiply(DomMatrix other) => wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.multiply_Callback_1_(unwrap_jso(this), unwrap_jso(other)));
+  DomMatrix multiply(DomMatrix other) => _blink.BlinkDOMMatrixReadOnly.instance.multiply_Callback_1_(this, other);
   
   DomMatrix scale(num scale, [num originX, num originY]) {
     if (originY != null) {
-      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scale_Callback_3_(unwrap_jso(this), scale, originX, originY));
+      return _blink.BlinkDOMMatrixReadOnly.instance.scale_Callback_3_(this, scale, originX, originY);
     }
     if (originX != null) {
-      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scale_Callback_2_(unwrap_jso(this), scale, originX));
+      return _blink.BlinkDOMMatrixReadOnly.instance.scale_Callback_2_(this, scale, originX);
     }
-    return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scale_Callback_1_(unwrap_jso(this), scale));
+    return _blink.BlinkDOMMatrixReadOnly.instance.scale_Callback_1_(this, scale);
   }
 
   DomMatrix scale3d(num scale, [num originX, num originY, num originZ]) {
     if (originZ != null) {
-      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scale3d_Callback_4_(unwrap_jso(this), scale, originX, originY, originZ));
+      return _blink.BlinkDOMMatrixReadOnly.instance.scale3d_Callback_4_(this, scale, originX, originY, originZ);
     }
     if (originY != null) {
-      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scale3d_Callback_3_(unwrap_jso(this), scale, originX, originY));
+      return _blink.BlinkDOMMatrixReadOnly.instance.scale3d_Callback_3_(this, scale, originX, originY);
     }
     if (originX != null) {
-      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scale3d_Callback_2_(unwrap_jso(this), scale, originX));
+      return _blink.BlinkDOMMatrixReadOnly.instance.scale3d_Callback_2_(this, scale, originX);
     }
-    return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scale3d_Callback_1_(unwrap_jso(this), scale));
+    return _blink.BlinkDOMMatrixReadOnly.instance.scale3d_Callback_1_(this, scale);
   }
 
   DomMatrix scaleNonUniform(num scaleX, [num scaleY, num scaleZn, num originX, num originY, num originZ]) {
     if (originZ != null) {
-      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_6_(unwrap_jso(this), scaleX, scaleY, scaleZn, originX, originY, originZ));
+      return _blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_6_(this, scaleX, scaleY, scaleZn, originX, originY, originZ);
     }
     if (originY != null) {
-      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_5_(unwrap_jso(this), scaleX, scaleY, scaleZn, originX, originY));
+      return _blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_5_(this, scaleX, scaleY, scaleZn, originX, originY);
     }
     if (originX != null) {
-      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_4_(unwrap_jso(this), scaleX, scaleY, scaleZn, originX));
+      return _blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_4_(this, scaleX, scaleY, scaleZn, originX);
     }
     if (scaleZn != null) {
-      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_3_(unwrap_jso(this), scaleX, scaleY, scaleZn));
+      return _blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_3_(this, scaleX, scaleY, scaleZn);
     }
     if (scaleY != null) {
-      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_2_(unwrap_jso(this), scaleX, scaleY));
+      return _blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_2_(this, scaleX, scaleY);
     }
-    return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_1_(unwrap_jso(this), scaleX));
+    return _blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_1_(this, scaleX);
   }
 
   @DomName('DOMMatrixReadOnly.toFloat32Array')
   @DocsEditable()
   @Experimental() // untriaged
-  Float32List toFloat32Array() => wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.toFloat32Array_Callback_0_(unwrap_jso(this)));
+  Float32List toFloat32Array() => _blink.BlinkDOMMatrixReadOnly.instance.toFloat32Array_Callback_0_(this);
   
   @DomName('DOMMatrixReadOnly.toFloat64Array')
   @DocsEditable()
   @Experimental() // untriaged
-  Float64List toFloat64Array() => wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.toFloat64Array_Callback_0_(unwrap_jso(this)));
+  Float64List toFloat64Array() => _blink.BlinkDOMMatrixReadOnly.instance.toFloat64Array_Callback_0_(this);
   
   DomMatrix translate(num tx, num ty, [num tz]) {
     if (tz != null) {
-      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.translate_Callback_3_(unwrap_jso(this), tx, ty, tz));
+      return _blink.BlinkDOMMatrixReadOnly.instance.translate_Callback_3_(this, tx, ty, tz);
     }
-    return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.translate_Callback_2_(unwrap_jso(this), tx, ty));
+    return _blink.BlinkDOMMatrixReadOnly.instance.translate_Callback_2_(this, tx, ty);
   }
 
 }
@@ -12980,27 +11832,19 @@
   @DomName('DOMParser.DOMParser')
   @DocsEditable()
   factory DomParser() {
-    return wrap_jso(_blink.BlinkDOMParser.instance.constructorCallback_0_());
+    return _blink.BlinkDOMParser.instance.constructorCallback_0_();
   }
 
+
   @Deprecated("Internal Use Only")
-  static DomParser internalCreateDomParser() {
-    return new DomParser._internalWrap();
-  }
-
-  factory DomParser._internalWrap() {
-    return new DomParser.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DomParser.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('DOMParser.parseFromString')
   @DocsEditable()
-  Document parseFromString(String str, String type) => wrap_jso(_blink.BlinkDOMParser.instance.parseFromString_Callback_2_(unwrap_jso(this), str, type));
+  Document parseFromString(String str, String type) => _blink.BlinkDOMParser.instance.parseFromString_Callback_2_(this, str, type);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -13022,33 +11866,29 @@
   factory DomPoint([point_OR_x, num y, num z, num w]) {
     if ((point_OR_x is Map || point_OR_x == null) && y == null && z == null && w == null) {
       var point_1 = convertDartToNative_Dictionary(point_OR_x);
-      return wrap_jso(_blink.BlinkDOMPoint.instance.constructorCallback_1_(point_1));
+      return _blink.BlinkDOMPoint.instance.constructorCallback_1_(point_1);
     }
     if (point_OR_x == null && y == null && z == null && w == null) {
-      return wrap_jso(_blink.BlinkDOMPoint.instance.constructorCallback_0_());
+      return _blink.BlinkDOMPoint.instance.constructorCallback_0_();
     }
     if ((point_OR_x is num || point_OR_x == null) && y == null && z == null && w == null) {
-      return wrap_jso(_blink.BlinkDOMPoint.instance.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 wrap_jso(_blink.BlinkDOMPoint.instance.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 wrap_jso(_blink.BlinkDOMPoint.instance.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 wrap_jso(_blink.BlinkDOMPoint.instance.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");
   }
 
 
   @Deprecated("Internal Use Only")
-  static DomPoint internalCreateDomPoint() {
-    return new DomPoint._internalWrap();
-  }
-
-  external factory DomPoint._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DomPoint.internal_() : super.internal_();
@@ -13060,42 +11900,42 @@
   @DomName('DOMPoint.w')
   @DocsEditable()
   @Experimental() // untriaged
-  num get w => _blink.BlinkDOMPoint.instance.w_Getter_(unwrap_jso(this));
+  num get w => _blink.BlinkDOMPoint.instance.w_Getter_(this);
   
   @DomName('DOMPoint.w')
   @DocsEditable()
   @Experimental() // untriaged
-  set w(num value) => _blink.BlinkDOMPoint.instance.w_Setter_(unwrap_jso(this), value);
+  set w(num value) => _blink.BlinkDOMPoint.instance.w_Setter_(this, value);
   
   @DomName('DOMPoint.x')
   @DocsEditable()
   @Experimental() // untriaged
-  num get x => _blink.BlinkDOMPoint.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkDOMPoint.instance.x_Getter_(this);
   
   @DomName('DOMPoint.x')
   @DocsEditable()
   @Experimental() // untriaged
-  set x(num value) => _blink.BlinkDOMPoint.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkDOMPoint.instance.x_Setter_(this, value);
   
   @DomName('DOMPoint.y')
   @DocsEditable()
   @Experimental() // untriaged
-  num get y => _blink.BlinkDOMPoint.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkDOMPoint.instance.y_Getter_(this);
   
   @DomName('DOMPoint.y')
   @DocsEditable()
   @Experimental() // untriaged
-  set y(num value) => _blink.BlinkDOMPoint.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkDOMPoint.instance.y_Setter_(this, value);
   
   @DomName('DOMPoint.z')
   @DocsEditable()
   @Experimental() // untriaged
-  num get z => _blink.BlinkDOMPoint.instance.z_Getter_(unwrap_jso(this));
+  num get z => _blink.BlinkDOMPoint.instance.z_Getter_(this);
   
   @DomName('DOMPoint.z')
   @DocsEditable()
   @Experimental() // untriaged
-  set z(num value) => _blink.BlinkDOMPoint.instance.z_Setter_(unwrap_jso(this), value);
+  set z(num value) => _blink.BlinkDOMPoint.instance.z_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -13115,43 +11955,35 @@
   @DomName('DOMPointReadOnly.DOMPointReadOnly')
   @DocsEditable()
   factory DomPointReadOnly(num x, num y, num z, num w) {
-    return wrap_jso(_blink.BlinkDOMPointReadOnly.instance.constructorCallback_4_(x, y, z, w));
+    return _blink.BlinkDOMPointReadOnly.instance.constructorCallback_4_(x, y, z, w);
   }
 
+
   @Deprecated("Internal Use Only")
-  static DomPointReadOnly internalCreateDomPointReadOnly() {
-    return new DomPointReadOnly._internalWrap();
-  }
-
-  factory DomPointReadOnly._internalWrap() {
-    return new DomPointReadOnly.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DomPointReadOnly.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('DOMPointReadOnly.w')
   @DocsEditable()
   @Experimental() // untriaged
-  num get w => _blink.BlinkDOMPointReadOnly.instance.w_Getter_(unwrap_jso(this));
+  num get w => _blink.BlinkDOMPointReadOnly.instance.w_Getter_(this);
   
   @DomName('DOMPointReadOnly.x')
   @DocsEditable()
   @Experimental() // untriaged
-  num get x => _blink.BlinkDOMPointReadOnly.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkDOMPointReadOnly.instance.x_Getter_(this);
   
   @DomName('DOMPointReadOnly.y')
   @DocsEditable()
   @Experimental() // untriaged
-  num get y => _blink.BlinkDOMPointReadOnly.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkDOMPointReadOnly.instance.y_Getter_(this);
   
   @DomName('DOMPointReadOnly.z')
   @DocsEditable()
   @Experimental() // untriaged
-  num get z => _blink.BlinkDOMPointReadOnly.instance.z_Getter_(unwrap_jso(this));
+  num get z => _blink.BlinkDOMPointReadOnly.instance.z_Getter_(this);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -13259,61 +12091,55 @@
   @DomName('DOMRectReadOnly.DOMRectReadOnly')
   @DocsEditable()
   factory DomRectReadOnly(num x, num y, num width, num height) {
-    return wrap_jso(_blink.BlinkDOMRectReadOnly.instance.constructorCallback_4_(x, y, width, height));
+    return _blink.BlinkDOMRectReadOnly.instance.constructorCallback_4_(x, y, width, height);
   }
 
+
   @Deprecated("Internal Use Only")
-  static DomRectReadOnly internalCreateDomRectReadOnly() {
-    return new DomRectReadOnly._internalWrap();
-  }
-
-  factory DomRectReadOnly._internalWrap() {
-    return new DomRectReadOnly.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DomRectReadOnly.internal_() { }
 
-
   @DomName('DOMRectReadOnly.bottom')
   @DocsEditable()
   @Experimental() // untriaged
-  num get bottom => _blink.BlinkDOMRectReadOnly.instance.bottom_Getter_(unwrap_jso(this));
+  num get bottom => _blink.BlinkDOMRectReadOnly.instance.bottom_Getter_(this);
   
   @DomName('DOMRectReadOnly.height')
   @DocsEditable()
   @Experimental() // untriaged
-  num get height => _blink.BlinkDOMRectReadOnly.instance.height_Getter_(unwrap_jso(this));
+  num get height => _blink.BlinkDOMRectReadOnly.instance.height_Getter_(this);
   
   @DomName('DOMRectReadOnly.left')
   @DocsEditable()
   @Experimental() // untriaged
-  num get left => _blink.BlinkDOMRectReadOnly.instance.left_Getter_(unwrap_jso(this));
+  num get left => _blink.BlinkDOMRectReadOnly.instance.left_Getter_(this);
   
   @DomName('DOMRectReadOnly.right')
   @DocsEditable()
   @Experimental() // untriaged
-  num get right => _blink.BlinkDOMRectReadOnly.instance.right_Getter_(unwrap_jso(this));
+  num get right => _blink.BlinkDOMRectReadOnly.instance.right_Getter_(this);
   
   @DomName('DOMRectReadOnly.top')
   @DocsEditable()
   @Experimental() // untriaged
-  num get top => _blink.BlinkDOMRectReadOnly.instance.top_Getter_(unwrap_jso(this));
+  num get top => _blink.BlinkDOMRectReadOnly.instance.top_Getter_(this);
   
   @DomName('DOMRectReadOnly.width')
   @DocsEditable()
   @Experimental() // untriaged
-  num get width => _blink.BlinkDOMRectReadOnly.instance.width_Getter_(unwrap_jso(this));
+  num get width => _blink.BlinkDOMRectReadOnly.instance.width_Getter_(this);
   
   @DomName('DOMRectReadOnly.x')
   @DocsEditable()
   @Experimental() // untriaged
-  num get x => _blink.BlinkDOMRectReadOnly.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkDOMRectReadOnly.instance.x_Getter_(this);
   
   @DomName('DOMRectReadOnly.y')
   @DocsEditable()
   @Experimental() // untriaged
-  num get y => _blink.BlinkDOMRectReadOnly.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkDOMRectReadOnly.instance.y_Getter_(this);
   }
 
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -13331,11 +12157,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static DomSettableTokenList internalCreateDomSettableTokenList() {
-    return new DomSettableTokenList._internalWrap();
-  }
-
-  external factory DomSettableTokenList._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DomSettableTokenList.internal_() : super.internal_();
@@ -13343,16 +12165,16 @@
 
   @DomName('DOMSettableTokenList.value')
   @DocsEditable()
-  String get value => _blink.BlinkDOMSettableTokenList.instance.value_Getter_(unwrap_jso(this));
+  String get value => _blink.BlinkDOMSettableTokenList.instance.value_Getter_(this);
   
   @DomName('DOMSettableTokenList.value')
   @DocsEditable()
-  set value(String value) => _blink.BlinkDOMSettableTokenList.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkDOMSettableTokenList.instance.value_Setter_(this, value);
   
   @DomName('DOMSettableTokenList.item')
   @DocsEditable()
   @Experimental() // untriaged
-  String item(int index) => _blink.BlinkDOMSettableTokenList.instance.item_Callback_1_(unwrap_jso(this), index);
+  String item(int index) => _blink.BlinkDOMSettableTokenList.instance.item_Callback_1_(this, index);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -13368,32 +12190,24 @@
   // To suppress missing implicit constructor warnings.
   factory DomStringList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DomStringList internalCreateDomStringList() {
-    return new DomStringList._internalWrap();
-  }
 
-  factory DomStringList._internalWrap() {
-    return new DomStringList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DomStringList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('DOMStringList.length')
   @DocsEditable()
-  int get length => _blink.BlinkDOMStringList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkDOMStringList.instance.length_Getter_(this);
   
   String operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return _blink.BlinkDOMStringList.instance.item_Callback_1_(unwrap_jso(this), index);
+    return _nativeIndexedGetter(index);
   }
 
-  String _nativeIndexedGetter(int index) => _blink.BlinkDOMStringList.instance.item_Callback_1_(unwrap_jso(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.");
@@ -13436,15 +12250,15 @@
   @DomName('DOMStringList.__getter__')
   @DocsEditable()
   @Experimental() // untriaged
-  String __getter__(int index) => _blink.BlinkDOMStringList.instance.$__getter___Callback_1_(unwrap_jso(this), index);
+  String __getter__(int index) => _blink.BlinkDOMStringList.instance.$__getter___Callback_1_(this, index);
   
   @DomName('DOMStringList.contains')
   @DocsEditable()
-  bool contains(String string) => _blink.BlinkDOMStringList.instance.contains_Callback_1_(unwrap_jso(this), string);
+  bool contains(String string) => _blink.BlinkDOMStringList.instance.contains_Callback_1_(this, string);
   
   @DomName('DOMStringList.item')
   @DocsEditable()
-  String item(int index) => _blink.BlinkDOMStringList.instance.item_Callback_1_(unwrap_jso(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
@@ -13462,11 +12276,11 @@
 
   void __delete__(index_OR_name) {
     if ((index_OR_name is String || index_OR_name == null)) {
-      _blink.BlinkDOMStringMap.instance.$__delete___Callback_1_(unwrap_jso(this), unwrap_jso(index_OR_name));
+      _blink.BlinkDOMStringMap.instance.$__delete___Callback_1_(this, index_OR_name);
       return;
     }
     if ((index_OR_name is int || index_OR_name == null)) {
-      _blink.BlinkDOMStringMap.instance.$__delete___Callback_1_(unwrap_jso(this), unwrap_jso(index_OR_name));
+      _blink.BlinkDOMStringMap.instance.$__delete___Callback_1_(this, index_OR_name);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -13478,11 +12292,11 @@
 
   void __setter__(index_OR_name, String value) {
     if ((value is String || value == null) && (index_OR_name is String || index_OR_name == null)) {
-      _blink.BlinkDOMStringMap.instance.$__setter___Callback_2_(unwrap_jso(this), unwrap_jso(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 int || index_OR_name == null)) {
-      _blink.BlinkDOMStringMap.instance.$__setter___Callback_2_(unwrap_jso(this), unwrap_jso(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");
@@ -13507,48 +12321,40 @@
   // To suppress missing implicit constructor warnings.
   factory DomTokenList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DomTokenList internalCreateDomTokenList() {
-    return new DomTokenList._internalWrap();
-  }
 
-  factory DomTokenList._internalWrap() {
-    return new DomTokenList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DomTokenList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('DOMTokenList.length')
   @DocsEditable()
-  int get length => _blink.BlinkDOMTokenList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkDOMTokenList.instance.length_Getter_(this);
   
   @DomName('DOMTokenList.add')
   @DocsEditable()
   @Experimental() // untriaged
-  void add(String tokens) => _blink.BlinkDOMTokenList.instance.add_Callback_1_(unwrap_jso(this), tokens);
+  void add(String tokens) => _blink.BlinkDOMTokenList.instance.add_Callback_1_(this, tokens);
   
   @DomName('DOMTokenList.contains')
   @DocsEditable()
-  bool contains(String token) => _blink.BlinkDOMTokenList.instance.contains_Callback_1_(unwrap_jso(this), token);
+  bool contains(String token) => _blink.BlinkDOMTokenList.instance.contains_Callback_1_(this, token);
   
   @DomName('DOMTokenList.item')
   @DocsEditable()
-  String item(int index) => _blink.BlinkDOMTokenList.instance.item_Callback_1_(unwrap_jso(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.instance.remove_Callback_1_(unwrap_jso(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.instance.toggle_Callback_2_(unwrap_jso(this), token, force);
+      return _blink.BlinkDOMTokenList.instance.toggle_Callback_2_(this, token, force);
     }
-    return _blink.BlinkDOMTokenList.instance.toggle_Callback_1_(unwrap_jso(this), token);
+    return _blink.BlinkDOMTokenList.instance.toggle_Callback_1_(this, token);
   }
 
 }
@@ -13566,21 +12372,13 @@
   // To suppress missing implicit constructor warnings.
   factory EffectModel._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static EffectModel internalCreateEffectModel() {
-    return new EffectModel._internalWrap();
-  }
 
-  factory EffectModel._internalWrap() {
-    return new EffectModel.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   EffectModel.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -14891,7 +13689,11 @@
    *     }
    *     document.registerElement('x-custom', CustomElement);
    */
-  Element.created() : super._created();
+  Element.created() : super._created() {
+    // Validate that this is a custom element & possibly perform additional
+    // initialization.
+    _blink.Blink_Utils.initializeCustomElement(this);
+  }
 
   /**
    * Creates the HTML element specified by the tag name.
@@ -15780,24 +14582,20 @@
   static var _htmlCollection = js.context["HTMLCollection"];
   static var _nodeList = js.context["NodeList"];
 
+  static const _evilAttributeNames =
+      const ['attributes', 'lastChild', 'children', 'childNodes'];
+
   static bool _hasCorruptedAttributes(Element element) {
-    var attributes = unwrap_jso(element)["attributes"];
-    if (!attributes.instanceof(_namedNodeMap)) {
-      return true;
-    }
-    var childNodes = unwrap_jso(element.childNodes);
-    var length = childNodes["length"];
-    var lastChild = unwrap_jso(element.lastChild);
-    if (null != lastChild &&
-        lastChild != childNodes[length - 1]) {
-      return true;
-    }
-    var children = unwrap_jso(element._children);
-    if (null != children) { // On Safari, children can apparently be null.
-      if (!children.instanceof(_htmlCollection) ||
-          children.instanceof(_nodeList)) {
-	return true;
-      }
+    // We have trusted access to children and to attributes of objects,
+    // so we can inspect directly for attempts at DOM clobbering.
+    var child = element.firstChild;
+    while( child != null)  {
+      if (child is Element) {
+      for (var attributeName in ["id", "name"]) {
+        var childAttribute = child.getAttribute(attributeName);
+        if (_evilAttributeNames.contains(childAttribute)) return true;
+      }}
+      child = child.nextNode;
     }
     return false;
   }
@@ -15806,62 +14604,60 @@
   static bool _hasCorruptedAttributesAdditionalCheck(Element element) => false;
 
   static String _safeTagName(element) {
-    String result = 'element tag unavailable';
     try {
-      if (element.tagName is String) {
-        result = element.tagName;
-      }
+      // Safe as we plumb directly to a C++ native method.
+      return element.tagName;
     } catch (e) {}
-    return result;
+    return 'element tag unavailable';
   }
 
   // Need to explicitly delegate because Element is no longer abstract for Dartium.
-  bool get isContentEditable => _blink.BlinkHTMLElement.instance.isContentEditable_Getter_(unwrap_jso(this));
-  void click() => _blink.BlinkHTMLElement.instance.click_Callback_0_(unwrap_jso(this));
+  bool get isContentEditable => _blink.BlinkHTMLElement.instance.isContentEditable_Getter_(this);
+  void click() => _blink.BlinkHTMLElement.instance.click_Callback_0_(this);
 
   @DomName('Element.offsetParent')
   @DocsEditable()
-  Element get offsetParent => wrap_jso(_blink.BlinkElement.instance.offsetParent_Getter_(unwrap_jso(this)));
+  Element get offsetParent => _blink.BlinkElement.instance.offsetParent_Getter_(this);
 
   @DomName('Element.offsetHeight')
   @DocsEditable()
-  int get offsetHeight => _blink.BlinkElement.instance.offsetHeight_Getter_(unwrap_jso(this));
+  int get offsetHeight => _blink.BlinkElement.instance.offsetHeight_Getter_(this);
 
   @DomName('Element.offsetLeft')
   @DocsEditable()
-  int get offsetLeft => _blink.BlinkElement.instance.offsetLeft_Getter_(unwrap_jso(this));
+  int get offsetLeft => _blink.BlinkElement.instance.offsetLeft_Getter_(this);
 
   @DomName('Element.offsetTop')
   @DocsEditable()
-  int get offsetTop => _blink.BlinkElement.instance.offsetTop_Getter_(unwrap_jso(this));
+  int get offsetTop => _blink.BlinkElement.instance.offsetTop_Getter_(this);
 
   @DomName('Element.offsetWidth')
   @DocsEditable()
-  int get offsetWidth => _blink.BlinkElement.instance.offsetWidth_Getter_(unwrap_jso(this));
+  int get offsetWidth => _blink.BlinkElement.instance.offsetWidth_Getter_(this);
 
   @DomName('Element.scrollHeight')
   @DocsEditable()
-  int get scrollHeight => _blink.BlinkElement.instance.scrollHeight_Getter_(unwrap_jso(this)).round();
+  int get scrollHeight => _blink.BlinkElement.instance.scrollHeight_Getter_(this).round();
 
   @DomName('Element.scrollLeft')
   @DocsEditable()
-  int get scrollLeft => _blink.BlinkElement.instance.scrollLeft_Getter_(unwrap_jso(this)).round();
+  int get scrollLeft => _blink.BlinkElement.instance.scrollLeft_Getter_(this).round();
 
   @DomName('Element.scrollLeft')
   @DocsEditable()
-  set scrollLeft(int value) => _blink.BlinkElement.instance.scrollLeft_Setter_(unwrap_jso(this), value.round());
+  set scrollLeft(int value) => _blink.BlinkElement.instance.scrollLeft_Setter_(this, value.round());
 
   @DomName('Element.scrollTop')
   @DocsEditable()
-  int get scrollTop => _blink.BlinkElement.instance.scrollTop_Getter_(unwrap_jso(this)).round();
+  int get scrollTop => _blink.BlinkElement.instance.scrollTop_Getter_(this).round();
 
   @DomName('Element.scrollTop')
   @DocsEditable()
-  set scrollTop(int value) => _blink.BlinkElement.instance.scrollTop_Setter_(unwrap_jso(this), value.round());
+  set scrollTop(int value) => _blink.BlinkElement.instance.scrollTop_Setter_(this, value.round());
 
   @DomName('Element.scrollWidth')
   @DocsEditable()
-  int get scrollWidth => _blink.BlinkElement.instance.scrollWidth_Getter_(unwrap_jso(this)).round();
+  int get scrollWidth => _blink.BlinkElement.instance.scrollWidth_Getter_(this).round();
 
   // To suppress missing implicit constructor warnings.
   factory Element._() { throw new UnsupportedError("Not supported"); }
@@ -16536,11 +15332,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static Element internalCreateElement() {
-    return new Element._internalWrap();
-  }
-
-  external factory Element._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Element.internal_() : super.internal_();
@@ -16576,115 +15368,115 @@
 
   @DomName('Element.attributes')
   @DocsEditable()
-  _NamedNodeMap get _attributes => wrap_jso(_blink.BlinkElement.instance.attributes_Getter_(unwrap_jso(this)));
+  _NamedNodeMap get _attributes => _blink.BlinkElement.instance.attributes_Getter_(this);
   
   @DomName('Element.className')
   @DocsEditable()
-  String get className => _blink.BlinkElement.instance.className_Getter_(unwrap_jso(this));
+  String get className => _blink.BlinkElement.instance.className_Getter_(this);
   
   @DomName('Element.className')
   @DocsEditable()
-  set className(String value) => _blink.BlinkElement.instance.className_Setter_(unwrap_jso(this), value);
+  set className(String value) => _blink.BlinkElement.instance.className_Setter_(this, value);
   
   @DomName('Element.clientHeight')
   @DocsEditable()
-  int get clientHeight => _blink.BlinkElement.instance.clientHeight_Getter_(unwrap_jso(this));
+  int get clientHeight => _blink.BlinkElement.instance.clientHeight_Getter_(this);
   
   @DomName('Element.clientLeft')
   @DocsEditable()
-  int get clientLeft => _blink.BlinkElement.instance.clientLeft_Getter_(unwrap_jso(this));
+  int get clientLeft => _blink.BlinkElement.instance.clientLeft_Getter_(this);
   
   @DomName('Element.clientTop')
   @DocsEditable()
-  int get clientTop => _blink.BlinkElement.instance.clientTop_Getter_(unwrap_jso(this));
+  int get clientTop => _blink.BlinkElement.instance.clientTop_Getter_(this);
   
   @DomName('Element.clientWidth')
   @DocsEditable()
-  int get clientWidth => _blink.BlinkElement.instance.clientWidth_Getter_(unwrap_jso(this));
+  int get clientWidth => _blink.BlinkElement.instance.clientWidth_Getter_(this);
   
   @DomName('Element.computedName')
   @DocsEditable()
   @Experimental() // untriaged
-  String get computedName => _blink.BlinkElement.instance.computedName_Getter_(unwrap_jso(this));
+  String get computedName => _blink.BlinkElement.instance.computedName_Getter_(this);
   
   @DomName('Element.computedRole')
   @DocsEditable()
   @Experimental() // untriaged
-  String get computedRole => _blink.BlinkElement.instance.computedRole_Getter_(unwrap_jso(this));
+  String get computedRole => _blink.BlinkElement.instance.computedRole_Getter_(this);
   
   @DomName('Element.id')
   @DocsEditable()
-  String get id => _blink.BlinkElement.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkElement.instance.id_Getter_(this);
   
   @DomName('Element.id')
   @DocsEditable()
-  set id(String value) => _blink.BlinkElement.instance.id_Setter_(unwrap_jso(this), value);
+  set id(String value) => _blink.BlinkElement.instance.id_Setter_(this, value);
   
   @DomName('Element.innerHTML')
   @DocsEditable()
-  String get _innerHtml => _blink.BlinkElement.instance.innerHTML_Getter_(unwrap_jso(this));
+  String get _innerHtml => _blink.BlinkElement.instance.innerHTML_Getter_(this);
   
   @DomName('Element.innerHTML')
   @DocsEditable()
-  set _innerHtml(String value) => _blink.BlinkElement.instance.innerHTML_Setter_(unwrap_jso(this), value);
+  set _innerHtml(String value) => _blink.BlinkElement.instance.innerHTML_Setter_(this, value);
   
   @DomName('Element.localName')
   @DocsEditable()
   @Experimental() // untriaged
-  String get _localName => _blink.BlinkElement.instance.localName_Getter_(unwrap_jso(this));
+  String get _localName => _blink.BlinkElement.instance.localName_Getter_(this);
   
   @DomName('Element.namespaceURI')
   @DocsEditable()
   @Experimental() // untriaged
-  String get _namespaceUri => _blink.BlinkElement.instance.namespaceURI_Getter_(unwrap_jso(this));
+  String get _namespaceUri => _blink.BlinkElement.instance.namespaceURI_Getter_(this);
   
   @DomName('Element.outerHTML')
   @DocsEditable()
-  String get outerHtml => _blink.BlinkElement.instance.outerHTML_Getter_(unwrap_jso(this));
+  String get outerHtml => _blink.BlinkElement.instance.outerHTML_Getter_(this);
   
   @DomName('Element.scrollHeight')
   @DocsEditable()
-  int get _scrollHeight => _blink.BlinkElement.instance.scrollHeight_Getter_(unwrap_jso(this));
+  int get _scrollHeight => _blink.BlinkElement.instance.scrollHeight_Getter_(this);
   
   @DomName('Element.scrollLeft')
   @DocsEditable()
-  num get _scrollLeft => _blink.BlinkElement.instance.scrollLeft_Getter_(unwrap_jso(this));
+  num get _scrollLeft => _blink.BlinkElement.instance.scrollLeft_Getter_(this);
   
   @DomName('Element.scrollLeft')
   @DocsEditable()
-  set _scrollLeft(num value) => _blink.BlinkElement.instance.scrollLeft_Setter_(unwrap_jso(this), value);
+  set _scrollLeft(num value) => _blink.BlinkElement.instance.scrollLeft_Setter_(this, value);
   
   @DomName('Element.scrollTop')
   @DocsEditable()
-  num get _scrollTop => _blink.BlinkElement.instance.scrollTop_Getter_(unwrap_jso(this));
+  num get _scrollTop => _blink.BlinkElement.instance.scrollTop_Getter_(this);
   
   @DomName('Element.scrollTop')
   @DocsEditable()
-  set _scrollTop(num value) => _blink.BlinkElement.instance.scrollTop_Setter_(unwrap_jso(this), value);
+  set _scrollTop(num value) => _blink.BlinkElement.instance.scrollTop_Setter_(this, value);
   
   @DomName('Element.scrollWidth')
   @DocsEditable()
-  int get _scrollWidth => _blink.BlinkElement.instance.scrollWidth_Getter_(unwrap_jso(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 => wrap_jso(_blink.BlinkElement.instance.shadowRoot_Getter_(unwrap_jso(this)));
+  ShadowRoot get shadowRoot => _blink.BlinkElement.instance.shadowRoot_Getter_(this);
   
   @DomName('Element.tagName')
   @DocsEditable()
-  String get tagName => _blink.BlinkElement.instance.tagName_Getter_(unwrap_jso(this));
+  String get tagName => _blink.BlinkElement.instance.tagName_Getter_(this);
   
   Animation _animate(Object effect, [timing]) {
     if (effect != null && timing == null) {
-      return wrap_jso(_blink.BlinkElement.instance.animate_Callback_1_(unwrap_jso(this), effect));
+      return _blink.BlinkElement.instance.animate_Callback_1_(this, effect);
     }
     if ((timing is num) && effect != null) {
-      return wrap_jso(_blink.BlinkElement.instance.animate_Callback_2_(unwrap_jso(this), effect, unwrap_jso(timing)));
+      return _blink.BlinkElement.instance.animate_Callback_2_(this, effect, timing);
     }
     if (timing != null && effect != null) {
-      return wrap_jso(_blink.BlinkElement.instance.animate_Callback_2_(unwrap_jso(this), effect, unwrap_jso(timing)));
+      return _blink.BlinkElement.instance.animate_Callback_2_(this, effect, timing);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -16692,14 +15484,14 @@
   @DomName('Element.closest')
   @DocsEditable()
   @Experimental() // untriaged
-  Element closest(String selectors) => wrap_jso(_blink.BlinkElement.instance.closest_Callback_1_(unwrap_jso(this), selectors));
+  Element closest(String selectors) => _blink.BlinkElement.instance.closest_Callback_1_(this, selectors);
   
   ShadowRoot createShadowRoot([Map shadowRootInitDict]) {
     if (shadowRootInitDict == null) {
-      return wrap_jso(_blink.BlinkElement.instance.createShadowRoot_Callback_0_(unwrap_jso(this)));
+      return _blink.BlinkElement.instance.createShadowRoot_Callback_0_(this);
     }
     if ((shadowRootInitDict is Map)) {
-      return wrap_jso(_blink.BlinkElement.instance.createShadowRoot_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(shadowRootInitDict)));
+      return _blink.BlinkElement.instance.createShadowRoot_Callback_1_(this, convertDartToNative_Dictionary(shadowRootInitDict));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -16707,17 +15499,17 @@
   @DomName('Element.getAnimations')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Animation> getAnimations() => wrap_jso(_blink.BlinkElement.instance.getAnimations_Callback_0_(unwrap_jso(this)));
+  List<Animation> getAnimations() => (_blink.BlinkElement.instance.getAnimations_Callback_0_(this));
   
   @DomName('Element.getAttribute')
   @DocsEditable()
   @Experimental() // untriaged
-  String getAttribute(String name) => _blink.BlinkElement.instance.getAttribute_Callback_1_(unwrap_jso(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.instance.getAttributeNS_Callback_2_(unwrap_jso(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
@@ -16733,7 +15525,7 @@
    */
   @DomName('Element.getBoundingClientRect')
   @DocsEditable()
-  Rectangle getBoundingClientRect() => make_dart_rectangle(_blink.BlinkElement.instance.getBoundingClientRect_Callback_0_(unwrap_jso(this)));
+  Rectangle getBoundingClientRect() => make_dart_rectangle(_blink.BlinkElement.instance.getBoundingClientRect_Callback_0_(this));
   
   /**
    * Returns a list of bounding rectangles for each box associated with this
@@ -16749,7 +15541,7 @@
    */
   @DomName('Element.getClientRects')
   @DocsEditable()
-  List<Rectangle> getClientRects() => wrap_jso(_blink.BlinkElement.instance.getClientRects_Callback_0_(unwrap_jso(this)));
+  List<Rectangle> getClientRects() => _blink.BlinkElement.instance.getClientRects_Callback_0_(this);
   
   /**
    * Returns a list of shadow DOM insertion points to which this element is
@@ -16764,7 +15556,7 @@
   @DomName('Element.getDestinationInsertionPoints')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Node> getDestinationInsertionPoints() => wrap_jso(_blink.BlinkElement.instance.getDestinationInsertionPoints_Callback_0_(unwrap_jso(this)));
+  List<Node> getDestinationInsertionPoints() => (_blink.BlinkElement.instance.getDestinationInsertionPoints_Callback_0_(this));
   
   /**
    * Returns a list of nodes with the given class name inside this element.
@@ -16777,69 +15569,69 @@
    */
   @DomName('Element.getElementsByClassName')
   @DocsEditable()
-  List<Node> getElementsByClassName(String classNames) => wrap_jso(_blink.BlinkElement.instance.getElementsByClassName_Callback_1_(unwrap_jso(this), classNames));
+  List<Node> getElementsByClassName(String classNames) => (_blink.BlinkElement.instance.getElementsByClassName_Callback_1_(this, classNames));
   
   @DomName('Element.getElementsByTagName')
   @DocsEditable()
-  List<Node> _getElementsByTagName(String localName) => wrap_jso(_blink.BlinkElement.instance.getElementsByTagName_Callback_1_(unwrap_jso(this), localName));
+  List<Node> _getElementsByTagName(String localName) => (_blink.BlinkElement.instance.getElementsByTagName_Callback_1_(this, localName));
   
   @DomName('Element.hasAttribute')
   @DocsEditable()
-  bool _hasAttribute(String name) => _blink.BlinkElement.instance.hasAttribute_Callback_1_(unwrap_jso(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.instance.hasAttributeNS_Callback_2_(unwrap_jso(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) => wrap_jso(_blink.BlinkElement.instance.insertAdjacentElement_Callback_2_(unwrap_jso(this), where, unwrap_jso(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 position, String text) => _blink.BlinkElement.instance.insertAdjacentHTML_Callback_2_(unwrap_jso(this), position, text);
+  void _insertAdjacentHtml(String position, String text) => _blink.BlinkElement.instance.insertAdjacentHTML_Callback_2_(this, position, text);
   
   @DomName('Element.insertAdjacentText')
   @DocsEditable()
   @Experimental() // untriaged
-  void insertAdjacentText(String where, String text) => _blink.BlinkElement.instance.insertAdjacentText_Callback_2_(unwrap_jso(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.instance.matches_Callback_1_(unwrap_jso(this), selectors);
+  bool matches(String selectors) => _blink.BlinkElement.instance.matches_Callback_1_(this, selectors);
   
   @DomName('Element.removeAttribute')
   @DocsEditable()
-  void _removeAttribute(String name) => _blink.BlinkElement.instance.removeAttribute_Callback_1_(unwrap_jso(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.instance.removeAttributeNS_Callback_2_(unwrap_jso(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.instance.requestFullscreen_Callback_0_(unwrap_jso(this));
+  void requestFullscreen() => _blink.BlinkElement.instance.requestFullscreen_Callback_0_(this);
   
   @DomName('Element.requestPointerLock')
   @DocsEditable()
   @Experimental() // untriaged
-  void requestPointerLock() => _blink.BlinkElement.instance.requestPointerLock_Callback_0_(unwrap_jso(this));
+  void requestPointerLock() => _blink.BlinkElement.instance.requestPointerLock_Callback_0_(this);
   
   void scroll([options_OR_x, num y]) {
     if (options_OR_x == null && y == null) {
-      _blink.BlinkElement.instance.scroll_Callback_0_(unwrap_jso(this));
+      _blink.BlinkElement.instance.scroll_Callback_0_(this);
       return;
     }
     if ((options_OR_x is Map) && y == null) {
-      _blink.BlinkElement.instance.scroll_Callback_1_(unwrap_jso(this), unwrap_jso(options_OR_x));
+      _blink.BlinkElement.instance.scroll_Callback_1_(this, options_OR_x);
       return;
     }
     if ((y is num) && (options_OR_x is num)) {
-      _blink.BlinkElement.instance.scroll_Callback_2_(unwrap_jso(this), unwrap_jso(options_OR_x), y);
+      _blink.BlinkElement.instance.scroll_Callback_2_(this, options_OR_x, y);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -16847,15 +15639,15 @@
 
   void scrollBy([options_OR_x, num y]) {
     if (options_OR_x == null && y == null) {
-      _blink.BlinkElement.instance.scrollBy_Callback_0_(unwrap_jso(this));
+      _blink.BlinkElement.instance.scrollBy_Callback_0_(this);
       return;
     }
     if ((options_OR_x is Map) && y == null) {
-      _blink.BlinkElement.instance.scrollBy_Callback_1_(unwrap_jso(this), unwrap_jso(options_OR_x));
+      _blink.BlinkElement.instance.scrollBy_Callback_1_(this, options_OR_x);
       return;
     }
     if ((y is num) && (options_OR_x is num)) {
-      _blink.BlinkElement.instance.scrollBy_Callback_2_(unwrap_jso(this), unwrap_jso(options_OR_x), y);
+      _blink.BlinkElement.instance.scrollBy_Callback_2_(this, options_OR_x, y);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -16863,33 +15655,33 @@
 
   void _scrollIntoView([bool alignWithTop]) {
     if (alignWithTop != null) {
-      _blink.BlinkElement.instance.scrollIntoView_Callback_1_(unwrap_jso(this), alignWithTop);
+      _blink.BlinkElement.instance.scrollIntoView_Callback_1_(this, alignWithTop);
       return;
     }
-    _blink.BlinkElement.instance.scrollIntoView_Callback_0_(unwrap_jso(this));
+    _blink.BlinkElement.instance.scrollIntoView_Callback_0_(this);
     return;
   }
 
   void _scrollIntoViewIfNeeded([bool centerIfNeeded]) {
     if (centerIfNeeded != null) {
-      _blink.BlinkElement.instance.scrollIntoViewIfNeeded_Callback_1_(unwrap_jso(this), centerIfNeeded);
+      _blink.BlinkElement.instance.scrollIntoViewIfNeeded_Callback_1_(this, centerIfNeeded);
       return;
     }
-    _blink.BlinkElement.instance.scrollIntoViewIfNeeded_Callback_0_(unwrap_jso(this));
+    _blink.BlinkElement.instance.scrollIntoViewIfNeeded_Callback_0_(this);
     return;
   }
 
   void scrollTo([options_OR_x, num y]) {
     if (options_OR_x == null && y == null) {
-      _blink.BlinkElement.instance.scrollTo_Callback_0_(unwrap_jso(this));
+      _blink.BlinkElement.instance.scrollTo_Callback_0_(this);
       return;
     }
     if ((options_OR_x is Map) && y == null) {
-      _blink.BlinkElement.instance.scrollTo_Callback_1_(unwrap_jso(this), unwrap_jso(options_OR_x));
+      _blink.BlinkElement.instance.scrollTo_Callback_1_(this, options_OR_x);
       return;
     }
     if ((y is num) && (options_OR_x is num)) {
-      _blink.BlinkElement.instance.scrollTo_Callback_2_(unwrap_jso(this), unwrap_jso(options_OR_x), y);
+      _blink.BlinkElement.instance.scrollTo_Callback_2_(this, options_OR_x, y);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -16897,49 +15689,49 @@
 
   @DomName('Element.setAttribute')
   @DocsEditable()
-  void setAttribute(String name, String value) => _blink.BlinkElement.instance.setAttribute_Callback_2_(unwrap_jso(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 name, String value) => _blink.BlinkElement.instance.setAttributeNS_Callback_3_(unwrap_jso(this), namespaceURI, name, value);
+  void setAttributeNS(String namespaceURI, String name, String value) => _blink.BlinkElement.instance.setAttributeNS_Callback_3_(this, namespaceURI, name, value);
   
   @DomName('Element.after')
   @DocsEditable()
   @Experimental() // untriaged
-  void after(Object nodes) => _blink.BlinkElement.instance.after_Callback_1_(unwrap_jso(this), nodes);
+  void after(Object nodes) => _blink.BlinkElement.instance.after_Callback_1_(this, nodes);
   
   @DomName('Element.before')
   @DocsEditable()
   @Experimental() // untriaged
-  void before(Object nodes) => _blink.BlinkElement.instance.before_Callback_1_(unwrap_jso(this), nodes);
+  void before(Object nodes) => _blink.BlinkElement.instance.before_Callback_1_(this, nodes);
   
   @DomName('Element.remove')
   @DocsEditable()
-  void remove() => _blink.BlinkElement.instance.remove_Callback_0_(unwrap_jso(this));
+  void remove() => _blink.BlinkElement.instance.remove_Callback_0_(this);
   
   @DomName('Element.nextElementSibling')
   @DocsEditable()
-  Element get nextElementSibling => wrap_jso(_blink.BlinkElement.instance.nextElementSibling_Getter_(unwrap_jso(this)));
+  Element get nextElementSibling => _blink.BlinkElement.instance.nextElementSibling_Getter_(this);
   
   @DomName('Element.previousElementSibling')
   @DocsEditable()
-  Element get previousElementSibling => wrap_jso(_blink.BlinkElement.instance.previousElementSibling_Getter_(unwrap_jso(this)));
+  Element get previousElementSibling => _blink.BlinkElement.instance.previousElementSibling_Getter_(this);
   
   @DomName('Element.childElementCount')
   @DocsEditable()
-  int get _childElementCount => _blink.BlinkElement.instance.childElementCount_Getter_(unwrap_jso(this));
+  int get _childElementCount => _blink.BlinkElement.instance.childElementCount_Getter_(this);
   
   @DomName('Element.children')
   @DocsEditable()
-  List<Node> get _children => wrap_jso(_blink.BlinkElement.instance.children_Getter_(unwrap_jso(this)));
+  List<Node> get _children => (_blink.BlinkElement.instance.children_Getter_(this));
   
   @DomName('Element.firstElementChild')
   @DocsEditable()
-  Element get _firstElementChild => wrap_jso(_blink.BlinkElement.instance.firstElementChild_Getter_(unwrap_jso(this)));
+  Element get _firstElementChild => _blink.BlinkElement.instance.firstElementChild_Getter_(this);
   
   @DomName('Element.lastElementChild')
   @DocsEditable()
-  Element get _lastElementChild => wrap_jso(_blink.BlinkElement.instance.lastElementChild_Getter_(unwrap_jso(this)));
+  Element get _lastElementChild => _blink.BlinkElement.instance.lastElementChild_Getter_(this);
   
   /**
    * Finds the first descendant element of this element that matches the
@@ -16959,11 +15751,11 @@
    */
   @DomName('Element.querySelector')
   @DocsEditable()
-  Element querySelector(String selectors) => wrap_jso(_blink.BlinkElement.instance.querySelector_Callback_1_(unwrap_jso(this), selectors));
+  Element querySelector(String selectors) => _blink.BlinkElement.instance.querySelector_Callback_1_(this, selectors);
   
   @DomName('Element.querySelectorAll')
   @DocsEditable()
-  List<Node> _querySelectorAll(String selectors) => wrap_jso(_blink.BlinkElement.instance.querySelectorAll_Callback_1_(unwrap_jso(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')
@@ -17480,11 +16272,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static EmbedElement internalCreateEmbedElement() {
-    return new EmbedElement._internalWrap();
-  }
-
-  external factory EmbedElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   EmbedElement.internal_() : super.internal_();
@@ -17501,51 +16289,51 @@
 
   @DomName('HTMLEmbedElement.height')
   @DocsEditable()
-  String get height => _blink.BlinkHTMLEmbedElement.instance.height_Getter_(unwrap_jso(this));
+  String get height => _blink.BlinkHTMLEmbedElement.instance.height_Getter_(this);
   
   @DomName('HTMLEmbedElement.height')
   @DocsEditable()
-  set height(String value) => _blink.BlinkHTMLEmbedElement.instance.height_Setter_(unwrap_jso(this), value);
+  set height(String value) => _blink.BlinkHTMLEmbedElement.instance.height_Setter_(this, value);
   
   @DomName('HTMLEmbedElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLEmbedElement.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkHTMLEmbedElement.instance.name_Getter_(this);
   
   @DomName('HTMLEmbedElement.name')
   @DocsEditable()
-  set name(String value) => _blink.BlinkHTMLEmbedElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLEmbedElement.instance.name_Setter_(this, value);
   
   @DomName('HTMLEmbedElement.src')
   @DocsEditable()
-  String get src => _blink.BlinkHTMLEmbedElement.instance.src_Getter_(unwrap_jso(this));
+  String get src => _blink.BlinkHTMLEmbedElement.instance.src_Getter_(this);
   
   @DomName('HTMLEmbedElement.src')
   @DocsEditable()
-  set src(String value) => _blink.BlinkHTMLEmbedElement.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkHTMLEmbedElement.instance.src_Setter_(this, value);
   
   @DomName('HTMLEmbedElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLEmbedElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLEmbedElement.instance.type_Getter_(this);
   
   @DomName('HTMLEmbedElement.type')
   @DocsEditable()
-  set type(String value) => _blink.BlinkHTMLEmbedElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLEmbedElement.instance.type_Setter_(this, value);
   
   @DomName('HTMLEmbedElement.width')
   @DocsEditable()
-  String get width => _blink.BlinkHTMLEmbedElement.instance.width_Getter_(unwrap_jso(this));
+  String get width => _blink.BlinkHTMLEmbedElement.instance.width_Getter_(this);
   
   @DomName('HTMLEmbedElement.width')
   @DocsEditable()
-  set width(String value) => _blink.BlinkHTMLEmbedElement.instance.width_Setter_(unwrap_jso(this), value);
+  set width(String value) => _blink.BlinkHTMLEmbedElement.instance.width_Setter_(this, value);
   
   @DomName('HTMLEmbedElement.__getter__')
   @DocsEditable()
-  bool __getter__(index_OR_name) => _blink.BlinkHTMLEmbedElement.instance.$__getter___Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.$__setter___Callback_2_(unwrap_jso(this), unwrap_jso(index_OR_name), unwrap_jso(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
@@ -17574,55 +16362,47 @@
   // To suppress missing implicit constructor warnings.
   factory Entry._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Entry internalCreateEntry() {
-    return new Entry._internalWrap();
-  }
 
-  factory Entry._internalWrap() {
-    return new Entry.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Entry.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Entry.filesystem')
   @DocsEditable()
-  FileSystem get filesystem => wrap_jso(_blink.BlinkEntry.instance.filesystem_Getter_(unwrap_jso(this)));
+  FileSystem get filesystem => _blink.BlinkEntry.instance.filesystem_Getter_(this);
   
   @DomName('Entry.fullPath')
   @DocsEditable()
-  String get fullPath => _blink.BlinkEntry.instance.fullPath_Getter_(unwrap_jso(this));
+  String get fullPath => _blink.BlinkEntry.instance.fullPath_Getter_(this);
   
   @DomName('Entry.isDirectory')
   @DocsEditable()
-  bool get isDirectory => _blink.BlinkEntry.instance.isDirectory_Getter_(unwrap_jso(this));
+  bool get isDirectory => _blink.BlinkEntry.instance.isDirectory_Getter_(this);
   
   @DomName('Entry.isFile')
   @DocsEditable()
-  bool get isFile => _blink.BlinkEntry.instance.isFile_Getter_(unwrap_jso(this));
+  bool get isFile => _blink.BlinkEntry.instance.isFile_Getter_(this);
   
   @DomName('Entry.name')
   @DocsEditable()
-  String get name => _blink.BlinkEntry.instance.name_Getter_(unwrap_jso(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.instance.copyTo_Callback_4_(unwrap_jso(this), unwrap_jso(parent), name, unwrap_jso((entry) => successCallback(wrap_jso(entry))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkEntry.instance.copyTo_Callback_4_(this, parent, name, successCallback, errorCallback);
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkEntry.instance.copyTo_Callback_3_(unwrap_jso(this), unwrap_jso(parent), name, unwrap_jso((entry) => successCallback(wrap_jso(entry))));
+      _blink.BlinkEntry.instance.copyTo_Callback_3_(this, parent, name, successCallback);
       return;
     }
     if (name != null) {
-      _blink.BlinkEntry.instance.copyTo_Callback_2_(unwrap_jso(this), unwrap_jso(parent), name);
+      _blink.BlinkEntry.instance.copyTo_Callback_2_(this, parent, name);
       return;
     }
-    _blink.BlinkEntry.instance.copyTo_Callback_1_(unwrap_jso(this), unwrap_jso(parent));
+    _blink.BlinkEntry.instance.copyTo_Callback_1_(this, parent);
     return;
   }
 
@@ -17636,10 +16416,10 @@
 
   void _getMetadata(MetadataCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkEntry.instance.getMetadata_Callback_2_(unwrap_jso(this), unwrap_jso((metadata) => successCallback(wrap_jso(metadata))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkEntry.instance.getMetadata_Callback_2_(this, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkEntry.instance.getMetadata_Callback_1_(unwrap_jso(this), unwrap_jso((metadata) => successCallback(wrap_jso(metadata))));
+    _blink.BlinkEntry.instance.getMetadata_Callback_1_(this, successCallback);
     return;
   }
 
@@ -17653,14 +16433,14 @@
 
   void _getParent([_EntryCallback successCallback, _ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkEntry.instance.getParent_Callback_2_(unwrap_jso(this), unwrap_jso((entry) => successCallback(wrap_jso(entry))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkEntry.instance.getParent_Callback_2_(this, successCallback, errorCallback);
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkEntry.instance.getParent_Callback_1_(unwrap_jso(this), unwrap_jso((entry) => successCallback(wrap_jso(entry))));
+      _blink.BlinkEntry.instance.getParent_Callback_1_(this, successCallback);
       return;
     }
-    _blink.BlinkEntry.instance.getParent_Callback_0_(unwrap_jso(this));
+    _blink.BlinkEntry.instance.getParent_Callback_0_(this);
     return;
   }
 
@@ -17674,18 +16454,18 @@
 
   void _moveTo(DirectoryEntry parent, {String name, _EntryCallback successCallback, _ErrorCallback errorCallback}) {
     if (errorCallback != null) {
-      _blink.BlinkEntry.instance.moveTo_Callback_4_(unwrap_jso(this), unwrap_jso(parent), name, unwrap_jso((entry) => successCallback(wrap_jso(entry))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkEntry.instance.moveTo_Callback_4_(this, parent, name, successCallback, errorCallback);
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkEntry.instance.moveTo_Callback_3_(unwrap_jso(this), unwrap_jso(parent), name, unwrap_jso((entry) => successCallback(wrap_jso(entry))));
+      _blink.BlinkEntry.instance.moveTo_Callback_3_(this, parent, name, successCallback);
       return;
     }
     if (name != null) {
-      _blink.BlinkEntry.instance.moveTo_Callback_2_(unwrap_jso(this), unwrap_jso(parent), name);
+      _blink.BlinkEntry.instance.moveTo_Callback_2_(this, parent, name);
       return;
     }
-    _blink.BlinkEntry.instance.moveTo_Callback_1_(unwrap_jso(this), unwrap_jso(parent));
+    _blink.BlinkEntry.instance.moveTo_Callback_1_(this, parent);
     return;
   }
 
@@ -17699,10 +16479,10 @@
 
   void _remove(VoidCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkEntry.instance.remove_Callback_2_(unwrap_jso(this), unwrap_jso(() => successCallback()), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkEntry.instance.remove_Callback_2_(this, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkEntry.instance.remove_Callback_1_(unwrap_jso(this), unwrap_jso(() => successCallback()));
+    _blink.BlinkEntry.instance.remove_Callback_1_(this, successCallback);
     return;
   }
 
@@ -17716,7 +16496,7 @@
 
   @DomName('Entry.toURL')
   @DocsEditable()
-  String toUrl() => _blink.BlinkEntry.instance.toURL_Callback_0_(unwrap_jso(this));
+  String toUrl() => _blink.BlinkEntry.instance.toURL_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -17760,18 +16540,14 @@
   factory ErrorEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkErrorEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkErrorEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkErrorEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkErrorEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static ErrorEvent internalCreateErrorEvent() {
-    return new ErrorEvent._internalWrap();
-  }
-
-  external factory ErrorEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ErrorEvent.internal_() : super.internal_();
@@ -17780,24 +16556,24 @@
   @DomName('ErrorEvent.colno')
   @DocsEditable()
   @Experimental() // untriaged
-  int get colno => _blink.BlinkErrorEvent.instance.colno_Getter_(unwrap_jso(this));
+  int get colno => _blink.BlinkErrorEvent.instance.colno_Getter_(this);
   
   @DomName('ErrorEvent.error')
   @DocsEditable()
   @Experimental() // untriaged
-  Object get error => wrap_jso(_blink.BlinkErrorEvent.instance.error_Getter_(unwrap_jso(this)));
+  Object get error => (_blink.BlinkErrorEvent.instance.error_Getter_(this));
   
   @DomName('ErrorEvent.filename')
   @DocsEditable()
-  String get filename => _blink.BlinkErrorEvent.instance.filename_Getter_(unwrap_jso(this));
+  String get filename => _blink.BlinkErrorEvent.instance.filename_Getter_(this);
   
   @DomName('ErrorEvent.lineno')
   @DocsEditable()
-  int get lineno => _blink.BlinkErrorEvent.instance.lineno_Getter_(unwrap_jso(this));
+  int get lineno => _blink.BlinkErrorEvent.instance.lineno_Getter_(this);
   
   @DomName('ErrorEvent.message')
   @DocsEditable()
-  String get message => _blink.BlinkErrorEvent.instance.message_Getter_(unwrap_jso(this));
+  String get message => _blink.BlinkErrorEvent.instance.message_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -17864,26 +16640,18 @@
   factory Event._(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkEvent.instance.constructorCallback_1_(type);
   }
 
+
   @Deprecated("Internal Use Only")
-  static Event internalCreateEvent() {
-    return new Event._internalWrap();
-  }
-
-  factory Event._internalWrap() {
-    return new Event.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Event.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   /**
    * This event is being handled by the event target.
    *
@@ -17923,23 +16691,23 @@
 
   @DomName('Event.bubbles')
   @DocsEditable()
-  bool get bubbles => _blink.BlinkEvent.instance.bubbles_Getter_(unwrap_jso(this));
+  bool get bubbles => _blink.BlinkEvent.instance.bubbles_Getter_(this);
   
   @DomName('Event.cancelable')
   @DocsEditable()
-  bool get cancelable => _blink.BlinkEvent.instance.cancelable_Getter_(unwrap_jso(this));
+  bool get cancelable => _blink.BlinkEvent.instance.cancelable_Getter_(this);
   
   @DomName('Event.currentTarget')
   @DocsEditable()
-  EventTarget get currentTarget => wrap_jso(_blink.BlinkEvent.instance.currentTarget_Getter_(unwrap_jso(this)));
+  EventTarget get currentTarget => _blink.BlinkEvent.instance.currentTarget_Getter_(this);
   
   @DomName('Event.defaultPrevented')
   @DocsEditable()
-  bool get defaultPrevented => _blink.BlinkEvent.instance.defaultPrevented_Getter_(unwrap_jso(this));
+  bool get defaultPrevented => _blink.BlinkEvent.instance.defaultPrevented_Getter_(this);
   
   @DomName('Event.eventPhase')
   @DocsEditable()
-  int get eventPhase => _blink.BlinkEvent.instance.eventPhase_Getter_(unwrap_jso(this));
+  int get eventPhase => _blink.BlinkEvent.instance.eventPhase_Getter_(this);
   
   /**
    * This event's path, taking into account shadow DOM.
@@ -17954,35 +16722,35 @@
   @DocsEditable()
   // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#extensions-to-event
   @Experimental()
-  List<EventTarget> get path => wrap_jso(_blink.BlinkEvent.instance.path_Getter_(unwrap_jso(this)));
+  List<EventTarget> get path => (_blink.BlinkEvent.instance.path_Getter_(this));
   
   @DomName('Event.target')
   @DocsEditable()
-  EventTarget get target => wrap_jso(_blink.BlinkEvent.instance.target_Getter_(unwrap_jso(this)));
+  EventTarget get target => _blink.BlinkEvent.instance.target_Getter_(this);
   
   @DomName('Event.timeStamp')
   @DocsEditable()
-  int get timeStamp => _blink.BlinkEvent.instance.timeStamp_Getter_(unwrap_jso(this));
+  int get timeStamp => _blink.BlinkEvent.instance.timeStamp_Getter_(this);
   
   @DomName('Event.type')
   @DocsEditable()
-  String get type => _blink.BlinkEvent.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkEvent.instance.type_Getter_(this);
   
   @DomName('Event.initEvent')
   @DocsEditable()
-  void _initEvent(String type, bool bubbles, bool cancelable) => _blink.BlinkEvent.instance.initEvent_Callback_3_(unwrap_jso(this), type, bubbles, cancelable);
+  void _initEvent(String type, bool bubbles, bool cancelable) => _blink.BlinkEvent.instance.initEvent_Callback_3_(this, type, bubbles, cancelable);
   
   @DomName('Event.preventDefault')
   @DocsEditable()
-  void preventDefault() => _blink.BlinkEvent.instance.preventDefault_Callback_0_(unwrap_jso(this));
+  void preventDefault() => _blink.BlinkEvent.instance.preventDefault_Callback_0_(this);
   
   @DomName('Event.stopImmediatePropagation')
   @DocsEditable()
-  void stopImmediatePropagation() => _blink.BlinkEvent.instance.stopImmediatePropagation_Callback_0_(unwrap_jso(this));
+  void stopImmediatePropagation() => _blink.BlinkEvent.instance.stopImmediatePropagation_Callback_0_(this);
   
   @DomName('Event.stopPropagation')
   @DocsEditable()
-  void stopPropagation() => _blink.BlinkEvent.instance.stopPropagation_Callback_0_(unwrap_jso(this));
+  void stopPropagation() => _blink.BlinkEvent.instance.stopPropagation_Callback_0_(this);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -18038,18 +16806,14 @@
   static EventSource _factoryEventSource(String url, [Map eventSourceInitDict]) {
     if (eventSourceInitDict != null) {
       var eventSourceInitDict_1 = convertDartToNative_Dictionary(eventSourceInitDict);
-      return wrap_jso(_blink.BlinkEventSource.instance.constructorCallback_2_(url, eventSourceInitDict_1));
+      return _blink.BlinkEventSource.instance.constructorCallback_2_(url, eventSourceInitDict_1);
     }
-    return wrap_jso(_blink.BlinkEventSource.instance.constructorCallback_1_(url));
+    return _blink.BlinkEventSource.instance.constructorCallback_1_(url);
   }
 
 
   @Deprecated("Internal Use Only")
-  static EventSource internalCreateEventSource() {
-    return new EventSource._internalWrap();
-  }
-
-  external factory EventSource._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   EventSource.internal_() : super.internal_();
@@ -18069,19 +16833,19 @@
 
   @DomName('EventSource.readyState')
   @DocsEditable()
-  int get readyState => _blink.BlinkEventSource.instance.readyState_Getter_(unwrap_jso(this));
+  int get readyState => _blink.BlinkEventSource.instance.readyState_Getter_(this);
   
   @DomName('EventSource.url')
   @DocsEditable()
-  String get url => _blink.BlinkEventSource.instance.url_Getter_(unwrap_jso(this));
+  String get url => _blink.BlinkEventSource.instance.url_Getter_(this);
   
   @DomName('EventSource.withCredentials')
   @DocsEditable()
-  bool get withCredentials => _blink.BlinkEventSource.instance.withCredentials_Getter_(unwrap_jso(this));
+  bool get withCredentials => _blink.BlinkEventSource.instance.withCredentials_Getter_(this);
   
   @DomName('EventSource.close')
   @DocsEditable()
-  void close() => _blink.BlinkEventSource.instance.close_Callback_0_(unwrap_jso(this));
+  void close() => _blink.BlinkEventSource.instance.close_Callback_0_(this);
   
   /// Stream of `error` events handled by this [EventSource].
   @DomName('EventSource.onerror')
@@ -18227,32 +16991,24 @@
   // To suppress missing implicit constructor warnings.
   factory EventTarget._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static EventTarget internalCreateEventTarget() {
-    return new EventTarget._internalWrap();
-  }
 
-  factory EventTarget._internalWrap() {
-    return new EventTarget.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   EventTarget.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('EventTarget.addEventListener')
   @DocsEditable()
-  void _addEventListener(String type, EventListener listener, [bool capture]) => _blink.BlinkEventTarget.instance.addEventListener_Callback_3_(unwrap_jso(this), type, unwrap_jso(js.allowInterop(listener)), capture);
+  void _addEventListener(String type, EventListener listener, [bool capture]) => _blink.BlinkEventTarget.instance.addEventListener_Callback_3_(this, type, listener, capture);
   
   @DomName('EventTarget.dispatchEvent')
   @DocsEditable()
-  bool dispatchEvent(Event event) => _blink.BlinkEventTarget.instance.dispatchEvent_Callback_1_(unwrap_jso(this), unwrap_jso(event));
+  bool dispatchEvent(Event event) => _blink.BlinkEventTarget.instance.dispatchEvent_Callback_1_(this, event);
   
   @DomName('EventTarget.removeEventListener')
   @DocsEditable()
-  void _removeEventListener(String type, EventListener listener, [bool capture]) => _blink.BlinkEventTarget.instance.removeEventListener_Callback_3_(unwrap_jso(this), type, unwrap_jso(js.allowInterop(listener)), capture);
+  void _removeEventListener(String type, EventListener listener, [bool capture]) => _blink.BlinkEventTarget.instance.removeEventListener_Callback_3_(this, type, listener, capture);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -18274,18 +17030,14 @@
   factory ExtendableEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkExtendableEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkExtendableEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkExtendableEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkExtendableEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static ExtendableEvent internalCreateExtendableEvent() {
-    return new ExtendableEvent._internalWrap();
-  }
-
-  external factory ExtendableEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ExtendableEvent.internal_() : super.internal_();
@@ -18294,7 +17046,7 @@
   @DomName('ExtendableEvent.waitUntil')
   @DocsEditable()
   @Experimental() // untriaged
-  void waitUntil(Object value) => _blink.BlinkExtendableEvent.instance.waitUntil_Callback_1_(unwrap_jso(this), value);
+  void waitUntil(Object value) => _blink.BlinkExtendableEvent.instance.waitUntil_Callback_1_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -18315,16 +17067,12 @@
   @DocsEditable()
   factory FederatedCredential(Map data) {
     var data_1 = convertDartToNative_Dictionary(data);
-    return wrap_jso(_blink.BlinkFederatedCredential.instance.constructorCallback_1_(data_1));
+    return _blink.BlinkFederatedCredential.instance.constructorCallback_1_(data_1);
   }
 
 
   @Deprecated("Internal Use Only")
-  static FederatedCredential internalCreateFederatedCredential() {
-    return new FederatedCredential._internalWrap();
-  }
-
-  external factory FederatedCredential._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FederatedCredential.internal_() : super.internal_();
@@ -18333,12 +17081,12 @@
   @DomName('FederatedCredential.protocol')
   @DocsEditable()
   @Experimental() // untriaged
-  String get protocol => _blink.BlinkFederatedCredential.instance.protocol_Getter_(unwrap_jso(this));
+  String get protocol => _blink.BlinkFederatedCredential.instance.protocol_Getter_(this);
   
   @DomName('FederatedCredential.provider')
   @DocsEditable()
   @Experimental() // untriaged
-  String get provider => _blink.BlinkFederatedCredential.instance.provider_Getter_(unwrap_jso(this));
+  String get provider => _blink.BlinkFederatedCredential.instance.provider_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -18360,18 +17108,14 @@
   factory FetchEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkFetchEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkFetchEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkFetchEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkFetchEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static FetchEvent internalCreateFetchEvent() {
-    return new FetchEvent._internalWrap();
-  }
-
-  external factory FetchEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FetchEvent.internal_() : super.internal_();
@@ -18380,17 +17124,17 @@
   @DomName('FetchEvent.isReload')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get isReload => _blink.BlinkFetchEvent.instance.isReload_Getter_(unwrap_jso(this));
+  bool get isReload => _blink.BlinkFetchEvent.instance.isReload_Getter_(this);
   
   @DomName('FetchEvent.request')
   @DocsEditable()
   @Experimental() // untriaged
-  _Request get request => wrap_jso(_blink.BlinkFetchEvent.instance.request_Getter_(unwrap_jso(this)));
+  _Request get request => _blink.BlinkFetchEvent.instance.request_Getter_(this);
   
   @DomName('FetchEvent.respondWith')
   @DocsEditable()
   @Experimental() // untriaged
-  void respondWith(Object value) => _blink.BlinkFetchEvent.instance.respondWith_Callback_1_(unwrap_jso(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
@@ -18413,11 +17157,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FieldSetElement internalCreateFieldSetElement() {
-    return new FieldSetElement._internalWrap();
-  }
-
-  external factory FieldSetElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FieldSetElement.internal_() : super.internal_();
@@ -18431,56 +17171,56 @@
 
   @DomName('HTMLFieldSetElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLFieldSetElement.instance.disabled_Getter_(unwrap_jso(this));
+  bool get disabled => _blink.BlinkHTMLFieldSetElement.instance.disabled_Getter_(this);
   
   @DomName('HTMLFieldSetElement.disabled')
   @DocsEditable()
-  set disabled(bool value) => _blink.BlinkHTMLFieldSetElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLFieldSetElement.instance.disabled_Setter_(this, value);
   
   @DomName('HTMLFieldSetElement.elements')
   @DocsEditable()
-  HtmlFormControlsCollection get elements => wrap_jso(_blink.BlinkHTMLFieldSetElement.instance.elements_Getter_(unwrap_jso(this)));
+  HtmlFormControlsCollection get elements => _blink.BlinkHTMLFieldSetElement.instance.elements_Getter_(this);
   
   @DomName('HTMLFieldSetElement.form')
   @DocsEditable()
-  FormElement get form => wrap_jso(_blink.BlinkHTMLFieldSetElement.instance.form_Getter_(unwrap_jso(this)));
+  FormElement get form => _blink.BlinkHTMLFieldSetElement.instance.form_Getter_(this);
   
   @DomName('HTMLFieldSetElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLFieldSetElement.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkHTMLFieldSetElement.instance.name_Getter_(this);
   
   @DomName('HTMLFieldSetElement.name')
   @DocsEditable()
-  set name(String value) => _blink.BlinkHTMLFieldSetElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLFieldSetElement.instance.name_Setter_(this, value);
   
   @DomName('HTMLFieldSetElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLFieldSetElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLFieldSetElement.instance.type_Getter_(this);
   
   @DomName('HTMLFieldSetElement.validationMessage')
   @DocsEditable()
-  String get validationMessage => _blink.BlinkHTMLFieldSetElement.instance.validationMessage_Getter_(unwrap_jso(this));
+  String get validationMessage => _blink.BlinkHTMLFieldSetElement.instance.validationMessage_Getter_(this);
   
   @DomName('HTMLFieldSetElement.validity')
   @DocsEditable()
-  ValidityState get validity => wrap_jso(_blink.BlinkHTMLFieldSetElement.instance.validity_Getter_(unwrap_jso(this)));
+  ValidityState get validity => _blink.BlinkHTMLFieldSetElement.instance.validity_Getter_(this);
   
   @DomName('HTMLFieldSetElement.willValidate')
   @DocsEditable()
-  bool get willValidate => _blink.BlinkHTMLFieldSetElement.instance.willValidate_Getter_(unwrap_jso(this));
+  bool get willValidate => _blink.BlinkHTMLFieldSetElement.instance.willValidate_Getter_(this);
   
   @DomName('HTMLFieldSetElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLFieldSetElement.instance.checkValidity_Callback_0_(unwrap_jso(this));
+  bool checkValidity() => _blink.BlinkHTMLFieldSetElement.instance.checkValidity_Callback_0_(this);
   
   @DomName('HTMLFieldSetElement.reportValidity')
   @DocsEditable()
   @Experimental() // untriaged
-  bool reportValidity() => _blink.BlinkHTMLFieldSetElement.instance.reportValidity_Callback_0_(unwrap_jso(this));
+  bool reportValidity() => _blink.BlinkHTMLFieldSetElement.instance.reportValidity_Callback_0_(this);
   
   @DomName('HTMLFieldSetElement.setCustomValidity')
   @DocsEditable()
-  void setCustomValidity(String error) => _blink.BlinkHTMLFieldSetElement.instance.setCustomValidity_Callback_1_(unwrap_jso(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
@@ -18501,18 +17241,14 @@
   factory File(List<Object> fileBits, String fileName, [Map options]) {
     if (options != null) {
       var options_1 = convertDartToNative_Dictionary(options);
-      return wrap_jso(_blink.BlinkFile.instance.constructorCallback_3_(fileBits, fileName, options_1));
+      return _blink.BlinkFile.instance.constructorCallback_3_(fileBits, fileName, options_1);
     }
-    return wrap_jso(_blink.BlinkFile.instance.constructorCallback_2_(fileBits, fileName));
+    return _blink.BlinkFile.instance.constructorCallback_2_(fileBits, fileName);
   }
 
 
   @Deprecated("Internal Use Only")
-  static File internalCreateFile() {
-    return new File._internalWrap();
-  }
-
-  external factory File._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   File.internal_() : super.internal_();
@@ -18521,15 +17257,15 @@
   @DomName('File.lastModified')
   @DocsEditable()
   @Experimental() // untriaged
-  int get lastModified => _blink.BlinkFile.instance.lastModified_Getter_(unwrap_jso(this));
+  int get lastModified => _blink.BlinkFile.instance.lastModified_Getter_(this);
   
   @DomName('File.lastModifiedDate')
   @DocsEditable()
-  DateTime get lastModifiedDate => _blink.BlinkFile.instance.lastModifiedDate_Getter_(unwrap_jso(this));
+  DateTime get lastModifiedDate => _blink.BlinkFile.instance.lastModifiedDate_Getter_(this);
   
   @DomName('File.name')
   @DocsEditable()
-  String get name => _blink.BlinkFile.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkFile.instance.name_Getter_(this);
   
   @DomName('File.webkitRelativePath')
   @DocsEditable()
@@ -18537,7 +17273,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://plus.sandbox.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3
-  String get relativePath => _blink.BlinkFile.instance.webkitRelativePath_Getter_(unwrap_jso(this));
+  String get relativePath => _blink.BlinkFile.instance.webkitRelativePath_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -18568,11 +17304,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FileEntry internalCreateFileEntry() {
-    return new FileEntry._internalWrap();
-  }
-
-  external factory FileEntry._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FileEntry.internal_() : super.internal_();
@@ -18580,10 +17312,10 @@
 
   void _createWriter(_FileWriterCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkFileEntry.instance.createWriter_Callback_2_(unwrap_jso(this), unwrap_jso((fileWriter) => successCallback(wrap_jso(fileWriter))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkFileEntry.instance.createWriter_Callback_2_(this, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkFileEntry.instance.createWriter_Callback_1_(unwrap_jso(this), unwrap_jso((fileWriter) => successCallback(wrap_jso(fileWriter))));
+    _blink.BlinkFileEntry.instance.createWriter_Callback_1_(this, successCallback);
     return;
   }
 
@@ -18597,10 +17329,10 @@
 
   void _file(_FileCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkFileEntry.instance.file_Callback_2_(unwrap_jso(this), unwrap_jso((file) => successCallback(wrap_jso(file))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkFileEntry.instance.file_Callback_2_(this, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkFileEntry.instance.file_Callback_1_(unwrap_jso(this), unwrap_jso((file) => successCallback(wrap_jso(file))));
+    _blink.BlinkFileEntry.instance.file_Callback_1_(this, successCallback);
     return;
   }
 
@@ -18630,11 +17362,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FileError internalCreateFileError() {
-    return new FileError._internalWrap();
-  }
-
-  external factory FileError._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FileError.internal_() : super.internal_();
@@ -18690,7 +17418,7 @@
 
   @DomName('FileError.code')
   @DocsEditable()
-  int get code => _blink.BlinkFileError.instance.code_Getter_(unwrap_jso(this));
+  int get code => _blink.BlinkFileError.instance.code_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -18706,32 +17434,24 @@
   // To suppress missing implicit constructor warnings.
   factory FileList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static FileList internalCreateFileList() {
-    return new FileList._internalWrap();
-  }
 
-  factory FileList._internalWrap() {
-    return new FileList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FileList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('FileList.length')
   @DocsEditable()
-  int get length => _blink.BlinkFileList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkFileList.instance.length_Getter_(this);
   
   File operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkFileList.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  File _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkFileList.instance.item_Callback_1_(unwrap_jso(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.");
@@ -18773,7 +17493,7 @@
 
   @DomName('FileList.item')
   @DocsEditable()
-  File item(int index) => wrap_jso(_blink.BlinkFileList.instance.item_Callback_1_(unwrap_jso(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
@@ -18788,7 +17508,7 @@
   @DomName('FileReader.result')
   @DocsEditable()
   Object get result {
-    var res = _blink.BlinkFileReader.instance.result_Getter_(unwrap_jso(this));
+    var res = _blink.BlinkFileReader.instance.result_Getter_(this);
     if (res is ByteBuffer) {
       return new Uint8List.view(res);
     }
@@ -18861,16 +17581,12 @@
   @DomName('FileReader.FileReader')
   @DocsEditable()
   factory FileReader() {
-    return wrap_jso(_blink.BlinkFileReader.instance.constructorCallback_0_());
+    return _blink.BlinkFileReader.instance.constructorCallback_0_();
   }
 
 
   @Deprecated("Internal Use Only")
-  static FileReader internalCreateFileReader() {
-    return new FileReader._internalWrap();
-  }
-
-  external factory FileReader._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FileReader.internal_() : super.internal_();
@@ -18890,34 +17606,34 @@
 
   @DomName('FileReader.error')
   @DocsEditable()
-  FileError get error => wrap_jso(_blink.BlinkFileReader.instance.error_Getter_(unwrap_jso(this)));
+  FileError get error => _blink.BlinkFileReader.instance.error_Getter_(this);
   
   @DomName('FileReader.readyState')
   @DocsEditable()
-  int get readyState => _blink.BlinkFileReader.instance.readyState_Getter_(unwrap_jso(this));
+  int get readyState => _blink.BlinkFileReader.instance.readyState_Getter_(this);
   
   @DomName('FileReader.result')
   @DocsEditable()
-  Object get _result => wrap_jso(_blink.BlinkFileReader.instance.result_Getter_(unwrap_jso(this)));
+  Object get _result => (_blink.BlinkFileReader.instance.result_Getter_(this));
   
   @DomName('FileReader.abort')
   @DocsEditable()
-  void abort() => _blink.BlinkFileReader.instance.abort_Callback_0_(unwrap_jso(this));
+  void abort() => _blink.BlinkFileReader.instance.abort_Callback_0_(this);
   
   @DomName('FileReader.readAsArrayBuffer')
   @DocsEditable()
-  void readAsArrayBuffer(Blob blob) => _blink.BlinkFileReader.instance.readAsArrayBuffer_Callback_1_(unwrap_jso(this), unwrap_jso(blob));
+  void readAsArrayBuffer(Blob blob) => _blink.BlinkFileReader.instance.readAsArrayBuffer_Callback_1_(this, blob);
   
   @DomName('FileReader.readAsDataURL')
   @DocsEditable()
-  void readAsDataUrl(Blob blob) => _blink.BlinkFileReader.instance.readAsDataURL_Callback_1_(unwrap_jso(this), unwrap_jso(blob));
+  void readAsDataUrl(Blob blob) => _blink.BlinkFileReader.instance.readAsDataURL_Callback_1_(this, blob);
   
   void readAsText(Blob blob, [String label]) {
     if (label != null) {
-      _blink.BlinkFileReader.instance.readAsText_Callback_2_(unwrap_jso(this), unwrap_jso(blob), label);
+      _blink.BlinkFileReader.instance.readAsText_Callback_2_(this, blob, label);
       return;
     }
-    _blink.BlinkFileReader.instance.readAsText_Callback_1_(unwrap_jso(this), unwrap_jso(blob));
+    _blink.BlinkFileReader.instance.readAsText_Callback_1_(this, blob);
     return;
   }
 
@@ -18966,25 +17682,17 @@
   // To suppress missing implicit constructor warnings.
   factory FileStream._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static FileStream internalCreateFileStream() {
-    return new FileStream._internalWrap();
-  }
 
-  factory FileStream._internalWrap() {
-    return new FileStream.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FileStream.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Stream.type')
   @DocsEditable()
   @Experimental() // untriaged
-  String get type => _blink.BlinkStream.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkStream.instance.type_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -19003,31 +17711,23 @@
   // To suppress missing implicit constructor warnings.
   factory FileSystem._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static FileSystem internalCreateFileSystem() {
-    return new FileSystem._internalWrap();
-  }
 
-  factory FileSystem._internalWrap() {
-    return new FileSystem.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FileSystem.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
   @DomName('DOMFileSystem.name')
   @DocsEditable()
-  String get name => _blink.BlinkDOMFileSystem.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkDOMFileSystem.instance.name_Getter_(this);
   
   @DomName('DOMFileSystem.root')
   @DocsEditable()
-  DirectoryEntry get root => wrap_jso(_blink.BlinkDOMFileSystem.instance.root_Getter_(unwrap_jso(this)));
+  DirectoryEntry get root => _blink.BlinkDOMFileSystem.instance.root_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -19118,11 +17818,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FileWriter internalCreateFileWriter() {
-    return new FileWriter._internalWrap();
-  }
-
-  external factory FileWriter._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FileWriter.internal_() : super.internal_();
@@ -19142,35 +17838,35 @@
 
   @DomName('FileWriter.error')
   @DocsEditable()
-  FileError get error => wrap_jso(_blink.BlinkFileWriter.instance.error_Getter_(unwrap_jso(this)));
+  FileError get error => _blink.BlinkFileWriter.instance.error_Getter_(this);
   
   @DomName('FileWriter.length')
   @DocsEditable()
-  int get length => _blink.BlinkFileWriter.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkFileWriter.instance.length_Getter_(this);
   
   @DomName('FileWriter.position')
   @DocsEditable()
-  int get position => _blink.BlinkFileWriter.instance.position_Getter_(unwrap_jso(this));
+  int get position => _blink.BlinkFileWriter.instance.position_Getter_(this);
   
   @DomName('FileWriter.readyState')
   @DocsEditable()
-  int get readyState => _blink.BlinkFileWriter.instance.readyState_Getter_(unwrap_jso(this));
+  int get readyState => _blink.BlinkFileWriter.instance.readyState_Getter_(this);
   
   @DomName('FileWriter.abort')
   @DocsEditable()
-  void abort() => _blink.BlinkFileWriter.instance.abort_Callback_0_(unwrap_jso(this));
+  void abort() => _blink.BlinkFileWriter.instance.abort_Callback_0_(this);
   
   @DomName('FileWriter.seek')
   @DocsEditable()
-  void seek(int position) => _blink.BlinkFileWriter.instance.seek_Callback_1_(unwrap_jso(this), position);
+  void seek(int position) => _blink.BlinkFileWriter.instance.seek_Callback_1_(this, position);
   
   @DomName('FileWriter.truncate')
   @DocsEditable()
-  void truncate(int size) => _blink.BlinkFileWriter.instance.truncate_Callback_1_(unwrap_jso(this), size);
+  void truncate(int size) => _blink.BlinkFileWriter.instance.truncate_Callback_1_(this, size);
   
   @DomName('FileWriter.write')
   @DocsEditable()
-  void write(Blob data) => _blink.BlinkFileWriter.instance.write_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+  void write(Blob data) => _blink.BlinkFileWriter.instance.write_Callback_1_(this, data);
   
   /// Stream of `abort` events handled by this [FileWriter].
   @DomName('FileWriter.onabort')
@@ -19232,18 +17928,14 @@
   factory FocusEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkFocusEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkFocusEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkFocusEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkFocusEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static FocusEvent internalCreateFocusEvent() {
-    return new FocusEvent._internalWrap();
-  }
-
-  external factory FocusEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FocusEvent.internal_() : super.internal_();
@@ -19251,7 +17943,7 @@
 
   @DomName('FocusEvent.relatedTarget')
   @DocsEditable()
-  EventTarget get relatedTarget => wrap_jso(_blink.BlinkFocusEvent.instance.relatedTarget_Getter_(unwrap_jso(this)));
+  EventTarget get relatedTarget => _blink.BlinkFocusEvent.instance.relatedTarget_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -19273,110 +17965,102 @@
   factory FontFace(String family, Object source, [Map descriptors]) {
     if (descriptors != null) {
       var descriptors_1 = convertDartToNative_Dictionary(descriptors);
-      return wrap_jso(_blink.BlinkFontFace.instance.constructorCallback_3_(family, source, descriptors_1));
+      return _blink.BlinkFontFace.instance.constructorCallback_3_(family, source, descriptors_1);
     }
-    return wrap_jso(_blink.BlinkFontFace.instance.constructorCallback_2_(family, source));
+    return _blink.BlinkFontFace.instance.constructorCallback_2_(family, source);
   }
 
+
   @Deprecated("Internal Use Only")
-  static FontFace internalCreateFontFace() {
-    return new FontFace._internalWrap();
-  }
-
-  factory FontFace._internalWrap() {
-    return new FontFace.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FontFace.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('FontFace.family')
   @DocsEditable()
   @Experimental() // untriaged
-  String get family => _blink.BlinkFontFace.instance.family_Getter_(unwrap_jso(this));
+  String get family => _blink.BlinkFontFace.instance.family_Getter_(this);
   
   @DomName('FontFace.family')
   @DocsEditable()
   @Experimental() // untriaged
-  set family(String value) => _blink.BlinkFontFace.instance.family_Setter_(unwrap_jso(this), value);
+  set family(String value) => _blink.BlinkFontFace.instance.family_Setter_(this, value);
   
   @DomName('FontFace.featureSettings')
   @DocsEditable()
   @Experimental() // untriaged
-  String get featureSettings => _blink.BlinkFontFace.instance.featureSettings_Getter_(unwrap_jso(this));
+  String get featureSettings => _blink.BlinkFontFace.instance.featureSettings_Getter_(this);
   
   @DomName('FontFace.featureSettings')
   @DocsEditable()
   @Experimental() // untriaged
-  set featureSettings(String value) => _blink.BlinkFontFace.instance.featureSettings_Setter_(unwrap_jso(this), value);
+  set featureSettings(String value) => _blink.BlinkFontFace.instance.featureSettings_Setter_(this, value);
   
   @DomName('FontFace.loaded')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get loaded => wrap_jso(_blink.BlinkFontFace.instance.loaded_Getter_(unwrap_jso(this)));
+  Future get loaded => convertNativePromiseToDartFuture(_blink.BlinkFontFace.instance.loaded_Getter_(this));
   
   @DomName('FontFace.status')
   @DocsEditable()
   @Experimental() // untriaged
-  String get status => _blink.BlinkFontFace.instance.status_Getter_(unwrap_jso(this));
+  String get status => _blink.BlinkFontFace.instance.status_Getter_(this);
   
   @DomName('FontFace.stretch')
   @DocsEditable()
   @Experimental() // untriaged
-  String get stretch => _blink.BlinkFontFace.instance.stretch_Getter_(unwrap_jso(this));
+  String get stretch => _blink.BlinkFontFace.instance.stretch_Getter_(this);
   
   @DomName('FontFace.stretch')
   @DocsEditable()
   @Experimental() // untriaged
-  set stretch(String value) => _blink.BlinkFontFace.instance.stretch_Setter_(unwrap_jso(this), value);
+  set stretch(String value) => _blink.BlinkFontFace.instance.stretch_Setter_(this, value);
   
   @DomName('FontFace.style')
   @DocsEditable()
   @Experimental() // untriaged
-  String get style => _blink.BlinkFontFace.instance.style_Getter_(unwrap_jso(this));
+  String get style => _blink.BlinkFontFace.instance.style_Getter_(this);
   
   @DomName('FontFace.style')
   @DocsEditable()
   @Experimental() // untriaged
-  set style(String value) => _blink.BlinkFontFace.instance.style_Setter_(unwrap_jso(this), value);
+  set style(String value) => _blink.BlinkFontFace.instance.style_Setter_(this, value);
   
   @DomName('FontFace.unicodeRange')
   @DocsEditable()
   @Experimental() // untriaged
-  String get unicodeRange => _blink.BlinkFontFace.instance.unicodeRange_Getter_(unwrap_jso(this));
+  String get unicodeRange => _blink.BlinkFontFace.instance.unicodeRange_Getter_(this);
   
   @DomName('FontFace.unicodeRange')
   @DocsEditable()
   @Experimental() // untriaged
-  set unicodeRange(String value) => _blink.BlinkFontFace.instance.unicodeRange_Setter_(unwrap_jso(this), value);
+  set unicodeRange(String value) => _blink.BlinkFontFace.instance.unicodeRange_Setter_(this, value);
   
   @DomName('FontFace.variant')
   @DocsEditable()
   @Experimental() // untriaged
-  String get variant => _blink.BlinkFontFace.instance.variant_Getter_(unwrap_jso(this));
+  String get variant => _blink.BlinkFontFace.instance.variant_Getter_(this);
   
   @DomName('FontFace.variant')
   @DocsEditable()
   @Experimental() // untriaged
-  set variant(String value) => _blink.BlinkFontFace.instance.variant_Setter_(unwrap_jso(this), value);
+  set variant(String value) => _blink.BlinkFontFace.instance.variant_Setter_(this, value);
   
   @DomName('FontFace.weight')
   @DocsEditable()
   @Experimental() // untriaged
-  String get weight => _blink.BlinkFontFace.instance.weight_Getter_(unwrap_jso(this));
+  String get weight => _blink.BlinkFontFace.instance.weight_Getter_(this);
   
   @DomName('FontFace.weight')
   @DocsEditable()
   @Experimental() // untriaged
-  set weight(String value) => _blink.BlinkFontFace.instance.weight_Setter_(unwrap_jso(this), value);
+  set weight(String value) => _blink.BlinkFontFace.instance.weight_Setter_(this, value);
   
   @DomName('FontFace.load')
   @DocsEditable()
   @Experimental() // untriaged
-  Future load() => wrap_jso(_blink.BlinkFontFace.instance.load_Callback_0_(unwrap_jso(this)));
+  Future load() => convertNativePromiseToDartFuture(_blink.BlinkFontFace.instance.load_Callback_0_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -19395,11 +18079,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FontFaceSet internalCreateFontFaceSet() {
-    return new FontFaceSet._internalWrap();
-  }
-
-  external factory FontFaceSet._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FontFaceSet.internal_() : super.internal_();
@@ -19408,48 +18088,48 @@
   @DomName('FontFaceSet.size')
   @DocsEditable()
   @Experimental() // untriaged
-  int get size => _blink.BlinkFontFaceSet.instance.size_Getter_(unwrap_jso(this));
+  int get size => _blink.BlinkFontFaceSet.instance.size_Getter_(this);
   
   @DomName('FontFaceSet.status')
   @DocsEditable()
   @Experimental() // untriaged
-  String get status => _blink.BlinkFontFaceSet.instance.status_Getter_(unwrap_jso(this));
+  String get status => _blink.BlinkFontFaceSet.instance.status_Getter_(this);
   
   @DomName('FontFaceSet.add')
   @DocsEditable()
   @Experimental() // untriaged
-  void add(FontFace fontFace) => _blink.BlinkFontFaceSet.instance.add_Callback_1_(unwrap_jso(this), unwrap_jso(fontFace));
+  void add(FontFace fontFace) => _blink.BlinkFontFaceSet.instance.add_Callback_1_(this, fontFace);
   
   bool check(String font, [String text]) {
     if (text != null) {
-      return _blink.BlinkFontFaceSet.instance.check_Callback_2_(unwrap_jso(this), font, text);
+      return _blink.BlinkFontFaceSet.instance.check_Callback_2_(this, font, text);
     }
-    return _blink.BlinkFontFaceSet.instance.check_Callback_1_(unwrap_jso(this), font);
+    return _blink.BlinkFontFaceSet.instance.check_Callback_1_(this, font);
   }
 
   @DomName('FontFaceSet.clear')
   @DocsEditable()
   @Experimental() // untriaged
-  void clear() => _blink.BlinkFontFaceSet.instance.clear_Callback_0_(unwrap_jso(this));
+  void clear() => _blink.BlinkFontFaceSet.instance.clear_Callback_0_(this);
   
   @DomName('FontFaceSet.delete')
   @DocsEditable()
   @Experimental() // untriaged
-  bool delete(FontFace fontFace) => _blink.BlinkFontFaceSet.instance.delete_Callback_1_(unwrap_jso(this), unwrap_jso(fontFace));
+  bool delete(FontFace fontFace) => _blink.BlinkFontFaceSet.instance.delete_Callback_1_(this, fontFace);
   
   void forEach(FontFaceSetForEachCallback callback, [Object thisArg]) {
     if (thisArg != null) {
-      _blink.BlinkFontFaceSet.instance.forEach_Callback_2_(unwrap_jso(this), unwrap_jso((fontFace, fontFaceAgain, set) => callback(wrap_jso(fontFace), wrap_jso(fontFaceAgain), wrap_jso(set))), thisArg);
+      _blink.BlinkFontFaceSet.instance.forEach_Callback_2_(this, callback, thisArg);
       return;
     }
-    _blink.BlinkFontFaceSet.instance.forEach_Callback_1_(unwrap_jso(this), unwrap_jso((fontFace, fontFaceAgain, set) => callback(wrap_jso(fontFace), wrap_jso(fontFaceAgain), wrap_jso(set))));
+    _blink.BlinkFontFaceSet.instance.forEach_Callback_1_(this, callback);
     return;
   }
 
   @DomName('FontFaceSet.has')
   @DocsEditable()
   @Experimental() // untriaged
-  bool has(FontFace fontFace) => _blink.BlinkFontFaceSet.instance.has_Callback_1_(unwrap_jso(this), unwrap_jso(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
@@ -19478,11 +18158,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FontFaceSetLoadEvent internalCreateFontFaceSetLoadEvent() {
-    return new FontFaceSetLoadEvent._internalWrap();
-  }
-
-  external factory FontFaceSetLoadEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FontFaceSetLoadEvent.internal_() : super.internal_();
@@ -19491,7 +18167,7 @@
   @DomName('FontFaceSetLoadEvent.fontfaces')
   @DocsEditable()
   @Experimental() // untriaged
-  List<FontFace> get fontfaces => wrap_jso(_blink.BlinkFontFaceSetLoadEvent.instance.fontfaces_Getter_(unwrap_jso(this)));
+  List<FontFace> get fontfaces => (_blink.BlinkFontFaceSetLoadEvent.instance.fontfaces_Getter_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -19513,68 +18189,60 @@
 
   @DomName('FormData.FormData')
   @DocsEditable()
-  factory FormData([FormElement form]) => wrap_jso(_create(form));
+  factory FormData([FormElement form]) => _create(form);
 
   @DocsEditable()
-  static FormData _create(form) => wrap_jso(_blink.BlinkFormData.instance.constructorCallback_1_(form));
+  static FormData _create(form) => _blink.BlinkFormData.instance.constructorCallback_1_(form);
+
 
   @Deprecated("Internal Use Only")
-  static FormData internalCreateFormData() {
-    return new FormData._internalWrap();
-  }
-
-  factory FormData._internalWrap() {
-    return new FormData.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FormData.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   /// 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.instance.append_Callback_2_(unwrap_jso(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.instance.append_Callback_3_(unwrap_jso(this), name, unwrap_jso(value), filename);
+  void appendBlob(String name, Blob value, [String filename]) => _blink.BlinkFormData.instance.append_Callback_3_(this, name, value, filename);
   
   @DomName('FormData.delete')
   @DocsEditable()
   @Experimental() // untriaged
-  void delete(String name) => _blink.BlinkFormData.instance.delete_Callback_1_(unwrap_jso(this), name);
+  void delete(String name) => _blink.BlinkFormData.instance.delete_Callback_1_(this, name);
   
   @DomName('FormData.get')
   @DocsEditable()
   @Experimental() // untriaged
-  Object get(String name) => wrap_jso(_blink.BlinkFormData.instance.get_Callback_1_(unwrap_jso(this), name));
+  Object get(String name) => (_blink.BlinkFormData.instance.get_Callback_1_(this, name));
   
   @DomName('FormData.getAll')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Object> getAll(String name) => _blink.BlinkFormData.instance.getAll_Callback_1_(unwrap_jso(this), name);
+  List<Object> getAll(String name) => _blink.BlinkFormData.instance.getAll_Callback_1_(this, name);
   
   @DomName('FormData.has')
   @DocsEditable()
   @Experimental() // untriaged
-  bool has(String name) => _blink.BlinkFormData.instance.has_Callback_1_(unwrap_jso(this), name);
+  bool has(String name) => _blink.BlinkFormData.instance.has_Callback_1_(this, name);
   
   void set(String name, value, [String filename]) {
     if ((value is Blob || value == null) && (name is String || name == null) && filename == null) {
-      _blink.BlinkFormData.instance.set_Callback_2_(unwrap_jso(this), name, unwrap_jso(value));
+      _blink.BlinkFormData.instance.set_Callback_2_(this, name, value);
       return;
     }
     if ((filename is String || filename == null) && (value is Blob || value == null) && (name is String || name == null)) {
-      _blink.BlinkFormData.instance.set_Callback_3_(unwrap_jso(this), name, unwrap_jso(value), filename);
+      _blink.BlinkFormData.instance.set_Callback_3_(this, name, value, filename);
       return;
     }
     if ((value is String || value == null) && (name is String || name == null) && filename == null) {
-      _blink.BlinkFormData.instance.set_Callback_2_(unwrap_jso(this), name, unwrap_jso(value));
+      _blink.BlinkFormData.instance.set_Callback_2_(this, name, value);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -19600,11 +18268,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FormElement internalCreateFormElement() {
-    return new FormElement._internalWrap();
-  }
-
-  external factory FormElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FormElement.internal_() : super.internal_();
@@ -19618,115 +18282,115 @@
 
   @DomName('HTMLFormElement.acceptCharset')
   @DocsEditable()
-  String get acceptCharset => _blink.BlinkHTMLFormElement.instance.acceptCharset_Getter_(unwrap_jso(this));
+  String get acceptCharset => _blink.BlinkHTMLFormElement.instance.acceptCharset_Getter_(this);
   
   @DomName('HTMLFormElement.acceptCharset')
   @DocsEditable()
-  set acceptCharset(String value) => _blink.BlinkHTMLFormElement.instance.acceptCharset_Setter_(unwrap_jso(this), value);
+  set acceptCharset(String value) => _blink.BlinkHTMLFormElement.instance.acceptCharset_Setter_(this, value);
   
   @DomName('HTMLFormElement.action')
   @DocsEditable()
-  String get action => _blink.BlinkHTMLFormElement.instance.action_Getter_(unwrap_jso(this));
+  String get action => _blink.BlinkHTMLFormElement.instance.action_Getter_(this);
   
   @DomName('HTMLFormElement.action')
   @DocsEditable()
-  set action(String value) => _blink.BlinkHTMLFormElement.instance.action_Setter_(unwrap_jso(this), value);
+  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.instance.autocomplete_Getter_(unwrap_jso(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()
-  set autocomplete(String value) => _blink.BlinkHTMLFormElement.instance.autocomplete_Setter_(unwrap_jso(this), value);
+  set autocomplete(String value) => _blink.BlinkHTMLFormElement.instance.autocomplete_Setter_(this, value);
   
   @DomName('HTMLFormElement.encoding')
   @DocsEditable()
-  String get encoding => _blink.BlinkHTMLFormElement.instance.encoding_Getter_(unwrap_jso(this));
+  String get encoding => _blink.BlinkHTMLFormElement.instance.encoding_Getter_(this);
   
   @DomName('HTMLFormElement.encoding')
   @DocsEditable()
-  set encoding(String value) => _blink.BlinkHTMLFormElement.instance.encoding_Setter_(unwrap_jso(this), value);
+  set encoding(String value) => _blink.BlinkHTMLFormElement.instance.encoding_Setter_(this, value);
   
   @DomName('HTMLFormElement.enctype')
   @DocsEditable()
-  String get enctype => _blink.BlinkHTMLFormElement.instance.enctype_Getter_(unwrap_jso(this));
+  String get enctype => _blink.BlinkHTMLFormElement.instance.enctype_Getter_(this);
   
   @DomName('HTMLFormElement.enctype')
   @DocsEditable()
-  set enctype(String value) => _blink.BlinkHTMLFormElement.instance.enctype_Setter_(unwrap_jso(this), value);
+  set enctype(String value) => _blink.BlinkHTMLFormElement.instance.enctype_Setter_(this, value);
   
   @DomName('HTMLFormElement.length')
   @DocsEditable()
-  int get length => _blink.BlinkHTMLFormElement.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkHTMLFormElement.instance.length_Getter_(this);
   
   @DomName('HTMLFormElement.method')
   @DocsEditable()
-  String get method => _blink.BlinkHTMLFormElement.instance.method_Getter_(unwrap_jso(this));
+  String get method => _blink.BlinkHTMLFormElement.instance.method_Getter_(this);
   
   @DomName('HTMLFormElement.method')
   @DocsEditable()
-  set method(String value) => _blink.BlinkHTMLFormElement.instance.method_Setter_(unwrap_jso(this), value);
+  set method(String value) => _blink.BlinkHTMLFormElement.instance.method_Setter_(this, value);
   
   @DomName('HTMLFormElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLFormElement.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkHTMLFormElement.instance.name_Getter_(this);
   
   @DomName('HTMLFormElement.name')
   @DocsEditable()
-  set name(String value) => _blink.BlinkHTMLFormElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLFormElement.instance.name_Setter_(this, value);
   
   @DomName('HTMLFormElement.noValidate')
   @DocsEditable()
-  bool get noValidate => _blink.BlinkHTMLFormElement.instance.noValidate_Getter_(unwrap_jso(this));
+  bool get noValidate => _blink.BlinkHTMLFormElement.instance.noValidate_Getter_(this);
   
   @DomName('HTMLFormElement.noValidate')
   @DocsEditable()
-  set noValidate(bool value) => _blink.BlinkHTMLFormElement.instance.noValidate_Setter_(unwrap_jso(this), value);
+  set noValidate(bool value) => _blink.BlinkHTMLFormElement.instance.noValidate_Setter_(this, value);
   
   @DomName('HTMLFormElement.target')
   @DocsEditable()
-  String get target => _blink.BlinkHTMLFormElement.instance.target_Getter_(unwrap_jso(this));
+  String get target => _blink.BlinkHTMLFormElement.instance.target_Getter_(this);
   
   @DomName('HTMLFormElement.target')
   @DocsEditable()
-  set target(String value) => _blink.BlinkHTMLFormElement.instance.target_Setter_(unwrap_jso(this), value);
+  set target(String value) => _blink.BlinkHTMLFormElement.instance.target_Setter_(this, value);
   
   @DomName('HTMLFormElement.__getter__')
   @DocsEditable()
-  Object __getter__(String name) => wrap_jso(_blink.BlinkHTMLFormElement.instance.$__getter___Callback_1_(unwrap_jso(this), name));
+  Object __getter__(String name) => (_blink.BlinkHTMLFormElement.instance.$__getter___Callback_1_(this, name));
   
   @DomName('HTMLFormElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLFormElement.instance.checkValidity_Callback_0_(unwrap_jso(this));
+  bool checkValidity() => _blink.BlinkHTMLFormElement.instance.checkValidity_Callback_0_(this);
   
   @DomName('HTMLFormElement.item')
   @DocsEditable()
   @Experimental() // untriaged
-  Element item(int index) => wrap_jso(_blink.BlinkHTMLFormElement.instance.item_Callback_1_(unwrap_jso(this), index));
+  Element item(int index) => _blink.BlinkHTMLFormElement.instance.item_Callback_1_(this, index);
   
   @DomName('HTMLFormElement.reportValidity')
   @DocsEditable()
   @Experimental() // untriaged
-  bool reportValidity() => _blink.BlinkHTMLFormElement.instance.reportValidity_Callback_0_(unwrap_jso(this));
+  bool reportValidity() => _blink.BlinkHTMLFormElement.instance.reportValidity_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.instance.requestAutocomplete_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(details));
+  void requestAutocomplete(Map details) => _blink.BlinkHTMLFormElement.instance.requestAutocomplete_Callback_1_(this, convertDartToNative_Dictionary(details));
   
   @DomName('HTMLFormElement.reset')
   @DocsEditable()
-  void reset() => _blink.BlinkHTMLFormElement.instance.reset_Callback_0_(unwrap_jso(this));
+  void reset() => _blink.BlinkHTMLFormElement.instance.reset_Callback_0_(this);
   
   @DomName('HTMLFormElement.submit')
   @DocsEditable()
-  void submit() => _blink.BlinkHTMLFormElement.instance.submit_Callback_0_(unwrap_jso(this));
+  void submit() => _blink.BlinkHTMLFormElement.instance.submit_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -19754,50 +18418,42 @@
   // To suppress missing implicit constructor warnings.
   factory Gamepad._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Gamepad internalCreateGamepad() {
-    return new Gamepad._internalWrap();
-  }
 
-  factory Gamepad._internalWrap() {
-    return new Gamepad.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Gamepad.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Gamepad.axes')
   @DocsEditable()
-  List<num> get axes => wrap_jso(_blink.BlinkGamepad.instance.axes_Getter_(unwrap_jso(this)));
+  List<num> get axes => _blink.BlinkGamepad.instance.axes_Getter_(this);
   
   @DomName('Gamepad.buttons')
   @DocsEditable()
-  List<GamepadButton> get buttons => wrap_jso(_blink.BlinkGamepad.instance.buttons_Getter_(unwrap_jso(this)));
+  List<GamepadButton> get buttons => (_blink.BlinkGamepad.instance.buttons_Getter_(this));
   
   @DomName('Gamepad.connected')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get connected => _blink.BlinkGamepad.instance.connected_Getter_(unwrap_jso(this));
+  bool get connected => _blink.BlinkGamepad.instance.connected_Getter_(this);
   
   @DomName('Gamepad.id')
   @DocsEditable()
-  String get id => _blink.BlinkGamepad.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkGamepad.instance.id_Getter_(this);
   
   @DomName('Gamepad.index')
   @DocsEditable()
-  int get index => _blink.BlinkGamepad.instance.index_Getter_(unwrap_jso(this));
+  int get index => _blink.BlinkGamepad.instance.index_Getter_(this);
   
   @DomName('Gamepad.mapping')
   @DocsEditable()
   @Experimental() // untriaged
-  String get mapping => _blink.BlinkGamepad.instance.mapping_Getter_(unwrap_jso(this));
+  String get mapping => _blink.BlinkGamepad.instance.mapping_Getter_(this);
   
   @DomName('Gamepad.timestamp')
   @DocsEditable()
-  int get timestamp => _blink.BlinkGamepad.instance.timestamp_Getter_(unwrap_jso(this));
+  int get timestamp => _blink.BlinkGamepad.instance.timestamp_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -19814,30 +18470,22 @@
   // To suppress missing implicit constructor warnings.
   factory GamepadButton._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static GamepadButton internalCreateGamepadButton() {
-    return new GamepadButton._internalWrap();
-  }
 
-  factory GamepadButton._internalWrap() {
-    return new GamepadButton.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   GamepadButton.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('GamepadButton.pressed')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get pressed => _blink.BlinkGamepadButton.instance.pressed_Getter_(unwrap_jso(this));
+  bool get pressed => _blink.BlinkGamepadButton.instance.pressed_Getter_(this);
   
   @DomName('GamepadButton.value')
   @DocsEditable()
   @Experimental() // untriaged
-  num get value => _blink.BlinkGamepadButton.instance.value_Getter_(unwrap_jso(this));
+  num get value => _blink.BlinkGamepadButton.instance.value_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -19859,18 +18507,14 @@
   factory GamepadEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkGamepadEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkGamepadEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkGamepadEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkGamepadEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static GamepadEvent internalCreateGamepadEvent() {
-    return new GamepadEvent._internalWrap();
-  }
-
-  external factory GamepadEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   GamepadEvent.internal_() : super.internal_();
@@ -19879,7 +18523,7 @@
   @DomName('GamepadEvent.gamepad')
   @DocsEditable()
   @Experimental() // untriaged
-  Gamepad get gamepad => wrap_jso(_blink.BlinkGamepadEvent.instance.gamepad_Getter_(unwrap_jso(this)));
+  Gamepad get gamepad => _blink.BlinkGamepadEvent.instance.gamepad_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -19896,35 +18540,27 @@
   // To suppress missing implicit constructor warnings.
   factory Geofencing._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Geofencing internalCreateGeofencing() {
-    return new Geofencing._internalWrap();
-  }
 
-  factory Geofencing._internalWrap() {
-    return new Geofencing.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Geofencing.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Geofencing.getRegisteredRegions')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getRegisteredRegions() => wrap_jso(_blink.BlinkGeofencing.instance.getRegisteredRegions_Callback_0_(unwrap_jso(this)));
+  Future getRegisteredRegions() => convertNativePromiseToDartFuture(_blink.BlinkGeofencing.instance.getRegisteredRegions_Callback_0_(this));
   
   @DomName('Geofencing.registerRegion')
   @DocsEditable()
   @Experimental() // untriaged
-  Future registerRegion(GeofencingRegion region) => wrap_jso(_blink.BlinkGeofencing.instance.registerRegion_Callback_1_(unwrap_jso(this), unwrap_jso(region)));
+  Future registerRegion(GeofencingRegion region) => convertNativePromiseToDartFuture(_blink.BlinkGeofencing.instance.registerRegion_Callback_1_(this, region));
   
   @DomName('Geofencing.unregisterRegion')
   @DocsEditable()
   @Experimental() // untriaged
-  Future unregisterRegion(String regionId) => wrap_jso(_blink.BlinkGeofencing.instance.unregisterRegion_Callback_1_(unwrap_jso(this), regionId));
+  Future unregisterRegion(String regionId) => convertNativePromiseToDartFuture(_blink.BlinkGeofencing.instance.unregisterRegion_Callback_1_(this, regionId));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -19943,11 +18579,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static GeofencingEvent internalCreateGeofencingEvent() {
-    return new GeofencingEvent._internalWrap();
-  }
-
-  external factory GeofencingEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   GeofencingEvent.internal_() : super.internal_();
@@ -19956,12 +18588,12 @@
   @DomName('GeofencingEvent.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkGeofencingEvent.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkGeofencingEvent.instance.id_Getter_(this);
   
   @DomName('GeofencingEvent.region')
   @DocsEditable()
   @Experimental() // untriaged
-  GeofencingRegion get region => wrap_jso(_blink.BlinkGeofencingEvent.instance.region_Getter_(unwrap_jso(this)));
+  GeofencingRegion get region => _blink.BlinkGeofencingEvent.instance.region_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -19978,25 +18610,17 @@
   // To suppress missing implicit constructor warnings.
   factory GeofencingRegion._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static GeofencingRegion internalCreateGeofencingRegion() {
-    return new GeofencingRegion._internalWrap();
-  }
 
-  factory GeofencingRegion._internalWrap() {
-    return new GeofencingRegion.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   GeofencingRegion.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('GeofencingRegion.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkGeofencingRegion.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkGeofencingRegion.instance.id_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -20082,46 +18706,38 @@
   // To suppress missing implicit constructor warnings.
   factory Geolocation._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Geolocation internalCreateGeolocation() {
-    return new Geolocation._internalWrap();
-  }
 
-  factory Geolocation._internalWrap() {
-    return new Geolocation.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Geolocation.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Geolocation.clearWatch')
   @DocsEditable()
-  void _clearWatch(int watchID) => _blink.BlinkGeolocation.instance.clearWatch_Callback_1_(unwrap_jso(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.instance.getCurrentPosition_Callback_3_(unwrap_jso(this), unwrap_jso((position) => successCallback(wrap_jso(position))), unwrap_jso((error) => errorCallback(wrap_jso(error))), convertDartToNative_Dictionary(options));
+      _blink.BlinkGeolocation.instance.getCurrentPosition_Callback_3_(this, successCallback, errorCallback, convertDartToNative_Dictionary(options));
       return;
     }
     if (errorCallback != null) {
-      _blink.BlinkGeolocation.instance.getCurrentPosition_Callback_2_(unwrap_jso(this), unwrap_jso((position) => successCallback(wrap_jso(position))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkGeolocation.instance.getCurrentPosition_Callback_2_(this, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkGeolocation.instance.getCurrentPosition_Callback_1_(unwrap_jso(this), unwrap_jso((position) => successCallback(wrap_jso(position))));
+    _blink.BlinkGeolocation.instance.getCurrentPosition_Callback_1_(this, successCallback);
     return;
   }
 
   int _watchPosition(_PositionCallback successCallback, [_PositionErrorCallback errorCallback, Map options]) {
     if (options != null) {
-      return _blink.BlinkGeolocation.instance.watchPosition_Callback_3_(unwrap_jso(this), unwrap_jso((position) => successCallback(wrap_jso(position))), unwrap_jso((error) => errorCallback(wrap_jso(error))), convertDartToNative_Dictionary(options));
+      return _blink.BlinkGeolocation.instance.watchPosition_Callback_3_(this, successCallback, errorCallback, convertDartToNative_Dictionary(options));
     }
     if (errorCallback != null) {
-      return _blink.BlinkGeolocation.instance.watchPosition_Callback_2_(unwrap_jso(this), unwrap_jso((position) => successCallback(wrap_jso(position))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      return _blink.BlinkGeolocation.instance.watchPosition_Callback_2_(this, successCallback, errorCallback);
     }
-    return _blink.BlinkGeolocation.instance.watchPosition_Callback_1_(unwrap_jso(this), unwrap_jso((position) => successCallback(wrap_jso(position))));
+    return _blink.BlinkGeolocation.instance.watchPosition_Callback_1_(this, successCallback);
   }
 }
 
@@ -20139,28 +18755,20 @@
   // To suppress missing implicit constructor warnings.
   factory Geoposition._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Geoposition internalCreateGeoposition() {
-    return new Geoposition._internalWrap();
-  }
 
-  factory Geoposition._internalWrap() {
-    return new Geoposition.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Geoposition.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Geoposition.coords')
   @DocsEditable()
-  Coordinates get coords => wrap_jso(_blink.BlinkGeoposition.instance.coords_Getter_(unwrap_jso(this)));
+  Coordinates get coords => _blink.BlinkGeoposition.instance.coords_Getter_(this);
   
   @DomName('Geoposition.timestamp')
   @DocsEditable()
-  int get timestamp => _blink.BlinkGeoposition.instance.timestamp_Getter_(unwrap_jso(this));
+  int get timestamp => _blink.BlinkGeoposition.instance.timestamp_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -20726,11 +19334,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static HRElement internalCreateHRElement() {
-    return new HRElement._internalWrap();
-  }
-
-  external factory HRElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   HRElement.internal_() : super.internal_();
@@ -20745,12 +19349,12 @@
   @DomName('HTMLHRElement.color')
   @DocsEditable()
   @Experimental() // untriaged
-  String get color => _blink.BlinkHTMLHRElement.instance.color_Getter_(unwrap_jso(this));
+  String get color => _blink.BlinkHTMLHRElement.instance.color_Getter_(this);
   
   @DomName('HTMLHRElement.color')
   @DocsEditable()
   @Experimental() // untriaged
-  set color(String value) => _blink.BlinkHTMLHRElement.instance.color_Setter_(unwrap_jso(this), value);
+  set color(String value) => _blink.BlinkHTMLHRElement.instance.color_Setter_(this, value);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -20782,18 +19386,14 @@
   factory HashChangeEvent._(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkHashChangeEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkHashChangeEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkHashChangeEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkHashChangeEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static HashChangeEvent internalCreateHashChangeEvent() {
-    return new HashChangeEvent._internalWrap();
-  }
-
-  external factory HashChangeEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   HashChangeEvent.internal_() : super.internal_();
@@ -20804,15 +19404,15 @@
 
   @DomName('HashChangeEvent.newURL')
   @DocsEditable()
-  String get newUrl => _blink.BlinkHashChangeEvent.instance.newURL_Getter_(unwrap_jso(this));
+  String get newUrl => _blink.BlinkHashChangeEvent.instance.newURL_Getter_(this);
   
   @DomName('HashChangeEvent.oldURL')
   @DocsEditable()
-  String get oldUrl => _blink.BlinkHashChangeEvent.instance.oldURL_Getter_(unwrap_jso(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.instance.initHashChangeEvent_Callback_5_(unwrap_jso(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
@@ -20834,11 +19434,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static HeadElement internalCreateHeadElement() {
-    return new HeadElement._internalWrap();
-  }
-
-  external factory HeadElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   HeadElement.internal_() : super.internal_();
@@ -20869,36 +19465,28 @@
   @DocsEditable()
   factory Headers([input]) {
     if (input == null) {
-      return wrap_jso(_blink.BlinkHeaders.instance.constructorCallback_0_());
+      return _blink.BlinkHeaders.instance.constructorCallback_0_();
     }
     if ((input is Headers)) {
-      return wrap_jso(_blink.BlinkHeaders.instance.constructorCallback_1_(input));
+      return _blink.BlinkHeaders.instance.constructorCallback_1_(input);
     }
     if ((input is Map)) {
       var input_1 = convertDartToNative_Dictionary(input);
-      return wrap_jso(_blink.BlinkHeaders.instance.constructorCallback_1_(input_1));
+      return _blink.BlinkHeaders.instance.constructorCallback_1_(input_1);
     }
     if ((input is List<Object>)) {
-      return wrap_jso(_blink.BlinkHeaders.instance.constructorCallback_1_(input));
+      return _blink.BlinkHeaders.instance.constructorCallback_1_(input);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @Deprecated("Internal Use Only")
-  static Headers internalCreateHeaders() {
-    return new Headers._internalWrap();
-  }
 
-  factory Headers._internalWrap() {
-    return new Headers.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Headers.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -20939,11 +19527,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static HeadingElement internalCreateHeadingElement() {
-    return new HeadingElement._internalWrap();
-  }
-
-  external factory HeadingElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   HeadingElement.internal_() : super.internal_();
@@ -20977,66 +19561,58 @@
   // To suppress missing implicit constructor warnings.
   factory History._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static History internalCreateHistory() {
-    return new History._internalWrap();
-  }
 
-  factory History._internalWrap() {
-    return new History.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   History.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('History.length')
   @DocsEditable()
-  int get length => _blink.BlinkHistory.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkHistory.instance.length_Getter_(this);
   
   @DomName('History.options')
   @DocsEditable()
   @Experimental() // untriaged
-   get options => convertNativeDictionaryToDartDictionary(wrap_jso(_blink.BlinkHistory.instance.options_Getter_(unwrap_jso(this))));
+   get options => convertNativeDictionaryToDartDictionary((_blink.BlinkHistory.instance.options_Getter_(this)));
   
   @DomName('History.state')
   @DocsEditable()
-  dynamic get state => wrap_jso(_blink.BlinkHistory.instance.state_Getter_(unwrap_jso(this)));
+  dynamic get state => convertNativeToDart_SerializedScriptValue(_blink.BlinkHistory.instance.state_Getter_(this));
   
   @DomName('History.back')
   @DocsEditable()
-  void back() => _blink.BlinkHistory.instance.back_Callback_0_(unwrap_jso(this));
+  void back() => _blink.BlinkHistory.instance.back_Callback_0_(this);
   
   @DomName('History.forward')
   @DocsEditable()
-  void forward() => _blink.BlinkHistory.instance.forward_Callback_0_(unwrap_jso(this));
+  void forward() => _blink.BlinkHistory.instance.forward_Callback_0_(this);
   
   void go([int delta]) {
     if (delta != null) {
-      _blink.BlinkHistory.instance.go_Callback_1_(unwrap_jso(this), delta);
+      _blink.BlinkHistory.instance.go_Callback_1_(this, delta);
       return;
     }
-    _blink.BlinkHistory.instance.go_Callback_0_(unwrap_jso(this));
+    _blink.BlinkHistory.instance.go_Callback_0_(this);
     return;
   }
 
   void pushState(/*SerializedScriptValue*/ data, String title, String url, [Map options]) {
     if (options != null) {
-      _blink.BlinkHistory.instance.pushState_Callback_4_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(data), title, url, convertDartToNative_Dictionary(options));
+      _blink.BlinkHistory.instance.pushState_Callback_4_(this, convertDartToNative_SerializedScriptValue(data), title, url, convertDartToNative_Dictionary(options));
       return;
     }
-    _blink.BlinkHistory.instance.pushState_Callback_3_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(data), title, url);
+    _blink.BlinkHistory.instance.pushState_Callback_3_(this, convertDartToNative_SerializedScriptValue(data), title, url);
     return;
   }
 
   void replaceState(/*SerializedScriptValue*/ data, String title, String url, [Map options]) {
     if (options != null) {
-      _blink.BlinkHistory.instance.replaceState_Callback_4_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(data), title, url, convertDartToNative_Dictionary(options));
+      _blink.BlinkHistory.instance.replaceState_Callback_4_(this, convertDartToNative_SerializedScriptValue(data), title, url, convertDartToNative_Dictionary(options));
       return;
     }
-    _blink.BlinkHistory.instance.replaceState_Callback_3_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(data), title, url);
+    _blink.BlinkHistory.instance.replaceState_Callback_3_(this, convertDartToNative_SerializedScriptValue(data), title, url);
     return;
   }
 }
@@ -21056,11 +19632,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static HmdvrDevice internalCreateHmdvrDevice() {
-    return new HmdvrDevice._internalWrap();
-  }
-
-  external factory HmdvrDevice._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   HmdvrDevice.internal_() : super.internal_();
@@ -21069,18 +19641,18 @@
   @DomName('HMDVRDevice.getEyeParameters')
   @DocsEditable()
   @Experimental() // untriaged
-  VREyeParameters getEyeParameters(String whichEye) => wrap_jso(_blink.BlinkHMDVRDevice.instance.getEyeParameters_Callback_1_(unwrap_jso(this), whichEye));
+  VREyeParameters getEyeParameters(String whichEye) => _blink.BlinkHMDVRDevice.instance.getEyeParameters_Callback_1_(this, whichEye);
   
   void setFieldOfView([VRFieldOfView leftFov, VRFieldOfView rightFov]) {
     if (rightFov != null) {
-      _blink.BlinkHMDVRDevice.instance.setFieldOfView_Callback_2_(unwrap_jso(this), unwrap_jso(leftFov), unwrap_jso(rightFov));
+      _blink.BlinkHMDVRDevice.instance.setFieldOfView_Callback_2_(this, leftFov, rightFov);
       return;
     }
     if (leftFov != null) {
-      _blink.BlinkHMDVRDevice.instance.setFieldOfView_Callback_1_(unwrap_jso(this), unwrap_jso(leftFov));
+      _blink.BlinkHMDVRDevice.instance.setFieldOfView_Callback_1_(this, leftFov);
       return;
     }
-    _blink.BlinkHMDVRDevice.instance.setFieldOfView_Callback_0_(unwrap_jso(this));
+    _blink.BlinkHMDVRDevice.instance.setFieldOfView_Callback_0_(this);
     return;
   }
 
@@ -21098,32 +19670,24 @@
   // To suppress missing implicit constructor warnings.
   factory HtmlCollection._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static HtmlCollection internalCreateHtmlCollection() {
-    return new HtmlCollection._internalWrap();
-  }
 
-  factory HtmlCollection._internalWrap() {
-    return new HtmlCollection.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   HtmlCollection.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('HTMLCollection.length')
   @DocsEditable()
-  int get length => _blink.BlinkHTMLCollection.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkHTMLCollection.instance.length_Getter_(this);
   
   Node operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkHTMLCollection.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  Node _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkHTMLCollection.instance.item_Callback_1_(unwrap_jso(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.");
@@ -21165,11 +19729,11 @@
 
   @DomName('HTMLCollection.item')
   @DocsEditable()
-  Element item(int index) => wrap_jso(_blink.BlinkHTMLCollection.instance.item_Callback_1_(unwrap_jso(this), index));
+  Element item(int index) => _blink.BlinkHTMLCollection.instance.item_Callback_1_(this, index);
   
   @DomName('HTMLCollection.namedItem')
   @DocsEditable()
-  Element namedItem(String name) => wrap_jso(_blink.BlinkHTMLCollection.instance.namedItem_Callback_1_(unwrap_jso(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
@@ -21186,11 +19750,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static HtmlDocument internalCreateHtmlDocument() {
-    return new HtmlDocument._internalWrap();
-  }
-
-  external factory HtmlDocument._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   HtmlDocument.internal_() : super.internal_();
@@ -21579,9 +20139,6 @@
       }
       var elemProto = js.JsNative.callMethod(js.JsNative.getProperty(js.context, 'Object'), "create", [js.JsNative.getProperty(baseElement, 'prototype')]);
 
-      // Remember for any upgrading done in wrap_jso.
-      addCustomElementType(tag, customElementClass, extendsTag);
-
       // TODO(terry): Hack to stop recursion re-creating custom element when the
       //              created() constructor of the custom element does e.g.,
       //
@@ -21593,77 +20150,42 @@
       //              until stack overflow.
       //
       //              See https://github.com/dart-lang/sdk/issues/23666
-      int creating = 0;
+      int creating = 0; // TODO(jacobr): I think I broke thise case. Will fix monday.
 
       // If any JS code is hooked we want to call it too.
-      var oldCreatedCallback = elemProto['createdCallback'];
-      var oldAttributeChangedCallback = elemProto['attributeChangedCallback'];
-      var oldAttachedCallback = elemProto['attachedCallback'];
-      var oldDetachedCallback = elemProto['detachedCallback'];
+      var oldCreatedCallback = js.JsNative.getProperty(elemProto, 'createdCallback');
+      var oldAttributeChangedCallback = js.JsNative.getProperty(elemProto, 'attributeChangedCallback');
+      var oldAttachedCallback = js.JsNative.getProperty(elemProto, 'attachedCallback');
+      var oldDetachedCallback = js.JsNative.getProperty(elemProto, 'detachedCallback');
 
-      // TODO(jacobr): warning:
-      elemProto['createdCallback'] = js.JsNative.withThis(($this) {
-        if (_getJSClassName(reflectClass(customElementClass).superclass) != null && creating < 2) {
-          creating++;
-
-          var dartClass;
-          try {
-            if (extendsTag != null) {
-              // If we're extending a native element then create that element.
-              // Then upgrade that element to the customElementClass through
-              // normal flow.
-              dartClass = document.createElement(extendsTag);
-              js.setDartHtmlWrapperFor($this, dartClass);
-              dartClass.blink_jsObject = $this;
-            }
-
-            // Upgrade to the CustomElement Dart class.
-            dartClass = _blink.Blink_Utils.constructElement(customElementClass, $this);
-          } catch (e) {
-            // Got a problem make it an HtmlElement and rethrow the error.
-            dartClass = HtmlElement.internalCreateHtmlElement();
-            // We need to remember the JS object (because constructElement failed
-            // it normally sets up the blink_jsObject.
-            dartClass.blink_jsObject = $this;
-
-            // Mark to only try this once don't try upgrading from HtmlElement
-            // to the user's Dart class - we had a problem.
-            dartClass._badUpgrade();
-            throw e;
-          } finally {
-            // Need to remember the Dart class that was created for this custom so
-            // return it and setup the blink_jsObject to the $this that we'll be working
-            // with as we talk to blink.
-            js.setDartHtmlWrapperFor($this, dartClass);
-
-            creating--;
-          }
-        }
-
+      js.JsNative.setProperty(elemProto, 'createdCallback', js.allowInteropCaptureThis(($this) {
+        // The created callback has already been called by the very act of passing a JS
+        // custom element from JS to Dart.
         if (oldCreatedCallback != null)
-          oldCreatedCallback.apply([], thisArg: unwrap_jso($this));
-      });
-      elemProto['attributeChangedCallback'] = new js.JsFunction.withThis(($this, attrName, oldVal, newVal) {
+          oldCreatedCallback.apply([], thisArg: $this);
+      }));
+      js.JsNative.setProperty(elemProto, 'attributeChangedCallback', js.allowInteropCaptureThis(($this, attrName, oldVal, newVal) {
         $this.attributeChanged(attrName, oldVal, newVal);
 
         if (oldAttributeChangedCallback != null)
-          oldAttributeChangedCallback.apply([], thisArg: unwrap_jso($this));
-      });
-      elemProto['attachedCallback'] = new js.JsFunction.withThis(($this) {
+          oldAttributeChangedCallback.apply([], thisArg: $this);
+      }));
+      js.JsNative.setProperty(elemProto, 'attachedCallback', js.allowInteropCaptureThis(($this) {
         $this.attached();
 
         if (oldAttachedCallback != null)
-          oldAttachedCallback.apply([], thisArg: unwrap_jso($this));
-      });
-      elemProto['detachedCallback'] = new js.JsFunction.withThis(($this) {
+          oldAttachedCallback.apply([], thisArg: $this);
+      }));
+      js.JsNative.setProperty(elemProto, 'detachedCallback', js.allowInteropCaptureThis(($this) {
         $this.detached();
 
         if (oldDetachedCallback != null)
-          oldDetachedCallback.apply([], thisArg: unwrap_jso($this));
-      });
+          oldDetachedCallback.apply([], thisArg: $this);
+      }));
       // document.registerElement('x-foo', {prototype: elemProto, extends: extendsTag});
       var jsMap = new js.JsObject.jsify({'prototype': elemProto, 'extends': extendsTag});
-      js.JsNative.callMethod(js.JsNative.getProperty(js.context, 'document'), 'registerElement', [tag, jsMap]);
+      _blink.Blink_Utils.defineInterceptorCustomElement(elemProto, customElementClass);
+      js.JsNative.callMethod(document, 'registerElement', [tag, jsMap]);
     }
   }
 
@@ -21986,11 +20508,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static HtmlElement internalCreateHtmlElement() {
-    return new HtmlElement._internalWrap();
-  }
-
-  external factory HtmlElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   HtmlElement.internal_() : super.internal_();
@@ -22004,98 +20522,98 @@
 
   @DomName('HTMLElement.contentEditable')
   @DocsEditable()
-  String get contentEditable => _blink.BlinkHTMLElement.instance.contentEditable_Getter_(unwrap_jso(this));
+  String get contentEditable => _blink.BlinkHTMLElement.instance.contentEditable_Getter_(this);
   
   @DomName('HTMLElement.contentEditable')
   @DocsEditable()
-  set contentEditable(String value) => _blink.BlinkHTMLElement.instance.contentEditable_Setter_(unwrap_jso(this), value);
+  set contentEditable(String value) => _blink.BlinkHTMLElement.instance.contentEditable_Setter_(this, value);
   
   @DomName('HTMLElement.contextMenu')
   @DocsEditable()
   @Experimental() // untriaged
-  MenuElement get contextMenu => wrap_jso(_blink.BlinkHTMLElement.instance.contextMenu_Getter_(unwrap_jso(this)));
+  MenuElement get contextMenu => _blink.BlinkHTMLElement.instance.contextMenu_Getter_(this);
   
   @DomName('HTMLElement.contextMenu')
   @DocsEditable()
   @Experimental() // untriaged
-  set contextMenu(MenuElement value) => _blink.BlinkHTMLElement.instance.contextMenu_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set contextMenu(MenuElement value) => _blink.BlinkHTMLElement.instance.contextMenu_Setter_(this, value);
   
   @DomName('HTMLElement.dir')
   @DocsEditable()
-  String get dir => _blink.BlinkHTMLElement.instance.dir_Getter_(unwrap_jso(this));
+  String get dir => _blink.BlinkHTMLElement.instance.dir_Getter_(this);
   
   @DomName('HTMLElement.dir')
   @DocsEditable()
-  set dir(String value) => _blink.BlinkHTMLElement.instance.dir_Setter_(unwrap_jso(this), value);
+  set dir(String value) => _blink.BlinkHTMLElement.instance.dir_Setter_(this, value);
   
   @DomName('HTMLElement.draggable')
   @DocsEditable()
-  bool get draggable => _blink.BlinkHTMLElement.instance.draggable_Getter_(unwrap_jso(this));
+  bool get draggable => _blink.BlinkHTMLElement.instance.draggable_Getter_(this);
   
   @DomName('HTMLElement.draggable')
   @DocsEditable()
-  set draggable(bool value) => _blink.BlinkHTMLElement.instance.draggable_Setter_(unwrap_jso(this), value);
+  set draggable(bool value) => _blink.BlinkHTMLElement.instance.draggable_Setter_(this, value);
   
   @DomName('HTMLElement.hidden')
   @DocsEditable()
-  bool get hidden => _blink.BlinkHTMLElement.instance.hidden_Getter_(unwrap_jso(this));
+  bool get hidden => _blink.BlinkHTMLElement.instance.hidden_Getter_(this);
   
   @DomName('HTMLElement.hidden')
   @DocsEditable()
-  set hidden(bool value) => _blink.BlinkHTMLElement.instance.hidden_Setter_(unwrap_jso(this), value);
+  set hidden(bool value) => _blink.BlinkHTMLElement.instance.hidden_Setter_(this, value);
   
   @DomName('HTMLElement.isContentEditable')
   @DocsEditable()
-  bool get isContentEditable => _blink.BlinkHTMLElement.instance.isContentEditable_Getter_(unwrap_jso(this));
+  bool get isContentEditable => _blink.BlinkHTMLElement.instance.isContentEditable_Getter_(this);
   
   @DomName('HTMLElement.lang')
   @DocsEditable()
-  String get lang => _blink.BlinkHTMLElement.instance.lang_Getter_(unwrap_jso(this));
+  String get lang => _blink.BlinkHTMLElement.instance.lang_Getter_(this);
   
   @DomName('HTMLElement.lang')
   @DocsEditable()
-  set lang(String value) => _blink.BlinkHTMLElement.instance.lang_Setter_(unwrap_jso(this), value);
+  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.instance.spellcheck_Getter_(unwrap_jso(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
-  set spellcheck(bool value) => _blink.BlinkHTMLElement.instance.spellcheck_Setter_(unwrap_jso(this), value);
+  set spellcheck(bool value) => _blink.BlinkHTMLElement.instance.spellcheck_Setter_(this, value);
   
   @DomName('HTMLElement.style')
   @DocsEditable()
   @Experimental() // untriaged
-  CssStyleDeclaration get style => wrap_jso(_blink.BlinkHTMLElement.instance.style_Getter_(unwrap_jso(this)));
+  CssStyleDeclaration get style => _blink.BlinkHTMLElement.instance.style_Getter_(this);
   
   @DomName('HTMLElement.tabIndex')
   @DocsEditable()
-  int get tabIndex => _blink.BlinkHTMLElement.instance.tabIndex_Getter_(unwrap_jso(this));
+  int get tabIndex => _blink.BlinkHTMLElement.instance.tabIndex_Getter_(this);
   
   @DomName('HTMLElement.tabIndex')
   @DocsEditable()
-  set tabIndex(int value) => _blink.BlinkHTMLElement.instance.tabIndex_Setter_(unwrap_jso(this), value);
+  set tabIndex(int value) => _blink.BlinkHTMLElement.instance.tabIndex_Setter_(this, value);
   
   @DomName('HTMLElement.title')
   @DocsEditable()
-  String get title => _blink.BlinkHTMLElement.instance.title_Getter_(unwrap_jso(this));
+  String get title => _blink.BlinkHTMLElement.instance.title_Getter_(this);
   
   @DomName('HTMLElement.title')
   @DocsEditable()
-  set title(String value) => _blink.BlinkHTMLElement.instance.title_Setter_(unwrap_jso(this), value);
+  set title(String value) => _blink.BlinkHTMLElement.instance.title_Setter_(this, value);
   
   @DomName('HTMLElement.translate')
   @DocsEditable()
-  bool get translate => _blink.BlinkHTMLElement.instance.translate_Getter_(unwrap_jso(this));
+  bool get translate => _blink.BlinkHTMLElement.instance.translate_Getter_(this);
   
   @DomName('HTMLElement.translate')
   @DocsEditable()
-  set translate(bool value) => _blink.BlinkHTMLElement.instance.translate_Setter_(unwrap_jso(this), value);
+  set translate(bool value) => _blink.BlinkHTMLElement.instance.translate_Setter_(this, value);
   
   @DomName('HTMLElement.webkitdropzone')
   @DocsEditable()
@@ -22103,7 +20621,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.instance.webkitdropzone_Getter_(unwrap_jso(this));
+  String get dropzone => _blink.BlinkHTMLElement.instance.webkitdropzone_Getter_(this);
   
   @DomName('HTMLElement.webkitdropzone')
   @DocsEditable()
@@ -22111,21 +20629,21 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#the-dropzone-attribute
-  set dropzone(String value) => _blink.BlinkHTMLElement.instance.webkitdropzone_Setter_(unwrap_jso(this), value);
+  set dropzone(String value) => _blink.BlinkHTMLElement.instance.webkitdropzone_Setter_(this, value);
   
   @DomName('HTMLElement.blur')
   @DocsEditable()
   @Experimental() // untriaged
-  void blur() => _blink.BlinkHTMLElement.instance.blur_Callback_0_(unwrap_jso(this));
+  void blur() => _blink.BlinkHTMLElement.instance.blur_Callback_0_(this);
   
   @DomName('HTMLElement.click')
   @DocsEditable()
-  void click() => _blink.BlinkHTMLElement.instance.click_Callback_0_(unwrap_jso(this));
+  void click() => _blink.BlinkHTMLElement.instance.click_Callback_0_(this);
   
   @DomName('HTMLElement.focus')
   @DocsEditable()
   @Experimental() // untriaged
-  void focus() => _blink.BlinkHTMLElement.instance.focus_Callback_0_(unwrap_jso(this));
+  void focus() => _blink.BlinkHTMLElement.instance.focus_Callback_0_(this);
   
   @DomName('HTMLElement.onabort')
   @DocsEditable()
@@ -22387,18 +20905,6 @@
   @Experimental() // untriaged
   ElementStream<Event> get onWaiting => waitingEvent.forElement(this);
 
-  // Flags to only try upgrading once. If there's a failure don't try upgrading
-  // anymore.
-  bool _badUpgradeOccurred = false;
-
-  /// Required for SDK Infrastructure. Internal use only.
-  ///
-  /// Did this encounter a failure attempting to upgrade to
-  /// a custom element.
-  @Deprecated("Required for SDK Infrastructure. Internal use only.")
-  bool get isBadUpgrade => _badUpgradeOccurred;
-
-  void _badUpgrade() { _badUpgradeOccurred = true; }
 }
 // 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
@@ -22415,11 +20921,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static HtmlFormControlsCollection internalCreateHtmlFormControlsCollection() {
-    return new HtmlFormControlsCollection._internalWrap();
-  }
-
-  external factory HtmlFormControlsCollection._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   HtmlFormControlsCollection.internal_() : super.internal_();
@@ -22428,11 +20930,11 @@
   @DomName('HTMLFormControlsCollection.item')
   @DocsEditable()
   @Experimental() // untriaged
-  Node item(int index) => wrap_jso(_blink.BlinkHTMLFormControlsCollection.instance.item_Callback_1_(unwrap_jso(this), index));
+  Node item(int index) => _blink.BlinkHTMLFormControlsCollection.instance.item_Callback_1_(this, index);
   
   @DomName('HTMLFormControlsCollection.namedItem')
   @DocsEditable()
-  Object namedItem(String name) => wrap_jso(_blink.BlinkHTMLFormControlsCollection.instance.namedItem_Callback_1_(unwrap_jso(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
@@ -22454,11 +20956,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static HtmlHtmlElement internalCreateHtmlHtmlElement() {
-    return new HtmlHtmlElement._internalWrap();
-  }
-
-  external factory HtmlHtmlElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   HtmlHtmlElement.internal_() : super.internal_();
@@ -22486,11 +20984,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static HtmlOptionsCollection internalCreateHtmlOptionsCollection() {
-    return new HtmlOptionsCollection._internalWrap();
-  }
-
-  external factory HtmlOptionsCollection._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   HtmlOptionsCollection.internal_() : super.internal_();
@@ -22499,7 +20993,7 @@
   @DomName('HTMLOptionsCollection.item')
   @DocsEditable()
   @Experimental() // untriaged
-  Node _item(int index) => wrap_jso(_blink.BlinkHTMLOptionsCollection.instance.item_Callback_1_(unwrap_jso(this), index));
+  Node _item(int index) => _blink.BlinkHTMLOptionsCollection.instance.item_Callback_1_(this, index);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22857,9 +21351,9 @@
   @DocsEditable()
   void open(String method, String url, {bool async, String user, String password}) {
     if (async == null && user == null && password == null) {
-      _blink.BlinkXMLHttpRequest.instance.open_Callback_2_(unwrap_jso(this), method, url);
+      _blink.BlinkXMLHttpRequest.instance.open_Callback_2_(this, method, url);
     } else {
-      _blink.BlinkXMLHttpRequest.instance.open_Callback_5_(unwrap_jso(this), method, url, async, user, password);
+      _blink.BlinkXMLHttpRequest.instance.open_Callback_5_(this, method, url, async, user, password);
     }
   }
 
@@ -22895,16 +21389,12 @@
   @DomName('XMLHttpRequest.XMLHttpRequest')
   @DocsEditable()
   factory HttpRequest() {
-    return wrap_jso(_blink.BlinkXMLHttpRequest.instance.constructorCallback_0_());
+    return _blink.BlinkXMLHttpRequest.instance.constructorCallback_0_();
   }
 
 
   @Deprecated("Internal Use Only")
-  static HttpRequest internalCreateHttpRequest() {
-    return new HttpRequest._internalWrap();
-  }
-
-  external factory HttpRequest._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   HttpRequest.internal_() : super.internal_();
@@ -22964,7 +21454,7 @@
    */
   @DomName('XMLHttpRequest.readyState')
   @DocsEditable()
-  int get readyState => _blink.BlinkXMLHttpRequest.instance.readyState_Getter_(unwrap_jso(this));
+  int get readyState => _blink.BlinkXMLHttpRequest.instance.readyState_Getter_(this);
   
   /**
    * The data received as a reponse from the request.
@@ -22979,14 +21469,14 @@
   @SupportedBrowser(SupportedBrowser.FIREFOX)
   @SupportedBrowser(SupportedBrowser.IE, '10')
   @SupportedBrowser(SupportedBrowser.SAFARI)
-  Object get response => wrap_jso(_blink.BlinkXMLHttpRequest.instance.response_Getter_(unwrap_jso(this)));
+  Object get response => _convertNativeToDart_XHR_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.instance.responseText_Getter_(unwrap_jso(this));
+  String get responseText => _blink.BlinkXMLHttpRequest.instance.responseText_Getter_(this);
   
   /**
    * [String] telling the server the desired response format.
@@ -23001,7 +21491,7 @@
    */
   @DomName('XMLHttpRequest.responseType')
   @DocsEditable()
-  String get responseType => _blink.BlinkXMLHttpRequest.instance.responseType_Getter_(unwrap_jso(this));
+  String get responseType => _blink.BlinkXMLHttpRequest.instance.responseType_Getter_(this);
   
   /**
    * [String] telling the server the desired response format.
@@ -23016,12 +21506,12 @@
    */
   @DomName('XMLHttpRequest.responseType')
   @DocsEditable()
-  set responseType(String value) => _blink.BlinkXMLHttpRequest.instance.responseType_Setter_(unwrap_jso(this), value);
+  set responseType(String value) => _blink.BlinkXMLHttpRequest.instance.responseType_Setter_(this, value);
   
   @DomName('XMLHttpRequest.responseURL')
   @DocsEditable()
   @Experimental() // untriaged
-  String get responseUrl => _blink.BlinkXMLHttpRequest.instance.responseURL_Getter_(unwrap_jso(this));
+  String get responseUrl => _blink.BlinkXMLHttpRequest.instance.responseURL_Getter_(this);
   
   /**
    * The request response, or null on failure.
@@ -23032,7 +21522,7 @@
    */
   @DomName('XMLHttpRequest.responseXML')
   @DocsEditable()
-  Document get responseXml => wrap_jso(_blink.BlinkXMLHttpRequest.instance.responseXML_Getter_(unwrap_jso(this)));
+  Document get responseXml => _blink.BlinkXMLHttpRequest.instance.responseXML_Getter_(this);
   
   /**
    * The HTTP result code from the request (200, 404, etc).
@@ -23040,7 +21530,7 @@
    */
   @DomName('XMLHttpRequest.status')
   @DocsEditable()
-  int get status => _blink.BlinkXMLHttpRequest.instance.status_Getter_(unwrap_jso(this));
+  int get status => _blink.BlinkXMLHttpRequest.instance.status_Getter_(this);
   
   /**
    * The request response string (such as \"200 OK\").
@@ -23048,7 +21538,7 @@
    */
   @DomName('XMLHttpRequest.statusText')
   @DocsEditable()
-  String get statusText => _blink.BlinkXMLHttpRequest.instance.statusText_Getter_(unwrap_jso(this));
+  String get statusText => _blink.BlinkXMLHttpRequest.instance.statusText_Getter_(this);
   
   /**
    * Length of time before a request is automatically terminated.
@@ -23067,7 +21557,7 @@
   @DomName('XMLHttpRequest.timeout')
   @DocsEditable()
   @Experimental() // untriaged
-  int get timeout => _blink.BlinkXMLHttpRequest.instance.timeout_Getter_(unwrap_jso(this));
+  int get timeout => _blink.BlinkXMLHttpRequest.instance.timeout_Getter_(this);
   
   /**
    * Length of time before a request is automatically terminated.
@@ -23086,7 +21576,7 @@
   @DomName('XMLHttpRequest.timeout')
   @DocsEditable()
   @Experimental() // untriaged
-  set timeout(int value) => _blink.BlinkXMLHttpRequest.instance.timeout_Setter_(unwrap_jso(this), value);
+  set timeout(int value) => _blink.BlinkXMLHttpRequest.instance.timeout_Setter_(this, value);
   
   /**
    * [EventTarget] that can hold listeners to track the progress of the request.
@@ -23095,7 +21585,7 @@
   @DomName('XMLHttpRequest.upload')
   @DocsEditable()
   @Unstable()
-  HttpRequestUpload get upload => wrap_jso(_blink.BlinkXMLHttpRequest.instance.upload_Getter_(unwrap_jso(this)));
+  HttpRequestUpload get upload => _blink.BlinkXMLHttpRequest.instance.upload_Getter_(this);
   
   /**
    * True if cross-site requests should use credentials such as cookies
@@ -23105,7 +21595,7 @@
    */
   @DomName('XMLHttpRequest.withCredentials')
   @DocsEditable()
-  bool get withCredentials => _blink.BlinkXMLHttpRequest.instance.withCredentials_Getter_(unwrap_jso(this));
+  bool get withCredentials => _blink.BlinkXMLHttpRequest.instance.withCredentials_Getter_(this);
   
   /**
    * True if cross-site requests should use credentials such as cookies
@@ -23115,7 +21605,7 @@
    */
   @DomName('XMLHttpRequest.withCredentials')
   @DocsEditable()
-  set withCredentials(bool value) => _blink.BlinkXMLHttpRequest.instance.withCredentials_Setter_(unwrap_jso(this), value);
+  set withCredentials(bool value) => _blink.BlinkXMLHttpRequest.instance.withCredentials_Setter_(this, value);
   
   /**
    * Stop the current request.
@@ -23126,7 +21616,7 @@
    */
   @DomName('XMLHttpRequest.abort')
   @DocsEditable()
-  void abort() => _blink.BlinkXMLHttpRequest.instance.abort_Callback_0_(unwrap_jso(this));
+  void abort() => _blink.BlinkXMLHttpRequest.instance.abort_Callback_0_(this);
   
   /**
    * Retrieve all the response headers from a request.
@@ -23142,7 +21632,7 @@
   @DomName('XMLHttpRequest.getAllResponseHeaders')
   @DocsEditable()
   @Unstable()
-  String getAllResponseHeaders() => _blink.BlinkXMLHttpRequest.instance.getAllResponseHeaders_Callback_0_(unwrap_jso(this));
+  String getAllResponseHeaders() => _blink.BlinkXMLHttpRequest.instance.getAllResponseHeaders_Callback_0_(this);
   
   /**
    * Return the response header named `header`, or null if not found.
@@ -23154,7 +21644,7 @@
   @DomName('XMLHttpRequest.getResponseHeader')
   @DocsEditable()
   @Unstable()
-  String getResponseHeader(String name) => _blink.BlinkXMLHttpRequest.instance.getResponseHeader_Callback_1_(unwrap_jso(this), name);
+  String getResponseHeader(String name) => _blink.BlinkXMLHttpRequest.instance.getResponseHeader_Callback_1_(this, name);
   
   /**
    * Specify a particular MIME type (such as `text/xml`) desired for the
@@ -23168,39 +21658,39 @@
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.FIREFOX)
   @SupportedBrowser(SupportedBrowser.SAFARI)
-  void overrideMimeType(String mime) => _blink.BlinkXMLHttpRequest.instance.overrideMimeType_Callback_1_(unwrap_jso(this), mime);
+  void overrideMimeType(String mime) => _blink.BlinkXMLHttpRequest.instance.overrideMimeType_Callback_1_(this, mime);
   
   void send([body_OR_data]) {
     if (body_OR_data != null) {
-      _blink.BlinkXMLHttpRequest.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(body_OR_data));
+      _blink.BlinkXMLHttpRequest.instance.send_Callback_1_(this, body_OR_data);
       return;
     }
     if ((body_OR_data is TypedData || body_OR_data == null)) {
-      _blink.BlinkXMLHttpRequest.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(body_OR_data));
+      _blink.BlinkXMLHttpRequest.instance.send_Callback_1_(this, body_OR_data);
       return;
     }
     if ((body_OR_data is ByteBuffer || body_OR_data == null)) {
-      _blink.BlinkXMLHttpRequest.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(body_OR_data));
+      _blink.BlinkXMLHttpRequest.instance.send_Callback_1_(this, body_OR_data);
       return;
     }
     if ((body_OR_data is Document || body_OR_data == null)) {
-      _blink.BlinkXMLHttpRequest.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(body_OR_data));
+      _blink.BlinkXMLHttpRequest.instance.send_Callback_1_(this, body_OR_data);
       return;
     }
     if ((body_OR_data is String || body_OR_data == null)) {
-      _blink.BlinkXMLHttpRequest.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(body_OR_data));
+      _blink.BlinkXMLHttpRequest.instance.send_Callback_1_(this, body_OR_data);
       return;
     }
     if ((body_OR_data is FormData || body_OR_data == null)) {
-      _blink.BlinkXMLHttpRequest.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(body_OR_data));
+      _blink.BlinkXMLHttpRequest.instance.send_Callback_1_(this, body_OR_data);
       return;
     }
     if ((body_OR_data is Blob || body_OR_data == null)) {
-      _blink.BlinkXMLHttpRequest.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(body_OR_data));
+      _blink.BlinkXMLHttpRequest.instance.send_Callback_1_(this, body_OR_data);
       return;
     }
     if (body_OR_data == null) {
-      _blink.BlinkXMLHttpRequest.instance.send_Callback_0_(unwrap_jso(this));
+      _blink.BlinkXMLHttpRequest.instance.send_Callback_0_(this);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -23225,7 +21715,7 @@
    */
   @DomName('XMLHttpRequest.setRequestHeader')
   @DocsEditable()
-  void setRequestHeader(String name, String value) => _blink.BlinkXMLHttpRequest.instance.setRequestHeader_Callback_2_(unwrap_jso(this), name, value);
+  void setRequestHeader(String name, String value) => _blink.BlinkXMLHttpRequest.instance.setRequestHeader_Callback_2_(this, name, value);
   
   /// Stream of `readystatechange` events handled by this [HttpRequest].
 /**
@@ -23330,11 +21820,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static HttpRequestEventTarget internalCreateHttpRequestEventTarget() {
-    return new HttpRequestEventTarget._internalWrap();
-  }
-
-  external factory HttpRequestEventTarget._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   HttpRequestEventTarget.internal_() : super.internal_();
@@ -23408,11 +21894,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static HttpRequestUpload internalCreateHttpRequestUpload() {
-    return new HttpRequestUpload._internalWrap();
-  }
-
-  external factory HttpRequestUpload._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   HttpRequestUpload.internal_() : super.internal_();
@@ -23438,11 +21920,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static IFrameElement internalCreateIFrameElement() {
-    return new IFrameElement._internalWrap();
-  }
-
-  external factory IFrameElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   IFrameElement.internal_() : super.internal_();
@@ -23457,60 +21935,60 @@
   @DomName('HTMLIFrameElement.allowFullscreen')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get allowFullscreen => _blink.BlinkHTMLIFrameElement.instance.allowFullscreen_Getter_(unwrap_jso(this));
+  bool get allowFullscreen => _blink.BlinkHTMLIFrameElement.instance.allowFullscreen_Getter_(this);
   
   @DomName('HTMLIFrameElement.allowFullscreen')
   @DocsEditable()
   @Experimental() // untriaged
-  set allowFullscreen(bool value) => _blink.BlinkHTMLIFrameElement.instance.allowFullscreen_Setter_(unwrap_jso(this), value);
+  set allowFullscreen(bool value) => _blink.BlinkHTMLIFrameElement.instance.allowFullscreen_Setter_(this, value);
   
   @DomName('HTMLIFrameElement.contentWindow')
   @DocsEditable()
-  WindowBase get contentWindow => wrap_jso(_blink.BlinkHTMLIFrameElement.instance.contentWindow_Getter_(unwrap_jso(this)));
+  WindowBase get contentWindow => _blink.BlinkHTMLIFrameElement.instance.contentWindow_Getter_(this);
   
   @DomName('HTMLIFrameElement.height')
   @DocsEditable()
-  String get height => _blink.BlinkHTMLIFrameElement.instance.height_Getter_(unwrap_jso(this));
+  String get height => _blink.BlinkHTMLIFrameElement.instance.height_Getter_(this);
   
   @DomName('HTMLIFrameElement.height')
   @DocsEditable()
-  set height(String value) => _blink.BlinkHTMLIFrameElement.instance.height_Setter_(unwrap_jso(this), value);
+  set height(String value) => _blink.BlinkHTMLIFrameElement.instance.height_Setter_(this, value);
   
   @DomName('HTMLIFrameElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLIFrameElement.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkHTMLIFrameElement.instance.name_Getter_(this);
   
   @DomName('HTMLIFrameElement.name')
   @DocsEditable()
-  set name(String value) => _blink.BlinkHTMLIFrameElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLIFrameElement.instance.name_Setter_(this, value);
   
   @DomName('HTMLIFrameElement.sandbox')
   @DocsEditable()
-  DomSettableTokenList get sandbox => wrap_jso(_blink.BlinkHTMLIFrameElement.instance.sandbox_Getter_(unwrap_jso(this)));
+  DomSettableTokenList get sandbox => _blink.BlinkHTMLIFrameElement.instance.sandbox_Getter_(this);
   
   @DomName('HTMLIFrameElement.src')
   @DocsEditable()
-  String get src => _blink.BlinkHTMLIFrameElement.instance.src_Getter_(unwrap_jso(this));
+  String get src => _blink.BlinkHTMLIFrameElement.instance.src_Getter_(this);
   
   @DomName('HTMLIFrameElement.src')
   @DocsEditable()
-  set src(String value) => _blink.BlinkHTMLIFrameElement.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkHTMLIFrameElement.instance.src_Setter_(this, value);
   
   @DomName('HTMLIFrameElement.srcdoc')
   @DocsEditable()
-  String get srcdoc => _blink.BlinkHTMLIFrameElement.instance.srcdoc_Getter_(unwrap_jso(this));
+  String get srcdoc => _blink.BlinkHTMLIFrameElement.instance.srcdoc_Getter_(this);
   
   @DomName('HTMLIFrameElement.srcdoc')
   @DocsEditable()
-  set srcdoc(String value) => _blink.BlinkHTMLIFrameElement.instance.srcdoc_Setter_(unwrap_jso(this), value);
+  set srcdoc(String value) => _blink.BlinkHTMLIFrameElement.instance.srcdoc_Setter_(this, value);
   
   @DomName('HTMLIFrameElement.width')
   @DocsEditable()
-  String get width => _blink.BlinkHTMLIFrameElement.instance.width_Getter_(unwrap_jso(this));
+  String get width => _blink.BlinkHTMLIFrameElement.instance.width_Getter_(this);
   
   @DomName('HTMLIFrameElement.width')
   @DocsEditable()
-  set width(String value) => _blink.BlinkHTMLIFrameElement.instance.width_Setter_(unwrap_jso(this), value);
+  set width(String value) => _blink.BlinkHTMLIFrameElement.instance.width_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -23527,30 +22005,22 @@
   // To suppress missing implicit constructor warnings.
   factory ImageBitmap._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ImageBitmap internalCreateImageBitmap() {
-    return new ImageBitmap._internalWrap();
-  }
 
-  factory ImageBitmap._internalWrap() {
-    return new ImageBitmap.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ImageBitmap.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('ImageBitmap.height')
   @DocsEditable()
   @Experimental() // untriaged
-  int get height => _blink.BlinkImageBitmap.instance.height_Getter_(unwrap_jso(this));
+  int get height => _blink.BlinkImageBitmap.instance.height_Getter_(this);
   
   @DomName('ImageBitmap.width')
   @DocsEditable()
   @Experimental() // untriaged
-  int get width => _blink.BlinkImageBitmap.instance.width_Getter_(unwrap_jso(this));
+  int get width => _blink.BlinkImageBitmap.instance.width_Getter_(this);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -23575,43 +22045,35 @@
   @DocsEditable()
   factory ImageData(data_OR_sw, int sh_OR_sw, [int sh]) {
     if ((sh_OR_sw is int) && (data_OR_sw is int) && sh == null) {
-      return wrap_jso(_blink.BlinkImageData.instance.constructorCallback_2_(data_OR_sw, sh_OR_sw));
+      return _blink.BlinkImageData.instance.constructorCallback_2_(data_OR_sw, sh_OR_sw);
     }
     if ((sh_OR_sw is int) && (data_OR_sw is Uint8ClampedList) && sh == null) {
-      return wrap_jso(_blink.BlinkImageData.instance.constructorCallback_2_(data_OR_sw, sh_OR_sw));
+      return _blink.BlinkImageData.instance.constructorCallback_2_(data_OR_sw, sh_OR_sw);
     }
     if ((sh is int) && (sh_OR_sw is int) && (data_OR_sw is Uint8ClampedList)) {
-      return wrap_jso(_blink.BlinkImageData.instance.constructorCallback_3_(data_OR_sw, sh_OR_sw, sh));
+      return _blink.BlinkImageData.instance.constructorCallback_3_(data_OR_sw, sh_OR_sw, sh);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @Deprecated("Internal Use Only")
-  static ImageData internalCreateImageData() {
-    return new ImageData._internalWrap();
-  }
 
-  factory ImageData._internalWrap() {
-    return new ImageData.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ImageData.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('ImageData.data')
   @DocsEditable()
-  Uint8ClampedList get _data => wrap_jso(_blink.BlinkImageData.instance.data_Getter_(unwrap_jso(this)));
+  Uint8ClampedList get _data => _blink.BlinkImageData.instance.data_Getter_(this);
   
   @DomName('ImageData.height')
   @DocsEditable()
-  int get height => _blink.BlinkImageData.instance.height_Getter_(unwrap_jso(this));
+  int get height => _blink.BlinkImageData.instance.height_Getter_(this);
   
   @DomName('ImageData.width')
   @DocsEditable()
-  int get width => _blink.BlinkImageData.instance.width_Getter_(unwrap_jso(this));
+  int get width => _blink.BlinkImageData.instance.width_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -23636,11 +22098,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ImageElement internalCreateImageElement() {
-    return new ImageElement._internalWrap();
-  }
-
-  external factory ImageElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ImageElement.internal_() : super.internal_();
@@ -23654,96 +22112,96 @@
 
   @DomName('HTMLImageElement.alt')
   @DocsEditable()
-  String get alt => _blink.BlinkHTMLImageElement.instance.alt_Getter_(unwrap_jso(this));
+  String get alt => _blink.BlinkHTMLImageElement.instance.alt_Getter_(this);
   
   @DomName('HTMLImageElement.alt')
   @DocsEditable()
-  set alt(String value) => _blink.BlinkHTMLImageElement.instance.alt_Setter_(unwrap_jso(this), value);
+  set alt(String value) => _blink.BlinkHTMLImageElement.instance.alt_Setter_(this, value);
   
   @DomName('HTMLImageElement.complete')
   @DocsEditable()
-  bool get complete => _blink.BlinkHTMLImageElement.instance.complete_Getter_(unwrap_jso(this));
+  bool get complete => _blink.BlinkHTMLImageElement.instance.complete_Getter_(this);
   
   @DomName('HTMLImageElement.crossOrigin')
   @DocsEditable()
-  String get crossOrigin => _blink.BlinkHTMLImageElement.instance.crossOrigin_Getter_(unwrap_jso(this));
+  String get crossOrigin => _blink.BlinkHTMLImageElement.instance.crossOrigin_Getter_(this);
   
   @DomName('HTMLImageElement.crossOrigin')
   @DocsEditable()
-  set crossOrigin(String value) => _blink.BlinkHTMLImageElement.instance.crossOrigin_Setter_(unwrap_jso(this), value);
+  set crossOrigin(String value) => _blink.BlinkHTMLImageElement.instance.crossOrigin_Setter_(this, value);
   
   @DomName('HTMLImageElement.currentSrc')
   @DocsEditable()
   @Experimental() // untriaged
-  String get currentSrc => _blink.BlinkHTMLImageElement.instance.currentSrc_Getter_(unwrap_jso(this));
+  String get currentSrc => _blink.BlinkHTMLImageElement.instance.currentSrc_Getter_(this);
   
   @DomName('HTMLImageElement.height')
   @DocsEditable()
-  int get height => _blink.BlinkHTMLImageElement.instance.height_Getter_(unwrap_jso(this));
+  int get height => _blink.BlinkHTMLImageElement.instance.height_Getter_(this);
   
   @DomName('HTMLImageElement.height')
   @DocsEditable()
-  set height(int value) => _blink.BlinkHTMLImageElement.instance.height_Setter_(unwrap_jso(this), value);
+  set height(int value) => _blink.BlinkHTMLImageElement.instance.height_Setter_(this, value);
   
   @DomName('HTMLImageElement.isMap')
   @DocsEditable()
-  bool get isMap => _blink.BlinkHTMLImageElement.instance.isMap_Getter_(unwrap_jso(this));
+  bool get isMap => _blink.BlinkHTMLImageElement.instance.isMap_Getter_(this);
   
   @DomName('HTMLImageElement.isMap')
   @DocsEditable()
-  set isMap(bool value) => _blink.BlinkHTMLImageElement.instance.isMap_Setter_(unwrap_jso(this), value);
+  set isMap(bool value) => _blink.BlinkHTMLImageElement.instance.isMap_Setter_(this, value);
   
   @DomName('HTMLImageElement.naturalHeight')
   @DocsEditable()
-  int get naturalHeight => _blink.BlinkHTMLImageElement.instance.naturalHeight_Getter_(unwrap_jso(this));
+  int get naturalHeight => _blink.BlinkHTMLImageElement.instance.naturalHeight_Getter_(this);
   
   @DomName('HTMLImageElement.naturalWidth')
   @DocsEditable()
-  int get naturalWidth => _blink.BlinkHTMLImageElement.instance.naturalWidth_Getter_(unwrap_jso(this));
+  int get naturalWidth => _blink.BlinkHTMLImageElement.instance.naturalWidth_Getter_(this);
   
   @DomName('HTMLImageElement.sizes')
   @DocsEditable()
   @Experimental() // untriaged
-  String get sizes => _blink.BlinkHTMLImageElement.instance.sizes_Getter_(unwrap_jso(this));
+  String get sizes => _blink.BlinkHTMLImageElement.instance.sizes_Getter_(this);
   
   @DomName('HTMLImageElement.sizes')
   @DocsEditable()
   @Experimental() // untriaged
-  set sizes(String value) => _blink.BlinkHTMLImageElement.instance.sizes_Setter_(unwrap_jso(this), value);
+  set sizes(String value) => _blink.BlinkHTMLImageElement.instance.sizes_Setter_(this, value);
   
   @DomName('HTMLImageElement.src')
   @DocsEditable()
-  String get src => _blink.BlinkHTMLImageElement.instance.src_Getter_(unwrap_jso(this));
+  String get src => _blink.BlinkHTMLImageElement.instance.src_Getter_(this);
   
   @DomName('HTMLImageElement.src')
   @DocsEditable()
-  set src(String value) => _blink.BlinkHTMLImageElement.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkHTMLImageElement.instance.src_Setter_(this, value);
   
   @DomName('HTMLImageElement.srcset')
   @DocsEditable()
   @Experimental() // untriaged
-  String get srcset => _blink.BlinkHTMLImageElement.instance.srcset_Getter_(unwrap_jso(this));
+  String get srcset => _blink.BlinkHTMLImageElement.instance.srcset_Getter_(this);
   
   @DomName('HTMLImageElement.srcset')
   @DocsEditable()
   @Experimental() // untriaged
-  set srcset(String value) => _blink.BlinkHTMLImageElement.instance.srcset_Setter_(unwrap_jso(this), value);
+  set srcset(String value) => _blink.BlinkHTMLImageElement.instance.srcset_Setter_(this, value);
   
   @DomName('HTMLImageElement.useMap')
   @DocsEditable()
-  String get useMap => _blink.BlinkHTMLImageElement.instance.useMap_Getter_(unwrap_jso(this));
+  String get useMap => _blink.BlinkHTMLImageElement.instance.useMap_Getter_(this);
   
   @DomName('HTMLImageElement.useMap')
   @DocsEditable()
-  set useMap(String value) => _blink.BlinkHTMLImageElement.instance.useMap_Setter_(unwrap_jso(this), value);
+  set useMap(String value) => _blink.BlinkHTMLImageElement.instance.useMap_Setter_(this, value);
   
   @DomName('HTMLImageElement.width')
   @DocsEditable()
-  int get width => _blink.BlinkHTMLImageElement.instance.width_Getter_(unwrap_jso(this));
+  int get width => _blink.BlinkHTMLImageElement.instance.width_Getter_(this);
   
   @DomName('HTMLImageElement.width')
   @DocsEditable()
-  set width(int value) => _blink.BlinkHTMLImageElement.instance.width_Setter_(unwrap_jso(this), value);
+  set width(int value) => _blink.BlinkHTMLImageElement.instance.width_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -23760,25 +22218,17 @@
   // To suppress missing implicit constructor warnings.
   factory InjectedScriptHost._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static InjectedScriptHost internalCreateInjectedScriptHost() {
-    return new InjectedScriptHost._internalWrap();
-  }
 
-  factory InjectedScriptHost._internalWrap() {
-    return new InjectedScriptHost.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   InjectedScriptHost.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('InjectedScriptHost.inspect')
   @DocsEditable()
   @Experimental() // untriaged
-  void inspect(Object objectId, Object hints) => _blink.BlinkInjectedScriptHost.instance.inspect_Callback_2_(unwrap_jso(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
@@ -23800,30 +22250,22 @@
   factory InputDevice([Map deviceInitDict]) {
     if (deviceInitDict != null) {
       var deviceInitDict_1 = convertDartToNative_Dictionary(deviceInitDict);
-      return wrap_jso(_blink.BlinkInputDevice.instance.constructorCallback_1_(deviceInitDict_1));
+      return _blink.BlinkInputDevice.instance.constructorCallback_1_(deviceInitDict_1);
     }
-    return wrap_jso(_blink.BlinkInputDevice.instance.constructorCallback_0_());
+    return _blink.BlinkInputDevice.instance.constructorCallback_0_();
   }
 
+
   @Deprecated("Internal Use Only")
-  static InputDevice internalCreateInputDevice() {
-    return new InputDevice._internalWrap();
-  }
-
-  factory InputDevice._internalWrap() {
-    return new InputDevice.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   InputDevice.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('InputDevice.firesTouchEvents')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get firesTouchEvents => _blink.BlinkInputDevice.instance.firesTouchEvents_Getter_(unwrap_jso(this));
+  bool get firesTouchEvents => _blink.BlinkInputDevice.instance.firesTouchEvents_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -23871,11 +22313,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static InputElement internalCreateInputElement() {
-    return new InputElement._internalWrap();
-  }
-
-  external factory InputElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   InputElement.internal_() : super.internal_();
@@ -23889,363 +22327,363 @@
 
   @DomName('HTMLInputElement.accept')
   @DocsEditable()
-  String get accept => _blink.BlinkHTMLInputElement.instance.accept_Getter_(unwrap_jso(this));
+  String get accept => _blink.BlinkHTMLInputElement.instance.accept_Getter_(this);
   
   @DomName('HTMLInputElement.accept')
   @DocsEditable()
-  set accept(String value) => _blink.BlinkHTMLInputElement.instance.accept_Setter_(unwrap_jso(this), value);
+  set accept(String value) => _blink.BlinkHTMLInputElement.instance.accept_Setter_(this, value);
   
   @DomName('HTMLInputElement.alt')
   @DocsEditable()
-  String get alt => _blink.BlinkHTMLInputElement.instance.alt_Getter_(unwrap_jso(this));
+  String get alt => _blink.BlinkHTMLInputElement.instance.alt_Getter_(this);
   
   @DomName('HTMLInputElement.alt')
   @DocsEditable()
-  set alt(String value) => _blink.BlinkHTMLInputElement.instance.alt_Setter_(unwrap_jso(this), value);
+  set alt(String value) => _blink.BlinkHTMLInputElement.instance.alt_Setter_(this, value);
   
   @DomName('HTMLInputElement.autocapitalize')
   @DocsEditable()
   @Experimental() // untriaged
-  String get autocapitalize => _blink.BlinkHTMLInputElement.instance.autocapitalize_Getter_(unwrap_jso(this));
+  String get autocapitalize => _blink.BlinkHTMLInputElement.instance.autocapitalize_Getter_(this);
   
   @DomName('HTMLInputElement.autocapitalize')
   @DocsEditable()
   @Experimental() // untriaged
-  set autocapitalize(String value) => _blink.BlinkHTMLInputElement.instance.autocapitalize_Setter_(unwrap_jso(this), value);
+  set autocapitalize(String value) => _blink.BlinkHTMLInputElement.instance.autocapitalize_Setter_(this, value);
   
   @DomName('HTMLInputElement.autocomplete')
   @DocsEditable()
-  String get autocomplete => _blink.BlinkHTMLInputElement.instance.autocomplete_Getter_(unwrap_jso(this));
+  String get autocomplete => _blink.BlinkHTMLInputElement.instance.autocomplete_Getter_(this);
   
   @DomName('HTMLInputElement.autocomplete')
   @DocsEditable()
-  set autocomplete(String value) => _blink.BlinkHTMLInputElement.instance.autocomplete_Setter_(unwrap_jso(this), value);
+  set autocomplete(String value) => _blink.BlinkHTMLInputElement.instance.autocomplete_Setter_(this, value);
   
   @DomName('HTMLInputElement.autofocus')
   @DocsEditable()
-  bool get autofocus => _blink.BlinkHTMLInputElement.instance.autofocus_Getter_(unwrap_jso(this));
+  bool get autofocus => _blink.BlinkHTMLInputElement.instance.autofocus_Getter_(this);
   
   @DomName('HTMLInputElement.autofocus')
   @DocsEditable()
-  set autofocus(bool value) => _blink.BlinkHTMLInputElement.instance.autofocus_Setter_(unwrap_jso(this), value);
+  set autofocus(bool value) => _blink.BlinkHTMLInputElement.instance.autofocus_Setter_(this, value);
   
   @DomName('HTMLInputElement.capture')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get capture => _blink.BlinkHTMLInputElement.instance.capture_Getter_(unwrap_jso(this));
+  bool get capture => _blink.BlinkHTMLInputElement.instance.capture_Getter_(this);
   
   @DomName('HTMLInputElement.capture')
   @DocsEditable()
   @Experimental() // untriaged
-  set capture(bool value) => _blink.BlinkHTMLInputElement.instance.capture_Setter_(unwrap_jso(this), value);
+  set capture(bool value) => _blink.BlinkHTMLInputElement.instance.capture_Setter_(this, value);
   
   @DomName('HTMLInputElement.checked')
   @DocsEditable()
-  bool get checked => _blink.BlinkHTMLInputElement.instance.checked_Getter_(unwrap_jso(this));
+  bool get checked => _blink.BlinkHTMLInputElement.instance.checked_Getter_(this);
   
   @DomName('HTMLInputElement.checked')
   @DocsEditable()
-  set checked(bool value) => _blink.BlinkHTMLInputElement.instance.checked_Setter_(unwrap_jso(this), value);
+  set checked(bool value) => _blink.BlinkHTMLInputElement.instance.checked_Setter_(this, value);
   
   @DomName('HTMLInputElement.defaultChecked')
   @DocsEditable()
-  bool get defaultChecked => _blink.BlinkHTMLInputElement.instance.defaultChecked_Getter_(unwrap_jso(this));
+  bool get defaultChecked => _blink.BlinkHTMLInputElement.instance.defaultChecked_Getter_(this);
   
   @DomName('HTMLInputElement.defaultChecked')
   @DocsEditable()
-  set defaultChecked(bool value) => _blink.BlinkHTMLInputElement.instance.defaultChecked_Setter_(unwrap_jso(this), value);
+  set defaultChecked(bool value) => _blink.BlinkHTMLInputElement.instance.defaultChecked_Setter_(this, value);
   
   @DomName('HTMLInputElement.defaultValue')
   @DocsEditable()
-  String get defaultValue => _blink.BlinkHTMLInputElement.instance.defaultValue_Getter_(unwrap_jso(this));
+  String get defaultValue => _blink.BlinkHTMLInputElement.instance.defaultValue_Getter_(this);
   
   @DomName('HTMLInputElement.defaultValue')
   @DocsEditable()
-  set defaultValue(String value) => _blink.BlinkHTMLInputElement.instance.defaultValue_Setter_(unwrap_jso(this), value);
+  set defaultValue(String value) => _blink.BlinkHTMLInputElement.instance.defaultValue_Setter_(this, value);
   
   @DomName('HTMLInputElement.dirName')
   @DocsEditable()
-  String get dirName => _blink.BlinkHTMLInputElement.instance.dirName_Getter_(unwrap_jso(this));
+  String get dirName => _blink.BlinkHTMLInputElement.instance.dirName_Getter_(this);
   
   @DomName('HTMLInputElement.dirName')
   @DocsEditable()
-  set dirName(String value) => _blink.BlinkHTMLInputElement.instance.dirName_Setter_(unwrap_jso(this), value);
+  set dirName(String value) => _blink.BlinkHTMLInputElement.instance.dirName_Setter_(this, value);
   
   @DomName('HTMLInputElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLInputElement.instance.disabled_Getter_(unwrap_jso(this));
+  bool get disabled => _blink.BlinkHTMLInputElement.instance.disabled_Getter_(this);
   
   @DomName('HTMLInputElement.disabled')
   @DocsEditable()
-  set disabled(bool value) => _blink.BlinkHTMLInputElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLInputElement.instance.disabled_Setter_(this, value);
   
   @DomName('HTMLInputElement.files')
   @DocsEditable()
-  List<File> get files => wrap_jso(_blink.BlinkHTMLInputElement.instance.files_Getter_(unwrap_jso(this)));
+  List<File> get files => (_blink.BlinkHTMLInputElement.instance.files_Getter_(this));
   
   @DomName('HTMLInputElement.files')
   @DocsEditable()
-  set files(List<File> value) => _blink.BlinkHTMLInputElement.instance.files_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set files(List<File> value) => _blink.BlinkHTMLInputElement.instance.files_Setter_(this, value);
   
   @DomName('HTMLInputElement.form')
   @DocsEditable()
-  FormElement get form => wrap_jso(_blink.BlinkHTMLInputElement.instance.form_Getter_(unwrap_jso(this)));
+  FormElement get form => _blink.BlinkHTMLInputElement.instance.form_Getter_(this);
   
   @DomName('HTMLInputElement.formAction')
   @DocsEditable()
-  String get formAction => _blink.BlinkHTMLInputElement.instance.formAction_Getter_(unwrap_jso(this));
+  String get formAction => _blink.BlinkHTMLInputElement.instance.formAction_Getter_(this);
   
   @DomName('HTMLInputElement.formAction')
   @DocsEditable()
-  set formAction(String value) => _blink.BlinkHTMLInputElement.instance.formAction_Setter_(unwrap_jso(this), value);
+  set formAction(String value) => _blink.BlinkHTMLInputElement.instance.formAction_Setter_(this, value);
   
   @DomName('HTMLInputElement.formEnctype')
   @DocsEditable()
-  String get formEnctype => _blink.BlinkHTMLInputElement.instance.formEnctype_Getter_(unwrap_jso(this));
+  String get formEnctype => _blink.BlinkHTMLInputElement.instance.formEnctype_Getter_(this);
   
   @DomName('HTMLInputElement.formEnctype')
   @DocsEditable()
-  set formEnctype(String value) => _blink.BlinkHTMLInputElement.instance.formEnctype_Setter_(unwrap_jso(this), value);
+  set formEnctype(String value) => _blink.BlinkHTMLInputElement.instance.formEnctype_Setter_(this, value);
   
   @DomName('HTMLInputElement.formMethod')
   @DocsEditable()
-  String get formMethod => _blink.BlinkHTMLInputElement.instance.formMethod_Getter_(unwrap_jso(this));
+  String get formMethod => _blink.BlinkHTMLInputElement.instance.formMethod_Getter_(this);
   
   @DomName('HTMLInputElement.formMethod')
   @DocsEditable()
-  set formMethod(String value) => _blink.BlinkHTMLInputElement.instance.formMethod_Setter_(unwrap_jso(this), value);
+  set formMethod(String value) => _blink.BlinkHTMLInputElement.instance.formMethod_Setter_(this, value);
   
   @DomName('HTMLInputElement.formNoValidate')
   @DocsEditable()
-  bool get formNoValidate => _blink.BlinkHTMLInputElement.instance.formNoValidate_Getter_(unwrap_jso(this));
+  bool get formNoValidate => _blink.BlinkHTMLInputElement.instance.formNoValidate_Getter_(this);
   
   @DomName('HTMLInputElement.formNoValidate')
   @DocsEditable()
-  set formNoValidate(bool value) => _blink.BlinkHTMLInputElement.instance.formNoValidate_Setter_(unwrap_jso(this), value);
+  set formNoValidate(bool value) => _blink.BlinkHTMLInputElement.instance.formNoValidate_Setter_(this, value);
   
   @DomName('HTMLInputElement.formTarget')
   @DocsEditable()
-  String get formTarget => _blink.BlinkHTMLInputElement.instance.formTarget_Getter_(unwrap_jso(this));
+  String get formTarget => _blink.BlinkHTMLInputElement.instance.formTarget_Getter_(this);
   
   @DomName('HTMLInputElement.formTarget')
   @DocsEditable()
-  set formTarget(String value) => _blink.BlinkHTMLInputElement.instance.formTarget_Setter_(unwrap_jso(this), value);
+  set formTarget(String value) => _blink.BlinkHTMLInputElement.instance.formTarget_Setter_(this, value);
   
   @DomName('HTMLInputElement.height')
   @DocsEditable()
-  int get height => _blink.BlinkHTMLInputElement.instance.height_Getter_(unwrap_jso(this));
+  int get height => _blink.BlinkHTMLInputElement.instance.height_Getter_(this);
   
   @DomName('HTMLInputElement.height')
   @DocsEditable()
-  set height(int value) => _blink.BlinkHTMLInputElement.instance.height_Setter_(unwrap_jso(this), value);
+  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.instance.incremental_Getter_(unwrap_jso(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()
-  set incremental(bool value) => _blink.BlinkHTMLInputElement.instance.incremental_Setter_(unwrap_jso(this), value);
+  set incremental(bool value) => _blink.BlinkHTMLInputElement.instance.incremental_Setter_(this, value);
   
   @DomName('HTMLInputElement.indeterminate')
   @DocsEditable()
-  bool get indeterminate => _blink.BlinkHTMLInputElement.instance.indeterminate_Getter_(unwrap_jso(this));
+  bool get indeterminate => _blink.BlinkHTMLInputElement.instance.indeterminate_Getter_(this);
   
   @DomName('HTMLInputElement.indeterminate')
   @DocsEditable()
-  set indeterminate(bool value) => _blink.BlinkHTMLInputElement.instance.indeterminate_Setter_(unwrap_jso(this), value);
+  set indeterminate(bool value) => _blink.BlinkHTMLInputElement.instance.indeterminate_Setter_(this, value);
   
   @DomName('HTMLInputElement.inputMode')
   @DocsEditable()
   @Experimental() // untriaged
-  String get inputMode => _blink.BlinkHTMLInputElement.instance.inputMode_Getter_(unwrap_jso(this));
+  String get inputMode => _blink.BlinkHTMLInputElement.instance.inputMode_Getter_(this);
   
   @DomName('HTMLInputElement.inputMode')
   @DocsEditable()
   @Experimental() // untriaged
-  set inputMode(String value) => _blink.BlinkHTMLInputElement.instance.inputMode_Setter_(unwrap_jso(this), value);
+  set inputMode(String value) => _blink.BlinkHTMLInputElement.instance.inputMode_Setter_(this, value);
   
   @DomName('HTMLInputElement.labels')
   @DocsEditable()
-  List<Node> get labels => wrap_jso(_blink.BlinkHTMLInputElement.instance.labels_Getter_(unwrap_jso(this)));
+  List<Node> get labels => (_blink.BlinkHTMLInputElement.instance.labels_Getter_(this));
   
   @DomName('HTMLInputElement.list')
   @DocsEditable()
-  HtmlElement get list => wrap_jso(_blink.BlinkHTMLInputElement.instance.list_Getter_(unwrap_jso(this)));
+  HtmlElement get list => _blink.BlinkHTMLInputElement.instance.list_Getter_(this);
   
   @DomName('HTMLInputElement.max')
   @DocsEditable()
-  String get max => _blink.BlinkHTMLInputElement.instance.max_Getter_(unwrap_jso(this));
+  String get max => _blink.BlinkHTMLInputElement.instance.max_Getter_(this);
   
   @DomName('HTMLInputElement.max')
   @DocsEditable()
-  set max(String value) => _blink.BlinkHTMLInputElement.instance.max_Setter_(unwrap_jso(this), value);
+  set max(String value) => _blink.BlinkHTMLInputElement.instance.max_Setter_(this, value);
   
   @DomName('HTMLInputElement.maxLength')
   @DocsEditable()
-  int get maxLength => _blink.BlinkHTMLInputElement.instance.maxLength_Getter_(unwrap_jso(this));
+  int get maxLength => _blink.BlinkHTMLInputElement.instance.maxLength_Getter_(this);
   
   @DomName('HTMLInputElement.maxLength')
   @DocsEditable()
-  set maxLength(int value) => _blink.BlinkHTMLInputElement.instance.maxLength_Setter_(unwrap_jso(this), value);
+  set maxLength(int value) => _blink.BlinkHTMLInputElement.instance.maxLength_Setter_(this, value);
   
   @DomName('HTMLInputElement.min')
   @DocsEditable()
-  String get min => _blink.BlinkHTMLInputElement.instance.min_Getter_(unwrap_jso(this));
+  String get min => _blink.BlinkHTMLInputElement.instance.min_Getter_(this);
   
   @DomName('HTMLInputElement.min')
   @DocsEditable()
-  set min(String value) => _blink.BlinkHTMLInputElement.instance.min_Setter_(unwrap_jso(this), value);
+  set min(String value) => _blink.BlinkHTMLInputElement.instance.min_Setter_(this, value);
   
   @DomName('HTMLInputElement.minLength')
   @DocsEditable()
   @Experimental() // untriaged
-  int get minLength => _blink.BlinkHTMLInputElement.instance.minLength_Getter_(unwrap_jso(this));
+  int get minLength => _blink.BlinkHTMLInputElement.instance.minLength_Getter_(this);
   
   @DomName('HTMLInputElement.minLength')
   @DocsEditable()
   @Experimental() // untriaged
-  set minLength(int value) => _blink.BlinkHTMLInputElement.instance.minLength_Setter_(unwrap_jso(this), value);
+  set minLength(int value) => _blink.BlinkHTMLInputElement.instance.minLength_Setter_(this, value);
   
   @DomName('HTMLInputElement.multiple')
   @DocsEditable()
-  bool get multiple => _blink.BlinkHTMLInputElement.instance.multiple_Getter_(unwrap_jso(this));
+  bool get multiple => _blink.BlinkHTMLInputElement.instance.multiple_Getter_(this);
   
   @DomName('HTMLInputElement.multiple')
   @DocsEditable()
-  set multiple(bool value) => _blink.BlinkHTMLInputElement.instance.multiple_Setter_(unwrap_jso(this), value);
+  set multiple(bool value) => _blink.BlinkHTMLInputElement.instance.multiple_Setter_(this, value);
   
   @DomName('HTMLInputElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLInputElement.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkHTMLInputElement.instance.name_Getter_(this);
   
   @DomName('HTMLInputElement.name')
   @DocsEditable()
-  set name(String value) => _blink.BlinkHTMLInputElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLInputElement.instance.name_Setter_(this, value);
   
   @DomName('HTMLInputElement.pattern')
   @DocsEditable()
-  String get pattern => _blink.BlinkHTMLInputElement.instance.pattern_Getter_(unwrap_jso(this));
+  String get pattern => _blink.BlinkHTMLInputElement.instance.pattern_Getter_(this);
   
   @DomName('HTMLInputElement.pattern')
   @DocsEditable()
-  set pattern(String value) => _blink.BlinkHTMLInputElement.instance.pattern_Setter_(unwrap_jso(this), value);
+  set pattern(String value) => _blink.BlinkHTMLInputElement.instance.pattern_Setter_(this, value);
   
   @DomName('HTMLInputElement.placeholder')
   @DocsEditable()
-  String get placeholder => _blink.BlinkHTMLInputElement.instance.placeholder_Getter_(unwrap_jso(this));
+  String get placeholder => _blink.BlinkHTMLInputElement.instance.placeholder_Getter_(this);
   
   @DomName('HTMLInputElement.placeholder')
   @DocsEditable()
-  set placeholder(String value) => _blink.BlinkHTMLInputElement.instance.placeholder_Setter_(unwrap_jso(this), value);
+  set placeholder(String value) => _blink.BlinkHTMLInputElement.instance.placeholder_Setter_(this, value);
   
   @DomName('HTMLInputElement.readOnly')
   @DocsEditable()
-  bool get readOnly => _blink.BlinkHTMLInputElement.instance.readOnly_Getter_(unwrap_jso(this));
+  bool get readOnly => _blink.BlinkHTMLInputElement.instance.readOnly_Getter_(this);
   
   @DomName('HTMLInputElement.readOnly')
   @DocsEditable()
-  set readOnly(bool value) => _blink.BlinkHTMLInputElement.instance.readOnly_Setter_(unwrap_jso(this), value);
+  set readOnly(bool value) => _blink.BlinkHTMLInputElement.instance.readOnly_Setter_(this, value);
   
   @DomName('HTMLInputElement.required')
   @DocsEditable()
-  bool get required => _blink.BlinkHTMLInputElement.instance.required_Getter_(unwrap_jso(this));
+  bool get required => _blink.BlinkHTMLInputElement.instance.required_Getter_(this);
   
   @DomName('HTMLInputElement.required')
   @DocsEditable()
-  set required(bool value) => _blink.BlinkHTMLInputElement.instance.required_Setter_(unwrap_jso(this), value);
+  set required(bool value) => _blink.BlinkHTMLInputElement.instance.required_Setter_(this, value);
   
   @DomName('HTMLInputElement.selectionDirection')
   @DocsEditable()
-  String get selectionDirection => _blink.BlinkHTMLInputElement.instance.selectionDirection_Getter_(unwrap_jso(this));
+  String get selectionDirection => _blink.BlinkHTMLInputElement.instance.selectionDirection_Getter_(this);
   
   @DomName('HTMLInputElement.selectionDirection')
   @DocsEditable()
-  set selectionDirection(String value) => _blink.BlinkHTMLInputElement.instance.selectionDirection_Setter_(unwrap_jso(this), value);
+  set selectionDirection(String value) => _blink.BlinkHTMLInputElement.instance.selectionDirection_Setter_(this, value);
   
   @DomName('HTMLInputElement.selectionEnd')
   @DocsEditable()
-  int get selectionEnd => _blink.BlinkHTMLInputElement.instance.selectionEnd_Getter_(unwrap_jso(this));
+  int get selectionEnd => _blink.BlinkHTMLInputElement.instance.selectionEnd_Getter_(this);
   
   @DomName('HTMLInputElement.selectionEnd')
   @DocsEditable()
-  set selectionEnd(int value) => _blink.BlinkHTMLInputElement.instance.selectionEnd_Setter_(unwrap_jso(this), value);
+  set selectionEnd(int value) => _blink.BlinkHTMLInputElement.instance.selectionEnd_Setter_(this, value);
   
   @DomName('HTMLInputElement.selectionStart')
   @DocsEditable()
-  int get selectionStart => _blink.BlinkHTMLInputElement.instance.selectionStart_Getter_(unwrap_jso(this));
+  int get selectionStart => _blink.BlinkHTMLInputElement.instance.selectionStart_Getter_(this);
   
   @DomName('HTMLInputElement.selectionStart')
   @DocsEditable()
-  set selectionStart(int value) => _blink.BlinkHTMLInputElement.instance.selectionStart_Setter_(unwrap_jso(this), value);
+  set selectionStart(int value) => _blink.BlinkHTMLInputElement.instance.selectionStart_Setter_(this, value);
   
   @DomName('HTMLInputElement.size')
   @DocsEditable()
-  int get size => _blink.BlinkHTMLInputElement.instance.size_Getter_(unwrap_jso(this));
+  int get size => _blink.BlinkHTMLInputElement.instance.size_Getter_(this);
   
   @DomName('HTMLInputElement.size')
   @DocsEditable()
-  set size(int value) => _blink.BlinkHTMLInputElement.instance.size_Setter_(unwrap_jso(this), value);
+  set size(int value) => _blink.BlinkHTMLInputElement.instance.size_Setter_(this, value);
   
   @DomName('HTMLInputElement.src')
   @DocsEditable()
-  String get src => _blink.BlinkHTMLInputElement.instance.src_Getter_(unwrap_jso(this));
+  String get src => _blink.BlinkHTMLInputElement.instance.src_Getter_(this);
   
   @DomName('HTMLInputElement.src')
   @DocsEditable()
-  set src(String value) => _blink.BlinkHTMLInputElement.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkHTMLInputElement.instance.src_Setter_(this, value);
   
   @DomName('HTMLInputElement.step')
   @DocsEditable()
-  String get step => _blink.BlinkHTMLInputElement.instance.step_Getter_(unwrap_jso(this));
+  String get step => _blink.BlinkHTMLInputElement.instance.step_Getter_(this);
   
   @DomName('HTMLInputElement.step')
   @DocsEditable()
-  set step(String value) => _blink.BlinkHTMLInputElement.instance.step_Setter_(unwrap_jso(this), value);
+  set step(String value) => _blink.BlinkHTMLInputElement.instance.step_Setter_(this, value);
   
   @DomName('HTMLInputElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLInputElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLInputElement.instance.type_Getter_(this);
   
   @DomName('HTMLInputElement.type')
   @DocsEditable()
-  set type(String value) => _blink.BlinkHTMLInputElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLInputElement.instance.type_Setter_(this, value);
   
   @DomName('HTMLInputElement.validationMessage')
   @DocsEditable()
-  String get validationMessage => _blink.BlinkHTMLInputElement.instance.validationMessage_Getter_(unwrap_jso(this));
+  String get validationMessage => _blink.BlinkHTMLInputElement.instance.validationMessage_Getter_(this);
   
   @DomName('HTMLInputElement.validity')
   @DocsEditable()
-  ValidityState get validity => wrap_jso(_blink.BlinkHTMLInputElement.instance.validity_Getter_(unwrap_jso(this)));
+  ValidityState get validity => _blink.BlinkHTMLInputElement.instance.validity_Getter_(this);
   
   @DomName('HTMLInputElement.value')
   @DocsEditable()
-  String get value => _blink.BlinkHTMLInputElement.instance.value_Getter_(unwrap_jso(this));
+  String get value => _blink.BlinkHTMLInputElement.instance.value_Getter_(this);
   
   @DomName('HTMLInputElement.value')
   @DocsEditable()
-  set value(String value) => _blink.BlinkHTMLInputElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkHTMLInputElement.instance.value_Setter_(this, value);
   
   @DomName('HTMLInputElement.valueAsDate')
   @DocsEditable()
-  DateTime get valueAsDate => _blink.BlinkHTMLInputElement.instance.valueAsDate_Getter_(unwrap_jso(this));
+  DateTime get valueAsDate => _blink.BlinkHTMLInputElement.instance.valueAsDate_Getter_(this);
   
   @DomName('HTMLInputElement.valueAsDate')
   @DocsEditable()
-  set valueAsDate(DateTime value) => _blink.BlinkHTMLInputElement.instance.valueAsDate_Setter_(unwrap_jso(this), value);
+  set valueAsDate(DateTime value) => _blink.BlinkHTMLInputElement.instance.valueAsDate_Setter_(this, value);
   
   @DomName('HTMLInputElement.valueAsNumber')
   @DocsEditable()
-  num get valueAsNumber => _blink.BlinkHTMLInputElement.instance.valueAsNumber_Getter_(unwrap_jso(this));
+  num get valueAsNumber => _blink.BlinkHTMLInputElement.instance.valueAsNumber_Getter_(this);
   
   @DomName('HTMLInputElement.valueAsNumber')
   @DocsEditable()
-  set valueAsNumber(num value) => _blink.BlinkHTMLInputElement.instance.valueAsNumber_Setter_(unwrap_jso(this), value);
+  set valueAsNumber(num value) => _blink.BlinkHTMLInputElement.instance.valueAsNumber_Setter_(this, value);
   
   @DomName('HTMLInputElement.webkitEntries')
   @DocsEditable()
@@ -24253,7 +22691,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 => wrap_jso(_blink.BlinkHTMLInputElement.instance.webkitEntries_Getter_(unwrap_jso(this)));
+  List<Entry> get entries => (_blink.BlinkHTMLInputElement.instance.webkitEntries_Getter_(this));
   
   @DomName('HTMLInputElement.webkitdirectory')
   @DocsEditable()
@@ -24261,7 +22699,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://plus.sandbox.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3
-  bool get directory => _blink.BlinkHTMLInputElement.instance.webkitdirectory_Getter_(unwrap_jso(this));
+  bool get directory => _blink.BlinkHTMLInputElement.instance.webkitdirectory_Getter_(this);
   
   @DomName('HTMLInputElement.webkitdirectory')
   @DocsEditable()
@@ -24269,48 +22707,48 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://plus.sandbox.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3
-  set directory(bool value) => _blink.BlinkHTMLInputElement.instance.webkitdirectory_Setter_(unwrap_jso(this), value);
+  set directory(bool value) => _blink.BlinkHTMLInputElement.instance.webkitdirectory_Setter_(this, value);
   
   @DomName('HTMLInputElement.width')
   @DocsEditable()
-  int get width => _blink.BlinkHTMLInputElement.instance.width_Getter_(unwrap_jso(this));
+  int get width => _blink.BlinkHTMLInputElement.instance.width_Getter_(this);
   
   @DomName('HTMLInputElement.width')
   @DocsEditable()
-  set width(int value) => _blink.BlinkHTMLInputElement.instance.width_Setter_(unwrap_jso(this), value);
+  set width(int value) => _blink.BlinkHTMLInputElement.instance.width_Setter_(this, value);
   
   @DomName('HTMLInputElement.willValidate')
   @DocsEditable()
-  bool get willValidate => _blink.BlinkHTMLInputElement.instance.willValidate_Getter_(unwrap_jso(this));
+  bool get willValidate => _blink.BlinkHTMLInputElement.instance.willValidate_Getter_(this);
   
   @DomName('HTMLInputElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLInputElement.instance.checkValidity_Callback_0_(unwrap_jso(this));
+  bool checkValidity() => _blink.BlinkHTMLInputElement.instance.checkValidity_Callback_0_(this);
   
   @DomName('HTMLInputElement.reportValidity')
   @DocsEditable()
   @Experimental() // untriaged
-  bool reportValidity() => _blink.BlinkHTMLInputElement.instance.reportValidity_Callback_0_(unwrap_jso(this));
+  bool reportValidity() => _blink.BlinkHTMLInputElement.instance.reportValidity_Callback_0_(this);
   
   @DomName('HTMLInputElement.select')
   @DocsEditable()
-  void select() => _blink.BlinkHTMLInputElement.instance.select_Callback_0_(unwrap_jso(this));
+  void select() => _blink.BlinkHTMLInputElement.instance.select_Callback_0_(this);
   
   @DomName('HTMLInputElement.setCustomValidity')
   @DocsEditable()
-  void setCustomValidity(String error) => _blink.BlinkHTMLInputElement.instance.setCustomValidity_Callback_1_(unwrap_jso(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.instance.setRangeText_Callback_1_(unwrap_jso(this), replacement);
+      _blink.BlinkHTMLInputElement.instance.setRangeText_Callback_1_(this, replacement);
       return;
     }
     if ((end is int || end == null) && (start is int || start == null) && (replacement is String || replacement == null) && selectionMode == null) {
-      _blink.BlinkHTMLInputElement.instance.setRangeText_Callback_3_(unwrap_jso(this), replacement, start, end);
+      _blink.BlinkHTMLInputElement.instance.setRangeText_Callback_3_(this, replacement, start, end);
       return;
     }
     if ((selectionMode is String || selectionMode == null) && (end is int || end == null) && (start is int || start == null) && (replacement is String || replacement == null)) {
-      _blink.BlinkHTMLInputElement.instance.setRangeText_Callback_4_(unwrap_jso(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");
@@ -24318,28 +22756,28 @@
 
   void setSelectionRange(int start, int end, [String direction]) {
     if (direction != null) {
-      _blink.BlinkHTMLInputElement.instance.setSelectionRange_Callback_3_(unwrap_jso(this), start, end, direction);
+      _blink.BlinkHTMLInputElement.instance.setSelectionRange_Callback_3_(this, start, end, direction);
       return;
     }
-    _blink.BlinkHTMLInputElement.instance.setSelectionRange_Callback_2_(unwrap_jso(this), start, end);
+    _blink.BlinkHTMLInputElement.instance.setSelectionRange_Callback_2_(this, start, end);
     return;
   }
 
   void stepDown([int n]) {
     if (n != null) {
-      _blink.BlinkHTMLInputElement.instance.stepDown_Callback_1_(unwrap_jso(this), n);
+      _blink.BlinkHTMLInputElement.instance.stepDown_Callback_1_(this, n);
       return;
     }
-    _blink.BlinkHTMLInputElement.instance.stepDown_Callback_0_(unwrap_jso(this));
+    _blink.BlinkHTMLInputElement.instance.stepDown_Callback_0_(this);
     return;
   }
 
   void stepUp([int n]) {
     if (n != null) {
-      _blink.BlinkHTMLInputElement.instance.stepUp_Callback_1_(unwrap_jso(this), n);
+      _blink.BlinkHTMLInputElement.instance.stepUp_Callback_1_(this, n);
       return;
     }
-    _blink.BlinkHTMLInputElement.instance.stepUp_Callback_0_(unwrap_jso(this));
+    _blink.BlinkHTMLInputElement.instance.stepUp_Callback_0_(this);
     return;
   }
 
@@ -24934,18 +23372,14 @@
   factory KeyboardEvent._(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkKeyboardEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkKeyboardEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkKeyboardEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkKeyboardEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static KeyboardEvent internalCreateKeyboardEvent() {
-    return new KeyboardEvent._internalWrap();
-  }
-
-  external factory KeyboardEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   KeyboardEvent.internal_() : super.internal_();
@@ -24973,58 +23407,58 @@
 
   @DomName('KeyboardEvent.altKey')
   @DocsEditable()
-  bool get altKey => _blink.BlinkKeyboardEvent.instance.altKey_Getter_(unwrap_jso(this));
+  bool get altKey => _blink.BlinkKeyboardEvent.instance.altKey_Getter_(this);
   
   @DomName('KeyboardEvent.code')
   @DocsEditable()
   @Experimental() // untriaged
-  String get code => _blink.BlinkKeyboardEvent.instance.code_Getter_(unwrap_jso(this));
+  String get code => _blink.BlinkKeyboardEvent.instance.code_Getter_(this);
   
   @DomName('KeyboardEvent.ctrlKey')
   @DocsEditable()
-  bool get ctrlKey => _blink.BlinkKeyboardEvent.instance.ctrlKey_Getter_(unwrap_jso(this));
+  bool get ctrlKey => _blink.BlinkKeyboardEvent.instance.ctrlKey_Getter_(this);
   
   @DomName('KeyboardEvent.key')
   @DocsEditable()
   @Experimental() // untriaged
-  String get key => _blink.BlinkKeyboardEvent.instance.key_Getter_(unwrap_jso(this));
+  String get key => _blink.BlinkKeyboardEvent.instance.key_Getter_(this);
   
   @DomName('KeyboardEvent.keyIdentifier')
   @DocsEditable()
   @Experimental() // nonstandard
-  String get _keyIdentifier => _blink.BlinkKeyboardEvent.instance.keyIdentifier_Getter_(unwrap_jso(this));
+  String get _keyIdentifier => _blink.BlinkKeyboardEvent.instance.keyIdentifier_Getter_(this);
   
   @DomName('KeyboardEvent.keyLocation')
   @DocsEditable()
   @Experimental() // nonstandard
-  int get keyLocation => _blink.BlinkKeyboardEvent.instance.keyLocation_Getter_(unwrap_jso(this));
+  int get keyLocation => _blink.BlinkKeyboardEvent.instance.keyLocation_Getter_(this);
   
   @DomName('KeyboardEvent.location')
   @DocsEditable()
   @Experimental() // untriaged
-  int get location => _blink.BlinkKeyboardEvent.instance.location_Getter_(unwrap_jso(this));
+  int get location => _blink.BlinkKeyboardEvent.instance.location_Getter_(this);
   
   @DomName('KeyboardEvent.metaKey')
   @DocsEditable()
-  bool get metaKey => _blink.BlinkKeyboardEvent.instance.metaKey_Getter_(unwrap_jso(this));
+  bool get metaKey => _blink.BlinkKeyboardEvent.instance.metaKey_Getter_(this);
   
   @DomName('KeyboardEvent.repeat')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get repeat => _blink.BlinkKeyboardEvent.instance.repeat_Getter_(unwrap_jso(this));
+  bool get repeat => _blink.BlinkKeyboardEvent.instance.repeat_Getter_(this);
   
   @DomName('KeyboardEvent.shiftKey')
   @DocsEditable()
-  bool get shiftKey => _blink.BlinkKeyboardEvent.instance.shiftKey_Getter_(unwrap_jso(this));
+  bool get shiftKey => _blink.BlinkKeyboardEvent.instance.shiftKey_Getter_(this);
   
   @DomName('KeyboardEvent.getModifierState')
   @DocsEditable()
   @Experimental() // untriaged
-  bool getModifierState(String keyArg) => _blink.BlinkKeyboardEvent.instance.getModifierState_Callback_1_(unwrap_jso(this), keyArg);
+  bool getModifierState(String keyArg) => _blink.BlinkKeyboardEvent.instance.getModifierState_Callback_1_(this, keyArg);
   
   @DomName('KeyboardEvent.initKeyboardEvent')
   @DocsEditable()
-  void _initKeyboardEvent(String type, bool bubbles, bool cancelable, Window view, String keyIdentifier, int location, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) => _blink.BlinkKeyboardEvent.instance.initKeyboardEvent_Callback_10_(unwrap_jso(this), type, bubbles, cancelable, unwrap_jso(view), keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey);
+  void _initKeyboardEvent(String type, bool bubbles, bool cancelable, Window view, String keyIdentifier, int location, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) => _blink.BlinkKeyboardEvent.instance.initKeyboardEvent_Callback_10_(this, type, bubbles, cancelable, view, keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25045,25 +23479,21 @@
   @DocsEditable()
   factory KeyframeEffect(Element target, List<Map> keyframes, [timing]) {
     if ((keyframes is List<Map>) && (target is Element || target == null) && timing == null) {
-      return wrap_jso(_blink.BlinkKeyframeEffect.instance.constructorCallback_2_(target, keyframes));
+      return _blink.BlinkKeyframeEffect.instance.constructorCallback_2_(target, keyframes);
     }
     if ((timing is num) && (keyframes is List<Map>) && (target is Element || target == null)) {
-      return wrap_jso(_blink.BlinkKeyframeEffect.instance.constructorCallback_3_(target, keyframes, timing));
+      return _blink.BlinkKeyframeEffect.instance.constructorCallback_3_(target, keyframes, timing);
     }
     if ((timing is Map) && (keyframes is List<Map>) && (target is Element || target == null)) {
       var timing_1 = convertDartToNative_Dictionary(timing);
-      return wrap_jso(_blink.BlinkKeyframeEffect.instance.constructorCallback_3_(target, keyframes, timing_1));
+      return _blink.BlinkKeyframeEffect.instance.constructorCallback_3_(target, keyframes, timing_1);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
 
   @Deprecated("Internal Use Only")
-  static KeyframeEffect internalCreateKeyframeEffect() {
-    return new KeyframeEffect._internalWrap();
-  }
-
-  external factory KeyframeEffect._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   KeyframeEffect.internal_() : super.internal_();
@@ -25093,11 +23523,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static KeygenElement internalCreateKeygenElement() {
-    return new KeygenElement._internalWrap();
-  }
-
-  external factory KeygenElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   KeygenElement.internal_() : super.internal_();
@@ -25114,81 +23540,81 @@
 
   @DomName('HTMLKeygenElement.autofocus')
   @DocsEditable()
-  bool get autofocus => _blink.BlinkHTMLKeygenElement.instance.autofocus_Getter_(unwrap_jso(this));
+  bool get autofocus => _blink.BlinkHTMLKeygenElement.instance.autofocus_Getter_(this);
   
   @DomName('HTMLKeygenElement.autofocus')
   @DocsEditable()
-  set autofocus(bool value) => _blink.BlinkHTMLKeygenElement.instance.autofocus_Setter_(unwrap_jso(this), value);
+  set autofocus(bool value) => _blink.BlinkHTMLKeygenElement.instance.autofocus_Setter_(this, value);
   
   @DomName('HTMLKeygenElement.challenge')
   @DocsEditable()
-  String get challenge => _blink.BlinkHTMLKeygenElement.instance.challenge_Getter_(unwrap_jso(this));
+  String get challenge => _blink.BlinkHTMLKeygenElement.instance.challenge_Getter_(this);
   
   @DomName('HTMLKeygenElement.challenge')
   @DocsEditable()
-  set challenge(String value) => _blink.BlinkHTMLKeygenElement.instance.challenge_Setter_(unwrap_jso(this), value);
+  set challenge(String value) => _blink.BlinkHTMLKeygenElement.instance.challenge_Setter_(this, value);
   
   @DomName('HTMLKeygenElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLKeygenElement.instance.disabled_Getter_(unwrap_jso(this));
+  bool get disabled => _blink.BlinkHTMLKeygenElement.instance.disabled_Getter_(this);
   
   @DomName('HTMLKeygenElement.disabled')
   @DocsEditable()
-  set disabled(bool value) => _blink.BlinkHTMLKeygenElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLKeygenElement.instance.disabled_Setter_(this, value);
   
   @DomName('HTMLKeygenElement.form')
   @DocsEditable()
-  FormElement get form => wrap_jso(_blink.BlinkHTMLKeygenElement.instance.form_Getter_(unwrap_jso(this)));
+  FormElement get form => _blink.BlinkHTMLKeygenElement.instance.form_Getter_(this);
   
   @DomName('HTMLKeygenElement.keytype')
   @DocsEditable()
-  String get keytype => _blink.BlinkHTMLKeygenElement.instance.keytype_Getter_(unwrap_jso(this));
+  String get keytype => _blink.BlinkHTMLKeygenElement.instance.keytype_Getter_(this);
   
   @DomName('HTMLKeygenElement.keytype')
   @DocsEditable()
-  set keytype(String value) => _blink.BlinkHTMLKeygenElement.instance.keytype_Setter_(unwrap_jso(this), value);
+  set keytype(String value) => _blink.BlinkHTMLKeygenElement.instance.keytype_Setter_(this, value);
   
   @DomName('HTMLKeygenElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => wrap_jso(_blink.BlinkHTMLKeygenElement.instance.labels_Getter_(unwrap_jso(this)));
+  List<Node> get labels => (_blink.BlinkHTMLKeygenElement.instance.labels_Getter_(this));
   
   @DomName('HTMLKeygenElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLKeygenElement.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkHTMLKeygenElement.instance.name_Getter_(this);
   
   @DomName('HTMLKeygenElement.name')
   @DocsEditable()
-  set name(String value) => _blink.BlinkHTMLKeygenElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLKeygenElement.instance.name_Setter_(this, value);
   
   @DomName('HTMLKeygenElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLKeygenElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLKeygenElement.instance.type_Getter_(this);
   
   @DomName('HTMLKeygenElement.validationMessage')
   @DocsEditable()
-  String get validationMessage => _blink.BlinkHTMLKeygenElement.instance.validationMessage_Getter_(unwrap_jso(this));
+  String get validationMessage => _blink.BlinkHTMLKeygenElement.instance.validationMessage_Getter_(this);
   
   @DomName('HTMLKeygenElement.validity')
   @DocsEditable()
-  ValidityState get validity => wrap_jso(_blink.BlinkHTMLKeygenElement.instance.validity_Getter_(unwrap_jso(this)));
+  ValidityState get validity => _blink.BlinkHTMLKeygenElement.instance.validity_Getter_(this);
   
   @DomName('HTMLKeygenElement.willValidate')
   @DocsEditable()
-  bool get willValidate => _blink.BlinkHTMLKeygenElement.instance.willValidate_Getter_(unwrap_jso(this));
+  bool get willValidate => _blink.BlinkHTMLKeygenElement.instance.willValidate_Getter_(this);
   
   @DomName('HTMLKeygenElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLKeygenElement.instance.checkValidity_Callback_0_(unwrap_jso(this));
+  bool checkValidity() => _blink.BlinkHTMLKeygenElement.instance.checkValidity_Callback_0_(this);
   
   @DomName('HTMLKeygenElement.reportValidity')
   @DocsEditable()
   @Experimental() // untriaged
-  bool reportValidity() => _blink.BlinkHTMLKeygenElement.instance.reportValidity_Callback_0_(unwrap_jso(this));
+  bool reportValidity() => _blink.BlinkHTMLKeygenElement.instance.reportValidity_Callback_0_(this);
   
   @DomName('HTMLKeygenElement.setCustomValidity')
   @DocsEditable()
-  void setCustomValidity(String error) => _blink.BlinkHTMLKeygenElement.instance.setCustomValidity_Callback_1_(unwrap_jso(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
@@ -25210,11 +23636,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static LIElement internalCreateLIElement() {
-    return new LIElement._internalWrap();
-  }
-
-  external factory LIElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   LIElement.internal_() : super.internal_();
@@ -25228,11 +23650,11 @@
 
   @DomName('HTMLLIElement.value')
   @DocsEditable()
-  int get value => _blink.BlinkHTMLLIElement.instance.value_Getter_(unwrap_jso(this));
+  int get value => _blink.BlinkHTMLLIElement.instance.value_Getter_(this);
   
   @DomName('HTMLLIElement.value')
   @DocsEditable()
-  set value(int value) => _blink.BlinkHTMLLIElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(int value) => _blink.BlinkHTMLLIElement.instance.value_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25254,11 +23676,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static LabelElement internalCreateLabelElement() {
-    return new LabelElement._internalWrap();
-  }
-
-  external factory LabelElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   LabelElement.internal_() : super.internal_();
@@ -25272,19 +23690,19 @@
 
   @DomName('HTMLLabelElement.control')
   @DocsEditable()
-  HtmlElement get control => wrap_jso(_blink.BlinkHTMLLabelElement.instance.control_Getter_(unwrap_jso(this)));
+  HtmlElement get control => _blink.BlinkHTMLLabelElement.instance.control_Getter_(this);
   
   @DomName('HTMLLabelElement.form')
   @DocsEditable()
-  FormElement get form => wrap_jso(_blink.BlinkHTMLLabelElement.instance.form_Getter_(unwrap_jso(this)));
+  FormElement get form => _blink.BlinkHTMLLabelElement.instance.form_Getter_(this);
   
   @DomName('HTMLLabelElement.htmlFor')
   @DocsEditable()
-  String get htmlFor => _blink.BlinkHTMLLabelElement.instance.htmlFor_Getter_(unwrap_jso(this));
+  String get htmlFor => _blink.BlinkHTMLLabelElement.instance.htmlFor_Getter_(this);
   
   @DomName('HTMLLabelElement.htmlFor')
   @DocsEditable()
-  set htmlFor(String value) => _blink.BlinkHTMLLabelElement.instance.htmlFor_Setter_(unwrap_jso(this), value);
+  set htmlFor(String value) => _blink.BlinkHTMLLabelElement.instance.htmlFor_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25306,11 +23724,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static LegendElement internalCreateLegendElement() {
-    return new LegendElement._internalWrap();
-  }
-
-  external factory LegendElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   LegendElement.internal_() : super.internal_();
@@ -25324,7 +23738,7 @@
 
   @DomName('HTMLLegendElement.form')
   @DocsEditable()
-  FormElement get form => wrap_jso(_blink.BlinkHTMLLegendElement.instance.form_Getter_(unwrap_jso(this)));
+  FormElement get form => _blink.BlinkHTMLLegendElement.instance.form_Getter_(this);
   
 }
 // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
@@ -25344,11 +23758,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static LinkElement internalCreateLinkElement() {
-    return new LinkElement._internalWrap();
-  }
-
-  external factory LinkElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   LinkElement.internal_() : super.internal_();
@@ -25363,84 +23773,84 @@
   @DomName('HTMLLinkElement.crossOrigin')
   @DocsEditable()
   @Experimental() // untriaged
-  String get crossOrigin => _blink.BlinkHTMLLinkElement.instance.crossOrigin_Getter_(unwrap_jso(this));
+  String get crossOrigin => _blink.BlinkHTMLLinkElement.instance.crossOrigin_Getter_(this);
   
   @DomName('HTMLLinkElement.crossOrigin')
   @DocsEditable()
   @Experimental() // untriaged
-  set crossOrigin(String value) => _blink.BlinkHTMLLinkElement.instance.crossOrigin_Setter_(unwrap_jso(this), value);
+  set crossOrigin(String value) => _blink.BlinkHTMLLinkElement.instance.crossOrigin_Setter_(this, value);
   
   @DomName('HTMLLinkElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLLinkElement.instance.disabled_Getter_(unwrap_jso(this));
+  bool get disabled => _blink.BlinkHTMLLinkElement.instance.disabled_Getter_(this);
   
   @DomName('HTMLLinkElement.disabled')
   @DocsEditable()
-  set disabled(bool value) => _blink.BlinkHTMLLinkElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLLinkElement.instance.disabled_Setter_(this, value);
   
   @DomName('HTMLLinkElement.href')
   @DocsEditable()
-  String get href => _blink.BlinkHTMLLinkElement.instance.href_Getter_(unwrap_jso(this));
+  String get href => _blink.BlinkHTMLLinkElement.instance.href_Getter_(this);
   
   @DomName('HTMLLinkElement.href')
   @DocsEditable()
-  set href(String value) => _blink.BlinkHTMLLinkElement.instance.href_Setter_(unwrap_jso(this), value);
+  set href(String value) => _blink.BlinkHTMLLinkElement.instance.href_Setter_(this, value);
   
   @DomName('HTMLLinkElement.hreflang')
   @DocsEditable()
-  String get hreflang => _blink.BlinkHTMLLinkElement.instance.hreflang_Getter_(unwrap_jso(this));
+  String get hreflang => _blink.BlinkHTMLLinkElement.instance.hreflang_Getter_(this);
   
   @DomName('HTMLLinkElement.hreflang')
   @DocsEditable()
-  set hreflang(String value) => _blink.BlinkHTMLLinkElement.instance.hreflang_Setter_(unwrap_jso(this), value);
+  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 => wrap_jso(_blink.BlinkHTMLLinkElement.instance.import_Getter_(unwrap_jso(this)));
+  Document get import => _blink.BlinkHTMLLinkElement.instance.import_Getter_(this);
   
   @DomName('HTMLLinkElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  String get integrity => _blink.BlinkHTMLLinkElement.instance.integrity_Getter_(unwrap_jso(this));
+  String get integrity => _blink.BlinkHTMLLinkElement.instance.integrity_Getter_(this);
   
   @DomName('HTMLLinkElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  set integrity(String value) => _blink.BlinkHTMLLinkElement.instance.integrity_Setter_(unwrap_jso(this), value);
+  set integrity(String value) => _blink.BlinkHTMLLinkElement.instance.integrity_Setter_(this, value);
   
   @DomName('HTMLLinkElement.media')
   @DocsEditable()
-  String get media => _blink.BlinkHTMLLinkElement.instance.media_Getter_(unwrap_jso(this));
+  String get media => _blink.BlinkHTMLLinkElement.instance.media_Getter_(this);
   
   @DomName('HTMLLinkElement.media')
   @DocsEditable()
-  set media(String value) => _blink.BlinkHTMLLinkElement.instance.media_Setter_(unwrap_jso(this), value);
+  set media(String value) => _blink.BlinkHTMLLinkElement.instance.media_Setter_(this, value);
   
   @DomName('HTMLLinkElement.rel')
   @DocsEditable()
-  String get rel => _blink.BlinkHTMLLinkElement.instance.rel_Getter_(unwrap_jso(this));
+  String get rel => _blink.BlinkHTMLLinkElement.instance.rel_Getter_(this);
   
   @DomName('HTMLLinkElement.rel')
   @DocsEditable()
-  set rel(String value) => _blink.BlinkHTMLLinkElement.instance.rel_Setter_(unwrap_jso(this), value);
+  set rel(String value) => _blink.BlinkHTMLLinkElement.instance.rel_Setter_(this, value);
   
   @DomName('HTMLLinkElement.sheet')
   @DocsEditable()
-  StyleSheet get sheet => wrap_jso(_blink.BlinkHTMLLinkElement.instance.sheet_Getter_(unwrap_jso(this)));
+  StyleSheet get sheet => _blink.BlinkHTMLLinkElement.instance.sheet_Getter_(this);
   
   @DomName('HTMLLinkElement.sizes')
   @DocsEditable()
-  DomSettableTokenList get sizes => wrap_jso(_blink.BlinkHTMLLinkElement.instance.sizes_Getter_(unwrap_jso(this)));
+  DomSettableTokenList get sizes => _blink.BlinkHTMLLinkElement.instance.sizes_Getter_(this);
   
   @DomName('HTMLLinkElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLLinkElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLLinkElement.instance.type_Getter_(this);
   
   @DomName('HTMLLinkElement.type')
   @DocsEditable()
-  set type(String value) => _blink.BlinkHTMLLinkElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLLinkElement.instance.type_Setter_(this, value);
   
 
     /// Checks if HTML imports are supported on the current platform.
@@ -25459,111 +23869,103 @@
   // To suppress missing implicit constructor warnings.
   factory Location._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Location internalCreateLocation() {
-    return new Location._internalWrap();
-  }
 
-  factory Location._internalWrap() {
-    return new Location.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Location.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Location.ancestorOrigins')
   @DocsEditable()
   @Experimental() // nonstandard
-  List<String> get ancestorOrigins => wrap_jso(_blink.BlinkLocation.instance.ancestorOrigins_Getter_(unwrap_jso(this)));
+  List<String> get ancestorOrigins => _blink.BlinkLocation.instance.ancestorOrigins_Getter_(this);
   
   @DomName('Location.hash')
   @DocsEditable()
-  String get hash => _blink.BlinkLocation.instance.hash_Getter_(unwrap_jso(this));
+  String get hash => _blink.BlinkLocation.instance.hash_Getter_(this);
   
   @DomName('Location.hash')
   @DocsEditable()
-  set hash(String value) => _blink.BlinkLocation.instance.hash_Setter_(unwrap_jso(this), value);
+  set hash(String value) => _blink.BlinkLocation.instance.hash_Setter_(this, value);
   
   @DomName('Location.host')
   @DocsEditable()
-  String get host => _blink.BlinkLocation.instance.host_Getter_(unwrap_jso(this));
+  String get host => _blink.BlinkLocation.instance.host_Getter_(this);
   
   @DomName('Location.host')
   @DocsEditable()
-  set host(String value) => _blink.BlinkLocation.instance.host_Setter_(unwrap_jso(this), value);
+  set host(String value) => _blink.BlinkLocation.instance.host_Setter_(this, value);
   
   @DomName('Location.hostname')
   @DocsEditable()
-  String get hostname => _blink.BlinkLocation.instance.hostname_Getter_(unwrap_jso(this));
+  String get hostname => _blink.BlinkLocation.instance.hostname_Getter_(this);
   
   @DomName('Location.hostname')
   @DocsEditable()
-  set hostname(String value) => _blink.BlinkLocation.instance.hostname_Setter_(unwrap_jso(this), value);
+  set hostname(String value) => _blink.BlinkLocation.instance.hostname_Setter_(this, value);
   
   @DomName('Location.href')
   @DocsEditable()
-  String get href => _blink.BlinkLocation.instance.href_Getter_(unwrap_jso(this));
+  String get href => _blink.BlinkLocation.instance.href_Getter_(this);
   
   @DomName('Location.href')
   @DocsEditable()
-  set href(String value) => _blink.BlinkLocation.instance.href_Setter_(unwrap_jso(this), value);
+  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.instance.origin_Getter_(unwrap_jso(this));
+  String get origin => _blink.BlinkLocation.instance.origin_Getter_(this);
   
   @DomName('Location.pathname')
   @DocsEditable()
-  String get pathname => _blink.BlinkLocation.instance.pathname_Getter_(unwrap_jso(this));
+  String get pathname => _blink.BlinkLocation.instance.pathname_Getter_(this);
   
   @DomName('Location.pathname')
   @DocsEditable()
-  set pathname(String value) => _blink.BlinkLocation.instance.pathname_Setter_(unwrap_jso(this), value);
+  set pathname(String value) => _blink.BlinkLocation.instance.pathname_Setter_(this, value);
   
   @DomName('Location.port')
   @DocsEditable()
-  String get port => _blink.BlinkLocation.instance.port_Getter_(unwrap_jso(this));
+  String get port => _blink.BlinkLocation.instance.port_Getter_(this);
   
   @DomName('Location.port')
   @DocsEditable()
-  set port(String value) => _blink.BlinkLocation.instance.port_Setter_(unwrap_jso(this), value);
+  set port(String value) => _blink.BlinkLocation.instance.port_Setter_(this, value);
   
   @DomName('Location.protocol')
   @DocsEditable()
-  String get protocol => _blink.BlinkLocation.instance.protocol_Getter_(unwrap_jso(this));
+  String get protocol => _blink.BlinkLocation.instance.protocol_Getter_(this);
   
   @DomName('Location.protocol')
   @DocsEditable()
-  set protocol(String value) => _blink.BlinkLocation.instance.protocol_Setter_(unwrap_jso(this), value);
+  set protocol(String value) => _blink.BlinkLocation.instance.protocol_Setter_(this, value);
   
   @DomName('Location.search')
   @DocsEditable()
-  String get search => _blink.BlinkLocation.instance.search_Getter_(unwrap_jso(this));
+  String get search => _blink.BlinkLocation.instance.search_Getter_(this);
   
   @DomName('Location.search')
   @DocsEditable()
-  set search(String value) => _blink.BlinkLocation.instance.search_Setter_(unwrap_jso(this), value);
+  set search(String value) => _blink.BlinkLocation.instance.search_Setter_(this, value);
   
   @DomName('Location.assign')
   @DocsEditable()
-  void assign([String url]) => _blink.BlinkLocation.instance.assign_Callback_1_(unwrap_jso(this), url);
+  void assign([String url]) => _blink.BlinkLocation.instance.assign_Callback_1_(this, url);
   
   @DomName('Location.reload')
   @DocsEditable()
-  void reload() => _blink.BlinkLocation.instance.reload_Callback_0_(unwrap_jso(this));
+  void reload() => _blink.BlinkLocation.instance.reload_Callback_0_(this);
   
   @DomName('Location.replace')
   @DocsEditable()
-  void replace(String url) => _blink.BlinkLocation.instance.replace_Callback_1_(unwrap_jso(this), url);
+  void replace(String url) => _blink.BlinkLocation.instance.replace_Callback_1_(this, url);
   
   @DomName('Location.toString')
   @DocsEditable()
-  String toString() => _blink.BlinkLocation.instance.toString_Callback_0_(unwrap_jso(this));
+  String toString() => _blink.BlinkLocation.instance.toString_Callback_0_(this);
   
 
 
@@ -25587,11 +23989,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MapElement internalCreateMapElement() {
-    return new MapElement._internalWrap();
-  }
-
-  external factory MapElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MapElement.internal_() : super.internal_();
@@ -25605,15 +24003,15 @@
 
   @DomName('HTMLMapElement.areas')
   @DocsEditable()
-  List<Node> get areas => wrap_jso(_blink.BlinkHTMLMapElement.instance.areas_Getter_(unwrap_jso(this)));
+  List<Node> get areas => (_blink.BlinkHTMLMapElement.instance.areas_Getter_(this));
   
   @DomName('HTMLMapElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLMapElement.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkHTMLMapElement.instance.name_Getter_(this);
   
   @DomName('HTMLMapElement.name')
   @DocsEditable()
-  set name(String value) => _blink.BlinkHTMLMapElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLMapElement.instance.name_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25634,16 +24032,12 @@
   @DomName('MediaController.MediaController')
   @DocsEditable()
   factory MediaController() {
-    return wrap_jso(_blink.BlinkMediaController.instance.constructorCallback_0_());
+    return _blink.BlinkMediaController.instance.constructorCallback_0_();
   }
 
 
   @Deprecated("Internal Use Only")
-  static MediaController internalCreateMediaController() {
-    return new MediaController._internalWrap();
-  }
-
-  external factory MediaController._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaController.internal_() : super.internal_();
@@ -25651,79 +24045,79 @@
 
   @DomName('MediaController.buffered')
   @DocsEditable()
-  TimeRanges get buffered => wrap_jso(_blink.BlinkMediaController.instance.buffered_Getter_(unwrap_jso(this)));
+  TimeRanges get buffered => _blink.BlinkMediaController.instance.buffered_Getter_(this);
   
   @DomName('MediaController.currentTime')
   @DocsEditable()
-  num get currentTime => _blink.BlinkMediaController.instance.currentTime_Getter_(unwrap_jso(this));
+  num get currentTime => _blink.BlinkMediaController.instance.currentTime_Getter_(this);
   
   @DomName('MediaController.currentTime')
   @DocsEditable()
-  set currentTime(num value) => _blink.BlinkMediaController.instance.currentTime_Setter_(unwrap_jso(this), value);
+  set currentTime(num value) => _blink.BlinkMediaController.instance.currentTime_Setter_(this, value);
   
   @DomName('MediaController.defaultPlaybackRate')
   @DocsEditable()
-  num get defaultPlaybackRate => _blink.BlinkMediaController.instance.defaultPlaybackRate_Getter_(unwrap_jso(this));
+  num get defaultPlaybackRate => _blink.BlinkMediaController.instance.defaultPlaybackRate_Getter_(this);
   
   @DomName('MediaController.defaultPlaybackRate')
   @DocsEditable()
-  set defaultPlaybackRate(num value) => _blink.BlinkMediaController.instance.defaultPlaybackRate_Setter_(unwrap_jso(this), value);
+  set defaultPlaybackRate(num value) => _blink.BlinkMediaController.instance.defaultPlaybackRate_Setter_(this, value);
   
   @DomName('MediaController.duration')
   @DocsEditable()
-  num get duration => _blink.BlinkMediaController.instance.duration_Getter_(unwrap_jso(this));
+  num get duration => _blink.BlinkMediaController.instance.duration_Getter_(this);
   
   @DomName('MediaController.muted')
   @DocsEditable()
-  bool get muted => _blink.BlinkMediaController.instance.muted_Getter_(unwrap_jso(this));
+  bool get muted => _blink.BlinkMediaController.instance.muted_Getter_(this);
   
   @DomName('MediaController.muted')
   @DocsEditable()
-  set muted(bool value) => _blink.BlinkMediaController.instance.muted_Setter_(unwrap_jso(this), value);
+  set muted(bool value) => _blink.BlinkMediaController.instance.muted_Setter_(this, value);
   
   @DomName('MediaController.paused')
   @DocsEditable()
-  bool get paused => _blink.BlinkMediaController.instance.paused_Getter_(unwrap_jso(this));
+  bool get paused => _blink.BlinkMediaController.instance.paused_Getter_(this);
   
   @DomName('MediaController.playbackRate')
   @DocsEditable()
-  num get playbackRate => _blink.BlinkMediaController.instance.playbackRate_Getter_(unwrap_jso(this));
+  num get playbackRate => _blink.BlinkMediaController.instance.playbackRate_Getter_(this);
   
   @DomName('MediaController.playbackRate')
   @DocsEditable()
-  set playbackRate(num value) => _blink.BlinkMediaController.instance.playbackRate_Setter_(unwrap_jso(this), value);
+  set playbackRate(num value) => _blink.BlinkMediaController.instance.playbackRate_Setter_(this, value);
   
   @DomName('MediaController.playbackState')
   @DocsEditable()
-  String get playbackState => _blink.BlinkMediaController.instance.playbackState_Getter_(unwrap_jso(this));
+  String get playbackState => _blink.BlinkMediaController.instance.playbackState_Getter_(this);
   
   @DomName('MediaController.played')
   @DocsEditable()
-  TimeRanges get played => wrap_jso(_blink.BlinkMediaController.instance.played_Getter_(unwrap_jso(this)));
+  TimeRanges get played => _blink.BlinkMediaController.instance.played_Getter_(this);
   
   @DomName('MediaController.seekable')
   @DocsEditable()
-  TimeRanges get seekable => wrap_jso(_blink.BlinkMediaController.instance.seekable_Getter_(unwrap_jso(this)));
+  TimeRanges get seekable => _blink.BlinkMediaController.instance.seekable_Getter_(this);
   
   @DomName('MediaController.volume')
   @DocsEditable()
-  num get volume => _blink.BlinkMediaController.instance.volume_Getter_(unwrap_jso(this));
+  num get volume => _blink.BlinkMediaController.instance.volume_Getter_(this);
   
   @DomName('MediaController.volume')
   @DocsEditable()
-  set volume(num value) => _blink.BlinkMediaController.instance.volume_Setter_(unwrap_jso(this), value);
+  set volume(num value) => _blink.BlinkMediaController.instance.volume_Setter_(this, value);
   
   @DomName('MediaController.pause')
   @DocsEditable()
-  void pause() => _blink.BlinkMediaController.instance.pause_Callback_0_(unwrap_jso(this));
+  void pause() => _blink.BlinkMediaController.instance.pause_Callback_0_(this);
   
   @DomName('MediaController.play')
   @DocsEditable()
-  void play() => _blink.BlinkMediaController.instance.play_Callback_0_(unwrap_jso(this));
+  void play() => _blink.BlinkMediaController.instance.play_Callback_0_(this);
   
   @DomName('MediaController.unpause')
   @DocsEditable()
-  void unpause() => _blink.BlinkMediaController.instance.unpause_Callback_0_(unwrap_jso(this));
+  void unpause() => _blink.BlinkMediaController.instance.unpause_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25740,40 +24134,32 @@
   // To suppress missing implicit constructor warnings.
   factory MediaDeviceInfo._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static MediaDeviceInfo internalCreateMediaDeviceInfo() {
-    return new MediaDeviceInfo._internalWrap();
-  }
 
-  factory MediaDeviceInfo._internalWrap() {
-    return new MediaDeviceInfo.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaDeviceInfo.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('MediaDeviceInfo.deviceId')
   @DocsEditable()
   @Experimental() // untriaged
-  String get deviceId => _blink.BlinkMediaDeviceInfo.instance.deviceId_Getter_(unwrap_jso(this));
+  String get deviceId => _blink.BlinkMediaDeviceInfo.instance.deviceId_Getter_(this);
   
   @DomName('MediaDeviceInfo.groupId')
   @DocsEditable()
   @Experimental() // untriaged
-  String get groupId => _blink.BlinkMediaDeviceInfo.instance.groupId_Getter_(unwrap_jso(this));
+  String get groupId => _blink.BlinkMediaDeviceInfo.instance.groupId_Getter_(this);
   
   @DomName('MediaDeviceInfo.kind')
   @DocsEditable()
   @Experimental() // untriaged
-  String get kind => _blink.BlinkMediaDeviceInfo.instance.kind_Getter_(unwrap_jso(this));
+  String get kind => _blink.BlinkMediaDeviceInfo.instance.kind_Getter_(this);
   
   @DomName('MediaDeviceInfo.label')
   @DocsEditable()
   @Experimental() // untriaged
-  String get label => _blink.BlinkMediaDeviceInfo.instance.label_Getter_(unwrap_jso(this));
+  String get label => _blink.BlinkMediaDeviceInfo.instance.label_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25790,30 +24176,22 @@
   // To suppress missing implicit constructor warnings.
   factory MediaDevices._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static MediaDevices internalCreateMediaDevices() {
-    return new MediaDevices._internalWrap();
-  }
 
-  factory MediaDevices._internalWrap() {
-    return new MediaDevices.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaDevices.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('MediaDevices.enumerateDevices')
   @DocsEditable()
   @Experimental() // untriaged
-  Future enumerateDevices() => wrap_jso(_blink.BlinkMediaDevices.instance.enumerateDevices_Callback_0_(unwrap_jso(this)));
+  Future enumerateDevices() => convertNativePromiseToDartFuture(_blink.BlinkMediaDevices.instance.enumerateDevices_Callback_0_(this));
   
   @DomName('MediaDevices.getUserMedia')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getUserMedia(Map options) => wrap_jso(_blink.BlinkMediaDevices.instance.getUserMedia_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(options)));
+  Future getUserMedia(Map options) => convertNativePromiseToDartFuture(_blink.BlinkMediaDevices.instance.getUserMedia_Callback_1_(this, convertDartToNative_Dictionary(options)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25888,11 +24266,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MediaElement internalCreateMediaElement() {
-    return new MediaElement._internalWrap();
-  }
-
-  external factory MediaElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaElement.internal_() : super.internal_();
@@ -25943,197 +24317,197 @@
   @DomName('HTMLMediaElement.audioTracks')
   @DocsEditable()
   @Experimental() // untriaged
-  AudioTrackList get audioTracks => wrap_jso(_blink.BlinkHTMLMediaElement.instance.audioTracks_Getter_(unwrap_jso(this)));
+  AudioTrackList get audioTracks => _blink.BlinkHTMLMediaElement.instance.audioTracks_Getter_(this);
   
   @DomName('HTMLMediaElement.autoplay')
   @DocsEditable()
-  bool get autoplay => _blink.BlinkHTMLMediaElement.instance.autoplay_Getter_(unwrap_jso(this));
+  bool get autoplay => _blink.BlinkHTMLMediaElement.instance.autoplay_Getter_(this);
   
   @DomName('HTMLMediaElement.autoplay')
   @DocsEditable()
-  set autoplay(bool value) => _blink.BlinkHTMLMediaElement.instance.autoplay_Setter_(unwrap_jso(this), value);
+  set autoplay(bool value) => _blink.BlinkHTMLMediaElement.instance.autoplay_Setter_(this, value);
   
   @DomName('HTMLMediaElement.buffered')
   @DocsEditable()
-  TimeRanges get buffered => wrap_jso(_blink.BlinkHTMLMediaElement.instance.buffered_Getter_(unwrap_jso(this)));
+  TimeRanges get buffered => _blink.BlinkHTMLMediaElement.instance.buffered_Getter_(this);
   
   @DomName('HTMLMediaElement.controller')
   @DocsEditable()
-  MediaController get controller => wrap_jso(_blink.BlinkHTMLMediaElement.instance.controller_Getter_(unwrap_jso(this)));
+  MediaController get controller => _blink.BlinkHTMLMediaElement.instance.controller_Getter_(this);
   
   @DomName('HTMLMediaElement.controller')
   @DocsEditable()
-  set controller(MediaController value) => _blink.BlinkHTMLMediaElement.instance.controller_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set controller(MediaController value) => _blink.BlinkHTMLMediaElement.instance.controller_Setter_(this, value);
   
   @DomName('HTMLMediaElement.controls')
   @DocsEditable()
-  bool get controls => _blink.BlinkHTMLMediaElement.instance.controls_Getter_(unwrap_jso(this));
+  bool get controls => _blink.BlinkHTMLMediaElement.instance.controls_Getter_(this);
   
   @DomName('HTMLMediaElement.controls')
   @DocsEditable()
-  set controls(bool value) => _blink.BlinkHTMLMediaElement.instance.controls_Setter_(unwrap_jso(this), value);
+  set controls(bool value) => _blink.BlinkHTMLMediaElement.instance.controls_Setter_(this, value);
   
   @DomName('HTMLMediaElement.crossOrigin')
   @DocsEditable()
   @Experimental() // untriaged
-  String get crossOrigin => _blink.BlinkHTMLMediaElement.instance.crossOrigin_Getter_(unwrap_jso(this));
+  String get crossOrigin => _blink.BlinkHTMLMediaElement.instance.crossOrigin_Getter_(this);
   
   @DomName('HTMLMediaElement.crossOrigin')
   @DocsEditable()
   @Experimental() // untriaged
-  set crossOrigin(String value) => _blink.BlinkHTMLMediaElement.instance.crossOrigin_Setter_(unwrap_jso(this), value);
+  set crossOrigin(String value) => _blink.BlinkHTMLMediaElement.instance.crossOrigin_Setter_(this, value);
   
   @DomName('HTMLMediaElement.currentSrc')
   @DocsEditable()
-  String get currentSrc => _blink.BlinkHTMLMediaElement.instance.currentSrc_Getter_(unwrap_jso(this));
+  String get currentSrc => _blink.BlinkHTMLMediaElement.instance.currentSrc_Getter_(this);
   
   @DomName('HTMLMediaElement.currentTime')
   @DocsEditable()
-  num get currentTime => _blink.BlinkHTMLMediaElement.instance.currentTime_Getter_(unwrap_jso(this));
+  num get currentTime => _blink.BlinkHTMLMediaElement.instance.currentTime_Getter_(this);
   
   @DomName('HTMLMediaElement.currentTime')
   @DocsEditable()
-  set currentTime(num value) => _blink.BlinkHTMLMediaElement.instance.currentTime_Setter_(unwrap_jso(this), value);
+  set currentTime(num value) => _blink.BlinkHTMLMediaElement.instance.currentTime_Setter_(this, value);
   
   @DomName('HTMLMediaElement.defaultMuted')
   @DocsEditable()
-  bool get defaultMuted => _blink.BlinkHTMLMediaElement.instance.defaultMuted_Getter_(unwrap_jso(this));
+  bool get defaultMuted => _blink.BlinkHTMLMediaElement.instance.defaultMuted_Getter_(this);
   
   @DomName('HTMLMediaElement.defaultMuted')
   @DocsEditable()
-  set defaultMuted(bool value) => _blink.BlinkHTMLMediaElement.instance.defaultMuted_Setter_(unwrap_jso(this), value);
+  set defaultMuted(bool value) => _blink.BlinkHTMLMediaElement.instance.defaultMuted_Setter_(this, value);
   
   @DomName('HTMLMediaElement.defaultPlaybackRate')
   @DocsEditable()
-  num get defaultPlaybackRate => _blink.BlinkHTMLMediaElement.instance.defaultPlaybackRate_Getter_(unwrap_jso(this));
+  num get defaultPlaybackRate => _blink.BlinkHTMLMediaElement.instance.defaultPlaybackRate_Getter_(this);
   
   @DomName('HTMLMediaElement.defaultPlaybackRate')
   @DocsEditable()
-  set defaultPlaybackRate(num value) => _blink.BlinkHTMLMediaElement.instance.defaultPlaybackRate_Setter_(unwrap_jso(this), value);
+  set defaultPlaybackRate(num value) => _blink.BlinkHTMLMediaElement.instance.defaultPlaybackRate_Setter_(this, value);
   
   @DomName('HTMLMediaElement.duration')
   @DocsEditable()
-  num get duration => _blink.BlinkHTMLMediaElement.instance.duration_Getter_(unwrap_jso(this));
+  num get duration => _blink.BlinkHTMLMediaElement.instance.duration_Getter_(this);
   
   @DomName('HTMLMediaElement.ended')
   @DocsEditable()
-  bool get ended => _blink.BlinkHTMLMediaElement.instance.ended_Getter_(unwrap_jso(this));
+  bool get ended => _blink.BlinkHTMLMediaElement.instance.ended_Getter_(this);
   
   @DomName('HTMLMediaElement.error')
   @DocsEditable()
-  MediaError get error => wrap_jso(_blink.BlinkHTMLMediaElement.instance.error_Getter_(unwrap_jso(this)));
+  MediaError get error => _blink.BlinkHTMLMediaElement.instance.error_Getter_(this);
   
   @DomName('HTMLMediaElement.loop')
   @DocsEditable()
-  bool get loop => _blink.BlinkHTMLMediaElement.instance.loop_Getter_(unwrap_jso(this));
+  bool get loop => _blink.BlinkHTMLMediaElement.instance.loop_Getter_(this);
   
   @DomName('HTMLMediaElement.loop')
   @DocsEditable()
-  set loop(bool value) => _blink.BlinkHTMLMediaElement.instance.loop_Setter_(unwrap_jso(this), value);
+  set loop(bool value) => _blink.BlinkHTMLMediaElement.instance.loop_Setter_(this, value);
   
   @DomName('HTMLMediaElement.mediaGroup')
   @DocsEditable()
-  String get mediaGroup => _blink.BlinkHTMLMediaElement.instance.mediaGroup_Getter_(unwrap_jso(this));
+  String get mediaGroup => _blink.BlinkHTMLMediaElement.instance.mediaGroup_Getter_(this);
   
   @DomName('HTMLMediaElement.mediaGroup')
   @DocsEditable()
-  set mediaGroup(String value) => _blink.BlinkHTMLMediaElement.instance.mediaGroup_Setter_(unwrap_jso(this), value);
+  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 => wrap_jso(_blink.BlinkHTMLMediaElement.instance.mediaKeys_Getter_(unwrap_jso(this)));
+  MediaKeys get mediaKeys => _blink.BlinkHTMLMediaElement.instance.mediaKeys_Getter_(this);
   
   @DomName('HTMLMediaElement.muted')
   @DocsEditable()
-  bool get muted => _blink.BlinkHTMLMediaElement.instance.muted_Getter_(unwrap_jso(this));
+  bool get muted => _blink.BlinkHTMLMediaElement.instance.muted_Getter_(this);
   
   @DomName('HTMLMediaElement.muted')
   @DocsEditable()
-  set muted(bool value) => _blink.BlinkHTMLMediaElement.instance.muted_Setter_(unwrap_jso(this), value);
+  set muted(bool value) => _blink.BlinkHTMLMediaElement.instance.muted_Setter_(this, value);
   
   @DomName('HTMLMediaElement.networkState')
   @DocsEditable()
-  int get networkState => _blink.BlinkHTMLMediaElement.instance.networkState_Getter_(unwrap_jso(this));
+  int get networkState => _blink.BlinkHTMLMediaElement.instance.networkState_Getter_(this);
   
   @DomName('HTMLMediaElement.paused')
   @DocsEditable()
-  bool get paused => _blink.BlinkHTMLMediaElement.instance.paused_Getter_(unwrap_jso(this));
+  bool get paused => _blink.BlinkHTMLMediaElement.instance.paused_Getter_(this);
   
   @DomName('HTMLMediaElement.playbackRate')
   @DocsEditable()
-  num get playbackRate => _blink.BlinkHTMLMediaElement.instance.playbackRate_Getter_(unwrap_jso(this));
+  num get playbackRate => _blink.BlinkHTMLMediaElement.instance.playbackRate_Getter_(this);
   
   @DomName('HTMLMediaElement.playbackRate')
   @DocsEditable()
-  set playbackRate(num value) => _blink.BlinkHTMLMediaElement.instance.playbackRate_Setter_(unwrap_jso(this), value);
+  set playbackRate(num value) => _blink.BlinkHTMLMediaElement.instance.playbackRate_Setter_(this, value);
   
   @DomName('HTMLMediaElement.played')
   @DocsEditable()
-  TimeRanges get played => wrap_jso(_blink.BlinkHTMLMediaElement.instance.played_Getter_(unwrap_jso(this)));
+  TimeRanges get played => _blink.BlinkHTMLMediaElement.instance.played_Getter_(this);
   
   @DomName('HTMLMediaElement.preload')
   @DocsEditable()
-  String get preload => _blink.BlinkHTMLMediaElement.instance.preload_Getter_(unwrap_jso(this));
+  String get preload => _blink.BlinkHTMLMediaElement.instance.preload_Getter_(this);
   
   @DomName('HTMLMediaElement.preload')
   @DocsEditable()
-  set preload(String value) => _blink.BlinkHTMLMediaElement.instance.preload_Setter_(unwrap_jso(this), value);
+  set preload(String value) => _blink.BlinkHTMLMediaElement.instance.preload_Setter_(this, value);
   
   @DomName('HTMLMediaElement.readyState')
   @DocsEditable()
-  int get readyState => _blink.BlinkHTMLMediaElement.instance.readyState_Getter_(unwrap_jso(this));
+  int get readyState => _blink.BlinkHTMLMediaElement.instance.readyState_Getter_(this);
   
   @DomName('HTMLMediaElement.seekable')
   @DocsEditable()
-  TimeRanges get seekable => wrap_jso(_blink.BlinkHTMLMediaElement.instance.seekable_Getter_(unwrap_jso(this)));
+  TimeRanges get seekable => _blink.BlinkHTMLMediaElement.instance.seekable_Getter_(this);
   
   @DomName('HTMLMediaElement.seeking')
   @DocsEditable()
-  bool get seeking => _blink.BlinkHTMLMediaElement.instance.seeking_Getter_(unwrap_jso(this));
+  bool get seeking => _blink.BlinkHTMLMediaElement.instance.seeking_Getter_(this);
   
   @DomName('HTMLMediaElement.session')
   @DocsEditable()
   @Experimental() // untriaged
-  MediaSession get session => wrap_jso(_blink.BlinkHTMLMediaElement.instance.session_Getter_(unwrap_jso(this)));
+  MediaSession get session => _blink.BlinkHTMLMediaElement.instance.session_Getter_(this);
   
   @DomName('HTMLMediaElement.session')
   @DocsEditable()
   @Experimental() // untriaged
-  set session(MediaSession value) => _blink.BlinkHTMLMediaElement.instance.session_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set session(MediaSession value) => _blink.BlinkHTMLMediaElement.instance.session_Setter_(this, value);
   
   @DomName('HTMLMediaElement.sinkId')
   @DocsEditable()
   @Experimental() // untriaged
-  String get sinkId => _blink.BlinkHTMLMediaElement.instance.sinkId_Getter_(unwrap_jso(this));
+  String get sinkId => _blink.BlinkHTMLMediaElement.instance.sinkId_Getter_(this);
   
   @DomName('HTMLMediaElement.src')
   @DocsEditable()
-  String get src => _blink.BlinkHTMLMediaElement.instance.src_Getter_(unwrap_jso(this));
+  String get src => _blink.BlinkHTMLMediaElement.instance.src_Getter_(this);
   
   @DomName('HTMLMediaElement.src')
   @DocsEditable()
-  set src(String value) => _blink.BlinkHTMLMediaElement.instance.src_Setter_(unwrap_jso(this), value);
+  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 => wrap_jso(_blink.BlinkHTMLMediaElement.instance.textTracks_Getter_(unwrap_jso(this)));
+  TextTrackList get textTracks => _blink.BlinkHTMLMediaElement.instance.textTracks_Getter_(this);
   
   @DomName('HTMLMediaElement.videoTracks')
   @DocsEditable()
   @Experimental() // untriaged
-  VideoTrackList get videoTracks => wrap_jso(_blink.BlinkHTMLMediaElement.instance.videoTracks_Getter_(unwrap_jso(this)));
+  VideoTrackList get videoTracks => _blink.BlinkHTMLMediaElement.instance.videoTracks_Getter_(this);
   
   @DomName('HTMLMediaElement.volume')
   @DocsEditable()
-  num get volume => _blink.BlinkHTMLMediaElement.instance.volume_Getter_(unwrap_jso(this));
+  num get volume => _blink.BlinkHTMLMediaElement.instance.volume_Getter_(this);
   
   @DomName('HTMLMediaElement.volume')
   @DocsEditable()
-  set volume(num value) => _blink.BlinkHTMLMediaElement.instance.volume_Setter_(unwrap_jso(this), value);
+  set volume(num value) => _blink.BlinkHTMLMediaElement.instance.volume_Setter_(this, value);
   
   @DomName('HTMLMediaElement.webkitAudioDecodedByteCount')
   @DocsEditable()
@@ -26141,7 +24515,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   @Experimental() // nonstandard
-  int get audioDecodedByteCount => _blink.BlinkHTMLMediaElement.instance.webkitAudioDecodedByteCount_Getter_(unwrap_jso(this));
+  int get audioDecodedByteCount => _blink.BlinkHTMLMediaElement.instance.webkitAudioDecodedByteCount_Getter_(this);
   
   @DomName('HTMLMediaElement.webkitVideoDecodedByteCount')
   @DocsEditable()
@@ -26149,59 +24523,59 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   @Experimental() // nonstandard
-  int get videoDecodedByteCount => _blink.BlinkHTMLMediaElement.instance.webkitVideoDecodedByteCount_Getter_(unwrap_jso(this));
+  int get videoDecodedByteCount => _blink.BlinkHTMLMediaElement.instance.webkitVideoDecodedByteCount_Getter_(this);
   
   TextTrack addTextTrack(String kind, [String label, String language]) {
     if (language != null) {
-      return wrap_jso(_blink.BlinkHTMLMediaElement.instance.addTextTrack_Callback_3_(unwrap_jso(this), kind, label, language));
+      return _blink.BlinkHTMLMediaElement.instance.addTextTrack_Callback_3_(this, kind, label, language);
     }
     if (label != null) {
-      return wrap_jso(_blink.BlinkHTMLMediaElement.instance.addTextTrack_Callback_2_(unwrap_jso(this), kind, label));
+      return _blink.BlinkHTMLMediaElement.instance.addTextTrack_Callback_2_(this, kind, label);
     }
-    return wrap_jso(_blink.BlinkHTMLMediaElement.instance.addTextTrack_Callback_1_(unwrap_jso(this), kind));
+    return _blink.BlinkHTMLMediaElement.instance.addTextTrack_Callback_1_(this, kind);
   }
 
   String canPlayType(String type, [String keySystem]) {
     if ((type is String) && keySystem == null) {
-      return _blink.BlinkHTMLMediaElement.instance.canPlayType_Callback_1_(unwrap_jso(this), type);
+      return _blink.BlinkHTMLMediaElement.instance.canPlayType_Callback_1_(this, type);
     }
     if ((type is String || type == null) && keySystem == null) {
-      return _blink.BlinkHTMLMediaElement.instance.canPlayType_Callback_1_(unwrap_jso(this), type);
+      return _blink.BlinkHTMLMediaElement.instance.canPlayType_Callback_1_(this, type);
     }
     if ((keySystem is String || keySystem == null) && (type is String || type == null)) {
-      return _blink.BlinkHTMLMediaElement.instance.canPlayType_Callback_2_(unwrap_jso(this), type, keySystem);
+      return _blink.BlinkHTMLMediaElement.instance.canPlayType_Callback_2_(this, type, keySystem);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   @DomName('HTMLMediaElement.load')
   @DocsEditable()
-  void load() => _blink.BlinkHTMLMediaElement.instance.load_Callback_0_(unwrap_jso(this));
+  void load() => _blink.BlinkHTMLMediaElement.instance.load_Callback_0_(this);
   
   @DomName('HTMLMediaElement.pause')
   @DocsEditable()
-  void pause() => _blink.BlinkHTMLMediaElement.instance.pause_Callback_0_(unwrap_jso(this));
+  void pause() => _blink.BlinkHTMLMediaElement.instance.pause_Callback_0_(this);
   
   @DomName('HTMLMediaElement.play')
   @DocsEditable()
-  void play() => _blink.BlinkHTMLMediaElement.instance.play_Callback_0_(unwrap_jso(this));
+  void play() => _blink.BlinkHTMLMediaElement.instance.play_Callback_0_(this);
   
   @DomName('HTMLMediaElement.setMediaKeys')
   @DocsEditable()
   @Experimental() // untriaged
-  Future setMediaKeys(MediaKeys mediaKeys) => wrap_jso(_blink.BlinkHTMLMediaElement.instance.setMediaKeys_Callback_1_(unwrap_jso(this), unwrap_jso(mediaKeys)));
+  Future setMediaKeys(MediaKeys mediaKeys) => convertNativePromiseToDartFuture(_blink.BlinkHTMLMediaElement.instance.setMediaKeys_Callback_1_(this, mediaKeys));
   
   @DomName('HTMLMediaElement.setSinkId')
   @DocsEditable()
   @Experimental() // untriaged
-  Future setSinkId(String sinkId) => wrap_jso(_blink.BlinkHTMLMediaElement.instance.setSinkId_Callback_1_(unwrap_jso(this), sinkId));
+  Future setSinkId(String sinkId) => convertNativePromiseToDartFuture(_blink.BlinkHTMLMediaElement.instance.setSinkId_Callback_1_(this, sinkId));
   
   void addKey(String keySystem, Uint8List key, [Uint8List initData, String sessionId]) {
     if (initData != null) {
-      _blink.BlinkHTMLMediaElement.instance.webkitAddKey_Callback_4_(unwrap_jso(this), keySystem, unwrap_jso(key), unwrap_jso(initData), sessionId);
+      _blink.BlinkHTMLMediaElement.instance.webkitAddKey_Callback_4_(this, keySystem, key, initData, sessionId);
       return;
     }
-    _blink.BlinkHTMLMediaElement.instance.webkitAddKey_Callback_2_(unwrap_jso(this), keySystem, unwrap_jso(key));
+    _blink.BlinkHTMLMediaElement.instance.webkitAddKey_Callback_2_(this, keySystem, key);
     return;
   }
 
@@ -26211,14 +24585,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.instance.webkitCancelKeyRequest_Callback_2_(unwrap_jso(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.instance.webkitGenerateKeyRequest_Callback_2_(unwrap_jso(this), keySystem, unwrap_jso(initData));
+      _blink.BlinkHTMLMediaElement.instance.webkitGenerateKeyRequest_Callback_2_(this, keySystem, initData);
       return;
     }
-    _blink.BlinkHTMLMediaElement.instance.webkitGenerateKeyRequest_Callback_1_(unwrap_jso(this), keySystem);
+    _blink.BlinkHTMLMediaElement.instance.webkitGenerateKeyRequest_Callback_1_(this, keySystem);
     return;
   }
 
@@ -26270,18 +24644,14 @@
   factory MediaEncryptedEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkMediaEncryptedEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkMediaEncryptedEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkMediaEncryptedEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkMediaEncryptedEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static MediaEncryptedEvent internalCreateMediaEncryptedEvent() {
-    return new MediaEncryptedEvent._internalWrap();
-  }
-
-  external factory MediaEncryptedEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaEncryptedEvent.internal_() : super.internal_();
@@ -26290,12 +24660,12 @@
   @DomName('MediaEncryptedEvent.initData')
   @DocsEditable()
   @Experimental() // untriaged
-  ByteBuffer get initData => wrap_jso(_blink.BlinkMediaEncryptedEvent.instance.initData_Getter_(unwrap_jso(this)));
+  ByteBuffer get initData => _blink.BlinkMediaEncryptedEvent.instance.initData_Getter_(this);
   
   @DomName('MediaEncryptedEvent.initDataType')
   @DocsEditable()
   @Experimental() // untriaged
-  String get initDataType => _blink.BlinkMediaEncryptedEvent.instance.initDataType_Getter_(unwrap_jso(this));
+  String get initDataType => _blink.BlinkMediaEncryptedEvent.instance.initDataType_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26312,21 +24682,13 @@
   // To suppress missing implicit constructor warnings.
   factory MediaError._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static MediaError internalCreateMediaError() {
-    return new MediaError._internalWrap();
-  }
 
-  factory MediaError._internalWrap() {
-    return new MediaError.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaError.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('MediaError.MEDIA_ERR_ABORTED')
   @DocsEditable()
   static const int MEDIA_ERR_ABORTED = 1;
@@ -26345,7 +24707,7 @@
 
   @DomName('MediaError.code')
   @DocsEditable()
-  int get code => _blink.BlinkMediaError.instance.code_Getter_(unwrap_jso(this));
+  int get code => _blink.BlinkMediaError.instance.code_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26363,21 +24725,13 @@
   // To suppress missing implicit constructor warnings.
   factory MediaKeyError._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static MediaKeyError internalCreateMediaKeyError() {
-    return new MediaKeyError._internalWrap();
-  }
 
-  factory MediaKeyError._internalWrap() {
-    return new MediaKeyError.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaKeyError.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('MediaKeyError.MEDIA_KEYERR_CLIENT')
   @DocsEditable()
   static const int MEDIA_KEYERR_CLIENT = 2;
@@ -26404,12 +24758,12 @@
 
   @DomName('MediaKeyError.code')
   @DocsEditable()
-  int get code => _blink.BlinkMediaKeyError.instance.code_Getter_(unwrap_jso(this));
+  int get code => _blink.BlinkMediaKeyError.instance.code_Getter_(this);
   
   @DomName('MediaKeyError.systemCode')
   @DocsEditable()
   @Experimental() // non-standard
-  int get systemCode => _blink.BlinkMediaKeyError.instance.systemCode_Getter_(unwrap_jso(this));
+  int get systemCode => _blink.BlinkMediaKeyError.instance.systemCode_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26432,18 +24786,14 @@
   factory MediaKeyEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkMediaKeyEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkMediaKeyEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkMediaKeyEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkMediaKeyEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static MediaKeyEvent internalCreateMediaKeyEvent() {
-    return new MediaKeyEvent._internalWrap();
-  }
-
-  external factory MediaKeyEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaKeyEvent.internal_() : super.internal_();
@@ -26451,31 +24801,31 @@
 
   @DomName('MediaKeyEvent.defaultURL')
   @DocsEditable()
-  String get defaultUrl => _blink.BlinkMediaKeyEvent.instance.defaultURL_Getter_(unwrap_jso(this));
+  String get defaultUrl => _blink.BlinkMediaKeyEvent.instance.defaultURL_Getter_(this);
   
   @DomName('MediaKeyEvent.errorCode')
   @DocsEditable()
-  MediaKeyError get errorCode => wrap_jso(_blink.BlinkMediaKeyEvent.instance.errorCode_Getter_(unwrap_jso(this)));
+  MediaKeyError get errorCode => _blink.BlinkMediaKeyEvent.instance.errorCode_Getter_(this);
   
   @DomName('MediaKeyEvent.initData')
   @DocsEditable()
-  Uint8List get initData => wrap_jso(_blink.BlinkMediaKeyEvent.instance.initData_Getter_(unwrap_jso(this)));
+  Uint8List get initData => _blink.BlinkMediaKeyEvent.instance.initData_Getter_(this);
   
   @DomName('MediaKeyEvent.keySystem')
   @DocsEditable()
-  String get keySystem => _blink.BlinkMediaKeyEvent.instance.keySystem_Getter_(unwrap_jso(this));
+  String get keySystem => _blink.BlinkMediaKeyEvent.instance.keySystem_Getter_(this);
   
   @DomName('MediaKeyEvent.message')
   @DocsEditable()
-  Uint8List get message => wrap_jso(_blink.BlinkMediaKeyEvent.instance.message_Getter_(unwrap_jso(this)));
+  Uint8List get message => _blink.BlinkMediaKeyEvent.instance.message_Getter_(this);
   
   @DomName('MediaKeyEvent.sessionId')
   @DocsEditable()
-  String get sessionId => _blink.BlinkMediaKeyEvent.instance.sessionId_Getter_(unwrap_jso(this));
+  String get sessionId => _blink.BlinkMediaKeyEvent.instance.sessionId_Getter_(this);
   
   @DomName('MediaKeyEvent.systemCode')
   @DocsEditable()
-  int get systemCode => _blink.BlinkMediaKeyEvent.instance.systemCode_Getter_(unwrap_jso(this));
+  int get systemCode => _blink.BlinkMediaKeyEvent.instance.systemCode_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26498,18 +24848,14 @@
   factory MediaKeyMessageEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkMediaKeyMessageEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkMediaKeyMessageEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkMediaKeyMessageEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkMediaKeyMessageEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static MediaKeyMessageEvent internalCreateMediaKeyMessageEvent() {
-    return new MediaKeyMessageEvent._internalWrap();
-  }
-
-  external factory MediaKeyMessageEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaKeyMessageEvent.internal_() : super.internal_();
@@ -26517,12 +24863,12 @@
 
   @DomName('MediaKeyMessageEvent.message')
   @DocsEditable()
-  ByteBuffer get message => wrap_jso(_blink.BlinkMediaKeyMessageEvent.instance.message_Getter_(unwrap_jso(this)));
+  ByteBuffer get message => _blink.BlinkMediaKeyMessageEvent.instance.message_Getter_(this);
   
   @DomName('MediaKeyMessageEvent.messageType')
   @DocsEditable()
   @Experimental() // untriaged
-  String get messageType => _blink.BlinkMediaKeyMessageEvent.instance.messageType_Getter_(unwrap_jso(this));
+  String get messageType => _blink.BlinkMediaKeyMessageEvent.instance.messageType_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26542,11 +24888,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MediaKeySession internalCreateMediaKeySession() {
-    return new MediaKeySession._internalWrap();
-  }
-
-  external factory MediaKeySession._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaKeySession.internal_() : super.internal_();
@@ -26555,44 +24897,44 @@
   @DomName('MediaKeySession.closed')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get closed => wrap_jso(_blink.BlinkMediaKeySession.instance.closed_Getter_(unwrap_jso(this)));
+  Future get closed => convertNativePromiseToDartFuture(_blink.BlinkMediaKeySession.instance.closed_Getter_(this));
   
   @DomName('MediaKeySession.expiration')
   @DocsEditable()
   @Experimental() // untriaged
-  num get expiration => _blink.BlinkMediaKeySession.instance.expiration_Getter_(unwrap_jso(this));
+  num get expiration => _blink.BlinkMediaKeySession.instance.expiration_Getter_(this);
   
   @DomName('MediaKeySession.keyStatuses')
   @DocsEditable()
   @Experimental() // untriaged
-  MediaKeyStatusMap get keyStatuses => wrap_jso(_blink.BlinkMediaKeySession.instance.keyStatuses_Getter_(unwrap_jso(this)));
+  MediaKeyStatusMap get keyStatuses => _blink.BlinkMediaKeySession.instance.keyStatuses_Getter_(this);
   
   @DomName('MediaKeySession.sessionId')
   @DocsEditable()
-  String get sessionId => _blink.BlinkMediaKeySession.instance.sessionId_Getter_(unwrap_jso(this));
+  String get sessionId => _blink.BlinkMediaKeySession.instance.sessionId_Getter_(this);
   
   @DomName('MediaKeySession.close')
   @DocsEditable()
-  Future close() => wrap_jso(_blink.BlinkMediaKeySession.instance.close_Callback_0_(unwrap_jso(this)));
+  Future close() => convertNativePromiseToDartFuture(_blink.BlinkMediaKeySession.instance.close_Callback_0_(this));
   
   @DomName('MediaKeySession.generateRequest')
   @DocsEditable()
   @Experimental() // untriaged
-  Future generateRequest(String initDataType, /*BufferSource*/ initData) => wrap_jso(_blink.BlinkMediaKeySession.instance.generateRequest_Callback_2_(unwrap_jso(this), initDataType, initData));
+  Future generateRequest(String initDataType, /*BufferSource*/ initData) => convertNativePromiseToDartFuture(_blink.BlinkMediaKeySession.instance.generateRequest_Callback_2_(this, initDataType, initData));
   
   @DomName('MediaKeySession.load')
   @DocsEditable()
   @Experimental() // untriaged
-  Future load(String sessionId) => wrap_jso(_blink.BlinkMediaKeySession.instance.load_Callback_1_(unwrap_jso(this), sessionId));
+  Future load(String sessionId) => convertNativePromiseToDartFuture(_blink.BlinkMediaKeySession.instance.load_Callback_1_(this, sessionId));
   
   @DomName('MediaKeySession.remove')
   @DocsEditable()
   @Experimental() // untriaged
-  Future remove() => wrap_jso(_blink.BlinkMediaKeySession.instance.remove_Callback_0_(unwrap_jso(this)));
+  Future remove() => convertNativePromiseToDartFuture(_blink.BlinkMediaKeySession.instance.remove_Callback_0_(this));
   
   @DomName('MediaKeySession.update')
   @DocsEditable()
-  Future _update(/*BufferSource*/ response) => wrap_jso(_blink.BlinkMediaKeySession.instance.update_Callback_1_(unwrap_jso(this), response));
+  Future _update(/*BufferSource*/ response) => convertNativePromiseToDartFuture(_blink.BlinkMediaKeySession.instance.update_Callback_1_(this, response));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26609,25 +24951,17 @@
   // To suppress missing implicit constructor warnings.
   factory MediaKeyStatusMap._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static MediaKeyStatusMap internalCreateMediaKeyStatusMap() {
-    return new MediaKeyStatusMap._internalWrap();
-  }
 
-  factory MediaKeyStatusMap._internalWrap() {
-    return new MediaKeyStatusMap.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaKeyStatusMap.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('MediaKeyStatusMap.size')
   @DocsEditable()
   @Experimental() // untriaged
-  int get size => _blink.BlinkMediaKeyStatusMap.instance.size_Getter_(unwrap_jso(this));
+  int get size => _blink.BlinkMediaKeyStatusMap.instance.size_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26644,35 +24978,27 @@
   // To suppress missing implicit constructor warnings.
   factory MediaKeySystemAccess._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static MediaKeySystemAccess internalCreateMediaKeySystemAccess() {
-    return new MediaKeySystemAccess._internalWrap();
-  }
 
-  factory MediaKeySystemAccess._internalWrap() {
-    return new MediaKeySystemAccess.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaKeySystemAccess.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('MediaKeySystemAccess.keySystem')
   @DocsEditable()
   @Experimental() // untriaged
-  String get keySystem => _blink.BlinkMediaKeySystemAccess.instance.keySystem_Getter_(unwrap_jso(this));
+  String get keySystem => _blink.BlinkMediaKeySystemAccess.instance.keySystem_Getter_(this);
   
   @DomName('MediaKeySystemAccess.createMediaKeys')
   @DocsEditable()
   @Experimental() // untriaged
-  Future createMediaKeys() => wrap_jso(_blink.BlinkMediaKeySystemAccess.instance.createMediaKeys_Callback_0_(unwrap_jso(this)));
+  Future createMediaKeys() => convertNativePromiseToDartFuture(_blink.BlinkMediaKeySystemAccess.instance.createMediaKeys_Callback_0_(this));
   
   @DomName('MediaKeySystemAccess.getConfiguration')
   @DocsEditable()
   @Experimental() // untriaged
-   getConfiguration() => convertNativeDictionaryToDartDictionary(wrap_jso(_blink.BlinkMediaKeySystemAccess.instance.getConfiguration_Callback_0_(unwrap_jso(this))));
+   getConfiguration() => convertNativeDictionaryToDartDictionary((_blink.BlinkMediaKeySystemAccess.instance.getConfiguration_Callback_0_(this)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26690,32 +25016,24 @@
   // To suppress missing implicit constructor warnings.
   factory MediaKeys._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static MediaKeys internalCreateMediaKeys() {
-    return new MediaKeys._internalWrap();
-  }
 
-  factory MediaKeys._internalWrap() {
-    return new MediaKeys.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaKeys.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   MediaKeySession _createSession([String sessionType]) {
     if (sessionType != null) {
-      return wrap_jso(_blink.BlinkMediaKeys.instance.createSession_Callback_1_(unwrap_jso(this), sessionType));
+      return _blink.BlinkMediaKeys.instance.createSession_Callback_1_(this, sessionType);
     }
-    return wrap_jso(_blink.BlinkMediaKeys.instance.createSession_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkMediaKeys.instance.createSession_Callback_0_(this);
   }
 
   @DomName('MediaKeys.setServerCertificate')
   @DocsEditable()
   @Experimental() // untriaged
-  Future setServerCertificate(/*BufferSource*/ serverCertificate) => wrap_jso(_blink.BlinkMediaKeys.instance.setServerCertificate_Callback_1_(unwrap_jso(this), serverCertificate));
+  Future setServerCertificate(/*BufferSource*/ serverCertificate) => convertNativePromiseToDartFuture(_blink.BlinkMediaKeys.instance.setServerCertificate_Callback_1_(this, serverCertificate));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26732,44 +25050,36 @@
   // To suppress missing implicit constructor warnings.
   factory MediaList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static MediaList internalCreateMediaList() {
-    return new MediaList._internalWrap();
-  }
 
-  factory MediaList._internalWrap() {
-    return new MediaList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('MediaList.length')
   @DocsEditable()
-  int get length => _blink.BlinkMediaList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkMediaList.instance.length_Getter_(this);
   
   @DomName('MediaList.mediaText')
   @DocsEditable()
-  String get mediaText => _blink.BlinkMediaList.instance.mediaText_Getter_(unwrap_jso(this));
+  String get mediaText => _blink.BlinkMediaList.instance.mediaText_Getter_(this);
   
   @DomName('MediaList.mediaText')
   @DocsEditable()
-  set mediaText(String value) => _blink.BlinkMediaList.instance.mediaText_Setter_(unwrap_jso(this), value);
+  set mediaText(String value) => _blink.BlinkMediaList.instance.mediaText_Setter_(this, value);
   
   @DomName('MediaList.appendMedium')
   @DocsEditable()
-  void appendMedium(String medium) => _blink.BlinkMediaList.instance.appendMedium_Callback_1_(unwrap_jso(this), medium);
+  void appendMedium(String medium) => _blink.BlinkMediaList.instance.appendMedium_Callback_1_(this, medium);
   
   @DomName('MediaList.deleteMedium')
   @DocsEditable()
-  void deleteMedium(String medium) => _blink.BlinkMediaList.instance.deleteMedium_Callback_1_(unwrap_jso(this), medium);
+  void deleteMedium(String medium) => _blink.BlinkMediaList.instance.deleteMedium_Callback_1_(this, medium);
   
   @DomName('MediaList.item')
   @DocsEditable()
-  String item(int index) => _blink.BlinkMediaList.instance.item_Callback_1_(unwrap_jso(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
@@ -26793,11 +25103,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MediaQueryList internalCreateMediaQueryList() {
-    return new MediaQueryList._internalWrap();
-  }
-
-  external factory MediaQueryList._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaQueryList.internal_() : super.internal_();
@@ -26805,19 +25111,19 @@
 
   @DomName('MediaQueryList.matches')
   @DocsEditable()
-  bool get matches => _blink.BlinkMediaQueryList.instance.matches_Getter_(unwrap_jso(this));
+  bool get matches => _blink.BlinkMediaQueryList.instance.matches_Getter_(this);
   
   @DomName('MediaQueryList.media')
   @DocsEditable()
-  String get media => _blink.BlinkMediaQueryList.instance.media_Getter_(unwrap_jso(this));
+  String get media => _blink.BlinkMediaQueryList.instance.media_Getter_(this);
   
   @DomName('MediaQueryList.addListener')
   @DocsEditable()
-  void addListener(EventListener listener) => _blink.BlinkMediaQueryList.instance.addListener_Callback_1_(unwrap_jso(this), unwrap_jso((event) => listener(wrap_jso(event))));
+  void addListener(EventListener listener) => _blink.BlinkMediaQueryList.instance.addListener_Callback_1_(this, listener);
   
   @DomName('MediaQueryList.removeListener')
   @DocsEditable()
-  void removeListener(EventListener listener) => _blink.BlinkMediaQueryList.instance.removeListener_Callback_1_(unwrap_jso(this), unwrap_jso(listener));
+  void removeListener(EventListener listener) => _blink.BlinkMediaQueryList.instance.removeListener_Callback_1_(this, listener);
   
   @DomName('MediaQueryList.onchange')
   @DocsEditable()
@@ -26844,18 +25150,14 @@
   factory MediaQueryListEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkMediaQueryListEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkMediaQueryListEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkMediaQueryListEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkMediaQueryListEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static MediaQueryListEvent internalCreateMediaQueryListEvent() {
-    return new MediaQueryListEvent._internalWrap();
-  }
-
-  external factory MediaQueryListEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaQueryListEvent.internal_() : super.internal_();
@@ -26864,12 +25166,12 @@
   @DomName('MediaQueryListEvent.matches')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get matches => _blink.BlinkMediaQueryListEvent.instance.matches_Getter_(unwrap_jso(this));
+  bool get matches => _blink.BlinkMediaQueryListEvent.instance.matches_Getter_(this);
   
   @DomName('MediaQueryListEvent.media')
   @DocsEditable()
   @Experimental() // untriaged
-  String get media => _blink.BlinkMediaQueryListEvent.instance.media_Getter_(unwrap_jso(this));
+  String get media => _blink.BlinkMediaQueryListEvent.instance.media_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26889,33 +25191,25 @@
   @DomName('MediaSession.MediaSession')
   @DocsEditable()
   factory MediaSession() {
-    return wrap_jso(_blink.BlinkMediaSession.instance.constructorCallback_0_());
+    return _blink.BlinkMediaSession.instance.constructorCallback_0_();
   }
 
+
   @Deprecated("Internal Use Only")
-  static MediaSession internalCreateMediaSession() {
-    return new MediaSession._internalWrap();
-  }
-
-  factory MediaSession._internalWrap() {
-    return new MediaSession.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaSession.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('MediaSession.activate')
   @DocsEditable()
   @Experimental() // untriaged
-  void activate() => _blink.BlinkMediaSession.instance.activate_Callback_0_(unwrap_jso(this));
+  void activate() => _blink.BlinkMediaSession.instance.activate_Callback_0_(this);
   
   @DomName('MediaSession.deactivate')
   @DocsEditable()
   @Experimental() // untriaged
-  void deactivate() => _blink.BlinkMediaSession.instance.deactivate_Callback_0_(unwrap_jso(this));
+  void deactivate() => _blink.BlinkMediaSession.instance.deactivate_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26938,16 +25232,12 @@
   @DomName('MediaSource.MediaSource')
   @DocsEditable()
   factory MediaSource() {
-    return wrap_jso(_blink.BlinkMediaSource.instance.constructorCallback_0_());
+    return _blink.BlinkMediaSource.instance.constructorCallback_0_();
   }
 
 
   @Deprecated("Internal Use Only")
-  static MediaSource internalCreateMediaSource() {
-    return new MediaSource._internalWrap();
-  }
-
-  external factory MediaSource._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaSource.internal_() : super.internal_();
@@ -26958,34 +25248,34 @@
 
   @DomName('MediaSource.activeSourceBuffers')
   @DocsEditable()
-  SourceBufferList get activeSourceBuffers => wrap_jso(_blink.BlinkMediaSource.instance.activeSourceBuffers_Getter_(unwrap_jso(this)));
+  SourceBufferList get activeSourceBuffers => _blink.BlinkMediaSource.instance.activeSourceBuffers_Getter_(this);
   
   @DomName('MediaSource.duration')
   @DocsEditable()
-  num get duration => _blink.BlinkMediaSource.instance.duration_Getter_(unwrap_jso(this));
+  num get duration => _blink.BlinkMediaSource.instance.duration_Getter_(this);
   
   @DomName('MediaSource.duration')
   @DocsEditable()
-  set duration(num value) => _blink.BlinkMediaSource.instance.duration_Setter_(unwrap_jso(this), value);
+  set duration(num value) => _blink.BlinkMediaSource.instance.duration_Setter_(this, value);
   
   @DomName('MediaSource.readyState')
   @DocsEditable()
-  String get readyState => _blink.BlinkMediaSource.instance.readyState_Getter_(unwrap_jso(this));
+  String get readyState => _blink.BlinkMediaSource.instance.readyState_Getter_(this);
   
   @DomName('MediaSource.sourceBuffers')
   @DocsEditable()
-  SourceBufferList get sourceBuffers => wrap_jso(_blink.BlinkMediaSource.instance.sourceBuffers_Getter_(unwrap_jso(this)));
+  SourceBufferList get sourceBuffers => _blink.BlinkMediaSource.instance.sourceBuffers_Getter_(this);
   
   @DomName('MediaSource.addSourceBuffer')
   @DocsEditable()
-  SourceBuffer addSourceBuffer(String type) => wrap_jso(_blink.BlinkMediaSource.instance.addSourceBuffer_Callback_1_(unwrap_jso(this), type));
+  SourceBuffer addSourceBuffer(String type) => _blink.BlinkMediaSource.instance.addSourceBuffer_Callback_1_(this, type);
   
   void endOfStream([String error]) {
     if (error != null) {
-      _blink.BlinkMediaSource.instance.endOfStream_Callback_1_(unwrap_jso(this), error);
+      _blink.BlinkMediaSource.instance.endOfStream_Callback_1_(this, error);
       return;
     }
-    _blink.BlinkMediaSource.instance.endOfStream_Callback_0_(unwrap_jso(this));
+    _blink.BlinkMediaSource.instance.endOfStream_Callback_0_(this);
     return;
   }
 
@@ -26995,7 +25285,7 @@
   
   @DomName('MediaSource.removeSourceBuffer')
   @DocsEditable()
-  void removeSourceBuffer(SourceBuffer buffer) => _blink.BlinkMediaSource.instance.removeSourceBuffer_Callback_1_(unwrap_jso(this), unwrap_jso(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
@@ -27045,24 +25335,20 @@
   @DocsEditable()
   factory MediaStream([stream_OR_tracks]) {
     if (stream_OR_tracks == null) {
-      return wrap_jso(_blink.BlinkMediaStream.instance.constructorCallback_0_());
+      return _blink.BlinkMediaStream.instance.constructorCallback_0_();
     }
     if ((stream_OR_tracks is MediaStream || stream_OR_tracks == null)) {
-      return wrap_jso(_blink.BlinkMediaStream.instance.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 wrap_jso(_blink.BlinkMediaStream.instance.constructorCallback_1_(stream_OR_tracks));
+      return _blink.BlinkMediaStream.instance.constructorCallback_1_(stream_OR_tracks);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
 
   @Deprecated("Internal Use Only")
-  static MediaStream internalCreateMediaStream() {
-    return new MediaStream._internalWrap();
-  }
-
-  external factory MediaStream._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaStream.internal_() : super.internal_();
@@ -27071,54 +25357,54 @@
   @DomName('MediaStream.active')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get active => _blink.BlinkMediaStream.instance.active_Getter_(unwrap_jso(this));
+  bool get active => _blink.BlinkMediaStream.instance.active_Getter_(this);
   
   @DomName('MediaStream.ended')
   @DocsEditable()
-  bool get ended => _blink.BlinkMediaStream.instance.ended_Getter_(unwrap_jso(this));
+  bool get ended => _blink.BlinkMediaStream.instance.ended_Getter_(this);
   
   @DomName('MediaStream.id')
   @DocsEditable()
-  String get id => _blink.BlinkMediaStream.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkMediaStream.instance.id_Getter_(this);
   
   @DomName('MediaStream.label')
   @DocsEditable()
   @Experimental() // non-standard
-  String get label => _blink.BlinkMediaStream.instance.label_Getter_(unwrap_jso(this));
+  String get label => _blink.BlinkMediaStream.instance.label_Getter_(this);
   
   @DomName('MediaStream.addTrack')
   @DocsEditable()
-  void addTrack(MediaStreamTrack track) => _blink.BlinkMediaStream.instance.addTrack_Callback_1_(unwrap_jso(this), unwrap_jso(track));
+  void addTrack(MediaStreamTrack track) => _blink.BlinkMediaStream.instance.addTrack_Callback_1_(this, track);
   
   @DomName('MediaStream.clone')
   @DocsEditable()
   @Experimental() // untriaged
-  MediaStream clone() => wrap_jso(_blink.BlinkMediaStream.instance.clone_Callback_0_(unwrap_jso(this)));
+  MediaStream clone() => _blink.BlinkMediaStream.instance.clone_Callback_0_(this);
   
   @DomName('MediaStream.getAudioTracks')
   @DocsEditable()
-  List<MediaStreamTrack> getAudioTracks() => wrap_jso(_blink.BlinkMediaStream.instance.getAudioTracks_Callback_0_(unwrap_jso(this)));
+  List<MediaStreamTrack> getAudioTracks() => (_blink.BlinkMediaStream.instance.getAudioTracks_Callback_0_(this));
   
   @DomName('MediaStream.getTrackById')
   @DocsEditable()
-  MediaStreamTrack getTrackById(String trackId) => wrap_jso(_blink.BlinkMediaStream.instance.getTrackById_Callback_1_(unwrap_jso(this), trackId));
+  MediaStreamTrack getTrackById(String trackId) => _blink.BlinkMediaStream.instance.getTrackById_Callback_1_(this, trackId);
   
   @DomName('MediaStream.getTracks')
   @DocsEditable()
   @Experimental() // untriaged
-  List<MediaStreamTrack> getTracks() => wrap_jso(_blink.BlinkMediaStream.instance.getTracks_Callback_0_(unwrap_jso(this)));
+  List<MediaStreamTrack> getTracks() => (_blink.BlinkMediaStream.instance.getTracks_Callback_0_(this));
   
   @DomName('MediaStream.getVideoTracks')
   @DocsEditable()
-  List<MediaStreamTrack> getVideoTracks() => wrap_jso(_blink.BlinkMediaStream.instance.getVideoTracks_Callback_0_(unwrap_jso(this)));
+  List<MediaStreamTrack> getVideoTracks() => (_blink.BlinkMediaStream.instance.getVideoTracks_Callback_0_(this));
   
   @DomName('MediaStream.removeTrack')
   @DocsEditable()
-  void removeTrack(MediaStreamTrack track) => _blink.BlinkMediaStream.instance.removeTrack_Callback_1_(unwrap_jso(this), unwrap_jso(track));
+  void removeTrack(MediaStreamTrack track) => _blink.BlinkMediaStream.instance.removeTrack_Callback_1_(this, track);
   
   @DomName('MediaStream.stop')
   @DocsEditable()
-  void stop() => _blink.BlinkMediaStream.instance.stop_Callback_0_(unwrap_jso(this));
+  void stop() => _blink.BlinkMediaStream.instance.stop_Callback_0_(this);
   
   /// Stream of `addtrack` events handled by this [MediaStream].
   @DomName('MediaStream.onaddtrack')
@@ -27166,18 +25452,14 @@
   factory MediaStreamEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkMediaStreamEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkMediaStreamEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkMediaStreamEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkMediaStreamEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static MediaStreamEvent internalCreateMediaStreamEvent() {
-    return new MediaStreamEvent._internalWrap();
-  }
-
-  external factory MediaStreamEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaStreamEvent.internal_() : super.internal_();
@@ -27188,7 +25470,7 @@
 
   @DomName('MediaStreamEvent.stream')
   @DocsEditable()
-  MediaStream get stream => wrap_jso(_blink.BlinkMediaStreamEvent.instance.stream_Getter_(unwrap_jso(this)));
+  MediaStream get stream => _blink.BlinkMediaStreamEvent.instance.stream_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27239,11 +25521,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MediaStreamTrack internalCreateMediaStreamTrack() {
-    return new MediaStreamTrack._internalWrap();
-  }
-
-  external factory MediaStreamTrack._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaStreamTrack.internal_() : super.internal_();
@@ -27251,42 +25529,42 @@
 
   @DomName('MediaStreamTrack.enabled')
   @DocsEditable()
-  bool get enabled => _blink.BlinkMediaStreamTrack.instance.enabled_Getter_(unwrap_jso(this));
+  bool get enabled => _blink.BlinkMediaStreamTrack.instance.enabled_Getter_(this);
   
   @DomName('MediaStreamTrack.enabled')
   @DocsEditable()
-  set enabled(bool value) => _blink.BlinkMediaStreamTrack.instance.enabled_Setter_(unwrap_jso(this), value);
+  set enabled(bool value) => _blink.BlinkMediaStreamTrack.instance.enabled_Setter_(this, value);
   
   @DomName('MediaStreamTrack.id')
   @DocsEditable()
-  String get id => _blink.BlinkMediaStreamTrack.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkMediaStreamTrack.instance.id_Getter_(this);
   
   @DomName('MediaStreamTrack.kind')
   @DocsEditable()
-  String get kind => _blink.BlinkMediaStreamTrack.instance.kind_Getter_(unwrap_jso(this));
+  String get kind => _blink.BlinkMediaStreamTrack.instance.kind_Getter_(this);
   
   @DomName('MediaStreamTrack.label')
   @DocsEditable()
-  String get label => _blink.BlinkMediaStreamTrack.instance.label_Getter_(unwrap_jso(this));
+  String get label => _blink.BlinkMediaStreamTrack.instance.label_Getter_(this);
   
   @DomName('MediaStreamTrack.muted')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get muted => _blink.BlinkMediaStreamTrack.instance.muted_Getter_(unwrap_jso(this));
+  bool get muted => _blink.BlinkMediaStreamTrack.instance.muted_Getter_(this);
   
   @DomName('MediaStreamTrack.readyState')
   @DocsEditable()
-  String get readyState => _blink.BlinkMediaStreamTrack.instance.readyState_Getter_(unwrap_jso(this));
+  String get readyState => _blink.BlinkMediaStreamTrack.instance.readyState_Getter_(this);
   
   @DomName('MediaStreamTrack.clone')
   @DocsEditable()
   @Experimental() // untriaged
-  MediaStreamTrack clone() => wrap_jso(_blink.BlinkMediaStreamTrack.instance.clone_Callback_0_(unwrap_jso(this)));
+  MediaStreamTrack clone() => _blink.BlinkMediaStreamTrack.instance.clone_Callback_0_(this);
   
   @DomName('MediaStreamTrack.getSources')
   @DocsEditable()
   @Experimental() // untriaged
-  static void _getSources(MediaStreamTrackSourcesCallback callback) => _blink.BlinkMediaStreamTrack.instance.getSources_Callback_1_(unwrap_jso((sources) => callback(sources)));
+  static void _getSources(MediaStreamTrackSourcesCallback callback) => _blink.BlinkMediaStreamTrack.instance.getSources_Callback_1_(callback);
   
   static Future<List<SourceInfo>> getSources() {
     var completer = new Completer<List<SourceInfo>>();
@@ -27298,7 +25576,7 @@
   @DomName('MediaStreamTrack.stop')
   @DocsEditable()
   @Experimental() // untriaged
-  void stop() => _blink.BlinkMediaStreamTrack.instance.stop_Callback_0_(unwrap_jso(this));
+  void stop() => _blink.BlinkMediaStreamTrack.instance.stop_Callback_0_(this);
   
   /// Stream of `ended` events handled by this [MediaStreamTrack].
   @DomName('MediaStreamTrack.onended')
@@ -27334,11 +25612,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MediaStreamTrackEvent internalCreateMediaStreamTrackEvent() {
-    return new MediaStreamTrackEvent._internalWrap();
-  }
-
-  external factory MediaStreamTrackEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaStreamTrackEvent.internal_() : super.internal_();
@@ -27349,7 +25623,7 @@
 
   @DomName('MediaStreamTrackEvent.track')
   @DocsEditable()
-  MediaStreamTrack get track => wrap_jso(_blink.BlinkMediaStreamTrackEvent.instance.track_Getter_(unwrap_jso(this)));
+  MediaStreamTrack get track => _blink.BlinkMediaStreamTrackEvent.instance.track_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27376,32 +25650,24 @@
   // To suppress missing implicit constructor warnings.
   factory MemoryInfo._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static MemoryInfo internalCreateMemoryInfo() {
-    return new MemoryInfo._internalWrap();
-  }
 
-  factory MemoryInfo._internalWrap() {
-    return new MemoryInfo.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MemoryInfo.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('MemoryInfo.jsHeapSizeLimit')
   @DocsEditable()
-  int get jsHeapSizeLimit => _blink.BlinkMemoryInfo.instance.jsHeapSizeLimit_Getter_(unwrap_jso(this));
+  int get jsHeapSizeLimit => _blink.BlinkMemoryInfo.instance.jsHeapSizeLimit_Getter_(this);
   
   @DomName('MemoryInfo.totalJSHeapSize')
   @DocsEditable()
-  int get totalJSHeapSize => _blink.BlinkMemoryInfo.instance.totalJSHeapSize_Getter_(unwrap_jso(this));
+  int get totalJSHeapSize => _blink.BlinkMemoryInfo.instance.totalJSHeapSize_Getter_(this);
   
   @DomName('MemoryInfo.usedJSHeapSize')
   @DocsEditable()
-  int get usedJSHeapSize => _blink.BlinkMemoryInfo.instance.usedJSHeapSize_Getter_(unwrap_jso(this));
+  int get usedJSHeapSize => _blink.BlinkMemoryInfo.instance.usedJSHeapSize_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27433,11 +25699,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MenuElement internalCreateMenuElement() {
-    return new MenuElement._internalWrap();
-  }
-
-  external factory MenuElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MenuElement.internal_() : super.internal_();
@@ -27452,22 +25714,22 @@
   @DomName('HTMLMenuElement.label')
   @DocsEditable()
   @Experimental() // untriaged
-  String get label => _blink.BlinkHTMLMenuElement.instance.label_Getter_(unwrap_jso(this));
+  String get label => _blink.BlinkHTMLMenuElement.instance.label_Getter_(this);
   
   @DomName('HTMLMenuElement.label')
   @DocsEditable()
   @Experimental() // untriaged
-  set label(String value) => _blink.BlinkHTMLMenuElement.instance.label_Setter_(unwrap_jso(this), value);
+  set label(String value) => _blink.BlinkHTMLMenuElement.instance.label_Setter_(this, value);
   
   @DomName('HTMLMenuElement.type')
   @DocsEditable()
   @Experimental() // untriaged
-  String get type => _blink.BlinkHTMLMenuElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLMenuElement.instance.type_Getter_(this);
   
   @DomName('HTMLMenuElement.type')
   @DocsEditable()
   @Experimental() // untriaged
-  set type(String value) => _blink.BlinkHTMLMenuElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLMenuElement.instance.type_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27486,11 +25748,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MenuItemElement internalCreateMenuItemElement() {
-    return new MenuItemElement._internalWrap();
-  }
-
-  external factory MenuItemElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MenuItemElement.internal_() : super.internal_();
@@ -27505,72 +25763,72 @@
   @DomName('HTMLMenuItemElement.checked')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get checked => _blink.BlinkHTMLMenuItemElement.instance.checked_Getter_(unwrap_jso(this));
+  bool get checked => _blink.BlinkHTMLMenuItemElement.instance.checked_Getter_(this);
   
   @DomName('HTMLMenuItemElement.checked')
   @DocsEditable()
   @Experimental() // untriaged
-  set checked(bool value) => _blink.BlinkHTMLMenuItemElement.instance.checked_Setter_(unwrap_jso(this), value);
+  set checked(bool value) => _blink.BlinkHTMLMenuItemElement.instance.checked_Setter_(this, value);
   
   @DomName('HTMLMenuItemElement.default')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get defaultValue => _blink.BlinkHTMLMenuItemElement.instance.default_Getter_(unwrap_jso(this));
+  bool get defaultValue => _blink.BlinkHTMLMenuItemElement.instance.default_Getter_(this);
   
   @DomName('HTMLMenuItemElement.default')
   @DocsEditable()
   @Experimental() // untriaged
-  set defaultValue(bool value) => _blink.BlinkHTMLMenuItemElement.instance.default_Setter_(unwrap_jso(this), value);
+  set defaultValue(bool value) => _blink.BlinkHTMLMenuItemElement.instance.default_Setter_(this, value);
   
   @DomName('HTMLMenuItemElement.disabled')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get disabled => _blink.BlinkHTMLMenuItemElement.instance.disabled_Getter_(unwrap_jso(this));
+  bool get disabled => _blink.BlinkHTMLMenuItemElement.instance.disabled_Getter_(this);
   
   @DomName('HTMLMenuItemElement.disabled')
   @DocsEditable()
   @Experimental() // untriaged
-  set disabled(bool value) => _blink.BlinkHTMLMenuItemElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLMenuItemElement.instance.disabled_Setter_(this, value);
   
   @DomName('HTMLMenuItemElement.icon')
   @DocsEditable()
   @Experimental() // untriaged
-  String get icon => _blink.BlinkHTMLMenuItemElement.instance.icon_Getter_(unwrap_jso(this));
+  String get icon => _blink.BlinkHTMLMenuItemElement.instance.icon_Getter_(this);
   
   @DomName('HTMLMenuItemElement.icon')
   @DocsEditable()
   @Experimental() // untriaged
-  set icon(String value) => _blink.BlinkHTMLMenuItemElement.instance.icon_Setter_(unwrap_jso(this), value);
+  set icon(String value) => _blink.BlinkHTMLMenuItemElement.instance.icon_Setter_(this, value);
   
   @DomName('HTMLMenuItemElement.label')
   @DocsEditable()
   @Experimental() // untriaged
-  String get label => _blink.BlinkHTMLMenuItemElement.instance.label_Getter_(unwrap_jso(this));
+  String get label => _blink.BlinkHTMLMenuItemElement.instance.label_Getter_(this);
   
   @DomName('HTMLMenuItemElement.label')
   @DocsEditable()
   @Experimental() // untriaged
-  set label(String value) => _blink.BlinkHTMLMenuItemElement.instance.label_Setter_(unwrap_jso(this), value);
+  set label(String value) => _blink.BlinkHTMLMenuItemElement.instance.label_Setter_(this, value);
   
   @DomName('HTMLMenuItemElement.radiogroup')
   @DocsEditable()
   @Experimental() // untriaged
-  String get radiogroup => _blink.BlinkHTMLMenuItemElement.instance.radiogroup_Getter_(unwrap_jso(this));
+  String get radiogroup => _blink.BlinkHTMLMenuItemElement.instance.radiogroup_Getter_(this);
   
   @DomName('HTMLMenuItemElement.radiogroup')
   @DocsEditable()
   @Experimental() // untriaged
-  set radiogroup(String value) => _blink.BlinkHTMLMenuItemElement.instance.radiogroup_Setter_(unwrap_jso(this), value);
+  set radiogroup(String value) => _blink.BlinkHTMLMenuItemElement.instance.radiogroup_Setter_(this, value);
   
   @DomName('HTMLMenuItemElement.type')
   @DocsEditable()
   @Experimental() // untriaged
-  String get type => _blink.BlinkHTMLMenuItemElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLMenuItemElement.instance.type_Getter_(this);
   
   @DomName('HTMLMenuItemElement.type')
   @DocsEditable()
   @Experimental() // untriaged
-  set type(String value) => _blink.BlinkHTMLMenuItemElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLMenuItemElement.instance.type_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27587,28 +25845,20 @@
   // To suppress missing implicit constructor warnings.
   factory MessageChannel._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static MessageChannel internalCreateMessageChannel() {
-    return new MessageChannel._internalWrap();
-  }
 
-  factory MessageChannel._internalWrap() {
-    return new MessageChannel.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MessageChannel.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('MessageChannel.port1')
   @DocsEditable()
-  MessagePort get port1 => wrap_jso(_blink.BlinkMessageChannel.instance.port1_Getter_(unwrap_jso(this)));
+  MessagePort get port1 => _blink.BlinkMessageChannel.instance.port1_Getter_(this);
   
   @DomName('MessageChannel.port2')
   @DocsEditable()
-  MessagePort get port2 => wrap_jso(_blink.BlinkMessageChannel.instance.port2_Getter_(unwrap_jso(this)));
+  MessagePort get port2 => _blink.BlinkMessageChannel.instance.port2_Getter_(this);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -27639,7 +25889,7 @@
   @DomName('MessageEvent.data')
   @DocsEditable()
   dynamic get data => convertNativeToDart_SerializedScriptValue(
-      _blink.BlinkMessageEvent.instance.data_Getter_(unwrap_jso(this)));
+      _blink.BlinkMessageEvent.instance.data_Getter_(this));
 
 
 
@@ -27648,18 +25898,14 @@
   factory MessageEvent._(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkMessageEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkMessageEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkMessageEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkMessageEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static MessageEvent internalCreateMessageEvent() {
-    return new MessageEvent._internalWrap();
-  }
-
-  external factory MessageEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MessageEvent.internal_() : super.internal_();
@@ -27668,19 +25914,19 @@
   @DomName('MessageEvent.lastEventId')
   @DocsEditable()
   @Unstable()
-  String get lastEventId => _blink.BlinkMessageEvent.instance.lastEventId_Getter_(unwrap_jso(this));
+  String get lastEventId => _blink.BlinkMessageEvent.instance.lastEventId_Getter_(this);
   
   @DomName('MessageEvent.origin')
   @DocsEditable()
-  String get origin => _blink.BlinkMessageEvent.instance.origin_Getter_(unwrap_jso(this));
+  String get origin => _blink.BlinkMessageEvent.instance.origin_Getter_(this);
   
   @DomName('MessageEvent.source')
   @DocsEditable()
-  EventTarget get source => wrap_jso(_blink.BlinkMessageEvent.instance.source_Getter_(unwrap_jso(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> portsArg) => _blink.BlinkMessageEvent.instance.initMessageEvent_Callback_8_(unwrap_jso(this), typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, unwrap_jso(sourceArg), unwrap_jso(portsArg));
+  void _initMessageEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Object dataArg, String originArg, String lastEventIdArg, Window sourceArg, List<MessagePort> portsArg) => _blink.BlinkMessageEvent.instance.initMessageEvent_Callback_8_(this, typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg, portsArg);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27709,11 +25955,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MessagePort internalCreateMessagePort() {
-    return new MessagePort._internalWrap();
-  }
-
-  external factory MessagePort._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MessagePort.internal_() : super.internal_();
@@ -27721,20 +25963,20 @@
 
   @DomName('MessagePort.close')
   @DocsEditable()
-  void close() => _blink.BlinkMessagePort.instance.close_Callback_0_(unwrap_jso(this));
+  void close() => _blink.BlinkMessagePort.instance.close_Callback_0_(this);
   
   void postMessage(Object message, [List<MessagePort> transfer]) {
     if (transfer != null) {
-      _blink.BlinkMessagePort.instance.postMessage_Callback_2_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message), transfer);
+      _blink.BlinkMessagePort.instance.postMessage_Callback_2_(this, convertDartToNative_SerializedScriptValue(message), transfer);
       return;
     }
-    _blink.BlinkMessagePort.instance.postMessage_Callback_1_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message));
+    _blink.BlinkMessagePort.instance.postMessage_Callback_1_(this, convertDartToNative_SerializedScriptValue(message));
     return;
   }
 
   @DomName('MessagePort.start')
   @DocsEditable()
-  void start() => _blink.BlinkMessagePort.instance.start_Callback_0_(unwrap_jso(this));
+  void start() => _blink.BlinkMessagePort.instance.start_Callback_0_(this);
   
   /// Stream of `message` events handled by this [MessagePort].
   @DomName('MessagePort.onmessage')
@@ -27761,11 +26003,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MetaElement internalCreateMetaElement() {
-    return new MetaElement._internalWrap();
-  }
-
-  external factory MetaElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MetaElement.internal_() : super.internal_();
@@ -27779,27 +26017,27 @@
 
   @DomName('HTMLMetaElement.content')
   @DocsEditable()
-  String get content => _blink.BlinkHTMLMetaElement.instance.content_Getter_(unwrap_jso(this));
+  String get content => _blink.BlinkHTMLMetaElement.instance.content_Getter_(this);
   
   @DomName('HTMLMetaElement.content')
   @DocsEditable()
-  set content(String value) => _blink.BlinkHTMLMetaElement.instance.content_Setter_(unwrap_jso(this), value);
+  set content(String value) => _blink.BlinkHTMLMetaElement.instance.content_Setter_(this, value);
   
   @DomName('HTMLMetaElement.httpEquiv')
   @DocsEditable()
-  String get httpEquiv => _blink.BlinkHTMLMetaElement.instance.httpEquiv_Getter_(unwrap_jso(this));
+  String get httpEquiv => _blink.BlinkHTMLMetaElement.instance.httpEquiv_Getter_(this);
   
   @DomName('HTMLMetaElement.httpEquiv')
   @DocsEditable()
-  set httpEquiv(String value) => _blink.BlinkHTMLMetaElement.instance.httpEquiv_Setter_(unwrap_jso(this), value);
+  set httpEquiv(String value) => _blink.BlinkHTMLMetaElement.instance.httpEquiv_Setter_(this, value);
   
   @DomName('HTMLMetaElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLMetaElement.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkHTMLMetaElement.instance.name_Getter_(this);
   
   @DomName('HTMLMetaElement.name')
   @DocsEditable()
-  set name(String value) => _blink.BlinkHTMLMetaElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLMetaElement.instance.name_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27817,28 +26055,20 @@
   // To suppress missing implicit constructor warnings.
   factory Metadata._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Metadata internalCreateMetadata() {
-    return new Metadata._internalWrap();
-  }
 
-  factory Metadata._internalWrap() {
-    return new Metadata.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Metadata.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Metadata.modificationTime')
   @DocsEditable()
-  DateTime get modificationTime => _blink.BlinkMetadata.instance.modificationTime_Getter_(unwrap_jso(this));
+  DateTime get modificationTime => _blink.BlinkMetadata.instance.modificationTime_Getter_(this);
   
   @DomName('Metadata.size')
   @DocsEditable()
-  int get size => _blink.BlinkMetadata.instance.size_Getter_(unwrap_jso(this));
+  int get size => _blink.BlinkMetadata.instance.size_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27875,11 +26105,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MeterElement internalCreateMeterElement() {
-    return new MeterElement._internalWrap();
-  }
-
-  external factory MeterElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MeterElement.internal_() : super.internal_();
@@ -27896,56 +26122,56 @@
 
   @DomName('HTMLMeterElement.high')
   @DocsEditable()
-  num get high => _blink.BlinkHTMLMeterElement.instance.high_Getter_(unwrap_jso(this));
+  num get high => _blink.BlinkHTMLMeterElement.instance.high_Getter_(this);
   
   @DomName('HTMLMeterElement.high')
   @DocsEditable()
-  set high(num value) => _blink.BlinkHTMLMeterElement.instance.high_Setter_(unwrap_jso(this), value);
+  set high(num value) => _blink.BlinkHTMLMeterElement.instance.high_Setter_(this, value);
   
   @DomName('HTMLMeterElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => wrap_jso(_blink.BlinkHTMLMeterElement.instance.labels_Getter_(unwrap_jso(this)));
+  List<Node> get labels => (_blink.BlinkHTMLMeterElement.instance.labels_Getter_(this));
   
   @DomName('HTMLMeterElement.low')
   @DocsEditable()
-  num get low => _blink.BlinkHTMLMeterElement.instance.low_Getter_(unwrap_jso(this));
+  num get low => _blink.BlinkHTMLMeterElement.instance.low_Getter_(this);
   
   @DomName('HTMLMeterElement.low')
   @DocsEditable()
-  set low(num value) => _blink.BlinkHTMLMeterElement.instance.low_Setter_(unwrap_jso(this), value);
+  set low(num value) => _blink.BlinkHTMLMeterElement.instance.low_Setter_(this, value);
   
   @DomName('HTMLMeterElement.max')
   @DocsEditable()
-  num get max => _blink.BlinkHTMLMeterElement.instance.max_Getter_(unwrap_jso(this));
+  num get max => _blink.BlinkHTMLMeterElement.instance.max_Getter_(this);
   
   @DomName('HTMLMeterElement.max')
   @DocsEditable()
-  set max(num value) => _blink.BlinkHTMLMeterElement.instance.max_Setter_(unwrap_jso(this), value);
+  set max(num value) => _blink.BlinkHTMLMeterElement.instance.max_Setter_(this, value);
   
   @DomName('HTMLMeterElement.min')
   @DocsEditable()
-  num get min => _blink.BlinkHTMLMeterElement.instance.min_Getter_(unwrap_jso(this));
+  num get min => _blink.BlinkHTMLMeterElement.instance.min_Getter_(this);
   
   @DomName('HTMLMeterElement.min')
   @DocsEditable()
-  set min(num value) => _blink.BlinkHTMLMeterElement.instance.min_Setter_(unwrap_jso(this), value);
+  set min(num value) => _blink.BlinkHTMLMeterElement.instance.min_Setter_(this, value);
   
   @DomName('HTMLMeterElement.optimum')
   @DocsEditable()
-  num get optimum => _blink.BlinkHTMLMeterElement.instance.optimum_Getter_(unwrap_jso(this));
+  num get optimum => _blink.BlinkHTMLMeterElement.instance.optimum_Getter_(this);
   
   @DomName('HTMLMeterElement.optimum')
   @DocsEditable()
-  set optimum(num value) => _blink.BlinkHTMLMeterElement.instance.optimum_Setter_(unwrap_jso(this), value);
+  set optimum(num value) => _blink.BlinkHTMLMeterElement.instance.optimum_Setter_(this, value);
   
   @DomName('HTMLMeterElement.value')
   @DocsEditable()
-  num get value => _blink.BlinkHTMLMeterElement.instance.value_Getter_(unwrap_jso(this));
+  num get value => _blink.BlinkHTMLMeterElement.instance.value_Getter_(this);
   
   @DomName('HTMLMeterElement.value')
   @DocsEditable()
-  set value(num value) => _blink.BlinkHTMLMeterElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(num value) => _blink.BlinkHTMLMeterElement.instance.value_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27965,11 +26191,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MidiAccess internalCreateMidiAccess() {
-    return new MidiAccess._internalWrap();
-  }
-
-  external factory MidiAccess._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MidiAccess.internal_() : super.internal_();
@@ -27977,16 +26199,16 @@
 
   @DomName('MIDIAccess.inputs')
   @DocsEditable()
-  MidiInputMap get inputs => wrap_jso(_blink.BlinkMIDIAccess.instance.inputs_Getter_(unwrap_jso(this)));
+  MidiInputMap get inputs => _blink.BlinkMIDIAccess.instance.inputs_Getter_(this);
   
   @DomName('MIDIAccess.outputs')
   @DocsEditable()
-  MidiOutputMap get outputs => wrap_jso(_blink.BlinkMIDIAccess.instance.outputs_Getter_(unwrap_jso(this)));
+  MidiOutputMap get outputs => _blink.BlinkMIDIAccess.instance.outputs_Getter_(this);
   
   @DomName('MIDIAccess.sysexEnabled')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get sysexEnabled => _blink.BlinkMIDIAccess.instance.sysexEnabled_Getter_(unwrap_jso(this));
+  bool get sysexEnabled => _blink.BlinkMIDIAccess.instance.sysexEnabled_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28009,18 +26231,14 @@
   factory MidiConnectionEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkMIDIConnectionEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkMIDIConnectionEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkMIDIConnectionEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkMIDIConnectionEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static MidiConnectionEvent internalCreateMidiConnectionEvent() {
-    return new MidiConnectionEvent._internalWrap();
-  }
-
-  external factory MidiConnectionEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MidiConnectionEvent.internal_() : super.internal_();
@@ -28028,7 +26246,7 @@
 
   @DomName('MIDIConnectionEvent.port')
   @DocsEditable()
-  MidiPort get port => wrap_jso(_blink.BlinkMIDIConnectionEvent.instance.port_Getter_(unwrap_jso(this)));
+  MidiPort get port => _blink.BlinkMIDIConnectionEvent.instance.port_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28058,11 +26276,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MidiInput internalCreateMidiInput() {
-    return new MidiInput._internalWrap();
-  }
-
-  external factory MidiInput._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MidiInput.internal_() : super.internal_();
@@ -28088,25 +26302,17 @@
   // To suppress missing implicit constructor warnings.
   factory MidiInputMap._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static MidiInputMap internalCreateMidiInputMap() {
-    return new MidiInputMap._internalWrap();
-  }
 
-  factory MidiInputMap._internalWrap() {
-    return new MidiInputMap.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MidiInputMap.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('MIDIInputMap.size')
   @DocsEditable()
   @Experimental() // untriaged
-  int get size => _blink.BlinkMIDIInputMap.instance.size_Getter_(unwrap_jso(this));
+  int get size => _blink.BlinkMIDIInputMap.instance.size_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28129,18 +26335,14 @@
   factory MidiMessageEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkMIDIMessageEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkMIDIMessageEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkMIDIMessageEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkMIDIMessageEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static MidiMessageEvent internalCreateMidiMessageEvent() {
-    return new MidiMessageEvent._internalWrap();
-  }
-
-  external factory MidiMessageEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MidiMessageEvent.internal_() : super.internal_();
@@ -28148,11 +26350,11 @@
 
   @DomName('MIDIMessageEvent.data')
   @DocsEditable()
-  Uint8List get data => wrap_jso(_blink.BlinkMIDIMessageEvent.instance.data_Getter_(unwrap_jso(this)));
+  Uint8List get data => _blink.BlinkMIDIMessageEvent.instance.data_Getter_(this);
   
   @DomName('MIDIMessageEvent.receivedTime')
   @DocsEditable()
-  num get receivedTime => _blink.BlinkMIDIMessageEvent.instance.receivedTime_Getter_(unwrap_jso(this));
+  num get receivedTime => _blink.BlinkMIDIMessageEvent.instance.receivedTime_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28172,11 +26374,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MidiOutput internalCreateMidiOutput() {
-    return new MidiOutput._internalWrap();
-  }
-
-  external factory MidiOutput._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MidiOutput.internal_() : super.internal_();
@@ -28184,10 +26382,10 @@
 
   void send(Uint8List data, [num timestamp]) {
     if (timestamp != null) {
-      _blink.BlinkMIDIOutput.instance.send_Callback_2_(unwrap_jso(this), unwrap_jso(data), timestamp);
+      _blink.BlinkMIDIOutput.instance.send_Callback_2_(this, data, timestamp);
       return;
     }
-    _blink.BlinkMIDIOutput.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+    _blink.BlinkMIDIOutput.instance.send_Callback_1_(this, data);
     return;
   }
 
@@ -28206,25 +26404,17 @@
   // To suppress missing implicit constructor warnings.
   factory MidiOutputMap._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static MidiOutputMap internalCreateMidiOutputMap() {
-    return new MidiOutputMap._internalWrap();
-  }
 
-  factory MidiOutputMap._internalWrap() {
-    return new MidiOutputMap.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MidiOutputMap.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('MIDIOutputMap.size')
   @DocsEditable()
   @Experimental() // untriaged
-  int get size => _blink.BlinkMIDIOutputMap.instance.size_Getter_(unwrap_jso(this));
+  int get size => _blink.BlinkMIDIOutputMap.instance.size_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28244,11 +26434,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MidiPort internalCreateMidiPort() {
-    return new MidiPort._internalWrap();
-  }
-
-  external factory MidiPort._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MidiPort.internal_() : super.internal_();
@@ -28257,42 +26443,42 @@
   @DomName('MIDIPort.connection')
   @DocsEditable()
   @Experimental() // untriaged
-  String get connection => _blink.BlinkMIDIPort.instance.connection_Getter_(unwrap_jso(this));
+  String get connection => _blink.BlinkMIDIPort.instance.connection_Getter_(this);
   
   @DomName('MIDIPort.id')
   @DocsEditable()
-  String get id => _blink.BlinkMIDIPort.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkMIDIPort.instance.id_Getter_(this);
   
   @DomName('MIDIPort.manufacturer')
   @DocsEditable()
-  String get manufacturer => _blink.BlinkMIDIPort.instance.manufacturer_Getter_(unwrap_jso(this));
+  String get manufacturer => _blink.BlinkMIDIPort.instance.manufacturer_Getter_(this);
   
   @DomName('MIDIPort.name')
   @DocsEditable()
-  String get name => _blink.BlinkMIDIPort.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkMIDIPort.instance.name_Getter_(this);
   
   @DomName('MIDIPort.state')
   @DocsEditable()
   @Experimental() // untriaged
-  String get state => _blink.BlinkMIDIPort.instance.state_Getter_(unwrap_jso(this));
+  String get state => _blink.BlinkMIDIPort.instance.state_Getter_(this);
   
   @DomName('MIDIPort.type')
   @DocsEditable()
-  String get type => _blink.BlinkMIDIPort.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkMIDIPort.instance.type_Getter_(this);
   
   @DomName('MIDIPort.version')
   @DocsEditable()
-  String get version => _blink.BlinkMIDIPort.instance.version_Getter_(unwrap_jso(this));
+  String get version => _blink.BlinkMIDIPort.instance.version_Getter_(this);
   
   @DomName('MIDIPort.close')
   @DocsEditable()
   @Experimental() // untriaged
-  Future close() => wrap_jso(_blink.BlinkMIDIPort.instance.close_Callback_0_(unwrap_jso(this)));
+  Future close() => convertNativePromiseToDartFuture(_blink.BlinkMIDIPort.instance.close_Callback_0_(this));
   
   @DomName('MIDIPort.open')
   @DocsEditable()
   @Experimental() // untriaged
-  Future open() => wrap_jso(_blink.BlinkMIDIPort.instance.open_Callback_0_(unwrap_jso(this)));
+  Future open() => convertNativePromiseToDartFuture(_blink.BlinkMIDIPort.instance.open_Callback_0_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28309,36 +26495,28 @@
   // To suppress missing implicit constructor warnings.
   factory MimeType._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static MimeType internalCreateMimeType() {
-    return new MimeType._internalWrap();
-  }
 
-  factory MimeType._internalWrap() {
-    return new MimeType.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MimeType.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('MimeType.description')
   @DocsEditable()
-  String get description => _blink.BlinkMimeType.instance.description_Getter_(unwrap_jso(this));
+  String get description => _blink.BlinkMimeType.instance.description_Getter_(this);
   
   @DomName('MimeType.enabledPlugin')
   @DocsEditable()
-  Plugin get enabledPlugin => wrap_jso(_blink.BlinkMimeType.instance.enabledPlugin_Getter_(unwrap_jso(this)));
+  Plugin get enabledPlugin => _blink.BlinkMimeType.instance.enabledPlugin_Getter_(this);
   
   @DomName('MimeType.suffixes')
   @DocsEditable()
-  String get suffixes => _blink.BlinkMimeType.instance.suffixes_Getter_(unwrap_jso(this));
+  String get suffixes => _blink.BlinkMimeType.instance.suffixes_Getter_(this);
   
   @DomName('MimeType.type')
   @DocsEditable()
-  String get type => _blink.BlinkMimeType.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkMimeType.instance.type_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28355,32 +26533,24 @@
   // To suppress missing implicit constructor warnings.
   factory MimeTypeArray._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static MimeTypeArray internalCreateMimeTypeArray() {
-    return new MimeTypeArray._internalWrap();
-  }
 
-  factory MimeTypeArray._internalWrap() {
-    return new MimeTypeArray.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MimeTypeArray.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('MimeTypeArray.length')
   @DocsEditable()
-  int get length => _blink.BlinkMimeTypeArray.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkMimeTypeArray.instance.length_Getter_(this);
   
   MimeType operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkMimeTypeArray.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  MimeType _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkMimeTypeArray.instance.item_Callback_1_(unwrap_jso(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.");
@@ -28422,14 +26592,14 @@
 
   @DomName('MimeTypeArray.item')
   @DocsEditable()
-  MimeType item(int index) => wrap_jso(_blink.BlinkMimeTypeArray.instance.item_Callback_1_(unwrap_jso(this), index));
+  MimeType item(int index) => _blink.BlinkMimeTypeArray.instance.item_Callback_1_(this, index);
   
   MimeType namedItem(String name) {
     if ((name is String || name == null)) {
-      return wrap_jso(_blink.BlinkMimeTypeArray.instance.namedItem_Callback_1_(unwrap_jso(this), name));
+      return _blink.BlinkMimeTypeArray.instance.namedItem_Callback_1_(this, name);
     }
     if ((name is String || name == null)) {
-      return wrap_jso(_blink.BlinkMimeTypeArray.instance.namedItem_Callback_1_(unwrap_jso(this), name));
+      return _blink.BlinkMimeTypeArray.instance.namedItem_Callback_1_(this, name);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -28451,11 +26621,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ModElement internalCreateModElement() {
-    return new ModElement._internalWrap();
-  }
-
-  external factory ModElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ModElement.internal_() : super.internal_();
@@ -28469,19 +26635,19 @@
 
   @DomName('HTMLModElement.cite')
   @DocsEditable()
-  String get cite => _blink.BlinkHTMLModElement.instance.cite_Getter_(unwrap_jso(this));
+  String get cite => _blink.BlinkHTMLModElement.instance.cite_Getter_(this);
   
   @DomName('HTMLModElement.cite')
   @DocsEditable()
-  set cite(String value) => _blink.BlinkHTMLModElement.instance.cite_Setter_(unwrap_jso(this), value);
+  set cite(String value) => _blink.BlinkHTMLModElement.instance.cite_Setter_(this, value);
   
   @DomName('HTMLModElement.dateTime')
   @DocsEditable()
-  String get dateTime => _blink.BlinkHTMLModElement.instance.dateTime_Getter_(unwrap_jso(this));
+  String get dateTime => _blink.BlinkHTMLModElement.instance.dateTime_Getter_(this);
   
   @DomName('HTMLModElement.dateTime')
   @DocsEditable()
-  set dateTime(String value) => _blink.BlinkHTMLModElement.instance.dateTime_Setter_(unwrap_jso(this), value);
+  set dateTime(String value) => _blink.BlinkHTMLModElement.instance.dateTime_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28514,18 +26680,14 @@
   factory MouseEvent._(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkMouseEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkMouseEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkMouseEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkMouseEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static MouseEvent internalCreateMouseEvent() {
-    return new MouseEvent._internalWrap();
-  }
-
-  external factory MouseEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MouseEvent.internal_() : super.internal_();
@@ -28533,33 +26695,33 @@
 
   @DomName('MouseEvent.altKey')
   @DocsEditable()
-  bool get altKey => _blink.BlinkMouseEvent.instance.altKey_Getter_(unwrap_jso(this));
+  bool get altKey => _blink.BlinkMouseEvent.instance.altKey_Getter_(this);
   
   @DomName('MouseEvent.button')
   @DocsEditable()
-  int get button => _blink.BlinkMouseEvent.instance.button_Getter_(unwrap_jso(this));
+  int get button => _blink.BlinkMouseEvent.instance.button_Getter_(this);
   
   @DomName('MouseEvent.buttons')
   @DocsEditable()
   @Experimental() // untriaged
-  int get buttons => _blink.BlinkMouseEvent.instance.buttons_Getter_(unwrap_jso(this));
+  int get buttons => _blink.BlinkMouseEvent.instance.buttons_Getter_(this);
   
   @DomName('MouseEvent.clientX')
   @DocsEditable()
-  int get _clientX => _blink.BlinkMouseEvent.instance.clientX_Getter_(unwrap_jso(this));
+  int get _clientX => _blink.BlinkMouseEvent.instance.clientX_Getter_(this);
   
   @DomName('MouseEvent.clientY')
   @DocsEditable()
-  int get _clientY => _blink.BlinkMouseEvent.instance.clientY_Getter_(unwrap_jso(this));
+  int get _clientY => _blink.BlinkMouseEvent.instance.clientY_Getter_(this);
   
   @DomName('MouseEvent.ctrlKey')
   @DocsEditable()
-  bool get ctrlKey => _blink.BlinkMouseEvent.instance.ctrlKey_Getter_(unwrap_jso(this));
+  bool get ctrlKey => _blink.BlinkMouseEvent.instance.ctrlKey_Getter_(this);
   
   @DomName('MouseEvent.dataTransfer')
   @DocsEditable()
   @Unstable()
-  DataTransfer get dataTransfer => wrap_jso(_blink.BlinkMouseEvent.instance.dataTransfer_Getter_(unwrap_jso(this)));
+  DataTransfer get dataTransfer => _blink.BlinkMouseEvent.instance.dataTransfer_Getter_(this);
   
   /**
    * The nonstandard way to access the element that the mouse comes
@@ -28571,72 +26733,72 @@
   @DomName('MouseEvent.fromElement')
   @DocsEditable()
   @deprecated
-  Node get fromElement => wrap_jso(_blink.BlinkMouseEvent.instance.fromElement_Getter_(unwrap_jso(this)));
+  Node get fromElement => _blink.BlinkMouseEvent.instance.fromElement_Getter_(this);
   
   @DomName('MouseEvent.layerX')
   @DocsEditable()
   @Experimental() // untriaged
-  int get _layerX => _blink.BlinkMouseEvent.instance.layerX_Getter_(unwrap_jso(this));
+  int get _layerX => _blink.BlinkMouseEvent.instance.layerX_Getter_(this);
   
   @DomName('MouseEvent.layerY')
   @DocsEditable()
   @Experimental() // untriaged
-  int get _layerY => _blink.BlinkMouseEvent.instance.layerY_Getter_(unwrap_jso(this));
+  int get _layerY => _blink.BlinkMouseEvent.instance.layerY_Getter_(this);
   
   @DomName('MouseEvent.metaKey')
   @DocsEditable()
-  bool get metaKey => _blink.BlinkMouseEvent.instance.metaKey_Getter_(unwrap_jso(this));
+  bool get metaKey => _blink.BlinkMouseEvent.instance.metaKey_Getter_(this);
   
   @DomName('MouseEvent.movementX')
   @DocsEditable()
   @Experimental() // untriaged
-  int get _movementX => _blink.BlinkMouseEvent.instance.movementX_Getter_(unwrap_jso(this));
+  int get _movementX => _blink.BlinkMouseEvent.instance.movementX_Getter_(this);
   
   @DomName('MouseEvent.movementY')
   @DocsEditable()
   @Experimental() // untriaged
-  int get _movementY => _blink.BlinkMouseEvent.instance.movementY_Getter_(unwrap_jso(this));
+  int get _movementY => _blink.BlinkMouseEvent.instance.movementY_Getter_(this);
   
   @DomName('MouseEvent.offsetX')
   @DocsEditable()
   @Unstable()
-  int get _offsetX => _blink.BlinkMouseEvent.instance.offsetX_Getter_(unwrap_jso(this));
+  int get _offsetX => _blink.BlinkMouseEvent.instance.offsetX_Getter_(this);
   
   @DomName('MouseEvent.offsetY')
   @DocsEditable()
   @Unstable()
-  int get _offsetY => _blink.BlinkMouseEvent.instance.offsetY_Getter_(unwrap_jso(this));
+  int get _offsetY => _blink.BlinkMouseEvent.instance.offsetY_Getter_(this);
   
   @DomName('MouseEvent.pageX')
   @DocsEditable()
   @Experimental() // untriaged
-  int get _pageX => _blink.BlinkMouseEvent.instance.pageX_Getter_(unwrap_jso(this));
+  int get _pageX => _blink.BlinkMouseEvent.instance.pageX_Getter_(this);
   
   @DomName('MouseEvent.pageY')
   @DocsEditable()
   @Experimental() // untriaged
-  int get _pageY => _blink.BlinkMouseEvent.instance.pageY_Getter_(unwrap_jso(this));
+  int get _pageY => _blink.BlinkMouseEvent.instance.pageY_Getter_(this);
   
   @DomName('MouseEvent.region')
   @DocsEditable()
   @Experimental() // untriaged
-  String get region => _blink.BlinkMouseEvent.instance.region_Getter_(unwrap_jso(this));
+  String get region => _blink.BlinkMouseEvent.instance.region_Getter_(this);
   
   @DomName('MouseEvent.relatedTarget')
   @DocsEditable()
-  EventTarget get relatedTarget => wrap_jso(_blink.BlinkMouseEvent.instance.relatedTarget_Getter_(unwrap_jso(this)));
+  EventTarget get relatedTarget => _blink.BlinkMouseEvent.instance.relatedTarget_Getter_(this);
   
   @DomName('MouseEvent.screenX')
   @DocsEditable()
-  int get _screenX => _blink.BlinkMouseEvent.instance.screenX_Getter_(unwrap_jso(this));
+  int get _screenX => _blink.BlinkMouseEvent.instance.screenX_Getter_(this);
   
   @DomName('MouseEvent.screenY')
   @DocsEditable()
-  int get _screenY => _blink.BlinkMouseEvent.instance.screenY_Getter_(unwrap_jso(this));
+  int get _screenY => _blink.BlinkMouseEvent.instance.screenY_Getter_(this);
   
   @DomName('MouseEvent.shiftKey')
   @DocsEditable()
-  bool get shiftKey => _blink.BlinkMouseEvent.instance.shiftKey_Getter_(unwrap_jso(this));
+  bool get shiftKey => _blink.BlinkMouseEvent.instance.shiftKey_Getter_(this);
   
   /**
    * The nonstandard way to access the element that the mouse goes
@@ -28648,30 +26810,30 @@
   @DomName('MouseEvent.toElement')
   @DocsEditable()
   @deprecated
-  Node get toElement => wrap_jso(_blink.BlinkMouseEvent.instance.toElement_Getter_(unwrap_jso(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.instance.webkitMovementX_Getter_(unwrap_jso(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.instance.webkitMovementY_Getter_(unwrap_jso(this));
+  int get _webkitMovementY => _blink.BlinkMouseEvent.instance.webkitMovementY_Getter_(this);
   
   @DomName('MouseEvent.which')
   @DocsEditable()
   @Experimental() // untriaged
-  int get _which => _blink.BlinkMouseEvent.instance.which_Getter_(unwrap_jso(this));
+  int get _which => _blink.BlinkMouseEvent.instance.which_Getter_(this);
   
   @DomName('MouseEvent.initMouseEvent')
   @DocsEditable()
-  void _initMouseEvent(String type, bool bubbles, 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_(unwrap_jso(this), type, bubbles, cancelable, unwrap_jso(view), detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, unwrap_jso(relatedTarget));
+  void _initMouseEvent(String type, bool bubbles, 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, bubbles, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, _convertDartToNative_EventTarget(relatedTarget));
   
 
   @deprecated
@@ -28746,34 +26908,26 @@
 
   @DomName('MutationObserver.MutationObserver')
   @DocsEditable()
-  factory MutationObserver._(MutationCallback callback) => wrap_jso(_create(callback));
+  factory MutationObserver._(MutationCallback callback) => _create(callback);
+
 
   @Deprecated("Internal Use Only")
-  static MutationObserver internalCreateMutationObserver() {
-    return new MutationObserver._internalWrap();
-  }
-
-  factory MutationObserver._internalWrap() {
-    return new MutationObserver.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MutationObserver.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('MutationObserver.disconnect')
   @DocsEditable()
-  void disconnect() => _blink.BlinkMutationObserver.instance.disconnect_Callback_0_(unwrap_jso(this));
+  void disconnect() => _blink.BlinkMutationObserver.instance.disconnect_Callback_0_(this);
   
   @DomName('MutationObserver.observe')
   @DocsEditable()
-  void _observe(Node target, Map options) => _blink.BlinkMutationObserver.instance.observe_Callback_2_(unwrap_jso(this), unwrap_jso(target), convertDartToNative_Dictionary(options));
+  void _observe(Node target, Map options) => _blink.BlinkMutationObserver.instance.observe_Callback_2_(this, target, convertDartToNative_Dictionary(options));
   
   @DomName('MutationObserver.takeRecords')
   @DocsEditable()
-  List<MutationRecord> takeRecords() => wrap_jso(_blink.BlinkMutationObserver.instance.takeRecords_Callback_0_(unwrap_jso(this)));
+  List<MutationRecord> takeRecords() => (_blink.BlinkMutationObserver.instance.takeRecords_Callback_0_(this));
   
   /**
    * Checks to see if the mutation observer API is supported on the current
@@ -28783,9 +26937,7 @@
     return true;
   }
   @DocsEditable()
-  static MutationObserver _create(callback) => wrap_jso(_blink.BlinkMutationObserver.instance.constructorCallback_1_((mutations, observer) {
-    callback(wrap_jso(mutations), wrap_jso(observer));
-  }));
+  static MutationObserver _create(callback) => _blink.BlinkMutationObserver.instance.constructorCallback_1_(callback);
 
   /**
    * Observes the target for the specified changes.
@@ -28860,56 +27012,48 @@
   // To suppress missing implicit constructor warnings.
   factory MutationRecord._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static MutationRecord internalCreateMutationRecord() {
-    return new MutationRecord._internalWrap();
-  }
 
-  factory MutationRecord._internalWrap() {
-    return new MutationRecord.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MutationRecord.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('MutationRecord.addedNodes')
   @DocsEditable()
-  List<Node> get addedNodes => wrap_jso(_blink.BlinkMutationRecord.instance.addedNodes_Getter_(unwrap_jso(this)));
+  List<Node> get addedNodes => (_blink.BlinkMutationRecord.instance.addedNodes_Getter_(this));
   
   @DomName('MutationRecord.attributeName')
   @DocsEditable()
-  String get attributeName => _blink.BlinkMutationRecord.instance.attributeName_Getter_(unwrap_jso(this));
+  String get attributeName => _blink.BlinkMutationRecord.instance.attributeName_Getter_(this);
   
   @DomName('MutationRecord.attributeNamespace')
   @DocsEditable()
-  String get attributeNamespace => _blink.BlinkMutationRecord.instance.attributeNamespace_Getter_(unwrap_jso(this));
+  String get attributeNamespace => _blink.BlinkMutationRecord.instance.attributeNamespace_Getter_(this);
   
   @DomName('MutationRecord.nextSibling')
   @DocsEditable()
-  Node get nextSibling => wrap_jso(_blink.BlinkMutationRecord.instance.nextSibling_Getter_(unwrap_jso(this)));
+  Node get nextSibling => _blink.BlinkMutationRecord.instance.nextSibling_Getter_(this);
   
   @DomName('MutationRecord.oldValue')
   @DocsEditable()
-  String get oldValue => _blink.BlinkMutationRecord.instance.oldValue_Getter_(unwrap_jso(this));
+  String get oldValue => _blink.BlinkMutationRecord.instance.oldValue_Getter_(this);
   
   @DomName('MutationRecord.previousSibling')
   @DocsEditable()
-  Node get previousSibling => wrap_jso(_blink.BlinkMutationRecord.instance.previousSibling_Getter_(unwrap_jso(this)));
+  Node get previousSibling => _blink.BlinkMutationRecord.instance.previousSibling_Getter_(this);
   
   @DomName('MutationRecord.removedNodes')
   @DocsEditable()
-  List<Node> get removedNodes => wrap_jso(_blink.BlinkMutationRecord.instance.removedNodes_Getter_(unwrap_jso(this)));
+  List<Node> get removedNodes => (_blink.BlinkMutationRecord.instance.removedNodes_Getter_(this));
   
   @DomName('MutationRecord.target')
   @DocsEditable()
-  Node get target => wrap_jso(_blink.BlinkMutationRecord.instance.target_Getter_(unwrap_jso(this)));
+  Node get target => _blink.BlinkMutationRecord.instance.target_Getter_(this);
   
   @DomName('MutationRecord.type')
   @DocsEditable()
-  String get type => _blink.BlinkMutationRecord.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkMutationRecord.instance.type_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28979,101 +27123,93 @@
   // To suppress missing implicit constructor warnings.
   factory Navigator._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Navigator internalCreateNavigator() {
-    return new Navigator._internalWrap();
-  }
 
-  factory Navigator._internalWrap() {
-    return new Navigator.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Navigator.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Navigator.bluetooth')
   @DocsEditable()
   @Experimental() // untriaged
-  Bluetooth get bluetooth => wrap_jso(_blink.BlinkNavigator.instance.bluetooth_Getter_(unwrap_jso(this)));
+  Bluetooth get bluetooth => _blink.BlinkNavigator.instance.bluetooth_Getter_(this);
   
   @DomName('Navigator.connection')
   @DocsEditable()
   @Experimental() // untriaged
-  NetworkInformation get connection => wrap_jso(_blink.BlinkNavigator.instance.connection_Getter_(unwrap_jso(this)));
+  NetworkInformation get connection => _blink.BlinkNavigator.instance.connection_Getter_(this);
   
   @DomName('Navigator.credentials')
   @DocsEditable()
   @Experimental() // untriaged
-  CredentialsContainer get credentials => wrap_jso(_blink.BlinkNavigator.instance.credentials_Getter_(unwrap_jso(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.instance.doNotTrack_Getter_(unwrap_jso(this));
+  String get doNotTrack => _blink.BlinkNavigator.instance.doNotTrack_Getter_(this);
   
   @DomName('Navigator.geolocation')
   @DocsEditable()
   @Unstable()
-  Geolocation get geolocation => wrap_jso(_blink.BlinkNavigator.instance.geolocation_Getter_(unwrap_jso(this)));
+  Geolocation get geolocation => _blink.BlinkNavigator.instance.geolocation_Getter_(this);
   
   @DomName('Navigator.maxTouchPoints')
   @DocsEditable()
   @Experimental() // untriaged
-  int get maxTouchPoints => _blink.BlinkNavigator.instance.maxTouchPoints_Getter_(unwrap_jso(this));
+  int get maxTouchPoints => _blink.BlinkNavigator.instance.maxTouchPoints_Getter_(this);
   
   @DomName('Navigator.mediaDevices')
   @DocsEditable()
   @Experimental() // untriaged
-  MediaDevices get mediaDevices => wrap_jso(_blink.BlinkNavigator.instance.mediaDevices_Getter_(unwrap_jso(this)));
+  MediaDevices get mediaDevices => _blink.BlinkNavigator.instance.mediaDevices_Getter_(this);
   
   @DomName('Navigator.mimeTypes')
   @DocsEditable()
   @Experimental() // nonstandard
-  MimeTypeArray get mimeTypes => wrap_jso(_blink.BlinkNavigator.instance.mimeTypes_Getter_(unwrap_jso(this)));
+  MimeTypeArray get mimeTypes => _blink.BlinkNavigator.instance.mimeTypes_Getter_(this);
   
   @DomName('Navigator.permissions')
   @DocsEditable()
   @Experimental() // untriaged
-  Permissions get permissions => wrap_jso(_blink.BlinkNavigator.instance.permissions_Getter_(unwrap_jso(this)));
+  Permissions get permissions => _blink.BlinkNavigator.instance.permissions_Getter_(this);
   
   @DomName('Navigator.presentation')
   @DocsEditable()
   @Experimental() // untriaged
-  Presentation get presentation => wrap_jso(_blink.BlinkNavigator.instance.presentation_Getter_(unwrap_jso(this)));
+  Presentation get presentation => _blink.BlinkNavigator.instance.presentation_Getter_(this);
   
   @DomName('Navigator.productSub')
   @DocsEditable()
   @Unstable()
-  String get productSub => _blink.BlinkNavigator.instance.productSub_Getter_(unwrap_jso(this));
+  String get productSub => _blink.BlinkNavigator.instance.productSub_Getter_(this);
   
   @DomName('Navigator.serviceWorker')
   @DocsEditable()
   @Experimental() // untriaged
-  ServiceWorkerContainer get serviceWorker => wrap_jso(_blink.BlinkNavigator.instance.serviceWorker_Getter_(unwrap_jso(this)));
+  ServiceWorkerContainer get serviceWorker => _blink.BlinkNavigator.instance.serviceWorker_Getter_(this);
   
   @DomName('Navigator.services')
   @DocsEditable()
   @Experimental() // untriaged
-  ServicePortCollection get services => wrap_jso(_blink.BlinkNavigator.instance.services_Getter_(unwrap_jso(this)));
+  ServicePortCollection get services => _blink.BlinkNavigator.instance.services_Getter_(this);
   
   @DomName('Navigator.storageQuota')
   @DocsEditable()
   @Experimental() // untriaged
-  StorageQuota get storageQuota => wrap_jso(_blink.BlinkNavigator.instance.storageQuota_Getter_(unwrap_jso(this)));
+  StorageQuota get storageQuota => _blink.BlinkNavigator.instance.storageQuota_Getter_(this);
   
   @DomName('Navigator.vendor')
   @DocsEditable()
   @Unstable()
-  String get vendor => _blink.BlinkNavigator.instance.vendor_Getter_(unwrap_jso(this));
+  String get vendor => _blink.BlinkNavigator.instance.vendor_Getter_(this);
   
   @DomName('Navigator.vendorSub')
   @DocsEditable()
   @Unstable()
-  String get vendorSub => _blink.BlinkNavigator.instance.vendorSub_Getter_(unwrap_jso(this));
+  String get vendorSub => _blink.BlinkNavigator.instance.vendorSub_Getter_(this);
   
   @DomName('Navigator.webkitPersistentStorage')
   @DocsEditable()
@@ -29081,7 +27217,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // http://www.w3.org/TR/quota-api/#accessing-storagequota
-  DeprecatedStorageQuota get persistentStorage => wrap_jso(_blink.BlinkNavigator.instance.webkitPersistentStorage_Getter_(unwrap_jso(this)));
+  DeprecatedStorageQuota get persistentStorage => _blink.BlinkNavigator.instance.webkitPersistentStorage_Getter_(this);
   
   @DomName('Navigator.webkitTemporaryStorage')
   @DocsEditable()
@@ -29089,111 +27225,111 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // http://www.w3.org/TR/quota-api/#accessing-storagequota
-  DeprecatedStorageQuota get temporaryStorage => wrap_jso(_blink.BlinkNavigator.instance.webkitTemporaryStorage_Getter_(unwrap_jso(this)));
+  DeprecatedStorageQuota get temporaryStorage => _blink.BlinkNavigator.instance.webkitTemporaryStorage_Getter_(this);
   
   @DomName('Navigator.getBattery')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getBattery() => wrap_jso(_blink.BlinkNavigator.instance.getBattery_Callback_0_(unwrap_jso(this)));
+  Future getBattery() => convertNativePromiseToDartFuture(_blink.BlinkNavigator.instance.getBattery_Callback_0_(this));
   
   @DomName('Navigator.getGamepads')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Gamepad> getGamepads() => wrap_jso(_blink.BlinkNavigator.instance.getGamepads_Callback_0_(unwrap_jso(this)));
+  List<Gamepad> getGamepads() => (_blink.BlinkNavigator.instance.getGamepads_Callback_0_(this));
   
   @DomName('Navigator.getVRDevices')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getVRDevices() => wrap_jso(_blink.BlinkNavigator.instance.getVRDevices_Callback_0_(unwrap_jso(this)));
+  Future getVRDevices() => convertNativePromiseToDartFuture(_blink.BlinkNavigator.instance.getVRDevices_Callback_0_(this));
   
   @DomName('Navigator.registerProtocolHandler')
   @DocsEditable()
   @Unstable()
-  void registerProtocolHandler(String scheme, String url, String title) => _blink.BlinkNavigator.instance.registerProtocolHandler_Callback_3_(unwrap_jso(this), scheme, url, title);
+  void registerProtocolHandler(String scheme, String url, String title) => _blink.BlinkNavigator.instance.registerProtocolHandler_Callback_3_(this, scheme, url, title);
   
   Future requestMidiAccess([Map options]) {
     if (options != null) {
-      return wrap_jso(_blink.BlinkNavigator.instance.requestMIDIAccess_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(options)));
+      return _blink.BlinkNavigator.instance.requestMIDIAccess_Callback_1_(this, convertDartToNative_Dictionary(options));
     }
-    return wrap_jso(_blink.BlinkNavigator.instance.requestMIDIAccess_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkNavigator.instance.requestMIDIAccess_Callback_0_(this);
   }
 
   @DomName('Navigator.requestMediaKeySystemAccess')
   @DocsEditable()
   @Experimental() // untriaged
-  Future requestMediaKeySystemAccess(String keySystem, List<Map> supportedConfigurations) => wrap_jso(_blink.BlinkNavigator.instance.requestMediaKeySystemAccess_Callback_2_(unwrap_jso(this), keySystem, supportedConfigurations));
+  Future requestMediaKeySystemAccess(String keySystem, List<Map> supportedConfigurations) => convertNativePromiseToDartFuture(_blink.BlinkNavigator.instance.requestMediaKeySystemAccess_Callback_2_(this, keySystem, supportedConfigurations));
   
   @DomName('Navigator.sendBeacon')
   @DocsEditable()
   @Experimental() // untriaged
-  bool sendBeacon(String url, Object data) => _blink.BlinkNavigator.instance.sendBeacon_Callback_2_(unwrap_jso(this), url, data);
+  bool sendBeacon(String url, Object data) => _blink.BlinkNavigator.instance.sendBeacon_Callback_2_(this, url, data);
   
   @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.instance.webkitGetUserMedia_Callback_3_(unwrap_jso(this), convertDartToNative_Dictionary(options), unwrap_jso((stream) => successCallback(wrap_jso(stream))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+  void _getUserMedia(Map options, _NavigatorUserMediaSuccessCallback successCallback, _NavigatorUserMediaErrorCallback errorCallback) => _blink.BlinkNavigator.instance.webkitGetUserMedia_Callback_3_(this, convertDartToNative_Dictionary(options), successCallback, errorCallback);
   
   @DomName('Navigator.hardwareConcurrency')
   @DocsEditable()
   @Experimental() // untriaged
-  int get hardwareConcurrency => _blink.BlinkNavigator.instance.hardwareConcurrency_Getter_(unwrap_jso(this));
+  int get hardwareConcurrency => _blink.BlinkNavigator.instance.hardwareConcurrency_Getter_(this);
   
   @DomName('Navigator.appCodeName')
   @DocsEditable()
   @Experimental() // non-standard
-  String get appCodeName => _blink.BlinkNavigator.instance.appCodeName_Getter_(unwrap_jso(this));
+  String get appCodeName => _blink.BlinkNavigator.instance.appCodeName_Getter_(this);
   
   @DomName('Navigator.appName')
   @DocsEditable()
-  String get appName => _blink.BlinkNavigator.instance.appName_Getter_(unwrap_jso(this));
+  String get appName => _blink.BlinkNavigator.instance.appName_Getter_(this);
   
   @DomName('Navigator.appVersion')
   @DocsEditable()
-  String get appVersion => _blink.BlinkNavigator.instance.appVersion_Getter_(unwrap_jso(this));
+  String get appVersion => _blink.BlinkNavigator.instance.appVersion_Getter_(this);
   
   @DomName('Navigator.dartEnabled')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get dartEnabled => _blink.BlinkNavigator.instance.dartEnabled_Getter_(unwrap_jso(this));
+  bool get dartEnabled => _blink.BlinkNavigator.instance.dartEnabled_Getter_(this);
   
   @DomName('Navigator.platform')
   @DocsEditable()
-  String get platform => _blink.BlinkNavigator.instance.platform_Getter_(unwrap_jso(this));
+  String get platform => _blink.BlinkNavigator.instance.platform_Getter_(this);
   
   @DomName('Navigator.product')
   @DocsEditable()
   @Unstable()
-  String get product => _blink.BlinkNavigator.instance.product_Getter_(unwrap_jso(this));
+  String get product => _blink.BlinkNavigator.instance.product_Getter_(this);
   
   @DomName('Navigator.userAgent')
   @DocsEditable()
-  String get userAgent => _blink.BlinkNavigator.instance.userAgent_Getter_(unwrap_jso(this));
+  String get userAgent => _blink.BlinkNavigator.instance.userAgent_Getter_(this);
   
   @DomName('Navigator.language')
   @DocsEditable()
-  String get language => _blink.BlinkNavigator.instance.language_Getter_(unwrap_jso(this));
+  String get language => _blink.BlinkNavigator.instance.language_Getter_(this);
   
   @DomName('Navigator.languages')
   @DocsEditable()
   @Experimental() // untriaged
-  List<String> get languages => _blink.BlinkNavigator.instance.languages_Getter_(unwrap_jso(this));
+  List<String> get languages => _blink.BlinkNavigator.instance.languages_Getter_(this);
   
   @DomName('Navigator.onLine')
   @DocsEditable()
   @Unstable()
-  bool get onLine => _blink.BlinkNavigator.instance.onLine_Getter_(unwrap_jso(this));
+  bool get onLine => _blink.BlinkNavigator.instance.onLine_Getter_(this);
   
   @DomName('Navigator.cookieEnabled')
   @DocsEditable()
   @Unstable()
-  bool get cookieEnabled => _blink.BlinkNavigator.instance.cookieEnabled_Getter_(unwrap_jso(this));
+  bool get cookieEnabled => _blink.BlinkNavigator.instance.cookieEnabled_Getter_(this);
   
   @DomName('Navigator.getStorageUpdates')
   @DocsEditable()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorstorageutils
   @Experimental()
-  void getStorageUpdates() => _blink.BlinkNavigator.instance.getStorageUpdates_Callback_0_(unwrap_jso(this));
+  void getStorageUpdates() => _blink.BlinkNavigator.instance.getStorageUpdates_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -29325,30 +27461,22 @@
   // To suppress missing implicit constructor warnings.
   factory NavigatorStorageUtils._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static NavigatorStorageUtils internalCreateNavigatorStorageUtils() {
-    return new NavigatorStorageUtils._internalWrap();
-  }
 
-  factory NavigatorStorageUtils._internalWrap() {
-    return new NavigatorStorageUtils.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   NavigatorStorageUtils.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('NavigatorStorageUtils.cookieEnabled')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get cookieEnabled => _blink.BlinkNavigatorStorageUtils.instance.cookieEnabled_Getter_(unwrap_jso(this));
+  bool get cookieEnabled => _blink.BlinkNavigatorStorageUtils.instance.cookieEnabled_Getter_(this);
   
   @DomName('NavigatorStorageUtils.getStorageUpdates')
   @DocsEditable()
   @Experimental() // untriaged
-  void getStorageUpdates() => _blink.BlinkNavigatorStorageUtils.instance.getStorageUpdates_Callback_0_(unwrap_jso(this));
+  void getStorageUpdates() => _blink.BlinkNavigatorStorageUtils.instance.getStorageUpdates_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -29366,32 +27494,24 @@
   // To suppress missing implicit constructor warnings.
   factory NavigatorUserMediaError._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static NavigatorUserMediaError internalCreateNavigatorUserMediaError() {
-    return new NavigatorUserMediaError._internalWrap();
-  }
 
-  factory NavigatorUserMediaError._internalWrap() {
-    return new NavigatorUserMediaError.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   NavigatorUserMediaError.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('NavigatorUserMediaError.constraintName')
   @DocsEditable()
-  String get constraintName => _blink.BlinkNavigatorUserMediaError.instance.constraintName_Getter_(unwrap_jso(this));
+  String get constraintName => _blink.BlinkNavigatorUserMediaError.instance.constraintName_Getter_(this);
   
   @DomName('NavigatorUserMediaError.message')
   @DocsEditable()
-  String get message => _blink.BlinkNavigatorUserMediaError.instance.message_Getter_(unwrap_jso(this));
+  String get message => _blink.BlinkNavigatorUserMediaError.instance.message_Getter_(this);
   
   @DomName('NavigatorUserMediaError.name')
   @DocsEditable()
-  String get name => _blink.BlinkNavigatorUserMediaError.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkNavigatorUserMediaError.instance.name_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -29432,11 +27552,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static NetworkInformation internalCreateNetworkInformation() {
-    return new NetworkInformation._internalWrap();
-  }
-
-  external factory NetworkInformation._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   NetworkInformation.internal_() : super.internal_();
@@ -29445,7 +27561,7 @@
   @DomName('NetworkInformation.type')
   @DocsEditable()
   @Experimental() // untriaged
-  String get type => _blink.BlinkNetworkInformation.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkNetworkInformation.instance.type_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -29624,14 +27740,7 @@
 class Node extends EventTarget {
 
   // Custom element created callback.
-  Node._created() : super._created() {
-    // By this point blink_jsObject should be setup if it's not then we weren't
-    // called by the registerElement createdCallback - probably created() was
-    // called directly which is verboten.
-    if (this.blink_jsObject == null) {
-      throw new DomException.jsInterop("the created constructor cannot be called directly");
-    }
-  }
+  Node._created() : super._created();
 
   /**
    * A modifiable list of this node's children.
@@ -29726,17 +27835,13 @@
    */
   @DomName('Node.childNodes')
   @DocsEditable()
-  List<Node> get childNodes => wrap_jso(_blink.BlinkNode.instance.childNodes_Getter_(unwrap_jso(this)));
+  List<Node> get childNodes => _blink.BlinkNode.instance.childNodes_Getter_(this);
   // To suppress missing implicit constructor warnings.
   factory Node._() { throw new UnsupportedError("Not supported"); }
 
 
   @Deprecated("Internal Use Only")
-  static Node internalCreateNode() {
-    return new Node._internalWrap();
-  }
-
-  external factory Node._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Node.internal_() : super.internal_();
@@ -29792,7 +27897,7 @@
 
   @DomName('Node.baseURI')
   @DocsEditable()
-  String get baseUri => _blink.BlinkNode.instance.baseURI_Getter_(unwrap_jso(this));
+  String get baseUri => _blink.BlinkNode.instance.baseURI_Getter_(this);
   
   /**
    * The first child of this node.
@@ -29804,7 +27909,7 @@
    */
   @DomName('Node.firstChild')
   @DocsEditable()
-  Node get firstChild => wrap_jso(_blink.BlinkNode.instance.firstChild_Getter_(unwrap_jso(this)));
+  Node get firstChild => _blink.BlinkNode.instance.firstChild_Getter_(this);
   
   /**
    * The last child of this node.
@@ -29816,15 +27921,15 @@
    */
   @DomName('Node.lastChild')
   @DocsEditable()
-  Node get lastChild => wrap_jso(_blink.BlinkNode.instance.lastChild_Getter_(unwrap_jso(this)));
+  Node get lastChild => _blink.BlinkNode.instance.lastChild_Getter_(this);
   
   @DomName('Node.localName')
   @DocsEditable()
-  String get _localName => _blink.BlinkNode.instance.localName_Getter_(unwrap_jso(this));
+  String get _localName => _blink.BlinkNode.instance.localName_Getter_(this);
   
   @DomName('Node.namespaceURI')
   @DocsEditable()
-  String get _namespaceUri => _blink.BlinkNode.instance.namespaceURI_Getter_(unwrap_jso(this));
+  String get _namespaceUri => _blink.BlinkNode.instance.namespaceURI_Getter_(this);
   
   /**
    * The next sibling node.
@@ -29836,7 +27941,7 @@
    */
   @DomName('Node.nextSibling')
   @DocsEditable()
-  Node get nextNode => wrap_jso(_blink.BlinkNode.instance.nextSibling_Getter_(unwrap_jso(this)));
+  Node get nextNode => _blink.BlinkNode.instance.nextSibling_Getter_(this);
   
   /**
    * The name of this node.
@@ -29851,7 +27956,7 @@
    */
   @DomName('Node.nodeName')
   @DocsEditable()
-  String get nodeName => _blink.BlinkNode.instance.nodeName_Getter_(unwrap_jso(this));
+  String get nodeName => _blink.BlinkNode.instance.nodeName_Getter_(this);
   
   /**
    * The type of node.
@@ -29878,7 +27983,7 @@
    */
   @DomName('Node.nodeType')
   @DocsEditable()
-  int get nodeType => _blink.BlinkNode.instance.nodeType_Getter_(unwrap_jso(this));
+  int get nodeType => _blink.BlinkNode.instance.nodeType_Getter_(this);
   
   /**
    * The value of this node.
@@ -29893,7 +27998,7 @@
    */
   @DomName('Node.nodeValue')
   @DocsEditable()
-  String get nodeValue => _blink.BlinkNode.instance.nodeValue_Getter_(unwrap_jso(this));
+  String get nodeValue => _blink.BlinkNode.instance.nodeValue_Getter_(this);
   
   /**
    * The document this node belongs to.
@@ -29907,7 +28012,7 @@
    */
   @DomName('Node.ownerDocument')
   @DocsEditable()
-  Document get ownerDocument => wrap_jso(_blink.BlinkNode.instance.ownerDocument_Getter_(unwrap_jso(this)));
+  Document get ownerDocument => _blink.BlinkNode.instance.ownerDocument_Getter_(this);
   
   /**
    * The parent element of this node.
@@ -29922,7 +28027,7 @@
    */
   @DomName('Node.parentElement')
   @DocsEditable()
-  Element get parent => wrap_jso(_blink.BlinkNode.instance.parentElement_Getter_(unwrap_jso(this)));
+  Element get parent => _blink.BlinkNode.instance.parentElement_Getter_(this);
   
   /**
    * The parent node of this node.
@@ -29934,7 +28039,7 @@
    */
   @DomName('Node.parentNode')
   @DocsEditable()
-  Node get parentNode => wrap_jso(_blink.BlinkNode.instance.parentNode_Getter_(unwrap_jso(this)));
+  Node get parentNode => _blink.BlinkNode.instance.parentNode_Getter_(this);
   
   /**
    * The previous sibling node.
@@ -29946,7 +28051,7 @@
    */
   @DomName('Node.previousSibling')
   @DocsEditable()
-  Node get previousNode => wrap_jso(_blink.BlinkNode.instance.previousSibling_Getter_(unwrap_jso(this)));
+  Node get previousNode => _blink.BlinkNode.instance.previousSibling_Getter_(this);
   
   /**
    * All text within this node and its decendents.
@@ -29958,7 +28063,7 @@
    */
   @DomName('Node.textContent')
   @DocsEditable()
-  String get text => _blink.BlinkNode.instance.textContent_Getter_(unwrap_jso(this));
+  String get text => _blink.BlinkNode.instance.textContent_Getter_(this);
   
   /**
    * All text within this node and its decendents.
@@ -29970,7 +28075,7 @@
    */
   @DomName('Node.textContent')
   @DocsEditable()
-  set text(String value) => _blink.BlinkNode.instance.textContent_Setter_(unwrap_jso(this), value);
+  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.
@@ -29983,7 +28088,7 @@
    */
   @DomName('Node.appendChild')
   @DocsEditable()
-  Node append(Node node) => wrap_jso(_blink.BlinkNode.instance.appendChild_Callback_1_(unwrap_jso(this), unwrap_jso(node)));
+  Node append(Node node) => _blink.BlinkNode.instance.appendChild_Callback_1_(this, node);
   
   /**
    * Returns a copy of this node.
@@ -29998,7 +28103,7 @@
    */
   @DomName('Node.cloneNode')
   @DocsEditable()
-  Node clone(bool deep) => wrap_jso(_blink.BlinkNode.instance.cloneNode_Callback_1_(unwrap_jso(this), deep));
+  Node clone(bool deep) => _blink.BlinkNode.instance.cloneNode_Callback_1_(this, deep);
   
   /**
    * Returns true if this node contains the specified node.
@@ -30010,7 +28115,7 @@
    */
   @DomName('Node.contains')
   @DocsEditable()
-  bool contains(Node other) => _blink.BlinkNode.instance.contains_Callback_1_(unwrap_jso(this), unwrap_jso(other));
+  bool contains(Node other) => _blink.BlinkNode.instance.contains_Callback_1_(this, other);
   
   /**
    * Returns true if this node has any children.
@@ -30022,7 +28127,7 @@
    */
   @DomName('Node.hasChildNodes')
   @DocsEditable()
-  bool hasChildNodes() => _blink.BlinkNode.instance.hasChildNodes_Callback_0_(unwrap_jso(this));
+  bool hasChildNodes() => _blink.BlinkNode.instance.hasChildNodes_Callback_0_(this);
   
   /**
    * Inserts all of the nodes into this node directly before refChild.
@@ -30034,15 +28139,15 @@
    */
   @DomName('Node.insertBefore')
   @DocsEditable()
-  Node insertBefore(Node node, Node child) => wrap_jso(_blink.BlinkNode.instance.insertBefore_Callback_2_(unwrap_jso(this), unwrap_jso(node), unwrap_jso(child)));
+  Node insertBefore(Node node, Node child) => _blink.BlinkNode.instance.insertBefore_Callback_2_(this, node, child);
   
   @DomName('Node.removeChild')
   @DocsEditable()
-  Node _removeChild(Node child) => wrap_jso(_blink.BlinkNode.instance.removeChild_Callback_1_(unwrap_jso(this), unwrap_jso(child)));
+  Node _removeChild(Node child) => _blink.BlinkNode.instance.removeChild_Callback_1_(this, child);
   
   @DomName('Node.replaceChild')
   @DocsEditable()
-  Node _replaceChild(Node node, Node child) => wrap_jso(_blink.BlinkNode.instance.replaceChild_Callback_2_(unwrap_jso(this), unwrap_jso(node), unwrap_jso(child)));
+  Node _replaceChild(Node node, Node child) => _blink.BlinkNode.instance.replaceChild_Callback_2_(this, node, child);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -30059,21 +28164,13 @@
   // To suppress missing implicit constructor warnings.
   factory NodeFilter._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static NodeFilter internalCreateNodeFilter() {
-    return new NodeFilter._internalWrap();
-  }
 
-  factory NodeFilter._internalWrap() {
-    return new NodeFilter.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   NodeFilter.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('NodeFilter.FILTER_ACCEPT')
   @DocsEditable()
   static const int FILTER_ACCEPT = 1;
@@ -30133,48 +28230,40 @@
   // To suppress missing implicit constructor warnings.
   factory NodeIterator._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static NodeIterator internalCreateNodeIterator() {
-    return new NodeIterator._internalWrap();
-  }
 
-  factory NodeIterator._internalWrap() {
-    return new NodeIterator.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   NodeIterator.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('NodeIterator.pointerBeforeReferenceNode')
   @DocsEditable()
-  bool get pointerBeforeReferenceNode => _blink.BlinkNodeIterator.instance.pointerBeforeReferenceNode_Getter_(unwrap_jso(this));
+  bool get pointerBeforeReferenceNode => _blink.BlinkNodeIterator.instance.pointerBeforeReferenceNode_Getter_(this);
   
   @DomName('NodeIterator.referenceNode')
   @DocsEditable()
-  Node get referenceNode => wrap_jso(_blink.BlinkNodeIterator.instance.referenceNode_Getter_(unwrap_jso(this)));
+  Node get referenceNode => _blink.BlinkNodeIterator.instance.referenceNode_Getter_(this);
   
   @DomName('NodeIterator.root')
   @DocsEditable()
-  Node get root => wrap_jso(_blink.BlinkNodeIterator.instance.root_Getter_(unwrap_jso(this)));
+  Node get root => _blink.BlinkNodeIterator.instance.root_Getter_(this);
   
   @DomName('NodeIterator.whatToShow')
   @DocsEditable()
-  int get whatToShow => _blink.BlinkNodeIterator.instance.whatToShow_Getter_(unwrap_jso(this));
+  int get whatToShow => _blink.BlinkNodeIterator.instance.whatToShow_Getter_(this);
   
   @DomName('NodeIterator.detach')
   @DocsEditable()
-  void detach() => _blink.BlinkNodeIterator.instance.detach_Callback_0_(unwrap_jso(this));
+  void detach() => _blink.BlinkNodeIterator.instance.detach_Callback_0_(this);
   
   @DomName('NodeIterator.nextNode')
   @DocsEditable()
-  Node nextNode() => wrap_jso(_blink.BlinkNodeIterator.instance.nextNode_Callback_0_(unwrap_jso(this)));
+  Node nextNode() => _blink.BlinkNodeIterator.instance.nextNode_Callback_0_(this);
   
   @DomName('NodeIterator.previousNode')
   @DocsEditable()
-  Node previousNode() => wrap_jso(_blink.BlinkNodeIterator.instance.previousNode_Callback_0_(unwrap_jso(this)));
+  Node previousNode() => _blink.BlinkNodeIterator.instance.previousNode_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -30190,32 +28279,24 @@
   // To suppress missing implicit constructor warnings.
   factory NodeList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static NodeList internalCreateNodeList() {
-    return new NodeList._internalWrap();
-  }
 
-  factory NodeList._internalWrap() {
-    return new NodeList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   NodeList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('NodeList.length')
   @DocsEditable()
-  int get length => _blink.BlinkNodeList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkNodeList.instance.length_Getter_(this);
   
   Node operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkNodeList.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  Node _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkNodeList.instance.item_Callback_1_(unwrap_jso(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.");
@@ -30257,7 +28338,7 @@
 
   @DomName('NodeList.item')
   @DocsEditable()
-  Node _item(int index) => wrap_jso(_blink.BlinkNodeList.instance.item_Callback_1_(unwrap_jso(this), index));
+  Node _item(int index) => _blink.BlinkNodeList.instance.item_Callback_1_(this, index);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -30274,30 +28355,22 @@
   // To suppress missing implicit constructor warnings.
   factory NonDocumentTypeChildNode._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static NonDocumentTypeChildNode internalCreateNonDocumentTypeChildNode() {
-    return new NonDocumentTypeChildNode._internalWrap();
-  }
 
-  factory NonDocumentTypeChildNode._internalWrap() {
-    return new NonDocumentTypeChildNode.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   NonDocumentTypeChildNode.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('NonDocumentTypeChildNode.nextElementSibling')
   @DocsEditable()
   @Experimental() // untriaged
-  Element get nextElementSibling => wrap_jso(_blink.BlinkNonDocumentTypeChildNode.instance.nextElementSibling_Getter_(unwrap_jso(this)));
+  Element get nextElementSibling => _blink.BlinkNonDocumentTypeChildNode.instance.nextElementSibling_Getter_(this);
   
   @DomName('NonDocumentTypeChildNode.previousElementSibling')
   @DocsEditable()
   @Experimental() // untriaged
-  Element get previousElementSibling => wrap_jso(_blink.BlinkNonDocumentTypeChildNode.instance.previousElementSibling_Getter_(unwrap_jso(this)));
+  Element get previousElementSibling => _blink.BlinkNonDocumentTypeChildNode.instance.previousElementSibling_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -30314,25 +28387,17 @@
   // To suppress missing implicit constructor warnings.
   factory NonElementParentNode._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static NonElementParentNode internalCreateNonElementParentNode() {
-    return new NonElementParentNode._internalWrap();
-  }
 
-  factory NonElementParentNode._internalWrap() {
-    return new NonElementParentNode.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   NonElementParentNode.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('NonElementParentNode.getElementById')
   @DocsEditable()
   @Experimental() // untriaged
-  Element getElementById(String elementId) => wrap_jso(_blink.BlinkNonElementParentNode.instance.getElementById_Callback_1_(unwrap_jso(this), elementId));
+  Element getElementById(String elementId) => _blink.BlinkNonElementParentNode.instance.getElementById_Callback_1_(this, elementId);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -30404,18 +28469,14 @@
   static Notification _factoryNotification(String title, [Map options]) {
     if (options != null) {
       var options_1 = convertDartToNative_Dictionary(options);
-      return wrap_jso(_blink.BlinkNotification.instance.constructorCallback_2_(title, options_1));
+      return _blink.BlinkNotification.instance.constructorCallback_2_(title, options_1);
     }
-    return wrap_jso(_blink.BlinkNotification.instance.constructorCallback_1_(title));
+    return _blink.BlinkNotification.instance.constructorCallback_1_(title);
   }
 
 
   @Deprecated("Internal Use Only")
-  static Notification internalCreateNotification() {
-    return new Notification._internalWrap();
-  }
-
-  external factory Notification._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Notification.internal_() : super.internal_();
@@ -30427,27 +28488,27 @@
   @DomName('Notification.body')
   @DocsEditable()
   @Experimental() // untriaged
-  String get body => _blink.BlinkNotification.instance.body_Getter_(unwrap_jso(this));
+  String get body => _blink.BlinkNotification.instance.body_Getter_(this);
   
   @DomName('Notification.data')
   @DocsEditable()
   @Experimental() // untriaged
-  Object get data => wrap_jso(_blink.BlinkNotification.instance.data_Getter_(unwrap_jso(this)));
+  Object get data => (_blink.BlinkNotification.instance.data_Getter_(this));
   
   @DomName('Notification.dir')
   @DocsEditable()
   @Experimental() // nonstandard
-  String get dir => _blink.BlinkNotification.instance.dir_Getter_(unwrap_jso(this));
+  String get dir => _blink.BlinkNotification.instance.dir_Getter_(this);
   
   @DomName('Notification.icon')
   @DocsEditable()
   @Experimental() // untriaged
-  String get icon => _blink.BlinkNotification.instance.icon_Getter_(unwrap_jso(this));
+  String get icon => _blink.BlinkNotification.instance.icon_Getter_(this);
   
   @DomName('Notification.lang')
   @DocsEditable()
   @Experimental() // untriaged
-  String get lang => _blink.BlinkNotification.instance.lang_Getter_(unwrap_jso(this));
+  String get lang => _blink.BlinkNotification.instance.lang_Getter_(this);
   
   @DomName('Notification.permission')
   @DocsEditable()
@@ -30456,30 +28517,30 @@
   @DomName('Notification.silent')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get silent => _blink.BlinkNotification.instance.silent_Getter_(unwrap_jso(this));
+  bool get silent => _blink.BlinkNotification.instance.silent_Getter_(this);
   
   @DomName('Notification.tag')
   @DocsEditable()
   @Experimental() // nonstandard
-  String get tag => _blink.BlinkNotification.instance.tag_Getter_(unwrap_jso(this));
+  String get tag => _blink.BlinkNotification.instance.tag_Getter_(this);
   
   @DomName('Notification.title')
   @DocsEditable()
   @Experimental() // untriaged
-  String get title => _blink.BlinkNotification.instance.title_Getter_(unwrap_jso(this));
+  String get title => _blink.BlinkNotification.instance.title_Getter_(this);
   
   @DomName('Notification.vibrate')
   @DocsEditable()
   @Experimental() // untriaged
-  List<int> get vibrate => _blink.BlinkNotification.instance.vibrate_Getter_(unwrap_jso(this));
+  List<int> get vibrate => _blink.BlinkNotification.instance.vibrate_Getter_(this);
   
   @DomName('Notification.close')
   @DocsEditable()
-  void close() => _blink.BlinkNotification.instance.close_Callback_0_(unwrap_jso(this));
+  void close() => _blink.BlinkNotification.instance.close_Callback_0_(this);
   
   static void _requestPermission([_NotificationPermissionCallback callback]) {
     if (callback != null) {
-      _blink.BlinkNotification.instance.requestPermission_Callback_1_(unwrap_jso((permission) => callback(permission)));
+      _blink.BlinkNotification.instance.requestPermission_Callback_1_(callback);
       return;
     }
     _blink.BlinkNotification.instance.requestPermission_Callback_0_();
@@ -30533,18 +28594,14 @@
   factory NotificationEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkNotificationEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkNotificationEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkNotificationEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkNotificationEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static NotificationEvent internalCreateNotificationEvent() {
-    return new NotificationEvent._internalWrap();
-  }
-
-  external factory NotificationEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   NotificationEvent.internal_() : super.internal_();
@@ -30553,7 +28610,7 @@
   @DomName('NotificationEvent.notification')
   @DocsEditable()
   @Experimental() // untriaged
-  Notification get notification => wrap_jso(_blink.BlinkNotificationEvent.instance.notification_Getter_(unwrap_jso(this)));
+  Notification get notification => _blink.BlinkNotificationEvent.instance.notification_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -30586,11 +28643,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static OListElement internalCreateOListElement() {
-    return new OListElement._internalWrap();
-  }
-
-  external factory OListElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   OListElement.internal_() : super.internal_();
@@ -30604,27 +28657,27 @@
 
   @DomName('HTMLOListElement.reversed')
   @DocsEditable()
-  bool get reversed => _blink.BlinkHTMLOListElement.instance.reversed_Getter_(unwrap_jso(this));
+  bool get reversed => _blink.BlinkHTMLOListElement.instance.reversed_Getter_(this);
   
   @DomName('HTMLOListElement.reversed')
   @DocsEditable()
-  set reversed(bool value) => _blink.BlinkHTMLOListElement.instance.reversed_Setter_(unwrap_jso(this), value);
+  set reversed(bool value) => _blink.BlinkHTMLOListElement.instance.reversed_Setter_(this, value);
   
   @DomName('HTMLOListElement.start')
   @DocsEditable()
-  int get start => _blink.BlinkHTMLOListElement.instance.start_Getter_(unwrap_jso(this));
+  int get start => _blink.BlinkHTMLOListElement.instance.start_Getter_(this);
   
   @DomName('HTMLOListElement.start')
   @DocsEditable()
-  set start(int value) => _blink.BlinkHTMLOListElement.instance.start_Setter_(unwrap_jso(this), value);
+  set start(int value) => _blink.BlinkHTMLOListElement.instance.start_Setter_(this, value);
   
   @DomName('HTMLOListElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLOListElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLOListElement.instance.type_Getter_(this);
   
   @DomName('HTMLOListElement.type')
   @DocsEditable()
-  set type(String value) => _blink.BlinkHTMLOListElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLOListElement.instance.type_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -30650,11 +28703,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ObjectElement internalCreateObjectElement() {
-    return new ObjectElement._internalWrap();
-  }
-
-  external factory ObjectElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ObjectElement.internal_() : super.internal_();
@@ -30671,88 +28720,88 @@
 
   @DomName('HTMLObjectElement.data')
   @DocsEditable()
-  String get data => _blink.BlinkHTMLObjectElement.instance.data_Getter_(unwrap_jso(this));
+  String get data => _blink.BlinkHTMLObjectElement.instance.data_Getter_(this);
   
   @DomName('HTMLObjectElement.data')
   @DocsEditable()
-  set data(String value) => _blink.BlinkHTMLObjectElement.instance.data_Setter_(unwrap_jso(this), value);
+  set data(String value) => _blink.BlinkHTMLObjectElement.instance.data_Setter_(this, value);
   
   @DomName('HTMLObjectElement.form')
   @DocsEditable()
-  FormElement get form => wrap_jso(_blink.BlinkHTMLObjectElement.instance.form_Getter_(unwrap_jso(this)));
+  FormElement get form => _blink.BlinkHTMLObjectElement.instance.form_Getter_(this);
   
   @DomName('HTMLObjectElement.height')
   @DocsEditable()
-  String get height => _blink.BlinkHTMLObjectElement.instance.height_Getter_(unwrap_jso(this));
+  String get height => _blink.BlinkHTMLObjectElement.instance.height_Getter_(this);
   
   @DomName('HTMLObjectElement.height')
   @DocsEditable()
-  set height(String value) => _blink.BlinkHTMLObjectElement.instance.height_Setter_(unwrap_jso(this), value);
+  set height(String value) => _blink.BlinkHTMLObjectElement.instance.height_Setter_(this, value);
   
   @DomName('HTMLObjectElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLObjectElement.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkHTMLObjectElement.instance.name_Getter_(this);
   
   @DomName('HTMLObjectElement.name')
   @DocsEditable()
-  set name(String value) => _blink.BlinkHTMLObjectElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLObjectElement.instance.name_Setter_(this, value);
   
   @DomName('HTMLObjectElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLObjectElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLObjectElement.instance.type_Getter_(this);
   
   @DomName('HTMLObjectElement.type')
   @DocsEditable()
-  set type(String value) => _blink.BlinkHTMLObjectElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLObjectElement.instance.type_Setter_(this, value);
   
   @DomName('HTMLObjectElement.useMap')
   @DocsEditable()
-  String get useMap => _blink.BlinkHTMLObjectElement.instance.useMap_Getter_(unwrap_jso(this));
+  String get useMap => _blink.BlinkHTMLObjectElement.instance.useMap_Getter_(this);
   
   @DomName('HTMLObjectElement.useMap')
   @DocsEditable()
-  set useMap(String value) => _blink.BlinkHTMLObjectElement.instance.useMap_Setter_(unwrap_jso(this), value);
+  set useMap(String value) => _blink.BlinkHTMLObjectElement.instance.useMap_Setter_(this, value);
   
   @DomName('HTMLObjectElement.validationMessage')
   @DocsEditable()
-  String get validationMessage => _blink.BlinkHTMLObjectElement.instance.validationMessage_Getter_(unwrap_jso(this));
+  String get validationMessage => _blink.BlinkHTMLObjectElement.instance.validationMessage_Getter_(this);
   
   @DomName('HTMLObjectElement.validity')
   @DocsEditable()
-  ValidityState get validity => wrap_jso(_blink.BlinkHTMLObjectElement.instance.validity_Getter_(unwrap_jso(this)));
+  ValidityState get validity => _blink.BlinkHTMLObjectElement.instance.validity_Getter_(this);
   
   @DomName('HTMLObjectElement.width')
   @DocsEditable()
-  String get width => _blink.BlinkHTMLObjectElement.instance.width_Getter_(unwrap_jso(this));
+  String get width => _blink.BlinkHTMLObjectElement.instance.width_Getter_(this);
   
   @DomName('HTMLObjectElement.width')
   @DocsEditable()
-  set width(String value) => _blink.BlinkHTMLObjectElement.instance.width_Setter_(unwrap_jso(this), value);
+  set width(String value) => _blink.BlinkHTMLObjectElement.instance.width_Setter_(this, value);
   
   @DomName('HTMLObjectElement.willValidate')
   @DocsEditable()
-  bool get willValidate => _blink.BlinkHTMLObjectElement.instance.willValidate_Getter_(unwrap_jso(this));
+  bool get willValidate => _blink.BlinkHTMLObjectElement.instance.willValidate_Getter_(this);
   
   @DomName('HTMLObjectElement.__getter__')
   @DocsEditable()
-  bool __getter__(index_OR_name) => _blink.BlinkHTMLObjectElement.instance.$__getter___Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.$__setter___Callback_2_(unwrap_jso(this), unwrap_jso(index_OR_name), unwrap_jso(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.instance.checkValidity_Callback_0_(unwrap_jso(this));
+  bool checkValidity() => _blink.BlinkHTMLObjectElement.instance.checkValidity_Callback_0_(this);
   
   @DomName('HTMLObjectElement.reportValidity')
   @DocsEditable()
   @Experimental() // untriaged
-  bool reportValidity() => _blink.BlinkHTMLObjectElement.instance.reportValidity_Callback_0_(unwrap_jso(this));
+  bool reportValidity() => _blink.BlinkHTMLObjectElement.instance.reportValidity_Callback_0_(this);
   
   @DomName('HTMLObjectElement.setCustomValidity')
   @DocsEditable()
-  void setCustomValidity(String error) => _blink.BlinkHTMLObjectElement.instance.setCustomValidity_Callback_1_(unwrap_jso(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
@@ -30774,11 +28823,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static OptGroupElement internalCreateOptGroupElement() {
-    return new OptGroupElement._internalWrap();
-  }
-
-  external factory OptGroupElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   OptGroupElement.internal_() : super.internal_();
@@ -30792,19 +28837,19 @@
 
   @DomName('HTMLOptGroupElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLOptGroupElement.instance.disabled_Getter_(unwrap_jso(this));
+  bool get disabled => _blink.BlinkHTMLOptGroupElement.instance.disabled_Getter_(this);
   
   @DomName('HTMLOptGroupElement.disabled')
   @DocsEditable()
-  set disabled(bool value) => _blink.BlinkHTMLOptGroupElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLOptGroupElement.instance.disabled_Setter_(this, value);
   
   @DomName('HTMLOptGroupElement.label')
   @DocsEditable()
-  String get label => _blink.BlinkHTMLOptGroupElement.instance.label_Getter_(unwrap_jso(this));
+  String get label => _blink.BlinkHTMLOptGroupElement.instance.label_Getter_(this);
   
   @DomName('HTMLOptGroupElement.label')
   @DocsEditable()
-  set label(String value) => _blink.BlinkHTMLOptGroupElement.instance.label_Setter_(unwrap_jso(this), value);
+  set label(String value) => _blink.BlinkHTMLOptGroupElement.instance.label_Setter_(this, value);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -30822,21 +28867,17 @@
   @DocsEditable()
   factory OptionElement._([String data, String value, bool defaultSelected, bool selected]) {
     if (selected != null) {
-      return wrap_jso(_blink.BlinkHTMLOptionElement.instance.constructorCallback_4_(data, value, defaultSelected, selected));
+      return _blink.BlinkHTMLOptionElement.instance.constructorCallback_4_(data, value, defaultSelected, selected);
     }
     if (defaultSelected != null) {
-      return wrap_jso(_blink.BlinkHTMLOptionElement.instance.constructorCallback_3_(data, value, defaultSelected));
+      return _blink.BlinkHTMLOptionElement.instance.constructorCallback_3_(data, value, defaultSelected);
     }
-    return wrap_jso(_blink.BlinkHTMLOptionElement.instance.constructorCallback_2_(data, value));
+    return _blink.BlinkHTMLOptionElement.instance.constructorCallback_2_(data, value);
   }
 
 
   @Deprecated("Internal Use Only")
-  static OptionElement internalCreateOptionElement() {
-    return new OptionElement._internalWrap();
-  }
-
-  external factory OptionElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   OptionElement.internal_() : super.internal_();
@@ -30850,51 +28891,51 @@
 
   @DomName('HTMLOptionElement.defaultSelected')
   @DocsEditable()
-  bool get defaultSelected => _blink.BlinkHTMLOptionElement.instance.defaultSelected_Getter_(unwrap_jso(this));
+  bool get defaultSelected => _blink.BlinkHTMLOptionElement.instance.defaultSelected_Getter_(this);
   
   @DomName('HTMLOptionElement.defaultSelected')
   @DocsEditable()
-  set defaultSelected(bool value) => _blink.BlinkHTMLOptionElement.instance.defaultSelected_Setter_(unwrap_jso(this), value);
+  set defaultSelected(bool value) => _blink.BlinkHTMLOptionElement.instance.defaultSelected_Setter_(this, value);
   
   @DomName('HTMLOptionElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLOptionElement.instance.disabled_Getter_(unwrap_jso(this));
+  bool get disabled => _blink.BlinkHTMLOptionElement.instance.disabled_Getter_(this);
   
   @DomName('HTMLOptionElement.disabled')
   @DocsEditable()
-  set disabled(bool value) => _blink.BlinkHTMLOptionElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLOptionElement.instance.disabled_Setter_(this, value);
   
   @DomName('HTMLOptionElement.form')
   @DocsEditable()
-  FormElement get form => wrap_jso(_blink.BlinkHTMLOptionElement.instance.form_Getter_(unwrap_jso(this)));
+  FormElement get form => _blink.BlinkHTMLOptionElement.instance.form_Getter_(this);
   
   @DomName('HTMLOptionElement.index')
   @DocsEditable()
-  int get index => _blink.BlinkHTMLOptionElement.instance.index_Getter_(unwrap_jso(this));
+  int get index => _blink.BlinkHTMLOptionElement.instance.index_Getter_(this);
   
   @DomName('HTMLOptionElement.label')
   @DocsEditable()
-  String get label => _blink.BlinkHTMLOptionElement.instance.label_Getter_(unwrap_jso(this));
+  String get label => _blink.BlinkHTMLOptionElement.instance.label_Getter_(this);
   
   @DomName('HTMLOptionElement.label')
   @DocsEditable()
-  set label(String value) => _blink.BlinkHTMLOptionElement.instance.label_Setter_(unwrap_jso(this), value);
+  set label(String value) => _blink.BlinkHTMLOptionElement.instance.label_Setter_(this, value);
   
   @DomName('HTMLOptionElement.selected')
   @DocsEditable()
-  bool get selected => _blink.BlinkHTMLOptionElement.instance.selected_Getter_(unwrap_jso(this));
+  bool get selected => _blink.BlinkHTMLOptionElement.instance.selected_Getter_(this);
   
   @DomName('HTMLOptionElement.selected')
   @DocsEditable()
-  set selected(bool value) => _blink.BlinkHTMLOptionElement.instance.selected_Setter_(unwrap_jso(this), value);
+  set selected(bool value) => _blink.BlinkHTMLOptionElement.instance.selected_Setter_(this, value);
   
   @DomName('HTMLOptionElement.value')
   @DocsEditable()
-  String get value => _blink.BlinkHTMLOptionElement.instance.value_Getter_(unwrap_jso(this));
+  String get value => _blink.BlinkHTMLOptionElement.instance.value_Getter_(this);
   
   @DomName('HTMLOptionElement.value')
   @DocsEditable()
-  set value(String value) => _blink.BlinkHTMLOptionElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkHTMLOptionElement.instance.value_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -30919,11 +28960,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static OutputElement internalCreateOutputElement() {
-    return new OutputElement._internalWrap();
-  }
-
-  external factory OutputElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   OutputElement.internal_() : super.internal_();
@@ -30940,69 +28977,69 @@
 
   @DomName('HTMLOutputElement.defaultValue')
   @DocsEditable()
-  String get defaultValue => _blink.BlinkHTMLOutputElement.instance.defaultValue_Getter_(unwrap_jso(this));
+  String get defaultValue => _blink.BlinkHTMLOutputElement.instance.defaultValue_Getter_(this);
   
   @DomName('HTMLOutputElement.defaultValue')
   @DocsEditable()
-  set defaultValue(String value) => _blink.BlinkHTMLOutputElement.instance.defaultValue_Setter_(unwrap_jso(this), value);
+  set defaultValue(String value) => _blink.BlinkHTMLOutputElement.instance.defaultValue_Setter_(this, value);
   
   @DomName('HTMLOutputElement.form')
   @DocsEditable()
-  FormElement get form => wrap_jso(_blink.BlinkHTMLOutputElement.instance.form_Getter_(unwrap_jso(this)));
+  FormElement get form => _blink.BlinkHTMLOutputElement.instance.form_Getter_(this);
   
   @DomName('HTMLOutputElement.htmlFor')
   @DocsEditable()
-  DomSettableTokenList get htmlFor => wrap_jso(_blink.BlinkHTMLOutputElement.instance.htmlFor_Getter_(unwrap_jso(this)));
+  DomSettableTokenList get htmlFor => _blink.BlinkHTMLOutputElement.instance.htmlFor_Getter_(this);
   
   @DomName('HTMLOutputElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => wrap_jso(_blink.BlinkHTMLOutputElement.instance.labels_Getter_(unwrap_jso(this)));
+  List<Node> get labels => (_blink.BlinkHTMLOutputElement.instance.labels_Getter_(this));
   
   @DomName('HTMLOutputElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLOutputElement.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkHTMLOutputElement.instance.name_Getter_(this);
   
   @DomName('HTMLOutputElement.name')
   @DocsEditable()
-  set name(String value) => _blink.BlinkHTMLOutputElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLOutputElement.instance.name_Setter_(this, value);
   
   @DomName('HTMLOutputElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLOutputElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLOutputElement.instance.type_Getter_(this);
   
   @DomName('HTMLOutputElement.validationMessage')
   @DocsEditable()
-  String get validationMessage => _blink.BlinkHTMLOutputElement.instance.validationMessage_Getter_(unwrap_jso(this));
+  String get validationMessage => _blink.BlinkHTMLOutputElement.instance.validationMessage_Getter_(this);
   
   @DomName('HTMLOutputElement.validity')
   @DocsEditable()
-  ValidityState get validity => wrap_jso(_blink.BlinkHTMLOutputElement.instance.validity_Getter_(unwrap_jso(this)));
+  ValidityState get validity => _blink.BlinkHTMLOutputElement.instance.validity_Getter_(this);
   
   @DomName('HTMLOutputElement.value')
   @DocsEditable()
-  String get value => _blink.BlinkHTMLOutputElement.instance.value_Getter_(unwrap_jso(this));
+  String get value => _blink.BlinkHTMLOutputElement.instance.value_Getter_(this);
   
   @DomName('HTMLOutputElement.value')
   @DocsEditable()
-  set value(String value) => _blink.BlinkHTMLOutputElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkHTMLOutputElement.instance.value_Setter_(this, value);
   
   @DomName('HTMLOutputElement.willValidate')
   @DocsEditable()
-  bool get willValidate => _blink.BlinkHTMLOutputElement.instance.willValidate_Getter_(unwrap_jso(this));
+  bool get willValidate => _blink.BlinkHTMLOutputElement.instance.willValidate_Getter_(this);
   
   @DomName('HTMLOutputElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLOutputElement.instance.checkValidity_Callback_0_(unwrap_jso(this));
+  bool checkValidity() => _blink.BlinkHTMLOutputElement.instance.checkValidity_Callback_0_(this);
   
   @DomName('HTMLOutputElement.reportValidity')
   @DocsEditable()
   @Experimental() // untriaged
-  bool reportValidity() => _blink.BlinkHTMLOutputElement.instance.reportValidity_Callback_0_(unwrap_jso(this));
+  bool reportValidity() => _blink.BlinkHTMLOutputElement.instance.reportValidity_Callback_0_(this);
   
   @DomName('HTMLOutputElement.setCustomValidity')
   @DocsEditable()
-  void setCustomValidity(String error) => _blink.BlinkHTMLOutputElement.instance.setCustomValidity_Callback_1_(unwrap_jso(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
@@ -31025,18 +29062,14 @@
   factory PageTransitionEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkPageTransitionEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkPageTransitionEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkPageTransitionEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkPageTransitionEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static PageTransitionEvent internalCreatePageTransitionEvent() {
-    return new PageTransitionEvent._internalWrap();
-  }
-
-  external factory PageTransitionEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PageTransitionEvent.internal_() : super.internal_();
@@ -31044,7 +29077,7 @@
 
   @DomName('PageTransitionEvent.persisted')
   @DocsEditable()
-  bool get persisted => _blink.BlinkPageTransitionEvent.instance.persisted_Getter_(unwrap_jso(this));
+  bool get persisted => _blink.BlinkPageTransitionEvent.instance.persisted_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31066,11 +29099,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ParagraphElement internalCreateParagraphElement() {
-    return new ParagraphElement._internalWrap();
-  }
-
-  external factory ParagraphElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ParagraphElement.internal_() : super.internal_();
@@ -31103,11 +29132,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ParamElement internalCreateParamElement() {
-    return new ParamElement._internalWrap();
-  }
-
-  external factory ParamElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ParamElement.internal_() : super.internal_();
@@ -31121,19 +29146,19 @@
 
   @DomName('HTMLParamElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLParamElement.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkHTMLParamElement.instance.name_Getter_(this);
   
   @DomName('HTMLParamElement.name')
   @DocsEditable()
-  set name(String value) => _blink.BlinkHTMLParamElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLParamElement.instance.name_Setter_(this, value);
   
   @DomName('HTMLParamElement.value')
   @DocsEditable()
-  String get value => _blink.BlinkHTMLParamElement.instance.value_Getter_(unwrap_jso(this));
+  String get value => _blink.BlinkHTMLParamElement.instance.value_Getter_(this);
   
   @DomName('HTMLParamElement.value')
   @DocsEditable()
-  set value(String value) => _blink.BlinkHTMLParamElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkHTMLParamElement.instance.value_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31199,21 +29224,17 @@
   @DocsEditable()
   factory PasswordCredential(String id, String password, [String name, String iconURL]) {
     if (iconURL != null) {
-      return wrap_jso(_blink.BlinkPasswordCredential.instance.constructorCallback_4_(id, password, name, iconURL));
+      return _blink.BlinkPasswordCredential.instance.constructorCallback_4_(id, password, name, iconURL);
     }
     if (name != null) {
-      return wrap_jso(_blink.BlinkPasswordCredential.instance.constructorCallback_3_(id, password, name));
+      return _blink.BlinkPasswordCredential.instance.constructorCallback_3_(id, password, name);
     }
-    return wrap_jso(_blink.BlinkPasswordCredential.instance.constructorCallback_2_(id, password));
+    return _blink.BlinkPasswordCredential.instance.constructorCallback_2_(id, password);
   }
 
 
   @Deprecated("Internal Use Only")
-  static PasswordCredential internalCreatePasswordCredential() {
-    return new PasswordCredential._internalWrap();
-  }
-
-  external factory PasswordCredential._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PasswordCredential.internal_() : super.internal_();
@@ -31222,12 +29243,12 @@
   @DomName('PasswordCredential.formData')
   @DocsEditable()
   @Experimental() // untriaged
-  FormData get formData => wrap_jso(_blink.BlinkPasswordCredential.instance.formData_Getter_(unwrap_jso(this)));
+  FormData get formData => _blink.BlinkPasswordCredential.instance.formData_Getter_(this);
   
   @DomName('PasswordCredential.password')
   @DocsEditable()
   @Experimental() // untriaged
-  String get password => _blink.BlinkPasswordCredential.instance.password_Getter_(unwrap_jso(this));
+  String get password => _blink.BlinkPasswordCredential.instance.password_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31248,85 +29269,77 @@
   @DocsEditable()
   factory Path2D([path_OR_text]) {
     if (path_OR_text == null) {
-      return wrap_jso(_blink.BlinkPath2D.instance.constructorCallback_0_());
+      return _blink.BlinkPath2D.instance.constructorCallback_0_();
     }
     if ((path_OR_text is Path2D || path_OR_text == null)) {
-      return wrap_jso(_blink.BlinkPath2D.instance.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 wrap_jso(_blink.BlinkPath2D.instance.constructorCallback_1_(path_OR_text));
+      return _blink.BlinkPath2D.instance.constructorCallback_1_(path_OR_text);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @Deprecated("Internal Use Only")
-  static Path2D internalCreatePath2D() {
-    return new Path2D._internalWrap();
-  }
 
-  factory Path2D._internalWrap() {
-    return new Path2D.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Path2D.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   void addPath(Path2D path, [Matrix transform]) {
     if (transform != null) {
-      _blink.BlinkPath2D.instance.addPath_Callback_2_(unwrap_jso(this), unwrap_jso(path), unwrap_jso(transform));
+      _blink.BlinkPath2D.instance.addPath_Callback_2_(this, path, transform);
       return;
     }
-    _blink.BlinkPath2D.instance.addPath_Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.arc_Callback_6_(unwrap_jso(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.instance.arcTo_Callback_5_(unwrap_jso(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.instance.bezierCurveTo_Callback_6_(unwrap_jso(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.instance.closePath_Callback_0_(unwrap_jso(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.instance.ellipse_Callback_8_(unwrap_jso(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.instance.lineTo_Callback_2_(unwrap_jso(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.instance.moveTo_Callback_2_(unwrap_jso(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.instance.quadraticCurveTo_Callback_4_(unwrap_jso(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.instance.rect_Callback_4_(unwrap_jso(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
@@ -31361,11 +29374,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static Performance internalCreatePerformance() {
-    return new Performance._internalWrap();
-  }
-
-  external factory Performance._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Performance.internal_() : super.internal_();
@@ -31377,71 +29386,71 @@
   @DomName('Performance.memory')
   @DocsEditable()
   @Experimental() // nonstandard
-  MemoryInfo get memory => wrap_jso(_blink.BlinkPerformance.instance.memory_Getter_(unwrap_jso(this)));
+  MemoryInfo get memory => _blink.BlinkPerformance.instance.memory_Getter_(this);
   
   @DomName('Performance.navigation')
   @DocsEditable()
-  PerformanceNavigation get navigation => wrap_jso(_blink.BlinkPerformance.instance.navigation_Getter_(unwrap_jso(this)));
+  PerformanceNavigation get navigation => _blink.BlinkPerformance.instance.navigation_Getter_(this);
   
   @DomName('Performance.timing')
   @DocsEditable()
-  PerformanceTiming get timing => wrap_jso(_blink.BlinkPerformance.instance.timing_Getter_(unwrap_jso(this)));
+  PerformanceTiming get timing => _blink.BlinkPerformance.instance.timing_Getter_(this);
   
   @DomName('Performance.clearFrameTimings')
   @DocsEditable()
   @Experimental() // untriaged
-  void clearFrameTimings() => _blink.BlinkPerformance.instance.clearFrameTimings_Callback_0_(unwrap_jso(this));
+  void clearFrameTimings() => _blink.BlinkPerformance.instance.clearFrameTimings_Callback_0_(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.instance.clearMarks_Callback_1_(unwrap_jso(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.instance.clearMeasures_Callback_1_(unwrap_jso(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() => wrap_jso(_blink.BlinkPerformance.instance.getEntries_Callback_0_(unwrap_jso(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) => wrap_jso(_blink.BlinkPerformance.instance.getEntriesByName_Callback_2_(unwrap_jso(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) => wrap_jso(_blink.BlinkPerformance.instance.getEntriesByType_Callback_1_(unwrap_jso(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.instance.mark_Callback_1_(unwrap_jso(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.instance.measure_Callback_3_(unwrap_jso(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()
-  num now() => _blink.BlinkPerformance.instance.now_Callback_0_(unwrap_jso(this));
+  num now() => _blink.BlinkPerformance.instance.now_Callback_0_(this);
   
   @DomName('Performance.setFrameTimingBufferSize')
   @DocsEditable()
   @Experimental() // untriaged
-  void setFrameTimingBufferSize(int maxSize) => _blink.BlinkPerformance.instance.setFrameTimingBufferSize_Callback_1_(unwrap_jso(this), maxSize);
+  void setFrameTimingBufferSize(int maxSize) => _blink.BlinkPerformance.instance.setFrameTimingBufferSize_Callback_1_(this, maxSize);
   
   @DomName('Performance.webkitClearResourceTimings')
   @DocsEditable()
@@ -31449,7 +29458,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // http://www.w3c-test.org/webperf/specs/ResourceTiming/#extensions-performance-interface
-  void clearResourceTimings() => _blink.BlinkPerformance.instance.webkitClearResourceTimings_Callback_0_(unwrap_jso(this));
+  void clearResourceTimings() => _blink.BlinkPerformance.instance.webkitClearResourceTimings_Callback_0_(this);
   
   @DomName('Performance.webkitSetResourceTimingBufferSize')
   @DocsEditable()
@@ -31457,7 +29466,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // http://www.w3c-test.org/webperf/specs/ResourceTiming/#performanceresourcetiming-methods
-  void setResourceTimingBufferSize(int maxSize) => _blink.BlinkPerformance.instance.webkitSetResourceTimingBufferSize_Callback_1_(unwrap_jso(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')
@@ -31483,11 +29492,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PerformanceCompositeTiming internalCreatePerformanceCompositeTiming() {
-    return new PerformanceCompositeTiming._internalWrap();
-  }
-
-  external factory PerformanceCompositeTiming._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PerformanceCompositeTiming.internal_() : super.internal_();
@@ -31496,7 +29501,7 @@
   @DomName('PerformanceCompositeTiming.sourceFrame')
   @DocsEditable()
   @Experimental() // untriaged
-  int get sourceFrame => _blink.BlinkPerformanceCompositeTiming.instance.sourceFrame_Getter_(unwrap_jso(this));
+  int get sourceFrame => _blink.BlinkPerformanceCompositeTiming.instance.sourceFrame_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31514,36 +29519,28 @@
   // To suppress missing implicit constructor warnings.
   factory PerformanceEntry._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static PerformanceEntry internalCreatePerformanceEntry() {
-    return new PerformanceEntry._internalWrap();
-  }
 
-  factory PerformanceEntry._internalWrap() {
-    return new PerformanceEntry.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PerformanceEntry.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('PerformanceEntry.duration')
   @DocsEditable()
-  num get duration => _blink.BlinkPerformanceEntry.instance.duration_Getter_(unwrap_jso(this));
+  num get duration => _blink.BlinkPerformanceEntry.instance.duration_Getter_(this);
   
   @DomName('PerformanceEntry.entryType')
   @DocsEditable()
-  String get entryType => _blink.BlinkPerformanceEntry.instance.entryType_Getter_(unwrap_jso(this));
+  String get entryType => _blink.BlinkPerformanceEntry.instance.entryType_Getter_(this);
   
   @DomName('PerformanceEntry.name')
   @DocsEditable()
-  String get name => _blink.BlinkPerformanceEntry.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkPerformanceEntry.instance.name_Getter_(this);
   
   @DomName('PerformanceEntry.startTime')
   @DocsEditable()
-  num get startTime => _blink.BlinkPerformanceEntry.instance.startTime_Getter_(unwrap_jso(this));
+  num get startTime => _blink.BlinkPerformanceEntry.instance.startTime_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31563,11 +29560,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PerformanceMark internalCreatePerformanceMark() {
-    return new PerformanceMark._internalWrap();
-  }
-
-  external factory PerformanceMark._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PerformanceMark.internal_() : super.internal_();
@@ -31591,11 +29584,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PerformanceMeasure internalCreatePerformanceMeasure() {
-    return new PerformanceMeasure._internalWrap();
-  }
-
-  external factory PerformanceMeasure._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PerformanceMeasure.internal_() : super.internal_();
@@ -31616,21 +29605,13 @@
   // To suppress missing implicit constructor warnings.
   factory PerformanceNavigation._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static PerformanceNavigation internalCreatePerformanceNavigation() {
-    return new PerformanceNavigation._internalWrap();
-  }
 
-  factory PerformanceNavigation._internalWrap() {
-    return new PerformanceNavigation.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PerformanceNavigation.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('PerformanceNavigation.TYPE_BACK_FORWARD')
   @DocsEditable()
   static const int TYPE_BACK_FORWARD = 2;
@@ -31649,11 +29630,11 @@
 
   @DomName('PerformanceNavigation.redirectCount')
   @DocsEditable()
-  int get redirectCount => _blink.BlinkPerformanceNavigation.instance.redirectCount_Getter_(unwrap_jso(this));
+  int get redirectCount => _blink.BlinkPerformanceNavigation.instance.redirectCount_Getter_(this);
   
   @DomName('PerformanceNavigation.type')
   @DocsEditable()
-  int get type => _blink.BlinkPerformanceNavigation.instance.type_Getter_(unwrap_jso(this));
+  int get type => _blink.BlinkPerformanceNavigation.instance.type_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31672,11 +29653,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PerformanceRenderTiming internalCreatePerformanceRenderTiming() {
-    return new PerformanceRenderTiming._internalWrap();
-  }
-
-  external factory PerformanceRenderTiming._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PerformanceRenderTiming.internal_() : super.internal_();
@@ -31685,7 +29662,7 @@
   @DomName('PerformanceRenderTiming.sourceFrame')
   @DocsEditable()
   @Experimental() // untriaged
-  int get sourceFrame => _blink.BlinkPerformanceRenderTiming.instance.sourceFrame_Getter_(unwrap_jso(this));
+  int get sourceFrame => _blink.BlinkPerformanceRenderTiming.instance.sourceFrame_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31705,11 +29682,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PerformanceResourceTiming internalCreatePerformanceResourceTiming() {
-    return new PerformanceResourceTiming._internalWrap();
-  }
-
-  external factory PerformanceResourceTiming._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PerformanceResourceTiming.internal_() : super.internal_();
@@ -31717,59 +29690,59 @@
 
   @DomName('PerformanceResourceTiming.connectEnd')
   @DocsEditable()
-  num get connectEnd => _blink.BlinkPerformanceResourceTiming.instance.connectEnd_Getter_(unwrap_jso(this));
+  num get connectEnd => _blink.BlinkPerformanceResourceTiming.instance.connectEnd_Getter_(this);
   
   @DomName('PerformanceResourceTiming.connectStart')
   @DocsEditable()
-  num get connectStart => _blink.BlinkPerformanceResourceTiming.instance.connectStart_Getter_(unwrap_jso(this));
+  num get connectStart => _blink.BlinkPerformanceResourceTiming.instance.connectStart_Getter_(this);
   
   @DomName('PerformanceResourceTiming.domainLookupEnd')
   @DocsEditable()
-  num get domainLookupEnd => _blink.BlinkPerformanceResourceTiming.instance.domainLookupEnd_Getter_(unwrap_jso(this));
+  num get domainLookupEnd => _blink.BlinkPerformanceResourceTiming.instance.domainLookupEnd_Getter_(this);
   
   @DomName('PerformanceResourceTiming.domainLookupStart')
   @DocsEditable()
-  num get domainLookupStart => _blink.BlinkPerformanceResourceTiming.instance.domainLookupStart_Getter_(unwrap_jso(this));
+  num get domainLookupStart => _blink.BlinkPerformanceResourceTiming.instance.domainLookupStart_Getter_(this);
   
   @DomName('PerformanceResourceTiming.fetchStart')
   @DocsEditable()
-  num get fetchStart => _blink.BlinkPerformanceResourceTiming.instance.fetchStart_Getter_(unwrap_jso(this));
+  num get fetchStart => _blink.BlinkPerformanceResourceTiming.instance.fetchStart_Getter_(this);
   
   @DomName('PerformanceResourceTiming.initiatorType')
   @DocsEditable()
-  String get initiatorType => _blink.BlinkPerformanceResourceTiming.instance.initiatorType_Getter_(unwrap_jso(this));
+  String get initiatorType => _blink.BlinkPerformanceResourceTiming.instance.initiatorType_Getter_(this);
   
   @DomName('PerformanceResourceTiming.redirectEnd')
   @DocsEditable()
-  num get redirectEnd => _blink.BlinkPerformanceResourceTiming.instance.redirectEnd_Getter_(unwrap_jso(this));
+  num get redirectEnd => _blink.BlinkPerformanceResourceTiming.instance.redirectEnd_Getter_(this);
   
   @DomName('PerformanceResourceTiming.redirectStart')
   @DocsEditable()
-  num get redirectStart => _blink.BlinkPerformanceResourceTiming.instance.redirectStart_Getter_(unwrap_jso(this));
+  num get redirectStart => _blink.BlinkPerformanceResourceTiming.instance.redirectStart_Getter_(this);
   
   @DomName('PerformanceResourceTiming.requestStart')
   @DocsEditable()
   @Experimental() // nonstandard
-  num get requestStart => _blink.BlinkPerformanceResourceTiming.instance.requestStart_Getter_(unwrap_jso(this));
+  num get requestStart => _blink.BlinkPerformanceResourceTiming.instance.requestStart_Getter_(this);
   
   @DomName('PerformanceResourceTiming.responseEnd')
   @DocsEditable()
   @Experimental() // nonstandard
-  num get responseEnd => _blink.BlinkPerformanceResourceTiming.instance.responseEnd_Getter_(unwrap_jso(this));
+  num get responseEnd => _blink.BlinkPerformanceResourceTiming.instance.responseEnd_Getter_(this);
   
   @DomName('PerformanceResourceTiming.responseStart')
   @DocsEditable()
   @Experimental() // nonstandard
-  num get responseStart => _blink.BlinkPerformanceResourceTiming.instance.responseStart_Getter_(unwrap_jso(this));
+  num get responseStart => _blink.BlinkPerformanceResourceTiming.instance.responseStart_Getter_(this);
   
   @DomName('PerformanceResourceTiming.secureConnectionStart')
   @DocsEditable()
-  num get secureConnectionStart => _blink.BlinkPerformanceResourceTiming.instance.secureConnectionStart_Getter_(unwrap_jso(this));
+  num get secureConnectionStart => _blink.BlinkPerformanceResourceTiming.instance.secureConnectionStart_Getter_(this);
   
   @DomName('PerformanceResourceTiming.workerStart')
   @DocsEditable()
   @Experimental() // untriaged
-  num get workerStart => _blink.BlinkPerformanceResourceTiming.instance.workerStart_Getter_(unwrap_jso(this));
+  num get workerStart => _blink.BlinkPerformanceResourceTiming.instance.workerStart_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31786,104 +29759,96 @@
   // To suppress missing implicit constructor warnings.
   factory PerformanceTiming._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static PerformanceTiming internalCreatePerformanceTiming() {
-    return new PerformanceTiming._internalWrap();
-  }
 
-  factory PerformanceTiming._internalWrap() {
-    return new PerformanceTiming.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PerformanceTiming.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('PerformanceTiming.connectEnd')
   @DocsEditable()
-  int get connectEnd => _blink.BlinkPerformanceTiming.instance.connectEnd_Getter_(unwrap_jso(this));
+  int get connectEnd => _blink.BlinkPerformanceTiming.instance.connectEnd_Getter_(this);
   
   @DomName('PerformanceTiming.connectStart')
   @DocsEditable()
-  int get connectStart => _blink.BlinkPerformanceTiming.instance.connectStart_Getter_(unwrap_jso(this));
+  int get connectStart => _blink.BlinkPerformanceTiming.instance.connectStart_Getter_(this);
   
   @DomName('PerformanceTiming.domComplete')
   @DocsEditable()
-  int get domComplete => _blink.BlinkPerformanceTiming.instance.domComplete_Getter_(unwrap_jso(this));
+  int get domComplete => _blink.BlinkPerformanceTiming.instance.domComplete_Getter_(this);
   
   @DomName('PerformanceTiming.domContentLoadedEventEnd')
   @DocsEditable()
-  int get domContentLoadedEventEnd => _blink.BlinkPerformanceTiming.instance.domContentLoadedEventEnd_Getter_(unwrap_jso(this));
+  int get domContentLoadedEventEnd => _blink.BlinkPerformanceTiming.instance.domContentLoadedEventEnd_Getter_(this);
   
   @DomName('PerformanceTiming.domContentLoadedEventStart')
   @DocsEditable()
-  int get domContentLoadedEventStart => _blink.BlinkPerformanceTiming.instance.domContentLoadedEventStart_Getter_(unwrap_jso(this));
+  int get domContentLoadedEventStart => _blink.BlinkPerformanceTiming.instance.domContentLoadedEventStart_Getter_(this);
   
   @DomName('PerformanceTiming.domInteractive')
   @DocsEditable()
-  int get domInteractive => _blink.BlinkPerformanceTiming.instance.domInteractive_Getter_(unwrap_jso(this));
+  int get domInteractive => _blink.BlinkPerformanceTiming.instance.domInteractive_Getter_(this);
   
   @DomName('PerformanceTiming.domLoading')
   @DocsEditable()
-  int get domLoading => _blink.BlinkPerformanceTiming.instance.domLoading_Getter_(unwrap_jso(this));
+  int get domLoading => _blink.BlinkPerformanceTiming.instance.domLoading_Getter_(this);
   
   @DomName('PerformanceTiming.domainLookupEnd')
   @DocsEditable()
-  int get domainLookupEnd => _blink.BlinkPerformanceTiming.instance.domainLookupEnd_Getter_(unwrap_jso(this));
+  int get domainLookupEnd => _blink.BlinkPerformanceTiming.instance.domainLookupEnd_Getter_(this);
   
   @DomName('PerformanceTiming.domainLookupStart')
   @DocsEditable()
-  int get domainLookupStart => _blink.BlinkPerformanceTiming.instance.domainLookupStart_Getter_(unwrap_jso(this));
+  int get domainLookupStart => _blink.BlinkPerformanceTiming.instance.domainLookupStart_Getter_(this);
   
   @DomName('PerformanceTiming.fetchStart')
   @DocsEditable()
-  int get fetchStart => _blink.BlinkPerformanceTiming.instance.fetchStart_Getter_(unwrap_jso(this));
+  int get fetchStart => _blink.BlinkPerformanceTiming.instance.fetchStart_Getter_(this);
   
   @DomName('PerformanceTiming.loadEventEnd')
   @DocsEditable()
-  int get loadEventEnd => _blink.BlinkPerformanceTiming.instance.loadEventEnd_Getter_(unwrap_jso(this));
+  int get loadEventEnd => _blink.BlinkPerformanceTiming.instance.loadEventEnd_Getter_(this);
   
   @DomName('PerformanceTiming.loadEventStart')
   @DocsEditable()
-  int get loadEventStart => _blink.BlinkPerformanceTiming.instance.loadEventStart_Getter_(unwrap_jso(this));
+  int get loadEventStart => _blink.BlinkPerformanceTiming.instance.loadEventStart_Getter_(this);
   
   @DomName('PerformanceTiming.navigationStart')
   @DocsEditable()
-  int get navigationStart => _blink.BlinkPerformanceTiming.instance.navigationStart_Getter_(unwrap_jso(this));
+  int get navigationStart => _blink.BlinkPerformanceTiming.instance.navigationStart_Getter_(this);
   
   @DomName('PerformanceTiming.redirectEnd')
   @DocsEditable()
-  int get redirectEnd => _blink.BlinkPerformanceTiming.instance.redirectEnd_Getter_(unwrap_jso(this));
+  int get redirectEnd => _blink.BlinkPerformanceTiming.instance.redirectEnd_Getter_(this);
   
   @DomName('PerformanceTiming.redirectStart')
   @DocsEditable()
-  int get redirectStart => _blink.BlinkPerformanceTiming.instance.redirectStart_Getter_(unwrap_jso(this));
+  int get redirectStart => _blink.BlinkPerformanceTiming.instance.redirectStart_Getter_(this);
   
   @DomName('PerformanceTiming.requestStart')
   @DocsEditable()
-  int get requestStart => _blink.BlinkPerformanceTiming.instance.requestStart_Getter_(unwrap_jso(this));
+  int get requestStart => _blink.BlinkPerformanceTiming.instance.requestStart_Getter_(this);
   
   @DomName('PerformanceTiming.responseEnd')
   @DocsEditable()
-  int get responseEnd => _blink.BlinkPerformanceTiming.instance.responseEnd_Getter_(unwrap_jso(this));
+  int get responseEnd => _blink.BlinkPerformanceTiming.instance.responseEnd_Getter_(this);
   
   @DomName('PerformanceTiming.responseStart')
   @DocsEditable()
-  int get responseStart => _blink.BlinkPerformanceTiming.instance.responseStart_Getter_(unwrap_jso(this));
+  int get responseStart => _blink.BlinkPerformanceTiming.instance.responseStart_Getter_(this);
   
   @DomName('PerformanceTiming.secureConnectionStart')
   @DocsEditable()
-  int get secureConnectionStart => _blink.BlinkPerformanceTiming.instance.secureConnectionStart_Getter_(unwrap_jso(this));
+  int get secureConnectionStart => _blink.BlinkPerformanceTiming.instance.secureConnectionStart_Getter_(this);
   
   @DomName('PerformanceTiming.unloadEventEnd')
   @DocsEditable()
-  int get unloadEventEnd => _blink.BlinkPerformanceTiming.instance.unloadEventEnd_Getter_(unwrap_jso(this));
+  int get unloadEventEnd => _blink.BlinkPerformanceTiming.instance.unloadEventEnd_Getter_(this);
   
   @DomName('PerformanceTiming.unloadEventStart')
   @DocsEditable()
-  int get unloadEventStart => _blink.BlinkPerformanceTiming.instance.unloadEventStart_Getter_(unwrap_jso(this));
+  int get unloadEventStart => _blink.BlinkPerformanceTiming.instance.unloadEventStart_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31904,16 +29869,12 @@
   @DocsEditable()
   factory PeriodicSyncEvent(String type, Map init) {
     var init_1 = convertDartToNative_Dictionary(init);
-    return wrap_jso(_blink.BlinkPeriodicSyncEvent.instance.constructorCallback_2_(type, init_1));
+    return _blink.BlinkPeriodicSyncEvent.instance.constructorCallback_2_(type, init_1);
   }
 
 
   @Deprecated("Internal Use Only")
-  static PeriodicSyncEvent internalCreatePeriodicSyncEvent() {
-    return new PeriodicSyncEvent._internalWrap();
-  }
-
-  external factory PeriodicSyncEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PeriodicSyncEvent.internal_() : super.internal_();
@@ -31922,7 +29883,7 @@
   @DomName('PeriodicSyncEvent.registration')
   @DocsEditable()
   @Experimental() // untriaged
-  PeriodicSyncRegistration get registration => wrap_jso(_blink.BlinkPeriodicSyncEvent.instance.registration_Getter_(unwrap_jso(this)));
+  PeriodicSyncRegistration get registration => _blink.BlinkPeriodicSyncEvent.instance.registration_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31939,46 +29900,38 @@
   // To suppress missing implicit constructor warnings.
   factory PeriodicSyncManager._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static PeriodicSyncManager internalCreatePeriodicSyncManager() {
-    return new PeriodicSyncManager._internalWrap();
-  }
 
-  factory PeriodicSyncManager._internalWrap() {
-    return new PeriodicSyncManager.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PeriodicSyncManager.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('PeriodicSyncManager.minPossiblePeriod')
   @DocsEditable()
   @Experimental() // untriaged
-  int get minPossiblePeriod => _blink.BlinkPeriodicSyncManager.instance.minPossiblePeriod_Getter_(unwrap_jso(this));
+  int get minPossiblePeriod => _blink.BlinkPeriodicSyncManager.instance.minPossiblePeriod_Getter_(this);
   
   @DomName('PeriodicSyncManager.getRegistration')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getRegistration(String tag) => wrap_jso(_blink.BlinkPeriodicSyncManager.instance.getRegistration_Callback_1_(unwrap_jso(this), tag));
+  Future getRegistration(String tag) => convertNativePromiseToDartFuture(_blink.BlinkPeriodicSyncManager.instance.getRegistration_Callback_1_(this, tag));
   
   @DomName('PeriodicSyncManager.getRegistrations')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getRegistrations() => wrap_jso(_blink.BlinkPeriodicSyncManager.instance.getRegistrations_Callback_0_(unwrap_jso(this)));
+  Future getRegistrations() => convertNativePromiseToDartFuture(_blink.BlinkPeriodicSyncManager.instance.getRegistrations_Callback_0_(this));
   
   @DomName('PeriodicSyncManager.permissionState')
   @DocsEditable()
   @Experimental() // untriaged
-  Future permissionState() => wrap_jso(_blink.BlinkPeriodicSyncManager.instance.permissionState_Callback_0_(unwrap_jso(this)));
+  Future permissionState() => convertNativePromiseToDartFuture(_blink.BlinkPeriodicSyncManager.instance.permissionState_Callback_0_(this));
   
   Future register([Map options]) {
     if (options != null) {
-      return wrap_jso(_blink.BlinkPeriodicSyncManager.instance.register_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(options)));
+      return _blink.BlinkPeriodicSyncManager.instance.register_Callback_1_(this, convertDartToNative_Dictionary(options));
     }
-    return wrap_jso(_blink.BlinkPeriodicSyncManager.instance.register_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkPeriodicSyncManager.instance.register_Callback_0_(this);
   }
 
 }
@@ -31996,45 +29949,37 @@
   // To suppress missing implicit constructor warnings.
   factory PeriodicSyncRegistration._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static PeriodicSyncRegistration internalCreatePeriodicSyncRegistration() {
-    return new PeriodicSyncRegistration._internalWrap();
-  }
 
-  factory PeriodicSyncRegistration._internalWrap() {
-    return new PeriodicSyncRegistration.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PeriodicSyncRegistration.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('PeriodicSyncRegistration.minPeriod')
   @DocsEditable()
   @Experimental() // untriaged
-  int get minPeriod => _blink.BlinkPeriodicSyncRegistration.instance.minPeriod_Getter_(unwrap_jso(this));
+  int get minPeriod => _blink.BlinkPeriodicSyncRegistration.instance.minPeriod_Getter_(this);
   
   @DomName('PeriodicSyncRegistration.networkState')
   @DocsEditable()
   @Experimental() // untriaged
-  String get networkState => _blink.BlinkPeriodicSyncRegistration.instance.networkState_Getter_(unwrap_jso(this));
+  String get networkState => _blink.BlinkPeriodicSyncRegistration.instance.networkState_Getter_(this);
   
   @DomName('PeriodicSyncRegistration.powerState')
   @DocsEditable()
   @Experimental() // untriaged
-  String get powerState => _blink.BlinkPeriodicSyncRegistration.instance.powerState_Getter_(unwrap_jso(this));
+  String get powerState => _blink.BlinkPeriodicSyncRegistration.instance.powerState_Getter_(this);
   
   @DomName('PeriodicSyncRegistration.tag')
   @DocsEditable()
   @Experimental() // untriaged
-  String get tag => _blink.BlinkPeriodicSyncRegistration.instance.tag_Getter_(unwrap_jso(this));
+  String get tag => _blink.BlinkPeriodicSyncRegistration.instance.tag_Getter_(this);
   
   @DomName('PeriodicSyncRegistration.unregister')
   @DocsEditable()
   @Experimental() // untriaged
-  Future unregister() => wrap_jso(_blink.BlinkPeriodicSyncRegistration.instance.unregister_Callback_0_(unwrap_jso(this)));
+  Future unregister() => convertNativePromiseToDartFuture(_blink.BlinkPeriodicSyncRegistration.instance.unregister_Callback_0_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32058,11 +30003,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PermissionStatus internalCreatePermissionStatus() {
-    return new PermissionStatus._internalWrap();
-  }
-
-  external factory PermissionStatus._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PermissionStatus.internal_() : super.internal_();
@@ -32071,12 +30012,12 @@
   @DomName('PermissionStatus.state')
   @DocsEditable()
   @Experimental() // untriaged
-  String get state => _blink.BlinkPermissionStatus.instance.state_Getter_(unwrap_jso(this));
+  String get state => _blink.BlinkPermissionStatus.instance.state_Getter_(this);
   
   @DomName('PermissionStatus.status')
   @DocsEditable()
   @Experimental() // untriaged
-  String get status => _blink.BlinkPermissionStatus.instance.status_Getter_(unwrap_jso(this));
+  String get status => _blink.BlinkPermissionStatus.instance.status_Getter_(this);
   
   @DomName('PermissionStatus.onchange')
   @DocsEditable()
@@ -32098,25 +30039,17 @@
   // To suppress missing implicit constructor warnings.
   factory Permissions._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Permissions internalCreatePermissions() {
-    return new Permissions._internalWrap();
-  }
 
-  factory Permissions._internalWrap() {
-    return new Permissions.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Permissions.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Permissions.query')
   @DocsEditable()
   @Experimental() // untriaged
-  Future query(Object permission) => wrap_jso(_blink.BlinkPermissions.instance.query_Callback_1_(unwrap_jso(this), permission));
+  Future query(Object permission) => convertNativePromiseToDartFuture(_blink.BlinkPermissions.instance.query_Callback_1_(this, permission));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32135,11 +30068,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PictureElement internalCreatePictureElement() {
-    return new PictureElement._internalWrap();
-  }
-
-  external factory PictureElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PictureElement.internal_() : super.internal_();
@@ -32166,47 +30095,39 @@
   // To suppress missing implicit constructor warnings.
   factory Plugin._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Plugin internalCreatePlugin() {
-    return new Plugin._internalWrap();
-  }
 
-  factory Plugin._internalWrap() {
-    return new Plugin.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Plugin.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Plugin.description')
   @DocsEditable()
-  String get description => _blink.BlinkPlugin.instance.description_Getter_(unwrap_jso(this));
+  String get description => _blink.BlinkPlugin.instance.description_Getter_(this);
   
   @DomName('Plugin.filename')
   @DocsEditable()
-  String get filename => _blink.BlinkPlugin.instance.filename_Getter_(unwrap_jso(this));
+  String get filename => _blink.BlinkPlugin.instance.filename_Getter_(this);
   
   @DomName('Plugin.length')
   @DocsEditable()
-  int get length => _blink.BlinkPlugin.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkPlugin.instance.length_Getter_(this);
   
   @DomName('Plugin.name')
   @DocsEditable()
-  String get name => _blink.BlinkPlugin.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkPlugin.instance.name_Getter_(this);
   
   @DomName('Plugin.item')
   @DocsEditable()
-  MimeType item(int index) => wrap_jso(_blink.BlinkPlugin.instance.item_Callback_1_(unwrap_jso(this), index));
+  MimeType item(int index) => _blink.BlinkPlugin.instance.item_Callback_1_(this, index);
   
   MimeType namedItem(String name) {
     if ((name is String || name == null)) {
-      return wrap_jso(_blink.BlinkPlugin.instance.namedItem_Callback_1_(unwrap_jso(this), name));
+      return _blink.BlinkPlugin.instance.namedItem_Callback_1_(this, name);
     }
     if ((name is String || name == null)) {
-      return wrap_jso(_blink.BlinkPlugin.instance.namedItem_Callback_1_(unwrap_jso(this), name));
+      return _blink.BlinkPlugin.instance.namedItem_Callback_1_(this, name);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -32226,32 +30147,24 @@
   // To suppress missing implicit constructor warnings.
   factory PluginArray._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static PluginArray internalCreatePluginArray() {
-    return new PluginArray._internalWrap();
-  }
 
-  factory PluginArray._internalWrap() {
-    return new PluginArray.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PluginArray.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('PluginArray.length')
   @DocsEditable()
-  int get length => _blink.BlinkPluginArray.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkPluginArray.instance.length_Getter_(this);
   
   Plugin operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkPluginArray.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  Plugin _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkPluginArray.instance.item_Callback_1_(unwrap_jso(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.");
@@ -32293,21 +30206,21 @@
 
   @DomName('PluginArray.item')
   @DocsEditable()
-  Plugin item(int index) => wrap_jso(_blink.BlinkPluginArray.instance.item_Callback_1_(unwrap_jso(this), index));
+  Plugin item(int index) => _blink.BlinkPluginArray.instance.item_Callback_1_(this, index);
   
   Plugin namedItem(String name) {
     if ((name is String || name == null)) {
-      return wrap_jso(_blink.BlinkPluginArray.instance.namedItem_Callback_1_(unwrap_jso(this), name));
+      return _blink.BlinkPluginArray.instance.namedItem_Callback_1_(this, name);
     }
     if ((name is String || name == null)) {
-      return wrap_jso(_blink.BlinkPluginArray.instance.namedItem_Callback_1_(unwrap_jso(this), name));
+      return _blink.BlinkPluginArray.instance.namedItem_Callback_1_(this, name);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   @DomName('PluginArray.refresh')
   @DocsEditable()
-  void refresh(bool reload) => _blink.BlinkPluginArray.instance.refresh_Callback_1_(unwrap_jso(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
@@ -32326,11 +30239,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PluginPlaceholderElement internalCreatePluginPlaceholderElement() {
-    return new PluginPlaceholderElement._internalWrap();
-  }
-
-  external factory PluginPlaceholderElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PluginPlaceholderElement.internal_() : super.internal_();
@@ -32345,27 +30254,27 @@
   @DomName('PluginPlaceholderElement.closeable')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get closeable => _blink.BlinkPluginPlaceholderElement.instance.closeable_Getter_(unwrap_jso(this));
+  bool get closeable => _blink.BlinkPluginPlaceholderElement.instance.closeable_Getter_(this);
   
   @DomName('PluginPlaceholderElement.closeable')
   @DocsEditable()
   @Experimental() // untriaged
-  set closeable(bool value) => _blink.BlinkPluginPlaceholderElement.instance.closeable_Setter_(unwrap_jso(this), value);
+  set closeable(bool value) => _blink.BlinkPluginPlaceholderElement.instance.closeable_Setter_(this, value);
   
   @DomName('PluginPlaceholderElement.message')
   @DocsEditable()
   @Experimental() // untriaged
-  String get message => _blink.BlinkPluginPlaceholderElement.instance.message_Getter_(unwrap_jso(this));
+  String get message => _blink.BlinkPluginPlaceholderElement.instance.message_Getter_(this);
   
   @DomName('PluginPlaceholderElement.message')
   @DocsEditable()
   @Experimental() // untriaged
-  set message(String value) => _blink.BlinkPluginPlaceholderElement.instance.message_Setter_(unwrap_jso(this), value);
+  set message(String value) => _blink.BlinkPluginPlaceholderElement.instance.message_Setter_(this, value);
   
   @DomName('PluginPlaceholderElement.createdCallback')
   @DocsEditable()
   @Experimental() // untriaged
-  void createdCallback() => _blink.BlinkPluginPlaceholderElement.instance.createdCallback_Callback_0_(unwrap_jso(this));
+  void createdCallback() => _blink.BlinkPluginPlaceholderElement.instance.createdCallback_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32387,18 +30296,14 @@
   factory PointerEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkPointerEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkPointerEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkPointerEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkPointerEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static PointerEvent internalCreatePointerEvent() {
-    return new PointerEvent._internalWrap();
-  }
-
-  external factory PointerEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PointerEvent.internal_() : super.internal_();
@@ -32407,42 +30312,42 @@
   @DomName('PointerEvent.height')
   @DocsEditable()
   @Experimental() // untriaged
-  num get height => _blink.BlinkPointerEvent.instance.height_Getter_(unwrap_jso(this));
+  num get height => _blink.BlinkPointerEvent.instance.height_Getter_(this);
   
   @DomName('PointerEvent.isPrimary')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get isPrimary => _blink.BlinkPointerEvent.instance.isPrimary_Getter_(unwrap_jso(this));
+  bool get isPrimary => _blink.BlinkPointerEvent.instance.isPrimary_Getter_(this);
   
   @DomName('PointerEvent.pointerId')
   @DocsEditable()
   @Experimental() // untriaged
-  int get pointerId => _blink.BlinkPointerEvent.instance.pointerId_Getter_(unwrap_jso(this));
+  int get pointerId => _blink.BlinkPointerEvent.instance.pointerId_Getter_(this);
   
   @DomName('PointerEvent.pointerType')
   @DocsEditable()
   @Experimental() // untriaged
-  String get pointerType => _blink.BlinkPointerEvent.instance.pointerType_Getter_(unwrap_jso(this));
+  String get pointerType => _blink.BlinkPointerEvent.instance.pointerType_Getter_(this);
   
   @DomName('PointerEvent.pressure')
   @DocsEditable()
   @Experimental() // untriaged
-  num get pressure => _blink.BlinkPointerEvent.instance.pressure_Getter_(unwrap_jso(this));
+  num get pressure => _blink.BlinkPointerEvent.instance.pressure_Getter_(this);
   
   @DomName('PointerEvent.tiltX')
   @DocsEditable()
   @Experimental() // untriaged
-  int get tiltX => _blink.BlinkPointerEvent.instance.tiltX_Getter_(unwrap_jso(this));
+  int get tiltX => _blink.BlinkPointerEvent.instance.tiltX_Getter_(this);
   
   @DomName('PointerEvent.tiltY')
   @DocsEditable()
   @Experimental() // untriaged
-  int get tiltY => _blink.BlinkPointerEvent.instance.tiltY_Getter_(unwrap_jso(this));
+  int get tiltY => _blink.BlinkPointerEvent.instance.tiltY_Getter_(this);
   
   @DomName('PointerEvent.width')
   @DocsEditable()
   @Experimental() // untriaged
-  num get width => _blink.BlinkPointerEvent.instance.width_Getter_(unwrap_jso(this));
+  num get width => _blink.BlinkPointerEvent.instance.width_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32467,18 +30372,14 @@
   factory PopStateEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkPopStateEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkPopStateEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkPopStateEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkPopStateEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static PopStateEvent internalCreatePopStateEvent() {
-    return new PopStateEvent._internalWrap();
-  }
-
-  external factory PopStateEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PopStateEvent.internal_() : super.internal_();
@@ -32486,7 +30387,7 @@
 
   @DomName('PopStateEvent.state')
   @DocsEditable()
-  Object get state => wrap_jso(_blink.BlinkPopStateEvent.instance.state_Getter_(unwrap_jso(this)));
+  Object get state => convertNativeToDart_SerializedScriptValue(_blink.BlinkPopStateEvent.instance.state_Getter_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32513,21 +30414,13 @@
   // To suppress missing implicit constructor warnings.
   factory PositionError._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static PositionError internalCreatePositionError() {
-    return new PositionError._internalWrap();
-  }
 
-  factory PositionError._internalWrap() {
-    return new PositionError.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PositionError.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('PositionError.PERMISSION_DENIED')
   @DocsEditable()
   static const int PERMISSION_DENIED = 1;
@@ -32542,11 +30435,11 @@
 
   @DomName('PositionError.code')
   @DocsEditable()
-  int get code => _blink.BlinkPositionError.instance.code_Getter_(unwrap_jso(this));
+  int get code => _blink.BlinkPositionError.instance.code_Getter_(this);
   
   @DomName('PositionError.message')
   @DocsEditable()
-  String get message => _blink.BlinkPositionError.instance.message_Getter_(unwrap_jso(this));
+  String get message => _blink.BlinkPositionError.instance.message_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32575,11 +30468,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PositionSensorVRDevice internalCreatePositionSensorVRDevice() {
-    return new PositionSensorVRDevice._internalWrap();
-  }
-
-  external factory PositionSensorVRDevice._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PositionSensorVRDevice.internal_() : super.internal_();
@@ -32588,17 +30477,17 @@
   @DomName('PositionSensorVRDevice.getImmediateState')
   @DocsEditable()
   @Experimental() // untriaged
-  VRPositionState getImmediateState() => wrap_jso(_blink.BlinkPositionSensorVRDevice.instance.getImmediateState_Callback_0_(unwrap_jso(this)));
+  VRPositionState getImmediateState() => _blink.BlinkPositionSensorVRDevice.instance.getImmediateState_Callback_0_(this);
   
   @DomName('PositionSensorVRDevice.getState')
   @DocsEditable()
   @Experimental() // untriaged
-  VRPositionState getState() => wrap_jso(_blink.BlinkPositionSensorVRDevice.instance.getState_Callback_0_(unwrap_jso(this)));
+  VRPositionState getState() => _blink.BlinkPositionSensorVRDevice.instance.getState_Callback_0_(this);
   
   @DomName('PositionSensorVRDevice.resetSensor')
   @DocsEditable()
   @Experimental() // untriaged
-  void resetSensor() => _blink.BlinkPositionSensorVRDevice.instance.resetSensor_Callback_0_(unwrap_jso(this));
+  void resetSensor() => _blink.BlinkPositionSensorVRDevice.instance.resetSensor_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32620,11 +30509,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PreElement internalCreatePreElement() {
-    return new PreElement._internalWrap();
-  }
-
-  external factory PreElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PreElement.internal_() : super.internal_();
@@ -32653,11 +30538,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static Presentation internalCreatePresentation() {
-    return new Presentation._internalWrap();
-  }
-
-  external factory Presentation._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Presentation.internal_() : super.internal_();
@@ -32666,22 +30547,22 @@
   @DomName('Presentation.session')
   @DocsEditable()
   @Experimental() // untriaged
-  PresentationSession get session => wrap_jso(_blink.BlinkPresentation.instance.session_Getter_(unwrap_jso(this)));
+  PresentationSession get session => _blink.BlinkPresentation.instance.session_Getter_(this);
   
   @DomName('Presentation.getAvailability')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getAvailability(String url) => wrap_jso(_blink.BlinkPresentation.instance.getAvailability_Callback_1_(unwrap_jso(this), url));
+  Future getAvailability(String url) => convertNativePromiseToDartFuture(_blink.BlinkPresentation.instance.getAvailability_Callback_1_(this, url));
   
   @DomName('Presentation.joinSession')
   @DocsEditable()
   @Experimental() // untriaged
-  Future joinSession(String url, String presentationId) => wrap_jso(_blink.BlinkPresentation.instance.joinSession_Callback_2_(unwrap_jso(this), url, presentationId));
+  Future joinSession(String url, String presentationId) => convertNativePromiseToDartFuture(_blink.BlinkPresentation.instance.joinSession_Callback_2_(this, url, presentationId));
   
   @DomName('Presentation.startSession')
   @DocsEditable()
   @Experimental() // untriaged
-  Future startSession(String url) => wrap_jso(_blink.BlinkPresentation.instance.startSession_Callback_1_(unwrap_jso(this), url));
+  Future startSession(String url) => convertNativePromiseToDartFuture(_blink.BlinkPresentation.instance.startSession_Callback_1_(this, url));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32705,11 +30586,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PresentationAvailability internalCreatePresentationAvailability() {
-    return new PresentationAvailability._internalWrap();
-  }
-
-  external factory PresentationAvailability._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PresentationAvailability.internal_() : super.internal_();
@@ -32718,7 +30595,7 @@
   @DomName('PresentationAvailability.value')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get value => _blink.BlinkPresentationAvailability.instance.value_Getter_(unwrap_jso(this));
+  bool get value => _blink.BlinkPresentationAvailability.instance.value_Getter_(this);
   
   @DomName('PresentationAvailability.onchange')
   @DocsEditable()
@@ -32747,11 +30624,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PresentationSession internalCreatePresentationSession() {
-    return new PresentationSession._internalWrap();
-  }
-
-  external factory PresentationSession._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PresentationSession.internal_() : super.internal_();
@@ -32760,43 +30633,43 @@
   @DomName('PresentationSession.binaryType')
   @DocsEditable()
   @Experimental() // untriaged
-  String get binaryType => _blink.BlinkPresentationSession.instance.binaryType_Getter_(unwrap_jso(this));
+  String get binaryType => _blink.BlinkPresentationSession.instance.binaryType_Getter_(this);
   
   @DomName('PresentationSession.binaryType')
   @DocsEditable()
   @Experimental() // untriaged
-  set binaryType(String value) => _blink.BlinkPresentationSession.instance.binaryType_Setter_(unwrap_jso(this), value);
+  set binaryType(String value) => _blink.BlinkPresentationSession.instance.binaryType_Setter_(this, value);
   
   @DomName('PresentationSession.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkPresentationSession.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkPresentationSession.instance.id_Getter_(this);
   
   @DomName('PresentationSession.state')
   @DocsEditable()
   @Experimental() // untriaged
-  String get state => _blink.BlinkPresentationSession.instance.state_Getter_(unwrap_jso(this));
+  String get state => _blink.BlinkPresentationSession.instance.state_Getter_(this);
   
   @DomName('PresentationSession.close')
   @DocsEditable()
   @Experimental() // untriaged
-  void close() => _blink.BlinkPresentationSession.instance.close_Callback_0_(unwrap_jso(this));
+  void close() => _blink.BlinkPresentationSession.instance.close_Callback_0_(this);
   
   void send(data_OR_message) {
     if ((data_OR_message is String || data_OR_message == null)) {
-      _blink.BlinkPresentationSession.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data_OR_message));
+      _blink.BlinkPresentationSession.instance.send_Callback_1_(this, data_OR_message);
       return;
     }
     if ((data_OR_message is Blob || data_OR_message == null)) {
-      _blink.BlinkPresentationSession.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data_OR_message));
+      _blink.BlinkPresentationSession.instance.send_Callback_1_(this, data_OR_message);
       return;
     }
     if ((data_OR_message is TypedData || data_OR_message == null)) {
-      _blink.BlinkPresentationSession.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data_OR_message));
+      _blink.BlinkPresentationSession.instance.send_Callback_1_(this, data_OR_message);
       return;
     }
     if ((data_OR_message is ByteBuffer || data_OR_message == null)) {
-      _blink.BlinkPresentationSession.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data_OR_message));
+      _blink.BlinkPresentationSession.instance.send_Callback_1_(this, data_OR_message);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -32824,11 +30697,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ProcessingInstruction internalCreateProcessingInstruction() {
-    return new ProcessingInstruction._internalWrap();
-  }
-
-  external factory ProcessingInstruction._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ProcessingInstruction.internal_() : super.internal_();
@@ -32837,11 +30706,11 @@
   @DomName('ProcessingInstruction.sheet')
   @DocsEditable()
   @Experimental() // non-standard
-  StyleSheet get sheet => wrap_jso(_blink.BlinkProcessingInstruction.instance.sheet_Getter_(unwrap_jso(this)));
+  StyleSheet get sheet => _blink.BlinkProcessingInstruction.instance.sheet_Getter_(this);
   
   @DomName('ProcessingInstruction.target')
   @DocsEditable()
-  String get target => _blink.BlinkProcessingInstruction.instance.target_Getter_(unwrap_jso(this));
+  String get target => _blink.BlinkProcessingInstruction.instance.target_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32867,11 +30736,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ProgressElement internalCreateProgressElement() {
-    return new ProgressElement._internalWrap();
-  }
-
-  external factory ProgressElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ProgressElement.internal_() : super.internal_();
@@ -32889,27 +30754,27 @@
   @DomName('HTMLProgressElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => wrap_jso(_blink.BlinkHTMLProgressElement.instance.labels_Getter_(unwrap_jso(this)));
+  List<Node> get labels => (_blink.BlinkHTMLProgressElement.instance.labels_Getter_(this));
   
   @DomName('HTMLProgressElement.max')
   @DocsEditable()
-  num get max => _blink.BlinkHTMLProgressElement.instance.max_Getter_(unwrap_jso(this));
+  num get max => _blink.BlinkHTMLProgressElement.instance.max_Getter_(this);
   
   @DomName('HTMLProgressElement.max')
   @DocsEditable()
-  set max(num value) => _blink.BlinkHTMLProgressElement.instance.max_Setter_(unwrap_jso(this), value);
+  set max(num value) => _blink.BlinkHTMLProgressElement.instance.max_Setter_(this, value);
   
   @DomName('HTMLProgressElement.position')
   @DocsEditable()
-  num get position => _blink.BlinkHTMLProgressElement.instance.position_Getter_(unwrap_jso(this));
+  num get position => _blink.BlinkHTMLProgressElement.instance.position_Getter_(this);
   
   @DomName('HTMLProgressElement.value')
   @DocsEditable()
-  num get value => _blink.BlinkHTMLProgressElement.instance.value_Getter_(unwrap_jso(this));
+  num get value => _blink.BlinkHTMLProgressElement.instance.value_Getter_(this);
   
   @DomName('HTMLProgressElement.value')
   @DocsEditable()
-  set value(num value) => _blink.BlinkHTMLProgressElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(num value) => _blink.BlinkHTMLProgressElement.instance.value_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32930,18 +30795,14 @@
   factory ProgressEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkProgressEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkProgressEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkProgressEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkProgressEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static ProgressEvent internalCreateProgressEvent() {
-    return new ProgressEvent._internalWrap();
-  }
-
-  external factory ProgressEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ProgressEvent.internal_() : super.internal_();
@@ -32949,15 +30810,15 @@
 
   @DomName('ProgressEvent.lengthComputable')
   @DocsEditable()
-  bool get lengthComputable => _blink.BlinkProgressEvent.instance.lengthComputable_Getter_(unwrap_jso(this));
+  bool get lengthComputable => _blink.BlinkProgressEvent.instance.lengthComputable_Getter_(this);
   
   @DomName('ProgressEvent.loaded')
   @DocsEditable()
-  int get loaded => _blink.BlinkProgressEvent.instance.loaded_Getter_(unwrap_jso(this));
+  int get loaded => _blink.BlinkProgressEvent.instance.loaded_Getter_(this);
   
   @DomName('ProgressEvent.total')
   @DocsEditable()
-  int get total => _blink.BlinkProgressEvent.instance.total_Getter_(unwrap_jso(this));
+  int get total => _blink.BlinkProgressEvent.instance.total_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32979,18 +30840,14 @@
   factory PromiseRejectionEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkPromiseRejectionEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkPromiseRejectionEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkPromiseRejectionEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkPromiseRejectionEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static PromiseRejectionEvent internalCreatePromiseRejectionEvent() {
-    return new PromiseRejectionEvent._internalWrap();
-  }
-
-  external factory PromiseRejectionEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PromiseRejectionEvent.internal_() : super.internal_();
@@ -32999,12 +30856,12 @@
   @DomName('PromiseRejectionEvent.promise')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get promise => wrap_jso(_blink.BlinkPromiseRejectionEvent.instance.promise_Getter_(unwrap_jso(this)));
+  Future get promise => convertNativePromiseToDartFuture(_blink.BlinkPromiseRejectionEvent.instance.promise_Getter_(this));
   
   @DomName('PromiseRejectionEvent.reason')
   @DocsEditable()
   @Experimental() // untriaged
-  Object get reason => wrap_jso(_blink.BlinkPromiseRejectionEvent.instance.reason_Getter_(unwrap_jso(this)));
+  Object get reason => (_blink.BlinkPromiseRejectionEvent.instance.reason_Getter_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -33026,18 +30883,14 @@
   factory PushEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkPushEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkPushEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkPushEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkPushEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static PushEvent internalCreatePushEvent() {
-    return new PushEvent._internalWrap();
-  }
-
-  external factory PushEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PushEvent.internal_() : super.internal_();
@@ -33046,7 +30899,7 @@
   @DomName('PushEvent.data')
   @DocsEditable()
   @Experimental() // untriaged
-  PushMessageData get data => wrap_jso(_blink.BlinkPushEvent.instance.data_Getter_(unwrap_jso(this)));
+  PushMessageData get data => _blink.BlinkPushEvent.instance.data_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -33063,38 +30916,30 @@
   // To suppress missing implicit constructor warnings.
   factory PushManager._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static PushManager internalCreatePushManager() {
-    return new PushManager._internalWrap();
-  }
 
-  factory PushManager._internalWrap() {
-    return new PushManager.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PushManager.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('PushManager.getSubscription')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getSubscription() => wrap_jso(_blink.BlinkPushManager.instance.getSubscription_Callback_0_(unwrap_jso(this)));
+  Future getSubscription() => convertNativePromiseToDartFuture(_blink.BlinkPushManager.instance.getSubscription_Callback_0_(this));
   
   Future permissionState([Map options]) {
     if (options != null) {
-      return wrap_jso(_blink.BlinkPushManager.instance.permissionState_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(options)));
+      return _blink.BlinkPushManager.instance.permissionState_Callback_1_(this, convertDartToNative_Dictionary(options));
     }
-    return wrap_jso(_blink.BlinkPushManager.instance.permissionState_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkPushManager.instance.permissionState_Callback_0_(this);
   }
 
   Future subscribe([Map options]) {
     if (options != null) {
-      return wrap_jso(_blink.BlinkPushManager.instance.subscribe_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(options)));
+      return _blink.BlinkPushManager.instance.subscribe_Callback_1_(this, convertDartToNative_Dictionary(options));
     }
-    return wrap_jso(_blink.BlinkPushManager.instance.subscribe_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkPushManager.instance.subscribe_Callback_0_(this);
   }
 
 }
@@ -33115,43 +30960,35 @@
   @DomName('PushMessageData.PushMessageData')
   @DocsEditable()
   factory PushMessageData(String message) {
-    return wrap_jso(_blink.BlinkPushMessageData.instance.constructorCallback_1_(message));
+    return _blink.BlinkPushMessageData.instance.constructorCallback_1_(message);
   }
 
+
   @Deprecated("Internal Use Only")
-  static PushMessageData internalCreatePushMessageData() {
-    return new PushMessageData._internalWrap();
-  }
-
-  factory PushMessageData._internalWrap() {
-    return new PushMessageData.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PushMessageData.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('PushMessageData.arrayBuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  ByteBuffer arrayBuffer() => wrap_jso(_blink.BlinkPushMessageData.instance.arrayBuffer_Callback_0_(unwrap_jso(this)));
+  ByteBuffer arrayBuffer() => _blink.BlinkPushMessageData.instance.arrayBuffer_Callback_0_(this);
   
   @DomName('PushMessageData.blob')
   @DocsEditable()
   @Experimental() // untriaged
-  Blob blob() => wrap_jso(_blink.BlinkPushMessageData.instance.blob_Callback_0_(unwrap_jso(this)));
+  Blob blob() => _blink.BlinkPushMessageData.instance.blob_Callback_0_(this);
   
   @DomName('PushMessageData.json')
   @DocsEditable()
   @Experimental() // untriaged
-  Object json() => wrap_jso(_blink.BlinkPushMessageData.instance.json_Callback_0_(unwrap_jso(this)));
+  Object json() => (_blink.BlinkPushMessageData.instance.json_Callback_0_(this));
   
   @DomName('PushMessageData.text')
   @DocsEditable()
   @Experimental() // untriaged
-  String text() => _blink.BlinkPushMessageData.instance.text_Callback_0_(unwrap_jso(this));
+  String text() => _blink.BlinkPushMessageData.instance.text_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -33168,30 +31005,22 @@
   // To suppress missing implicit constructor warnings.
   factory PushSubscription._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static PushSubscription internalCreatePushSubscription() {
-    return new PushSubscription._internalWrap();
-  }
 
-  factory PushSubscription._internalWrap() {
-    return new PushSubscription.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PushSubscription.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('PushSubscription.endpoint')
   @DocsEditable()
   @Experimental() // untriaged
-  String get endpoint => _blink.BlinkPushSubscription.instance.endpoint_Getter_(unwrap_jso(this));
+  String get endpoint => _blink.BlinkPushSubscription.instance.endpoint_Getter_(this);
   
   @DomName('PushSubscription.unsubscribe')
   @DocsEditable()
   @Experimental() // untriaged
-  Future unsubscribe() => wrap_jso(_blink.BlinkPushSubscription.instance.unsubscribe_Callback_0_(unwrap_jso(this)));
+  Future unsubscribe() => convertNativePromiseToDartFuture(_blink.BlinkPushSubscription.instance.unsubscribe_Callback_0_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -33213,11 +31042,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static QuoteElement internalCreateQuoteElement() {
-    return new QuoteElement._internalWrap();
-  }
-
-  external factory QuoteElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   QuoteElement.internal_() : super.internal_();
@@ -33231,11 +31056,11 @@
 
   @DomName('HTMLQuoteElement.cite')
   @DocsEditable()
-  String get cite => _blink.BlinkHTMLQuoteElement.instance.cite_Getter_(unwrap_jso(this));
+  String get cite => _blink.BlinkHTMLQuoteElement.instance.cite_Getter_(this);
   
   @DomName('HTMLQuoteElement.cite')
   @DocsEditable()
-  set cite(String value) => _blink.BlinkHTMLQuoteElement.instance.cite_Setter_(unwrap_jso(this), value);
+  set cite(String value) => _blink.BlinkHTMLQuoteElement.instance.cite_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -33288,21 +31113,13 @@
   // To suppress missing implicit constructor warnings.
   factory Range._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Range internalCreateRange() {
-    return new Range._internalWrap();
-  }
 
-  factory Range._internalWrap() {
-    return new Range.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Range.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Range.END_TO_END')
   @DocsEditable()
   static const int END_TO_END = 2;
@@ -33321,126 +31138,126 @@
 
   @DomName('Range.collapsed')
   @DocsEditable()
-  bool get collapsed => _blink.BlinkRange.instance.collapsed_Getter_(unwrap_jso(this));
+  bool get collapsed => _blink.BlinkRange.instance.collapsed_Getter_(this);
   
   @DomName('Range.commonAncestorContainer')
   @DocsEditable()
-  Node get commonAncestorContainer => wrap_jso(_blink.BlinkRange.instance.commonAncestorContainer_Getter_(unwrap_jso(this)));
+  Node get commonAncestorContainer => _blink.BlinkRange.instance.commonAncestorContainer_Getter_(this);
   
   @DomName('Range.endContainer')
   @DocsEditable()
-  Node get endContainer => wrap_jso(_blink.BlinkRange.instance.endContainer_Getter_(unwrap_jso(this)));
+  Node get endContainer => _blink.BlinkRange.instance.endContainer_Getter_(this);
   
   @DomName('Range.endOffset')
   @DocsEditable()
-  int get endOffset => _blink.BlinkRange.instance.endOffset_Getter_(unwrap_jso(this));
+  int get endOffset => _blink.BlinkRange.instance.endOffset_Getter_(this);
   
   @DomName('Range.startContainer')
   @DocsEditable()
-  Node get startContainer => wrap_jso(_blink.BlinkRange.instance.startContainer_Getter_(unwrap_jso(this)));
+  Node get startContainer => _blink.BlinkRange.instance.startContainer_Getter_(this);
   
   @DomName('Range.startOffset')
   @DocsEditable()
-  int get startOffset => _blink.BlinkRange.instance.startOffset_Getter_(unwrap_jso(this));
+  int get startOffset => _blink.BlinkRange.instance.startOffset_Getter_(this);
   
   @DomName('Range.cloneContents')
   @DocsEditable()
-  DocumentFragment cloneContents() => wrap_jso(_blink.BlinkRange.instance.cloneContents_Callback_0_(unwrap_jso(this)));
+  DocumentFragment cloneContents() => _blink.BlinkRange.instance.cloneContents_Callback_0_(this);
   
   @DomName('Range.cloneRange')
   @DocsEditable()
-  Range cloneRange() => wrap_jso(_blink.BlinkRange.instance.cloneRange_Callback_0_(unwrap_jso(this)));
+  Range cloneRange() => _blink.BlinkRange.instance.cloneRange_Callback_0_(this);
   
   void collapse([bool toStart]) {
     if (toStart != null) {
-      _blink.BlinkRange.instance.collapse_Callback_1_(unwrap_jso(this), toStart);
+      _blink.BlinkRange.instance.collapse_Callback_1_(this, toStart);
       return;
     }
-    _blink.BlinkRange.instance.collapse_Callback_0_(unwrap_jso(this));
+    _blink.BlinkRange.instance.collapse_Callback_0_(this);
     return;
   }
 
   @DomName('Range.compareBoundaryPoints')
   @DocsEditable()
   @Experimental() // untriaged
-  int compareBoundaryPoints(int how, Range sourceRange) => _blink.BlinkRange.instance.compareBoundaryPoints_Callback_2_(unwrap_jso(this), how, unwrap_jso(sourceRange));
+  int compareBoundaryPoints(int how, Range sourceRange) => _blink.BlinkRange.instance.compareBoundaryPoints_Callback_2_(this, how, sourceRange);
   
   @DomName('Range.comparePoint')
   @DocsEditable()
-  int comparePoint(Node node, int offset) => _blink.BlinkRange.instance.comparePoint_Callback_2_(unwrap_jso(this), unwrap_jso(node), offset);
+  int comparePoint(Node node, int offset) => _blink.BlinkRange.instance.comparePoint_Callback_2_(this, node, offset);
   
   @DomName('Range.createContextualFragment')
   @DocsEditable()
-  DocumentFragment createContextualFragment(String fragment) => wrap_jso(_blink.BlinkRange.instance.createContextualFragment_Callback_1_(unwrap_jso(this), fragment));
+  DocumentFragment createContextualFragment(String fragment) => _blink.BlinkRange.instance.createContextualFragment_Callback_1_(this, fragment);
   
   @DomName('Range.deleteContents')
   @DocsEditable()
-  void deleteContents() => _blink.BlinkRange.instance.deleteContents_Callback_0_(unwrap_jso(this));
+  void deleteContents() => _blink.BlinkRange.instance.deleteContents_Callback_0_(this);
   
   @DomName('Range.detach')
   @DocsEditable()
-  void detach() => _blink.BlinkRange.instance.detach_Callback_0_(unwrap_jso(this));
+  void detach() => _blink.BlinkRange.instance.detach_Callback_0_(this);
   
   @DomName('Range.expand')
   @DocsEditable()
   @Experimental() // non-standard
-  void expand(String unit) => _blink.BlinkRange.instance.expand_Callback_1_(unwrap_jso(this), unit);
+  void expand(String unit) => _blink.BlinkRange.instance.expand_Callback_1_(this, unit);
   
   @DomName('Range.extractContents')
   @DocsEditable()
-  DocumentFragment extractContents() => wrap_jso(_blink.BlinkRange.instance.extractContents_Callback_0_(unwrap_jso(this)));
+  DocumentFragment extractContents() => _blink.BlinkRange.instance.extractContents_Callback_0_(this);
   
   @DomName('Range.getBoundingClientRect')
   @DocsEditable()
-  Rectangle getBoundingClientRect() => make_dart_rectangle(_blink.BlinkRange.instance.getBoundingClientRect_Callback_0_(unwrap_jso(this)));
+  Rectangle getBoundingClientRect() => make_dart_rectangle(_blink.BlinkRange.instance.getBoundingClientRect_Callback_0_(this));
   
   @DomName('Range.getClientRects')
   @DocsEditable()
-  List<Rectangle> getClientRects() => wrap_jso(_blink.BlinkRange.instance.getClientRects_Callback_0_(unwrap_jso(this)));
+  List<Rectangle> getClientRects() => _blink.BlinkRange.instance.getClientRects_Callback_0_(this);
   
   @DomName('Range.insertNode')
   @DocsEditable()
-  void insertNode(Node node) => _blink.BlinkRange.instance.insertNode_Callback_1_(unwrap_jso(this), unwrap_jso(node));
+  void insertNode(Node node) => _blink.BlinkRange.instance.insertNode_Callback_1_(this, node);
   
   @DomName('Range.isPointInRange')
   @DocsEditable()
-  bool isPointInRange(Node node, int offset) => _blink.BlinkRange.instance.isPointInRange_Callback_2_(unwrap_jso(this), unwrap_jso(node), offset);
+  bool isPointInRange(Node node, int offset) => _blink.BlinkRange.instance.isPointInRange_Callback_2_(this, node, offset);
   
   @DomName('Range.selectNode')
   @DocsEditable()
-  void selectNode(Node node) => _blink.BlinkRange.instance.selectNode_Callback_1_(unwrap_jso(this), unwrap_jso(node));
+  void selectNode(Node node) => _blink.BlinkRange.instance.selectNode_Callback_1_(this, node);
   
   @DomName('Range.selectNodeContents')
   @DocsEditable()
-  void selectNodeContents(Node node) => _blink.BlinkRange.instance.selectNodeContents_Callback_1_(unwrap_jso(this), unwrap_jso(node));
+  void selectNodeContents(Node node) => _blink.BlinkRange.instance.selectNodeContents_Callback_1_(this, node);
   
   @DomName('Range.setEnd')
   @DocsEditable()
-  void setEnd(Node node, int offset) => _blink.BlinkRange.instance.setEnd_Callback_2_(unwrap_jso(this), unwrap_jso(node), offset);
+  void setEnd(Node node, int offset) => _blink.BlinkRange.instance.setEnd_Callback_2_(this, node, offset);
   
   @DomName('Range.setEndAfter')
   @DocsEditable()
-  void setEndAfter(Node node) => _blink.BlinkRange.instance.setEndAfter_Callback_1_(unwrap_jso(this), unwrap_jso(node));
+  void setEndAfter(Node node) => _blink.BlinkRange.instance.setEndAfter_Callback_1_(this, node);
   
   @DomName('Range.setEndBefore')
   @DocsEditable()
-  void setEndBefore(Node node) => _blink.BlinkRange.instance.setEndBefore_Callback_1_(unwrap_jso(this), unwrap_jso(node));
+  void setEndBefore(Node node) => _blink.BlinkRange.instance.setEndBefore_Callback_1_(this, node);
   
   @DomName('Range.setStart')
   @DocsEditable()
-  void setStart(Node node, int offset) => _blink.BlinkRange.instance.setStart_Callback_2_(unwrap_jso(this), unwrap_jso(node), offset);
+  void setStart(Node node, int offset) => _blink.BlinkRange.instance.setStart_Callback_2_(this, node, offset);
   
   @DomName('Range.setStartAfter')
   @DocsEditable()
-  void setStartAfter(Node node) => _blink.BlinkRange.instance.setStartAfter_Callback_1_(unwrap_jso(this), unwrap_jso(node));
+  void setStartAfter(Node node) => _blink.BlinkRange.instance.setStartAfter_Callback_1_(this, node);
   
   @DomName('Range.setStartBefore')
   @DocsEditable()
-  void setStartBefore(Node node) => _blink.BlinkRange.instance.setStartBefore_Callback_1_(unwrap_jso(this), unwrap_jso(node));
+  void setStartBefore(Node node) => _blink.BlinkRange.instance.setStartBefore_Callback_1_(this, node);
   
   @DomName('Range.surroundContents')
   @DocsEditable()
-  void surroundContents(Node newParent) => _blink.BlinkRange.instance.surroundContents_Callback_1_(unwrap_jso(this), unwrap_jso(newParent));
+  void surroundContents(Node newParent) => _blink.BlinkRange.instance.surroundContents_Callback_1_(this, newParent);
   
 
   /**
@@ -33466,32 +31283,24 @@
   // To suppress missing implicit constructor warnings.
   factory ReadableByteStream._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ReadableByteStream internalCreateReadableByteStream() {
-    return new ReadableByteStream._internalWrap();
-  }
 
-  factory ReadableByteStream._internalWrap() {
-    return new ReadableByteStream.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ReadableByteStream.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   Future cancel([Object reason]) {
     if (reason != null) {
-      return wrap_jso(_blink.BlinkReadableByteStream.instance.cancel_Callback_1_(unwrap_jso(this), reason));
+      return _blink.BlinkReadableByteStream.instance.cancel_Callback_1_(this, reason);
     }
-    return wrap_jso(_blink.BlinkReadableByteStream.instance.cancel_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkReadableByteStream.instance.cancel_Callback_0_(this);
   }
 
   @DomName('ReadableByteStream.getReader')
   @DocsEditable()
   @Experimental() // untriaged
-  ReadableByteStreamReader getReader() => wrap_jso(_blink.BlinkReadableByteStream.instance.getReader_Callback_0_(unwrap_jso(this)));
+  ReadableByteStreamReader getReader() => _blink.BlinkReadableByteStream.instance.getReader_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -33508,42 +31317,34 @@
   // To suppress missing implicit constructor warnings.
   factory ReadableByteStreamReader._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ReadableByteStreamReader internalCreateReadableByteStreamReader() {
-    return new ReadableByteStreamReader._internalWrap();
-  }
 
-  factory ReadableByteStreamReader._internalWrap() {
-    return new ReadableByteStreamReader.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ReadableByteStreamReader.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('ReadableByteStreamReader.closed')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get closed => wrap_jso(_blink.BlinkReadableByteStreamReader.instance.closed_Getter_(unwrap_jso(this)));
+  Future get closed => convertNativePromiseToDartFuture(_blink.BlinkReadableByteStreamReader.instance.closed_Getter_(this));
   
   Future cancel([Object reason]) {
     if (reason != null) {
-      return wrap_jso(_blink.BlinkReadableByteStreamReader.instance.cancel_Callback_1_(unwrap_jso(this), reason));
+      return _blink.BlinkReadableByteStreamReader.instance.cancel_Callback_1_(this, reason);
     }
-    return wrap_jso(_blink.BlinkReadableByteStreamReader.instance.cancel_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkReadableByteStreamReader.instance.cancel_Callback_0_(this);
   }
 
   @DomName('ReadableByteStreamReader.read')
   @DocsEditable()
   @Experimental() // untriaged
-  Future read() => wrap_jso(_blink.BlinkReadableByteStreamReader.instance.read_Callback_0_(unwrap_jso(this)));
+  Future read() => convertNativePromiseToDartFuture(_blink.BlinkReadableByteStreamReader.instance.read_Callback_0_(this));
   
   @DomName('ReadableByteStreamReader.releaseLock')
   @DocsEditable()
   @Experimental() // untriaged
-  void releaseLock() => _blink.BlinkReadableByteStreamReader.instance.releaseLock_Callback_0_(unwrap_jso(this));
+  void releaseLock() => _blink.BlinkReadableByteStreamReader.instance.releaseLock_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -33560,32 +31361,24 @@
   // To suppress missing implicit constructor warnings.
   factory ReadableStream._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ReadableStream internalCreateReadableStream() {
-    return new ReadableStream._internalWrap();
-  }
 
-  factory ReadableStream._internalWrap() {
-    return new ReadableStream.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ReadableStream.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   Future cancel([Object reason]) {
     if (reason != null) {
-      return wrap_jso(_blink.BlinkReadableStream.instance.cancel_Callback_1_(unwrap_jso(this), reason));
+      return _blink.BlinkReadableStream.instance.cancel_Callback_1_(this, reason);
     }
-    return wrap_jso(_blink.BlinkReadableStream.instance.cancel_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkReadableStream.instance.cancel_Callback_0_(this);
   }
 
   @DomName('ReadableStream.getReader')
   @DocsEditable()
   @Experimental() // untriaged
-  ReadableStreamReader getReader() => wrap_jso(_blink.BlinkReadableStream.instance.getReader_Callback_0_(unwrap_jso(this)));
+  ReadableStreamReader getReader() => _blink.BlinkReadableStream.instance.getReader_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -33602,42 +31395,34 @@
   // To suppress missing implicit constructor warnings.
   factory ReadableStreamReader._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ReadableStreamReader internalCreateReadableStreamReader() {
-    return new ReadableStreamReader._internalWrap();
-  }
 
-  factory ReadableStreamReader._internalWrap() {
-    return new ReadableStreamReader.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ReadableStreamReader.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('ReadableStreamReader.closed')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get closed => wrap_jso(_blink.BlinkReadableStreamReader.instance.closed_Getter_(unwrap_jso(this)));
+  Future get closed => convertNativePromiseToDartFuture(_blink.BlinkReadableStreamReader.instance.closed_Getter_(this));
   
   Future cancel([Object reason]) {
     if (reason != null) {
-      return wrap_jso(_blink.BlinkReadableStreamReader.instance.cancel_Callback_1_(unwrap_jso(this), reason));
+      return _blink.BlinkReadableStreamReader.instance.cancel_Callback_1_(this, reason);
     }
-    return wrap_jso(_blink.BlinkReadableStreamReader.instance.cancel_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkReadableStreamReader.instance.cancel_Callback_0_(this);
   }
 
   @DomName('ReadableStreamReader.read')
   @DocsEditable()
   @Experimental() // untriaged
-  Future read() => wrap_jso(_blink.BlinkReadableStreamReader.instance.read_Callback_0_(unwrap_jso(this)));
+  Future read() => convertNativePromiseToDartFuture(_blink.BlinkReadableStreamReader.instance.read_Callback_0_(this));
   
   @DomName('ReadableStreamReader.releaseLock')
   @DocsEditable()
   @Experimental() // untriaged
-  void releaseLock() => _blink.BlinkReadableStreamReader.instance.releaseLock_Callback_0_(unwrap_jso(this));
+  void releaseLock() => _blink.BlinkReadableStreamReader.instance.releaseLock_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -33659,18 +31444,14 @@
   factory RelatedEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkRelatedEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkRelatedEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkRelatedEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkRelatedEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static RelatedEvent internalCreateRelatedEvent() {
-    return new RelatedEvent._internalWrap();
-  }
-
-  external factory RelatedEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   RelatedEvent.internal_() : super.internal_();
@@ -33679,7 +31460,7 @@
   @DomName('RelatedEvent.relatedTarget')
   @DocsEditable()
   @Experimental() // untriaged
-  EventTarget get relatedTarget => wrap_jso(_blink.BlinkRelatedEvent.instance.relatedTarget_Getter_(unwrap_jso(this)));
+  EventTarget get relatedTarget => _blink.BlinkRelatedEvent.instance.relatedTarget_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -33708,11 +31489,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ResourceProgressEvent internalCreateResourceProgressEvent() {
-    return new ResourceProgressEvent._internalWrap();
-  }
-
-  external factory ResourceProgressEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ResourceProgressEvent.internal_() : super.internal_();
@@ -33720,7 +31497,7 @@
 
   @DomName('ResourceProgressEvent.url')
   @DocsEditable()
-  String get url => _blink.BlinkResourceProgressEvent.instance.url_Getter_(unwrap_jso(this));
+  String get url => _blink.BlinkResourceProgressEvent.instance.url_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -33780,11 +31557,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static RtcDataChannel internalCreateRtcDataChannel() {
-    return new RtcDataChannel._internalWrap();
-  }
-
-  external factory RtcDataChannel._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   RtcDataChannel.internal_() : super.internal_();
@@ -33792,77 +31565,77 @@
 
   @DomName('RTCDataChannel.binaryType')
   @DocsEditable()
-  String get binaryType => _blink.BlinkRTCDataChannel.instance.binaryType_Getter_(unwrap_jso(this));
+  String get binaryType => _blink.BlinkRTCDataChannel.instance.binaryType_Getter_(this);
   
   @DomName('RTCDataChannel.binaryType')
   @DocsEditable()
-  set binaryType(String value) => _blink.BlinkRTCDataChannel.instance.binaryType_Setter_(unwrap_jso(this), value);
+  set binaryType(String value) => _blink.BlinkRTCDataChannel.instance.binaryType_Setter_(this, value);
   
   @DomName('RTCDataChannel.bufferedAmount')
   @DocsEditable()
-  int get bufferedAmount => _blink.BlinkRTCDataChannel.instance.bufferedAmount_Getter_(unwrap_jso(this));
+  int get bufferedAmount => _blink.BlinkRTCDataChannel.instance.bufferedAmount_Getter_(this);
   
   @DomName('RTCDataChannel.id')
   @DocsEditable()
   @Experimental() // untriaged
-  int get id => _blink.BlinkRTCDataChannel.instance.id_Getter_(unwrap_jso(this));
+  int get id => _blink.BlinkRTCDataChannel.instance.id_Getter_(this);
   
   @DomName('RTCDataChannel.label')
   @DocsEditable()
-  String get label => _blink.BlinkRTCDataChannel.instance.label_Getter_(unwrap_jso(this));
+  String get label => _blink.BlinkRTCDataChannel.instance.label_Getter_(this);
   
   @DomName('RTCDataChannel.maxRetransmitTime')
   @DocsEditable()
   @Experimental() // untriaged
-  int get maxRetransmitTime => _blink.BlinkRTCDataChannel.instance.maxRetransmitTime_Getter_(unwrap_jso(this));
+  int get maxRetransmitTime => _blink.BlinkRTCDataChannel.instance.maxRetransmitTime_Getter_(this);
   
   @DomName('RTCDataChannel.maxRetransmits')
   @DocsEditable()
   @Experimental() // untriaged
-  int get maxRetransmits => _blink.BlinkRTCDataChannel.instance.maxRetransmits_Getter_(unwrap_jso(this));
+  int get maxRetransmits => _blink.BlinkRTCDataChannel.instance.maxRetransmits_Getter_(this);
   
   @DomName('RTCDataChannel.negotiated')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get negotiated => _blink.BlinkRTCDataChannel.instance.negotiated_Getter_(unwrap_jso(this));
+  bool get negotiated => _blink.BlinkRTCDataChannel.instance.negotiated_Getter_(this);
   
   @DomName('RTCDataChannel.ordered')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get ordered => _blink.BlinkRTCDataChannel.instance.ordered_Getter_(unwrap_jso(this));
+  bool get ordered => _blink.BlinkRTCDataChannel.instance.ordered_Getter_(this);
   
   @DomName('RTCDataChannel.protocol')
   @DocsEditable()
   @Experimental() // untriaged
-  String get protocol => _blink.BlinkRTCDataChannel.instance.protocol_Getter_(unwrap_jso(this));
+  String get protocol => _blink.BlinkRTCDataChannel.instance.protocol_Getter_(this);
   
   @DomName('RTCDataChannel.readyState')
   @DocsEditable()
-  String get readyState => _blink.BlinkRTCDataChannel.instance.readyState_Getter_(unwrap_jso(this));
+  String get readyState => _blink.BlinkRTCDataChannel.instance.readyState_Getter_(this);
   
   @DomName('RTCDataChannel.reliable')
   @DocsEditable()
-  bool get reliable => _blink.BlinkRTCDataChannel.instance.reliable_Getter_(unwrap_jso(this));
+  bool get reliable => _blink.BlinkRTCDataChannel.instance.reliable_Getter_(this);
   
   @DomName('RTCDataChannel.close')
   @DocsEditable()
-  void close() => _blink.BlinkRTCDataChannel.instance.close_Callback_0_(unwrap_jso(this));
+  void close() => _blink.BlinkRTCDataChannel.instance.close_Callback_0_(this);
   
   void send(data) {
     if ((data is String || data == null)) {
-      _blink.BlinkRTCDataChannel.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+      _blink.BlinkRTCDataChannel.instance.send_Callback_1_(this, data);
       return;
     }
     if ((data is Blob || data == null)) {
-      _blink.BlinkRTCDataChannel.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+      _blink.BlinkRTCDataChannel.instance.send_Callback_1_(this, data);
       return;
     }
     if ((data is TypedData || data == null)) {
-      _blink.BlinkRTCDataChannel.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+      _blink.BlinkRTCDataChannel.instance.send_Callback_1_(this, data);
       return;
     }
     if ((data is ByteBuffer || data == null)) {
-      _blink.BlinkRTCDataChannel.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+      _blink.BlinkRTCDataChannel.instance.send_Callback_1_(this, data);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -33870,19 +31643,19 @@
 
   @DomName('RTCDataChannel.sendBlob')
   @DocsEditable()
-  void sendBlob(Blob data) => _blink.BlinkRTCDataChannel.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+  void sendBlob(Blob data) => _blink.BlinkRTCDataChannel.instance.send_Callback_1_(this, data);
   
   @DomName('RTCDataChannel.sendByteBuffer')
   @DocsEditable()
-  void sendByteBuffer(ByteBuffer data) => _blink.BlinkRTCDataChannel.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+  void sendByteBuffer(ByteBuffer data) => _blink.BlinkRTCDataChannel.instance.send_Callback_1_(this, data);
   
   @DomName('RTCDataChannel.sendString')
   @DocsEditable()
-  void sendString(String data) => _blink.BlinkRTCDataChannel.instance.send_Callback_1_(unwrap_jso(this), data);
+  void sendString(String data) => _blink.BlinkRTCDataChannel.instance.send_Callback_1_(this, data);
   
   @DomName('RTCDataChannel.sendTypedData')
   @DocsEditable()
-  void sendTypedData(TypedData data) => _blink.BlinkRTCDataChannel.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+  void sendTypedData(TypedData data) => _blink.BlinkRTCDataChannel.instance.send_Callback_1_(this, data);
   
   /// Stream of `close` events handled by this [RtcDataChannel].
   @DomName('RTCDataChannel.onclose')
@@ -33922,11 +31695,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static RtcDataChannelEvent internalCreateRtcDataChannelEvent() {
-    return new RtcDataChannelEvent._internalWrap();
-  }
-
-  external factory RtcDataChannelEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   RtcDataChannelEvent.internal_() : super.internal_();
@@ -33934,7 +31703,7 @@
 
   @DomName('RTCDataChannelEvent.channel')
   @DocsEditable()
-  RtcDataChannel get channel => wrap_jso(_blink.BlinkRTCDataChannelEvent.instance.channel_Getter_(unwrap_jso(this)));
+  RtcDataChannel get channel => _blink.BlinkRTCDataChannelEvent.instance.channel_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -33964,11 +31733,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static RtcDtmfSender internalCreateRtcDtmfSender() {
-    return new RtcDtmfSender._internalWrap();
-  }
-
-  external factory RtcDtmfSender._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   RtcDtmfSender.internal_() : super.internal_();
@@ -33976,34 +31741,34 @@
 
   @DomName('RTCDTMFSender.canInsertDTMF')
   @DocsEditable()
-  bool get canInsertDtmf => _blink.BlinkRTCDTMFSender.instance.canInsertDTMF_Getter_(unwrap_jso(this));
+  bool get canInsertDtmf => _blink.BlinkRTCDTMFSender.instance.canInsertDTMF_Getter_(this);
   
   @DomName('RTCDTMFSender.duration')
   @DocsEditable()
-  int get duration => _blink.BlinkRTCDTMFSender.instance.duration_Getter_(unwrap_jso(this));
+  int get duration => _blink.BlinkRTCDTMFSender.instance.duration_Getter_(this);
   
   @DomName('RTCDTMFSender.interToneGap')
   @DocsEditable()
-  int get interToneGap => _blink.BlinkRTCDTMFSender.instance.interToneGap_Getter_(unwrap_jso(this));
+  int get interToneGap => _blink.BlinkRTCDTMFSender.instance.interToneGap_Getter_(this);
   
   @DomName('RTCDTMFSender.toneBuffer')
   @DocsEditable()
-  String get toneBuffer => _blink.BlinkRTCDTMFSender.instance.toneBuffer_Getter_(unwrap_jso(this));
+  String get toneBuffer => _blink.BlinkRTCDTMFSender.instance.toneBuffer_Getter_(this);
   
   @DomName('RTCDTMFSender.track')
   @DocsEditable()
-  MediaStreamTrack get track => wrap_jso(_blink.BlinkRTCDTMFSender.instance.track_Getter_(unwrap_jso(this)));
+  MediaStreamTrack get track => _blink.BlinkRTCDTMFSender.instance.track_Getter_(this);
   
   void insertDtmf(String tones, [int duration, int interToneGap]) {
     if (interToneGap != null) {
-      _blink.BlinkRTCDTMFSender.instance.insertDTMF_Callback_3_(unwrap_jso(this), tones, duration, interToneGap);
+      _blink.BlinkRTCDTMFSender.instance.insertDTMF_Callback_3_(this, tones, duration, interToneGap);
       return;
     }
     if (duration != null) {
-      _blink.BlinkRTCDTMFSender.instance.insertDTMF_Callback_2_(unwrap_jso(this), tones, duration);
+      _blink.BlinkRTCDTMFSender.instance.insertDTMF_Callback_2_(this, tones, duration);
       return;
     }
-    _blink.BlinkRTCDTMFSender.instance.insertDTMF_Callback_1_(unwrap_jso(this), tones);
+    _blink.BlinkRTCDTMFSender.instance.insertDTMF_Callback_1_(this, tones);
     return;
   }
 
@@ -34032,16 +31797,12 @@
   @DocsEditable()
   factory RtcDtmfToneChangeEvent(String type, Map eventInitDict) {
     var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-    return wrap_jso(_blink.BlinkRTCDTMFToneChangeEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+    return _blink.BlinkRTCDTMFToneChangeEvent.instance.constructorCallback_2_(type, eventInitDict_1);
   }
 
 
   @Deprecated("Internal Use Only")
-  static RtcDtmfToneChangeEvent internalCreateRtcDtmfToneChangeEvent() {
-    return new RtcDtmfToneChangeEvent._internalWrap();
-  }
-
-  external factory RtcDtmfToneChangeEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   RtcDtmfToneChangeEvent.internal_() : super.internal_();
@@ -34049,7 +31810,7 @@
 
   @DomName('RTCDTMFToneChangeEvent.tone')
   @DocsEditable()
-  String get tone => _blink.BlinkRTCDTMFToneChangeEvent.instance.tone_Getter_(unwrap_jso(this));
+  String get tone => _blink.BlinkRTCDTMFToneChangeEvent.instance.tone_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -34072,47 +31833,39 @@
   @DocsEditable()
   factory RtcIceCandidate(Map candidateInitDict) {
     var candidateInitDict_1 = convertDartToNative_Dictionary(candidateInitDict);
-    return wrap_jso(_blink.BlinkRTCIceCandidate.instance.constructorCallback_1_(candidateInitDict_1));
+    return _blink.BlinkRTCIceCandidate.instance.constructorCallback_1_(candidateInitDict_1);
   }
 
+
   @Deprecated("Internal Use Only")
-  static RtcIceCandidate internalCreateRtcIceCandidate() {
-    return new RtcIceCandidate._internalWrap();
-  }
-
-  factory RtcIceCandidate._internalWrap() {
-    return new RtcIceCandidate.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   RtcIceCandidate.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('RTCIceCandidate.candidate')
   @DocsEditable()
-  String get candidate => _blink.BlinkRTCIceCandidate.instance.candidate_Getter_(unwrap_jso(this));
+  String get candidate => _blink.BlinkRTCIceCandidate.instance.candidate_Getter_(this);
   
   @DomName('RTCIceCandidate.candidate')
   @DocsEditable()
-  set candidate(String value) => _blink.BlinkRTCIceCandidate.instance.candidate_Setter_(unwrap_jso(this), value);
+  set candidate(String value) => _blink.BlinkRTCIceCandidate.instance.candidate_Setter_(this, value);
   
   @DomName('RTCIceCandidate.sdpMLineIndex')
   @DocsEditable()
-  int get sdpMLineIndex => _blink.BlinkRTCIceCandidate.instance.sdpMLineIndex_Getter_(unwrap_jso(this));
+  int get sdpMLineIndex => _blink.BlinkRTCIceCandidate.instance.sdpMLineIndex_Getter_(this);
   
   @DomName('RTCIceCandidate.sdpMLineIndex')
   @DocsEditable()
-  set sdpMLineIndex(int value) => _blink.BlinkRTCIceCandidate.instance.sdpMLineIndex_Setter_(unwrap_jso(this), value);
+  set sdpMLineIndex(int value) => _blink.BlinkRTCIceCandidate.instance.sdpMLineIndex_Setter_(this, value);
   
   @DomName('RTCIceCandidate.sdpMid')
   @DocsEditable()
-  String get sdpMid => _blink.BlinkRTCIceCandidate.instance.sdpMid_Getter_(unwrap_jso(this));
+  String get sdpMid => _blink.BlinkRTCIceCandidate.instance.sdpMid_Getter_(this);
   
   @DomName('RTCIceCandidate.sdpMid')
   @DocsEditable()
-  set sdpMid(String value) => _blink.BlinkRTCIceCandidate.instance.sdpMid_Setter_(unwrap_jso(this), value);
+  set sdpMid(String value) => _blink.BlinkRTCIceCandidate.instance.sdpMid_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -34132,11 +31885,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static RtcIceCandidateEvent internalCreateRtcIceCandidateEvent() {
-    return new RtcIceCandidateEvent._internalWrap();
-  }
-
-  external factory RtcIceCandidateEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   RtcIceCandidateEvent.internal_() : super.internal_();
@@ -34144,7 +31893,7 @@
 
   @DomName('RTCIceCandidateEvent.candidate')
   @DocsEditable()
-  RtcIceCandidate get candidate => wrap_jso(_blink.BlinkRTCIceCandidateEvent.instance.candidate_Getter_(unwrap_jso(this)));
+  RtcIceCandidate get candidate => _blink.BlinkRTCIceCandidateEvent.instance.candidate_Getter_(this);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -34264,19 +32013,15 @@
     if (mediaConstraints != null) {
       var rtcConfiguration_1 = convertDartToNative_Dictionary(rtcConfiguration);
       var mediaConstraints_2 = convertDartToNative_Dictionary(mediaConstraints);
-      return wrap_jso(_blink.BlinkRTCPeerConnection.instance.constructorCallback_2_(rtcConfiguration_1, mediaConstraints_2));
+      return _blink.BlinkRTCPeerConnection.instance.constructorCallback_2_(rtcConfiguration_1, mediaConstraints_2);
     }
     var rtcConfiguration_1 = convertDartToNative_Dictionary(rtcConfiguration);
-    return wrap_jso(_blink.BlinkRTCPeerConnection.instance.constructorCallback_1_(rtcConfiguration_1));
+    return _blink.BlinkRTCPeerConnection.instance.constructorCallback_1_(rtcConfiguration_1);
   }
 
 
   @Deprecated("Internal Use Only")
-  static RtcPeerConnection internalCreateRtcPeerConnection() {
-    return new RtcPeerConnection._internalWrap();
-  }
-
-  external factory RtcPeerConnection._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   RtcPeerConnection.internal_() : super.internal_();
@@ -34284,93 +32029,93 @@
 
   @DomName('RTCPeerConnection.iceConnectionState')
   @DocsEditable()
-  String get iceConnectionState => _blink.BlinkRTCPeerConnection.instance.iceConnectionState_Getter_(unwrap_jso(this));
+  String get iceConnectionState => _blink.BlinkRTCPeerConnection.instance.iceConnectionState_Getter_(this);
   
   @DomName('RTCPeerConnection.iceGatheringState')
   @DocsEditable()
-  String get iceGatheringState => _blink.BlinkRTCPeerConnection.instance.iceGatheringState_Getter_(unwrap_jso(this));
+  String get iceGatheringState => _blink.BlinkRTCPeerConnection.instance.iceGatheringState_Getter_(this);
   
   @DomName('RTCPeerConnection.localDescription')
   @DocsEditable()
-  RtcSessionDescription get localDescription => wrap_jso(_blink.BlinkRTCPeerConnection.instance.localDescription_Getter_(unwrap_jso(this)));
+  RtcSessionDescription get localDescription => _blink.BlinkRTCPeerConnection.instance.localDescription_Getter_(this);
   
   @DomName('RTCPeerConnection.remoteDescription')
   @DocsEditable()
-  RtcSessionDescription get remoteDescription => wrap_jso(_blink.BlinkRTCPeerConnection.instance.remoteDescription_Getter_(unwrap_jso(this)));
+  RtcSessionDescription get remoteDescription => _blink.BlinkRTCPeerConnection.instance.remoteDescription_Getter_(this);
   
   @DomName('RTCPeerConnection.signalingState')
   @DocsEditable()
-  String get signalingState => _blink.BlinkRTCPeerConnection.instance.signalingState_Getter_(unwrap_jso(this));
+  String get signalingState => _blink.BlinkRTCPeerConnection.instance.signalingState_Getter_(this);
   
   @DomName('RTCPeerConnection.addIceCandidate')
   @DocsEditable()
-  void addIceCandidate(RtcIceCandidate candidate, VoidCallback successCallback, _RtcErrorCallback failureCallback) => _blink.BlinkRTCPeerConnection.instance.addIceCandidate_Callback_3_(unwrap_jso(this), unwrap_jso(candidate), unwrap_jso(() => successCallback()), unwrap_jso((errorInformation) => failureCallback(errorInformation)));
+  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.instance.addStream_Callback_2_(unwrap_jso(this), unwrap_jso(stream), convertDartToNative_Dictionary(mediaConstraints));
+      _blink.BlinkRTCPeerConnection.instance.addStream_Callback_2_(this, stream, convertDartToNative_Dictionary(mediaConstraints));
       return;
     }
-    _blink.BlinkRTCPeerConnection.instance.addStream_Callback_1_(unwrap_jso(this), unwrap_jso(stream));
+    _blink.BlinkRTCPeerConnection.instance.addStream_Callback_1_(this, stream);
     return;
   }
 
   @DomName('RTCPeerConnection.close')
   @DocsEditable()
-  void close() => _blink.BlinkRTCPeerConnection.instance.close_Callback_0_(unwrap_jso(this));
+  void close() => _blink.BlinkRTCPeerConnection.instance.close_Callback_0_(this);
   
   void _createAnswer(_RtcSessionDescriptionCallback successCallback, [_RtcErrorCallback failureCallback, Map mediaConstraints]) {
     if (mediaConstraints != null) {
-      _blink.BlinkRTCPeerConnection.instance.createAnswer_Callback_3_(unwrap_jso(this), unwrap_jso((sdp) => successCallback(wrap_jso(sdp))), unwrap_jso((errorInformation) => failureCallback(errorInformation)), convertDartToNative_Dictionary(mediaConstraints));
+      _blink.BlinkRTCPeerConnection.instance.createAnswer_Callback_3_(this, successCallback, failureCallback, convertDartToNative_Dictionary(mediaConstraints));
       return;
     }
-    _blink.BlinkRTCPeerConnection.instance.createAnswer_Callback_2_(unwrap_jso(this), unwrap_jso((sdp) => successCallback(wrap_jso(sdp))), unwrap_jso((errorInformation) => failureCallback(errorInformation)));
+    _blink.BlinkRTCPeerConnection.instance.createAnswer_Callback_2_(this, successCallback, failureCallback);
     return;
   }
 
   @DomName('RTCPeerConnection.createDTMFSender')
   @DocsEditable()
-  RtcDtmfSender createDtmfSender(MediaStreamTrack track) => wrap_jso(_blink.BlinkRTCPeerConnection.instance.createDTMFSender_Callback_1_(unwrap_jso(this), unwrap_jso(track)));
+  RtcDtmfSender createDtmfSender(MediaStreamTrack track) => _blink.BlinkRTCPeerConnection.instance.createDTMFSender_Callback_1_(this, track);
   
   RtcDataChannel createDataChannel(String label, [Map options]) {
     if (options != null) {
-      return wrap_jso(_blink.BlinkRTCPeerConnection.instance.createDataChannel_Callback_2_(unwrap_jso(this), label, convertDartToNative_Dictionary(options)));
+      return _blink.BlinkRTCPeerConnection.instance.createDataChannel_Callback_2_(this, label, convertDartToNative_Dictionary(options));
     }
-    return wrap_jso(_blink.BlinkRTCPeerConnection.instance.createDataChannel_Callback_1_(unwrap_jso(this), label));
+    return _blink.BlinkRTCPeerConnection.instance.createDataChannel_Callback_1_(this, label);
   }
 
   void _createOffer(_RtcSessionDescriptionCallback successCallback, [_RtcErrorCallback failureCallback, Map rtcOfferOptions]) {
     if (rtcOfferOptions != null) {
-      _blink.BlinkRTCPeerConnection.instance.createOffer_Callback_3_(unwrap_jso(this), unwrap_jso((sdp) => successCallback(wrap_jso(sdp))), unwrap_jso((errorInformation) => failureCallback(errorInformation)), convertDartToNative_Dictionary(rtcOfferOptions));
+      _blink.BlinkRTCPeerConnection.instance.createOffer_Callback_3_(this, successCallback, failureCallback, convertDartToNative_Dictionary(rtcOfferOptions));
       return;
     }
-    _blink.BlinkRTCPeerConnection.instance.createOffer_Callback_2_(unwrap_jso(this), unwrap_jso((sdp) => successCallback(wrap_jso(sdp))), unwrap_jso((errorInformation) => failureCallback(errorInformation)));
+    _blink.BlinkRTCPeerConnection.instance.createOffer_Callback_2_(this, successCallback, failureCallback);
     return;
   }
 
   @DomName('RTCPeerConnection.getLocalStreams')
   @DocsEditable()
-  List<MediaStream> getLocalStreams() => wrap_jso(_blink.BlinkRTCPeerConnection.instance.getLocalStreams_Callback_0_(unwrap_jso(this)));
+  List<MediaStream> getLocalStreams() => (_blink.BlinkRTCPeerConnection.instance.getLocalStreams_Callback_0_(this));
   
   @DomName('RTCPeerConnection.getRemoteStreams')
   @DocsEditable()
-  List<MediaStream> getRemoteStreams() => wrap_jso(_blink.BlinkRTCPeerConnection.instance.getRemoteStreams_Callback_0_(unwrap_jso(this)));
+  List<MediaStream> getRemoteStreams() => (_blink.BlinkRTCPeerConnection.instance.getRemoteStreams_Callback_0_(this));
   
   @DomName('RTCPeerConnection.getStats')
   @DocsEditable()
-  void _getStats(RtcStatsCallback successCallback, MediaStreamTrack selector) => _blink.BlinkRTCPeerConnection.instance.getStats_Callback_2_(unwrap_jso(this), unwrap_jso((response) => successCallback(wrap_jso(response))), unwrap_jso(selector));
+  void _getStats(RtcStatsCallback successCallback, MediaStreamTrack selector) => _blink.BlinkRTCPeerConnection.instance.getStats_Callback_2_(this, successCallback, selector);
   
   @DomName('RTCPeerConnection.getStreamById')
   @DocsEditable()
-  MediaStream getStreamById(String streamId) => wrap_jso(_blink.BlinkRTCPeerConnection.instance.getStreamById_Callback_1_(unwrap_jso(this), streamId));
+  MediaStream getStreamById(String streamId) => _blink.BlinkRTCPeerConnection.instance.getStreamById_Callback_1_(this, streamId);
   
   @DomName('RTCPeerConnection.removeStream')
   @DocsEditable()
-  void removeStream(MediaStream stream) => _blink.BlinkRTCPeerConnection.instance.removeStream_Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.setLocalDescription_Callback_3_(unwrap_jso(this), unwrap_jso(description), unwrap_jso(() => successCallback()), unwrap_jso((errorInformation) => failureCallback(errorInformation)));
+  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();
@@ -34382,7 +32127,7 @@
 
   @DomName('RTCPeerConnection.setRemoteDescription')
   @DocsEditable()
-  void _setRemoteDescription(RtcSessionDescription description, [VoidCallback successCallback, _RtcErrorCallback failureCallback]) => _blink.BlinkRTCPeerConnection.instance.setRemoteDescription_Callback_3_(unwrap_jso(this), unwrap_jso(description), unwrap_jso(() => successCallback()), unwrap_jso((errorInformation) => failureCallback(errorInformation)));
+  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();
@@ -34394,14 +32139,14 @@
 
   void updateIce([Map configuration, Map mediaConstraints]) {
     if (mediaConstraints != null) {
-      _blink.BlinkRTCPeerConnection.instance.updateIce_Callback_2_(unwrap_jso(this), convertDartToNative_Dictionary(configuration), convertDartToNative_Dictionary(mediaConstraints));
+      _blink.BlinkRTCPeerConnection.instance.updateIce_Callback_2_(this, convertDartToNative_Dictionary(configuration), convertDartToNative_Dictionary(mediaConstraints));
       return;
     }
     if (configuration != null) {
-      _blink.BlinkRTCPeerConnection.instance.updateIce_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(configuration));
+      _blink.BlinkRTCPeerConnection.instance.updateIce_Callback_1_(this, convertDartToNative_Dictionary(configuration));
       return;
     }
-    _blink.BlinkRTCPeerConnection.instance.updateIce_Callback_0_(unwrap_jso(this));
+    _blink.BlinkRTCPeerConnection.instance.updateIce_Callback_0_(this);
     return;
   }
 
@@ -34462,41 +32207,33 @@
   factory RtcSessionDescription([Map descriptionInitDict]) {
     if (descriptionInitDict != null) {
       var descriptionInitDict_1 = convertDartToNative_Dictionary(descriptionInitDict);
-      return wrap_jso(_blink.BlinkRTCSessionDescription.instance.constructorCallback_1_(descriptionInitDict_1));
+      return _blink.BlinkRTCSessionDescription.instance.constructorCallback_1_(descriptionInitDict_1);
     }
-    return wrap_jso(_blink.BlinkRTCSessionDescription.instance.constructorCallback_0_());
+    return _blink.BlinkRTCSessionDescription.instance.constructorCallback_0_();
   }
 
+
   @Deprecated("Internal Use Only")
-  static RtcSessionDescription internalCreateRtcSessionDescription() {
-    return new RtcSessionDescription._internalWrap();
-  }
-
-  factory RtcSessionDescription._internalWrap() {
-    return new RtcSessionDescription.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   RtcSessionDescription.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('RTCSessionDescription.sdp')
   @DocsEditable()
-  String get sdp => _blink.BlinkRTCSessionDescription.instance.sdp_Getter_(unwrap_jso(this));
+  String get sdp => _blink.BlinkRTCSessionDescription.instance.sdp_Getter_(this);
   
   @DomName('RTCSessionDescription.sdp')
   @DocsEditable()
-  set sdp(String value) => _blink.BlinkRTCSessionDescription.instance.sdp_Setter_(unwrap_jso(this), value);
+  set sdp(String value) => _blink.BlinkRTCSessionDescription.instance.sdp_Setter_(this, value);
   
   @DomName('RTCSessionDescription.type')
   @DocsEditable()
-  String get type => _blink.BlinkRTCSessionDescription.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkRTCSessionDescription.instance.type_Getter_(this);
   
   @DomName('RTCSessionDescription.type')
   @DocsEditable()
-  set type(String value) => _blink.BlinkRTCSessionDescription.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkRTCSessionDescription.instance.type_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -34514,40 +32251,32 @@
   // To suppress missing implicit constructor warnings.
   factory RtcStatsReport._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static RtcStatsReport internalCreateRtcStatsReport() {
-    return new RtcStatsReport._internalWrap();
-  }
 
-  factory RtcStatsReport._internalWrap() {
-    return new RtcStatsReport.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   RtcStatsReport.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('RTCStatsReport.id')
   @DocsEditable()
-  String get id => _blink.BlinkRTCStatsReport.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkRTCStatsReport.instance.id_Getter_(this);
   
   @DomName('RTCStatsReport.timestamp')
   @DocsEditable()
-  DateTime get timestamp => _blink.BlinkRTCStatsReport.instance.timestamp_Getter_(unwrap_jso(this));
+  DateTime get timestamp => _blink.BlinkRTCStatsReport.instance.timestamp_Getter_(this);
   
   @DomName('RTCStatsReport.type')
   @DocsEditable()
-  String get type => _blink.BlinkRTCStatsReport.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkRTCStatsReport.instance.type_Getter_(this);
   
   @DomName('RTCStatsReport.names')
   @DocsEditable()
-  List<String> names() => _blink.BlinkRTCStatsReport.instance.names_Callback_0_(unwrap_jso(this));
+  List<String> names() => _blink.BlinkRTCStatsReport.instance.names_Callback_0_(this);
   
   @DomName('RTCStatsReport.stat')
   @DocsEditable()
-  String stat(String name) => _blink.BlinkRTCStatsReport.instance.stat_Callback_1_(unwrap_jso(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
@@ -34565,34 +32294,26 @@
   // To suppress missing implicit constructor warnings.
   factory RtcStatsResponse._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static RtcStatsResponse internalCreateRtcStatsResponse() {
-    return new RtcStatsResponse._internalWrap();
-  }
 
-  factory RtcStatsResponse._internalWrap() {
-    return new RtcStatsResponse.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   RtcStatsResponse.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   RtcStatsReport namedItem(String name) {
     if ((name is String || name == null)) {
-      return wrap_jso(_blink.BlinkRTCStatsResponse.instance.namedItem_Callback_1_(unwrap_jso(this), name));
+      return _blink.BlinkRTCStatsResponse.instance.namedItem_Callback_1_(this, name);
     }
     if ((name is String || name == null)) {
-      return wrap_jso(_blink.BlinkRTCStatsResponse.instance.namedItem_Callback_1_(unwrap_jso(this), name));
+      return _blink.BlinkRTCStatsResponse.instance.namedItem_Callback_1_(this, name);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   @DomName('RTCStatsResponse.result')
   @DocsEditable()
-  List<RtcStatsReport> result() => wrap_jso(_blink.BlinkRTCStatsResponse.instance.result_Callback_0_(unwrap_jso(this)));
+  List<RtcStatsReport> result() => _blink.BlinkRTCStatsResponse.instance.result_Callback_0_(this);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -34613,59 +32334,51 @@
   // To suppress missing implicit constructor warnings.
   factory Screen._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Screen internalCreateScreen() {
-    return new Screen._internalWrap();
-  }
 
-  factory Screen._internalWrap() {
-    return new Screen.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Screen.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Screen.availHeight')
   @DocsEditable()
-  int get _availHeight => _blink.BlinkScreen.instance.availHeight_Getter_(unwrap_jso(this));
+  int get _availHeight => _blink.BlinkScreen.instance.availHeight_Getter_(this);
   
   @DomName('Screen.availLeft')
   @DocsEditable()
   @Experimental() // nonstandard
-  int get _availLeft => _blink.BlinkScreen.instance.availLeft_Getter_(unwrap_jso(this));
+  int get _availLeft => _blink.BlinkScreen.instance.availLeft_Getter_(this);
   
   @DomName('Screen.availTop')
   @DocsEditable()
   @Experimental() // nonstandard
-  int get _availTop => _blink.BlinkScreen.instance.availTop_Getter_(unwrap_jso(this));
+  int get _availTop => _blink.BlinkScreen.instance.availTop_Getter_(this);
   
   @DomName('Screen.availWidth')
   @DocsEditable()
-  int get _availWidth => _blink.BlinkScreen.instance.availWidth_Getter_(unwrap_jso(this));
+  int get _availWidth => _blink.BlinkScreen.instance.availWidth_Getter_(this);
   
   @DomName('Screen.colorDepth')
   @DocsEditable()
-  int get colorDepth => _blink.BlinkScreen.instance.colorDepth_Getter_(unwrap_jso(this));
+  int get colorDepth => _blink.BlinkScreen.instance.colorDepth_Getter_(this);
   
   @DomName('Screen.height')
   @DocsEditable()
-  int get height => _blink.BlinkScreen.instance.height_Getter_(unwrap_jso(this));
+  int get height => _blink.BlinkScreen.instance.height_Getter_(this);
   
   @DomName('Screen.orientation')
   @DocsEditable()
   @Experimental() // untriaged
-  ScreenOrientation get orientation => wrap_jso(_blink.BlinkScreen.instance.orientation_Getter_(unwrap_jso(this)));
+  ScreenOrientation get orientation => _blink.BlinkScreen.instance.orientation_Getter_(this);
   
   @DomName('Screen.pixelDepth')
   @DocsEditable()
-  int get pixelDepth => _blink.BlinkScreen.instance.pixelDepth_Getter_(unwrap_jso(this));
+  int get pixelDepth => _blink.BlinkScreen.instance.pixelDepth_Getter_(this);
   
   @DomName('Screen.width')
   @DocsEditable()
-  int get width => _blink.BlinkScreen.instance.width_Getter_(unwrap_jso(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
@@ -34688,11 +32401,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ScreenOrientation internalCreateScreenOrientation() {
-    return new ScreenOrientation._internalWrap();
-  }
-
-  external factory ScreenOrientation._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ScreenOrientation.internal_() : super.internal_();
@@ -34701,22 +32410,22 @@
   @DomName('ScreenOrientation.angle')
   @DocsEditable()
   @Experimental() // untriaged
-  int get angle => _blink.BlinkScreenOrientation.instance.angle_Getter_(unwrap_jso(this));
+  int get angle => _blink.BlinkScreenOrientation.instance.angle_Getter_(this);
   
   @DomName('ScreenOrientation.type')
   @DocsEditable()
   @Experimental() // untriaged
-  String get type => _blink.BlinkScreenOrientation.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkScreenOrientation.instance.type_Getter_(this);
   
   @DomName('ScreenOrientation.lock')
   @DocsEditable()
   @Experimental() // untriaged
-  Future lock(String orientation) => wrap_jso(_blink.BlinkScreenOrientation.instance.lock_Callback_1_(unwrap_jso(this), orientation));
+  Future lock(String orientation) => convertNativePromiseToDartFuture(_blink.BlinkScreenOrientation.instance.lock_Callback_1_(this, orientation));
   
   @DomName('ScreenOrientation.unlock')
   @DocsEditable()
   @Experimental() // untriaged
-  void unlock() => _blink.BlinkScreenOrientation.instance.unlock_Callback_0_(unwrap_jso(this));
+  void unlock() => _blink.BlinkScreenOrientation.instance.unlock_Callback_0_(this);
   
   @DomName('ScreenOrientation.onchange')
   @DocsEditable()
@@ -34743,11 +32452,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ScriptElement internalCreateScriptElement() {
-    return new ScriptElement._internalWrap();
-  }
-
-  external factory ScriptElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ScriptElement.internal_() : super.internal_();
@@ -34761,77 +32466,77 @@
 
   @DomName('HTMLScriptElement.async')
   @DocsEditable()
-  bool get async => _blink.BlinkHTMLScriptElement.instance.async_Getter_(unwrap_jso(this));
+  bool get async => _blink.BlinkHTMLScriptElement.instance.async_Getter_(this);
   
   @DomName('HTMLScriptElement.async')
   @DocsEditable()
-  set async(bool value) => _blink.BlinkHTMLScriptElement.instance.async_Setter_(unwrap_jso(this), value);
+  set async(bool value) => _blink.BlinkHTMLScriptElement.instance.async_Setter_(this, value);
   
   @DomName('HTMLScriptElement.charset')
   @DocsEditable()
-  String get charset => _blink.BlinkHTMLScriptElement.instance.charset_Getter_(unwrap_jso(this));
+  String get charset => _blink.BlinkHTMLScriptElement.instance.charset_Getter_(this);
   
   @DomName('HTMLScriptElement.charset')
   @DocsEditable()
-  set charset(String value) => _blink.BlinkHTMLScriptElement.instance.charset_Setter_(unwrap_jso(this), value);
+  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.instance.crossOrigin_Getter_(unwrap_jso(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()
-  set crossOrigin(String value) => _blink.BlinkHTMLScriptElement.instance.crossOrigin_Setter_(unwrap_jso(this), value);
+  set crossOrigin(String value) => _blink.BlinkHTMLScriptElement.instance.crossOrigin_Setter_(this, value);
   
   @DomName('HTMLScriptElement.defer')
   @DocsEditable()
-  bool get defer => _blink.BlinkHTMLScriptElement.instance.defer_Getter_(unwrap_jso(this));
+  bool get defer => _blink.BlinkHTMLScriptElement.instance.defer_Getter_(this);
   
   @DomName('HTMLScriptElement.defer')
   @DocsEditable()
-  set defer(bool value) => _blink.BlinkHTMLScriptElement.instance.defer_Setter_(unwrap_jso(this), value);
+  set defer(bool value) => _blink.BlinkHTMLScriptElement.instance.defer_Setter_(this, value);
   
   @DomName('HTMLScriptElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  String get integrity => _blink.BlinkHTMLScriptElement.instance.integrity_Getter_(unwrap_jso(this));
+  String get integrity => _blink.BlinkHTMLScriptElement.instance.integrity_Getter_(this);
   
   @DomName('HTMLScriptElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  set integrity(String value) => _blink.BlinkHTMLScriptElement.instance.integrity_Setter_(unwrap_jso(this), value);
+  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.instance.nonce_Getter_(unwrap_jso(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()
-  set nonce(String value) => _blink.BlinkHTMLScriptElement.instance.nonce_Setter_(unwrap_jso(this), value);
+  set nonce(String value) => _blink.BlinkHTMLScriptElement.instance.nonce_Setter_(this, value);
   
   @DomName('HTMLScriptElement.src')
   @DocsEditable()
-  String get src => _blink.BlinkHTMLScriptElement.instance.src_Getter_(unwrap_jso(this));
+  String get src => _blink.BlinkHTMLScriptElement.instance.src_Getter_(this);
   
   @DomName('HTMLScriptElement.src')
   @DocsEditable()
-  set src(String value) => _blink.BlinkHTMLScriptElement.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkHTMLScriptElement.instance.src_Setter_(this, value);
   
   @DomName('HTMLScriptElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLScriptElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLScriptElement.instance.type_Getter_(this);
   
   @DomName('HTMLScriptElement.type')
   @DocsEditable()
-  set type(String value) => _blink.BlinkHTMLScriptElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLScriptElement.instance.type_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -34852,101 +32557,93 @@
   @DocsEditable()
   factory ScrollState([num deltaX, num deltaY, num deltaGranularity, num velocityX, num velocityY, bool inInertialPhase, bool isBeginning, bool isEnding]) {
     if (isEnding != null) {
-      return wrap_jso(_blink.BlinkScrollState.instance.constructorCallback_8_(deltaX, deltaY, deltaGranularity, velocityX, velocityY, inInertialPhase, isBeginning, isEnding));
+      return _blink.BlinkScrollState.instance.constructorCallback_8_(deltaX, deltaY, deltaGranularity, velocityX, velocityY, inInertialPhase, isBeginning, isEnding);
     }
     if (isBeginning != null) {
-      return wrap_jso(_blink.BlinkScrollState.instance.constructorCallback_7_(deltaX, deltaY, deltaGranularity, velocityX, velocityY, inInertialPhase, isBeginning));
+      return _blink.BlinkScrollState.instance.constructorCallback_7_(deltaX, deltaY, deltaGranularity, velocityX, velocityY, inInertialPhase, isBeginning);
     }
     if (inInertialPhase != null) {
-      return wrap_jso(_blink.BlinkScrollState.instance.constructorCallback_6_(deltaX, deltaY, deltaGranularity, velocityX, velocityY, inInertialPhase));
+      return _blink.BlinkScrollState.instance.constructorCallback_6_(deltaX, deltaY, deltaGranularity, velocityX, velocityY, inInertialPhase);
     }
     if (velocityY != null) {
-      return wrap_jso(_blink.BlinkScrollState.instance.constructorCallback_5_(deltaX, deltaY, deltaGranularity, velocityX, velocityY));
+      return _blink.BlinkScrollState.instance.constructorCallback_5_(deltaX, deltaY, deltaGranularity, velocityX, velocityY);
     }
     if (velocityX != null) {
-      return wrap_jso(_blink.BlinkScrollState.instance.constructorCallback_4_(deltaX, deltaY, deltaGranularity, velocityX));
+      return _blink.BlinkScrollState.instance.constructorCallback_4_(deltaX, deltaY, deltaGranularity, velocityX);
     }
     if (deltaGranularity != null) {
-      return wrap_jso(_blink.BlinkScrollState.instance.constructorCallback_3_(deltaX, deltaY, deltaGranularity));
+      return _blink.BlinkScrollState.instance.constructorCallback_3_(deltaX, deltaY, deltaGranularity);
     }
     if (deltaY != null) {
-      return wrap_jso(_blink.BlinkScrollState.instance.constructorCallback_2_(deltaX, deltaY));
+      return _blink.BlinkScrollState.instance.constructorCallback_2_(deltaX, deltaY);
     }
     if (deltaX != null) {
-      return wrap_jso(_blink.BlinkScrollState.instance.constructorCallback_1_(deltaX));
+      return _blink.BlinkScrollState.instance.constructorCallback_1_(deltaX);
     }
-    return wrap_jso(_blink.BlinkScrollState.instance.constructorCallback_0_());
+    return _blink.BlinkScrollState.instance.constructorCallback_0_();
   }
 
+
   @Deprecated("Internal Use Only")
-  static ScrollState internalCreateScrollState() {
-    return new ScrollState._internalWrap();
-  }
-
-  factory ScrollState._internalWrap() {
-    return new ScrollState.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ScrollState.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('ScrollState.deltaGranularity')
   @DocsEditable()
   @Experimental() // untriaged
-  num get deltaGranularity => _blink.BlinkScrollState.instance.deltaGranularity_Getter_(unwrap_jso(this));
+  num get deltaGranularity => _blink.BlinkScrollState.instance.deltaGranularity_Getter_(this);
   
   @DomName('ScrollState.deltaX')
   @DocsEditable()
   @Experimental() // untriaged
-  num get deltaX => _blink.BlinkScrollState.instance.deltaX_Getter_(unwrap_jso(this));
+  num get deltaX => _blink.BlinkScrollState.instance.deltaX_Getter_(this);
   
   @DomName('ScrollState.deltaY')
   @DocsEditable()
   @Experimental() // untriaged
-  num get deltaY => _blink.BlinkScrollState.instance.deltaY_Getter_(unwrap_jso(this));
+  num get deltaY => _blink.BlinkScrollState.instance.deltaY_Getter_(this);
   
   @DomName('ScrollState.fromUserInput')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get fromUserInput => _blink.BlinkScrollState.instance.fromUserInput_Getter_(unwrap_jso(this));
+  bool get fromUserInput => _blink.BlinkScrollState.instance.fromUserInput_Getter_(this);
   
   @DomName('ScrollState.inInertialPhase')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get inInertialPhase => _blink.BlinkScrollState.instance.inInertialPhase_Getter_(unwrap_jso(this));
+  bool get inInertialPhase => _blink.BlinkScrollState.instance.inInertialPhase_Getter_(this);
   
   @DomName('ScrollState.isBeginning')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get isBeginning => _blink.BlinkScrollState.instance.isBeginning_Getter_(unwrap_jso(this));
+  bool get isBeginning => _blink.BlinkScrollState.instance.isBeginning_Getter_(this);
   
   @DomName('ScrollState.isEnding')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get isEnding => _blink.BlinkScrollState.instance.isEnding_Getter_(unwrap_jso(this));
+  bool get isEnding => _blink.BlinkScrollState.instance.isEnding_Getter_(this);
   
   @DomName('ScrollState.shouldPropagate')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get shouldPropagate => _blink.BlinkScrollState.instance.shouldPropagate_Getter_(unwrap_jso(this));
+  bool get shouldPropagate => _blink.BlinkScrollState.instance.shouldPropagate_Getter_(this);
   
   @DomName('ScrollState.velocityX')
   @DocsEditable()
   @Experimental() // untriaged
-  num get velocityX => _blink.BlinkScrollState.instance.velocityX_Getter_(unwrap_jso(this));
+  num get velocityX => _blink.BlinkScrollState.instance.velocityX_Getter_(this);
   
   @DomName('ScrollState.velocityY')
   @DocsEditable()
   @Experimental() // untriaged
-  num get velocityY => _blink.BlinkScrollState.instance.velocityY_Getter_(unwrap_jso(this));
+  num get velocityY => _blink.BlinkScrollState.instance.velocityY_Getter_(this);
   
   @DomName('ScrollState.consumeDelta')
   @DocsEditable()
   @Experimental() // untriaged
-  void consumeDelta(num x, num y) => _blink.BlinkScrollState.instance.consumeDelta_Callback_2_(unwrap_jso(this), x, y);
+  void consumeDelta(num x, num y) => _blink.BlinkScrollState.instance.consumeDelta_Callback_2_(this, x, y);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -34969,18 +32666,14 @@
   factory SecurityPolicyViolationEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkSecurityPolicyViolationEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkSecurityPolicyViolationEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkSecurityPolicyViolationEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkSecurityPolicyViolationEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static SecurityPolicyViolationEvent internalCreateSecurityPolicyViolationEvent() {
-    return new SecurityPolicyViolationEvent._internalWrap();
-  }
-
-  external factory SecurityPolicyViolationEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SecurityPolicyViolationEvent.internal_() : super.internal_();
@@ -34988,44 +32681,44 @@
 
   @DomName('SecurityPolicyViolationEvent.blockedURI')
   @DocsEditable()
-  String get blockedUri => _blink.BlinkSecurityPolicyViolationEvent.instance.blockedURI_Getter_(unwrap_jso(this));
+  String get blockedUri => _blink.BlinkSecurityPolicyViolationEvent.instance.blockedURI_Getter_(this);
   
   @DomName('SecurityPolicyViolationEvent.columnNumber')
   @DocsEditable()
-  int get columnNumber => _blink.BlinkSecurityPolicyViolationEvent.instance.columnNumber_Getter_(unwrap_jso(this));
+  int get columnNumber => _blink.BlinkSecurityPolicyViolationEvent.instance.columnNumber_Getter_(this);
   
   @DomName('SecurityPolicyViolationEvent.documentURI')
   @DocsEditable()
-  String get documentUri => _blink.BlinkSecurityPolicyViolationEvent.instance.documentURI_Getter_(unwrap_jso(this));
+  String get documentUri => _blink.BlinkSecurityPolicyViolationEvent.instance.documentURI_Getter_(this);
   
   @DomName('SecurityPolicyViolationEvent.effectiveDirective')
   @DocsEditable()
-  String get effectiveDirective => _blink.BlinkSecurityPolicyViolationEvent.instance.effectiveDirective_Getter_(unwrap_jso(this));
+  String get effectiveDirective => _blink.BlinkSecurityPolicyViolationEvent.instance.effectiveDirective_Getter_(this);
   
   @DomName('SecurityPolicyViolationEvent.lineNumber')
   @DocsEditable()
-  int get lineNumber => _blink.BlinkSecurityPolicyViolationEvent.instance.lineNumber_Getter_(unwrap_jso(this));
+  int get lineNumber => _blink.BlinkSecurityPolicyViolationEvent.instance.lineNumber_Getter_(this);
   
   @DomName('SecurityPolicyViolationEvent.originalPolicy')
   @DocsEditable()
-  String get originalPolicy => _blink.BlinkSecurityPolicyViolationEvent.instance.originalPolicy_Getter_(unwrap_jso(this));
+  String get originalPolicy => _blink.BlinkSecurityPolicyViolationEvent.instance.originalPolicy_Getter_(this);
   
   @DomName('SecurityPolicyViolationEvent.referrer')
   @DocsEditable()
-  String get referrer => _blink.BlinkSecurityPolicyViolationEvent.instance.referrer_Getter_(unwrap_jso(this));
+  String get referrer => _blink.BlinkSecurityPolicyViolationEvent.instance.referrer_Getter_(this);
   
   @DomName('SecurityPolicyViolationEvent.sourceFile')
   @DocsEditable()
-  String get sourceFile => _blink.BlinkSecurityPolicyViolationEvent.instance.sourceFile_Getter_(unwrap_jso(this));
+  String get sourceFile => _blink.BlinkSecurityPolicyViolationEvent.instance.sourceFile_Getter_(this);
   
   @DomName('SecurityPolicyViolationEvent.statusCode')
   @DocsEditable()
   @Experimental() // untriaged
-  int get statusCode => _blink.BlinkSecurityPolicyViolationEvent.instance.statusCode_Getter_(unwrap_jso(this));
+  int get statusCode => _blink.BlinkSecurityPolicyViolationEvent.instance.statusCode_Getter_(this);
   
   @DomName('SecurityPolicyViolationEvent.violatedDirective')
   @DocsEditable()
-  String get violatedDirective => _blink.BlinkSecurityPolicyViolationEvent.instance.violatedDirective_Getter_(unwrap_jso(this));
+  String get violatedDirective => _blink.BlinkSecurityPolicyViolationEvent.instance.violatedDirective_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35044,11 +32737,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static SelectElement internalCreateSelectElement() {
-    return new SelectElement._internalWrap();
-  }
-
-  external factory SelectElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SelectElement.internal_() : super.internal_();
@@ -35062,130 +32751,130 @@
 
   @DomName('HTMLSelectElement.autofocus')
   @DocsEditable()
-  bool get autofocus => _blink.BlinkHTMLSelectElement.instance.autofocus_Getter_(unwrap_jso(this));
+  bool get autofocus => _blink.BlinkHTMLSelectElement.instance.autofocus_Getter_(this);
   
   @DomName('HTMLSelectElement.autofocus')
   @DocsEditable()
-  set autofocus(bool value) => _blink.BlinkHTMLSelectElement.instance.autofocus_Setter_(unwrap_jso(this), value);
+  set autofocus(bool value) => _blink.BlinkHTMLSelectElement.instance.autofocus_Setter_(this, value);
   
   @DomName('HTMLSelectElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLSelectElement.instance.disabled_Getter_(unwrap_jso(this));
+  bool get disabled => _blink.BlinkHTMLSelectElement.instance.disabled_Getter_(this);
   
   @DomName('HTMLSelectElement.disabled')
   @DocsEditable()
-  set disabled(bool value) => _blink.BlinkHTMLSelectElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLSelectElement.instance.disabled_Setter_(this, value);
   
   @DomName('HTMLSelectElement.form')
   @DocsEditable()
-  FormElement get form => wrap_jso(_blink.BlinkHTMLSelectElement.instance.form_Getter_(unwrap_jso(this)));
+  FormElement get form => _blink.BlinkHTMLSelectElement.instance.form_Getter_(this);
   
   @DomName('HTMLSelectElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => wrap_jso(_blink.BlinkHTMLSelectElement.instance.labels_Getter_(unwrap_jso(this)));
+  List<Node> get labels => (_blink.BlinkHTMLSelectElement.instance.labels_Getter_(this));
   
   @DomName('HTMLSelectElement.length')
   @DocsEditable()
-  int get length => _blink.BlinkHTMLSelectElement.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkHTMLSelectElement.instance.length_Getter_(this);
   
   @DomName('HTMLSelectElement.length')
   @DocsEditable()
-  set length(int value) => _blink.BlinkHTMLSelectElement.instance.length_Setter_(unwrap_jso(this), value);
+  set length(int value) => _blink.BlinkHTMLSelectElement.instance.length_Setter_(this, value);
   
   @DomName('HTMLSelectElement.multiple')
   @DocsEditable()
-  bool get multiple => _blink.BlinkHTMLSelectElement.instance.multiple_Getter_(unwrap_jso(this));
+  bool get multiple => _blink.BlinkHTMLSelectElement.instance.multiple_Getter_(this);
   
   @DomName('HTMLSelectElement.multiple')
   @DocsEditable()
-  set multiple(bool value) => _blink.BlinkHTMLSelectElement.instance.multiple_Setter_(unwrap_jso(this), value);
+  set multiple(bool value) => _blink.BlinkHTMLSelectElement.instance.multiple_Setter_(this, value);
   
   @DomName('HTMLSelectElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLSelectElement.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkHTMLSelectElement.instance.name_Getter_(this);
   
   @DomName('HTMLSelectElement.name')
   @DocsEditable()
-  set name(String value) => _blink.BlinkHTMLSelectElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLSelectElement.instance.name_Setter_(this, value);
   
   @DomName('HTMLSelectElement.required')
   @DocsEditable()
-  bool get required => _blink.BlinkHTMLSelectElement.instance.required_Getter_(unwrap_jso(this));
+  bool get required => _blink.BlinkHTMLSelectElement.instance.required_Getter_(this);
   
   @DomName('HTMLSelectElement.required')
   @DocsEditable()
-  set required(bool value) => _blink.BlinkHTMLSelectElement.instance.required_Setter_(unwrap_jso(this), value);
+  set required(bool value) => _blink.BlinkHTMLSelectElement.instance.required_Setter_(this, value);
   
   @DomName('HTMLSelectElement.selectedIndex')
   @DocsEditable()
-  int get selectedIndex => _blink.BlinkHTMLSelectElement.instance.selectedIndex_Getter_(unwrap_jso(this));
+  int get selectedIndex => _blink.BlinkHTMLSelectElement.instance.selectedIndex_Getter_(this);
   
   @DomName('HTMLSelectElement.selectedIndex')
   @DocsEditable()
-  set selectedIndex(int value) => _blink.BlinkHTMLSelectElement.instance.selectedIndex_Setter_(unwrap_jso(this), value);
+  set selectedIndex(int value) => _blink.BlinkHTMLSelectElement.instance.selectedIndex_Setter_(this, value);
   
   @DomName('HTMLSelectElement.size')
   @DocsEditable()
-  int get size => _blink.BlinkHTMLSelectElement.instance.size_Getter_(unwrap_jso(this));
+  int get size => _blink.BlinkHTMLSelectElement.instance.size_Getter_(this);
   
   @DomName('HTMLSelectElement.size')
   @DocsEditable()
-  set size(int value) => _blink.BlinkHTMLSelectElement.instance.size_Setter_(unwrap_jso(this), value);
+  set size(int value) => _blink.BlinkHTMLSelectElement.instance.size_Setter_(this, value);
   
   @DomName('HTMLSelectElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLSelectElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLSelectElement.instance.type_Getter_(this);
   
   @DomName('HTMLSelectElement.validationMessage')
   @DocsEditable()
-  String get validationMessage => _blink.BlinkHTMLSelectElement.instance.validationMessage_Getter_(unwrap_jso(this));
+  String get validationMessage => _blink.BlinkHTMLSelectElement.instance.validationMessage_Getter_(this);
   
   @DomName('HTMLSelectElement.validity')
   @DocsEditable()
-  ValidityState get validity => wrap_jso(_blink.BlinkHTMLSelectElement.instance.validity_Getter_(unwrap_jso(this)));
+  ValidityState get validity => _blink.BlinkHTMLSelectElement.instance.validity_Getter_(this);
   
   @DomName('HTMLSelectElement.value')
   @DocsEditable()
-  String get value => _blink.BlinkHTMLSelectElement.instance.value_Getter_(unwrap_jso(this));
+  String get value => _blink.BlinkHTMLSelectElement.instance.value_Getter_(this);
   
   @DomName('HTMLSelectElement.value')
   @DocsEditable()
-  set value(String value) => _blink.BlinkHTMLSelectElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkHTMLSelectElement.instance.value_Setter_(this, value);
   
   @DomName('HTMLSelectElement.willValidate')
   @DocsEditable()
-  bool get willValidate => _blink.BlinkHTMLSelectElement.instance.willValidate_Getter_(unwrap_jso(this));
+  bool get willValidate => _blink.BlinkHTMLSelectElement.instance.willValidate_Getter_(this);
   
   @DomName('HTMLSelectElement.__setter__')
   @DocsEditable()
-  void __setter__(int index, OptionElement option) => _blink.BlinkHTMLSelectElement.instance.$__setter___Callback_2_(unwrap_jso(this), index, unwrap_jso(option));
+  void __setter__(int index, OptionElement option) => _blink.BlinkHTMLSelectElement.instance.$__setter___Callback_2_(this, index, option);
   
   @DomName('HTMLSelectElement.add')
   @DocsEditable()
   @Experimental() // untriaged
-  void add(Object element, Object before) => _blink.BlinkHTMLSelectElement.instance.add_Callback_2_(unwrap_jso(this), element, before);
+  void add(Object element, Object before) => _blink.BlinkHTMLSelectElement.instance.add_Callback_2_(this, element, before);
   
   @DomName('HTMLSelectElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLSelectElement.instance.checkValidity_Callback_0_(unwrap_jso(this));
+  bool checkValidity() => _blink.BlinkHTMLSelectElement.instance.checkValidity_Callback_0_(this);
   
   @DomName('HTMLSelectElement.item')
   @DocsEditable()
-  Element item(int index) => wrap_jso(_blink.BlinkHTMLSelectElement.instance.item_Callback_1_(unwrap_jso(this), index));
+  Element item(int index) => _blink.BlinkHTMLSelectElement.instance.item_Callback_1_(this, index);
   
   @DomName('HTMLSelectElement.namedItem')
   @DocsEditable()
-  OptionElement namedItem(String name) => wrap_jso(_blink.BlinkHTMLSelectElement.instance.namedItem_Callback_1_(unwrap_jso(this), name));
+  OptionElement namedItem(String name) => _blink.BlinkHTMLSelectElement.instance.namedItem_Callback_1_(this, name);
   
   @DomName('HTMLSelectElement.reportValidity')
   @DocsEditable()
   @Experimental() // untriaged
-  bool reportValidity() => _blink.BlinkHTMLSelectElement.instance.reportValidity_Callback_0_(unwrap_jso(this));
+  bool reportValidity() => _blink.BlinkHTMLSelectElement.instance.reportValidity_Callback_0_(this);
   
   @DomName('HTMLSelectElement.setCustomValidity')
   @DocsEditable()
-  void setCustomValidity(String error) => _blink.BlinkHTMLSelectElement.instance.setCustomValidity_Callback_1_(unwrap_jso(this), error);
+  void setCustomValidity(String error) => _blink.BlinkHTMLSelectElement.instance.setCustomValidity_Callback_1_(this, error);
   
 
   // Override default options, since IE returns SelectElement itself and it
@@ -35219,142 +32908,134 @@
   // To suppress missing implicit constructor warnings.
   factory Selection._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Selection internalCreateSelection() {
-    return new Selection._internalWrap();
-  }
 
-  factory Selection._internalWrap() {
-    return new Selection.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Selection.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Selection.anchorNode')
   @DocsEditable()
-  Node get anchorNode => wrap_jso(_blink.BlinkSelection.instance.anchorNode_Getter_(unwrap_jso(this)));
+  Node get anchorNode => _blink.BlinkSelection.instance.anchorNode_Getter_(this);
   
   @DomName('Selection.anchorOffset')
   @DocsEditable()
-  int get anchorOffset => _blink.BlinkSelection.instance.anchorOffset_Getter_(unwrap_jso(this));
+  int get anchorOffset => _blink.BlinkSelection.instance.anchorOffset_Getter_(this);
   
   @DomName('Selection.baseNode')
   @DocsEditable()
   @Experimental() // non-standard
-  Node get baseNode => wrap_jso(_blink.BlinkSelection.instance.baseNode_Getter_(unwrap_jso(this)));
+  Node get baseNode => _blink.BlinkSelection.instance.baseNode_Getter_(this);
   
   @DomName('Selection.baseOffset')
   @DocsEditable()
   @Experimental() // non-standard
-  int get baseOffset => _blink.BlinkSelection.instance.baseOffset_Getter_(unwrap_jso(this));
+  int get baseOffset => _blink.BlinkSelection.instance.baseOffset_Getter_(this);
   
   @DomName('Selection.extentNode')
   @DocsEditable()
   @Experimental() // non-standard
-  Node get extentNode => wrap_jso(_blink.BlinkSelection.instance.extentNode_Getter_(unwrap_jso(this)));
+  Node get extentNode => _blink.BlinkSelection.instance.extentNode_Getter_(this);
   
   @DomName('Selection.extentOffset')
   @DocsEditable()
   @Experimental() // non-standard
-  int get extentOffset => _blink.BlinkSelection.instance.extentOffset_Getter_(unwrap_jso(this));
+  int get extentOffset => _blink.BlinkSelection.instance.extentOffset_Getter_(this);
   
   @DomName('Selection.focusNode')
   @DocsEditable()
-  Node get focusNode => wrap_jso(_blink.BlinkSelection.instance.focusNode_Getter_(unwrap_jso(this)));
+  Node get focusNode => _blink.BlinkSelection.instance.focusNode_Getter_(this);
   
   @DomName('Selection.focusOffset')
   @DocsEditable()
-  int get focusOffset => _blink.BlinkSelection.instance.focusOffset_Getter_(unwrap_jso(this));
+  int get focusOffset => _blink.BlinkSelection.instance.focusOffset_Getter_(this);
   
   @DomName('Selection.isCollapsed')
   @DocsEditable()
-  bool get isCollapsed => _blink.BlinkSelection.instance.isCollapsed_Getter_(unwrap_jso(this));
+  bool get isCollapsed => _blink.BlinkSelection.instance.isCollapsed_Getter_(this);
   
   @DomName('Selection.rangeCount')
   @DocsEditable()
-  int get rangeCount => _blink.BlinkSelection.instance.rangeCount_Getter_(unwrap_jso(this));
+  int get rangeCount => _blink.BlinkSelection.instance.rangeCount_Getter_(this);
   
   @DomName('Selection.type')
   @DocsEditable()
   @Experimental() // non-standard
-  String get type => _blink.BlinkSelection.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkSelection.instance.type_Getter_(this);
   
   @DomName('Selection.addRange')
   @DocsEditable()
-  void addRange(Range range) => _blink.BlinkSelection.instance.addRange_Callback_1_(unwrap_jso(this), unwrap_jso(range));
+  void addRange(Range range) => _blink.BlinkSelection.instance.addRange_Callback_1_(this, range);
   
   void collapse(Node node, [int offset]) {
     if (offset != null) {
-      _blink.BlinkSelection.instance.collapse_Callback_2_(unwrap_jso(this), unwrap_jso(node), offset);
+      _blink.BlinkSelection.instance.collapse_Callback_2_(this, node, offset);
       return;
     }
-    _blink.BlinkSelection.instance.collapse_Callback_1_(unwrap_jso(this), unwrap_jso(node));
+    _blink.BlinkSelection.instance.collapse_Callback_1_(this, node);
     return;
   }
 
   @DomName('Selection.collapseToEnd')
   @DocsEditable()
-  void collapseToEnd() => _blink.BlinkSelection.instance.collapseToEnd_Callback_0_(unwrap_jso(this));
+  void collapseToEnd() => _blink.BlinkSelection.instance.collapseToEnd_Callback_0_(this);
   
   @DomName('Selection.collapseToStart')
   @DocsEditable()
-  void collapseToStart() => _blink.BlinkSelection.instance.collapseToStart_Callback_0_(unwrap_jso(this));
+  void collapseToStart() => _blink.BlinkSelection.instance.collapseToStart_Callback_0_(this);
   
   @DomName('Selection.containsNode')
   @DocsEditable()
   @Experimental() // non-standard
-  bool containsNode(Node node, bool allowPartialContainment) => _blink.BlinkSelection.instance.containsNode_Callback_2_(unwrap_jso(this), unwrap_jso(node), allowPartialContainment);
+  bool containsNode(Node node, bool allowPartialContainment) => _blink.BlinkSelection.instance.containsNode_Callback_2_(this, node, allowPartialContainment);
   
   @DomName('Selection.deleteFromDocument')
   @DocsEditable()
-  void deleteFromDocument() => _blink.BlinkSelection.instance.deleteFromDocument_Callback_0_(unwrap_jso(this));
+  void deleteFromDocument() => _blink.BlinkSelection.instance.deleteFromDocument_Callback_0_(this);
   
   @DomName('Selection.empty')
   @DocsEditable()
   @Experimental() // non-standard
-  void empty() => _blink.BlinkSelection.instance.empty_Callback_0_(unwrap_jso(this));
+  void empty() => _blink.BlinkSelection.instance.empty_Callback_0_(this);
   
   void extend(Node node, [int offset]) {
     if (offset != null) {
-      _blink.BlinkSelection.instance.extend_Callback_2_(unwrap_jso(this), unwrap_jso(node), offset);
+      _blink.BlinkSelection.instance.extend_Callback_2_(this, node, offset);
       return;
     }
-    _blink.BlinkSelection.instance.extend_Callback_1_(unwrap_jso(this), unwrap_jso(node));
+    _blink.BlinkSelection.instance.extend_Callback_1_(this, node);
     return;
   }
 
   @DomName('Selection.getRangeAt')
   @DocsEditable()
-  Range getRangeAt(int index) => wrap_jso(_blink.BlinkSelection.instance.getRangeAt_Callback_1_(unwrap_jso(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.instance.modify_Callback_3_(unwrap_jso(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.instance.removeAllRanges_Callback_0_(unwrap_jso(this));
+  void removeAllRanges() => _blink.BlinkSelection.instance.removeAllRanges_Callback_0_(this);
   
   @DomName('Selection.selectAllChildren')
   @DocsEditable()
-  void selectAllChildren(Node node) => _blink.BlinkSelection.instance.selectAllChildren_Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.setBaseAndExtent_Callback_4_(unwrap_jso(this), unwrap_jso(baseNode), baseOffset, unwrap_jso(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.instance.setPosition_Callback_2_(unwrap_jso(this), unwrap_jso(node), offset);
+      _blink.BlinkSelection.instance.setPosition_Callback_2_(this, node, offset);
       return;
     }
-    _blink.BlinkSelection.instance.setPosition_Callback_1_(unwrap_jso(this), unwrap_jso(node));
+    _blink.BlinkSelection.instance.setPosition_Callback_1_(this, node);
     return;
   }
 
@@ -35373,47 +33054,39 @@
   // To suppress missing implicit constructor warnings.
   factory ServicePort._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ServicePort internalCreateServicePort() {
-    return new ServicePort._internalWrap();
-  }
 
-  factory ServicePort._internalWrap() {
-    return new ServicePort.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ServicePort.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('ServicePort.data')
   @DocsEditable()
   @Experimental() // untriaged
-  Object get data => wrap_jso(_blink.BlinkServicePort.instance.data_Getter_(unwrap_jso(this)));
+  Object get data => (_blink.BlinkServicePort.instance.data_Getter_(this));
   
   @DomName('ServicePort.name')
   @DocsEditable()
   @Experimental() // untriaged
-  String get name => _blink.BlinkServicePort.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkServicePort.instance.name_Getter_(this);
   
   @DomName('ServicePort.targetURL')
   @DocsEditable()
   @Experimental() // untriaged
-  String get targetUrl => _blink.BlinkServicePort.instance.targetURL_Getter_(unwrap_jso(this));
+  String get targetUrl => _blink.BlinkServicePort.instance.targetURL_Getter_(this);
   
   @DomName('ServicePort.close')
   @DocsEditable()
   @Experimental() // untriaged
-  void close() => _blink.BlinkServicePort.instance.close_Callback_0_(unwrap_jso(this));
+  void close() => _blink.BlinkServicePort.instance.close_Callback_0_(this);
   
   void postMessage(/*SerializedScriptValue*/ message, [List<MessagePort> transfer]) {
     if (transfer != null) {
-      _blink.BlinkServicePort.instance.postMessage_Callback_2_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message), transfer);
+      _blink.BlinkServicePort.instance.postMessage_Callback_2_(this, convertDartToNative_SerializedScriptValue(message), transfer);
       return;
     }
-    _blink.BlinkServicePort.instance.postMessage_Callback_1_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message));
+    _blink.BlinkServicePort.instance.postMessage_Callback_1_(this, convertDartToNative_SerializedScriptValue(message));
     return;
   }
 
@@ -35439,11 +33112,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ServicePortCollection internalCreateServicePortCollection() {
-    return new ServicePortCollection._internalWrap();
-  }
-
-  external factory ServicePortCollection._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ServicePortCollection.internal_() : super.internal_();
@@ -35451,21 +33120,21 @@
 
   Future connect(String url, [Map options]) {
     if (options != null) {
-      return wrap_jso(_blink.BlinkServicePortCollection.instance.connect_Callback_2_(unwrap_jso(this), url, convertDartToNative_Dictionary(options)));
+      return _blink.BlinkServicePortCollection.instance.connect_Callback_2_(this, url, convertDartToNative_Dictionary(options));
     }
-    return wrap_jso(_blink.BlinkServicePortCollection.instance.connect_Callback_1_(unwrap_jso(this), url));
+    return _blink.BlinkServicePortCollection.instance.connect_Callback_1_(this, url);
   }
 
   @DomName('ServicePortCollection.match')
   @DocsEditable()
   @Experimental() // untriaged
-  Future match(Map options) => wrap_jso(_blink.BlinkServicePortCollection.instance.match_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(options)));
+  Future match(Map options) => convertNativePromiseToDartFuture(_blink.BlinkServicePortCollection.instance.match_Callback_1_(this, convertDartToNative_Dictionary(options)));
   
   Future matchAll([Map options]) {
     if (options != null) {
-      return wrap_jso(_blink.BlinkServicePortCollection.instance.matchAll_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(options)));
+      return _blink.BlinkServicePortCollection.instance.matchAll_Callback_1_(this, convertDartToNative_Dictionary(options));
     }
-    return wrap_jso(_blink.BlinkServicePortCollection.instance.matchAll_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkServicePortCollection.instance.matchAll_Callback_0_(this);
   }
 
   @DomName('ServicePortCollection.onmessage')
@@ -35493,18 +33162,14 @@
   factory ServicePortConnectEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkServicePortConnectEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkServicePortConnectEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkServicePortConnectEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkServicePortConnectEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static ServicePortConnectEvent internalCreateServicePortConnectEvent() {
-    return new ServicePortConnectEvent._internalWrap();
-  }
-
-  external factory ServicePortConnectEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ServicePortConnectEvent.internal_() : super.internal_();
@@ -35513,17 +33178,17 @@
   @DomName('ServicePortConnectEvent.origin')
   @DocsEditable()
   @Experimental() // untriaged
-  String get origin => _blink.BlinkServicePortConnectEvent.instance.origin_Getter_(unwrap_jso(this));
+  String get origin => _blink.BlinkServicePortConnectEvent.instance.origin_Getter_(this);
   
   @DomName('ServicePortConnectEvent.targetURL')
   @DocsEditable()
   @Experimental() // untriaged
-  String get targetUrl => _blink.BlinkServicePortConnectEvent.instance.targetURL_Getter_(unwrap_jso(this));
+  String get targetUrl => _blink.BlinkServicePortConnectEvent.instance.targetURL_Getter_(this);
   
   @DomName('ServicePortConnectEvent.respondWith')
   @DocsEditable()
   @Experimental() // untriaged
-  Future respondWith(Future response) => wrap_jso(_blink.BlinkServicePortConnectEvent.instance.respondWith_Callback_1_(unwrap_jso(this), response));
+  Future respondWith(Future response) => convertNativePromiseToDartFuture(_blink.BlinkServicePortConnectEvent.instance.respondWith_Callback_1_(this, response));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35547,11 +33212,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ServiceWorkerContainer internalCreateServiceWorkerContainer() {
-    return new ServiceWorkerContainer._internalWrap();
-  }
-
-  external factory ServiceWorkerContainer._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ServiceWorkerContainer.internal_() : super.internal_();
@@ -35560,30 +33221,30 @@
   @DomName('ServiceWorkerContainer.controller')
   @DocsEditable()
   @Experimental() // untriaged
-  _ServiceWorker get controller => wrap_jso(_blink.BlinkServiceWorkerContainer.instance.controller_Getter_(unwrap_jso(this)));
+  _ServiceWorker get controller => _blink.BlinkServiceWorkerContainer.instance.controller_Getter_(this);
   
   @DomName('ServiceWorkerContainer.ready')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get ready => wrap_jso(_blink.BlinkServiceWorkerContainer.instance.ready_Getter_(unwrap_jso(this)));
+  Future get ready => convertNativePromiseToDartFuture(_blink.BlinkServiceWorkerContainer.instance.ready_Getter_(this));
   
   Future getRegistration([String documentURL]) {
     if (documentURL != null) {
-      return wrap_jso(_blink.BlinkServiceWorkerContainer.instance.getRegistration_Callback_1_(unwrap_jso(this), documentURL));
+      return _blink.BlinkServiceWorkerContainer.instance.getRegistration_Callback_1_(this, documentURL);
     }
-    return wrap_jso(_blink.BlinkServiceWorkerContainer.instance.getRegistration_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkServiceWorkerContainer.instance.getRegistration_Callback_0_(this);
   }
 
   @DomName('ServiceWorkerContainer.getRegistrations')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getRegistrations() => wrap_jso(_blink.BlinkServiceWorkerContainer.instance.getRegistrations_Callback_0_(unwrap_jso(this)));
+  Future getRegistrations() => convertNativePromiseToDartFuture(_blink.BlinkServiceWorkerContainer.instance.getRegistrations_Callback_0_(this));
   
   Future register(String url, [Map options]) {
     if (options != null) {
-      return wrap_jso(_blink.BlinkServiceWorkerContainer.instance.register_Callback_2_(unwrap_jso(this), url, convertDartToNative_Dictionary(options)));
+      return _blink.BlinkServiceWorkerContainer.instance.register_Callback_2_(this, url, convertDartToNative_Dictionary(options));
     }
-    return wrap_jso(_blink.BlinkServiceWorkerContainer.instance.register_Callback_1_(unwrap_jso(this), url));
+    return _blink.BlinkServiceWorkerContainer.instance.register_Callback_1_(this, url);
   }
 
   @DomName('ServiceWorkerContainer.onmessage')
@@ -35613,11 +33274,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ServiceWorkerGlobalScope internalCreateServiceWorkerGlobalScope() {
-    return new ServiceWorkerGlobalScope._internalWrap();
-  }
-
-  external factory ServiceWorkerGlobalScope._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ServiceWorkerGlobalScope.internal_() : super.internal_();
@@ -35626,34 +33283,34 @@
   @DomName('ServiceWorkerGlobalScope.clients')
   @DocsEditable()
   @Experimental() // untriaged
-  Clients get clients => wrap_jso(_blink.BlinkServiceWorkerGlobalScope.instance.clients_Getter_(unwrap_jso(this)));
+  Clients get clients => _blink.BlinkServiceWorkerGlobalScope.instance.clients_Getter_(this);
   
   @DomName('ServiceWorkerGlobalScope.ports')
   @DocsEditable()
   @Experimental() // untriaged
-  StashedPortCollection get ports => wrap_jso(_blink.BlinkServiceWorkerGlobalScope.instance.ports_Getter_(unwrap_jso(this)));
+  StashedPortCollection get ports => _blink.BlinkServiceWorkerGlobalScope.instance.ports_Getter_(this);
   
   @DomName('ServiceWorkerGlobalScope.registration')
   @DocsEditable()
   @Experimental() // untriaged
-  ServiceWorkerRegistration get registration => wrap_jso(_blink.BlinkServiceWorkerGlobalScope.instance.registration_Getter_(unwrap_jso(this)));
+  ServiceWorkerRegistration get registration => _blink.BlinkServiceWorkerGlobalScope.instance.registration_Getter_(this);
   
   @DomName('ServiceWorkerGlobalScope.close')
   @DocsEditable()
   @Experimental() // untriaged
-  void close() => _blink.BlinkServiceWorkerGlobalScope.instance.close_Callback_0_(unwrap_jso(this));
+  void close() => _blink.BlinkServiceWorkerGlobalScope.instance.close_Callback_0_(this);
   
   Future _fetch(/*RequestInfo*/ input, [Map init]) {
     if (init != null) {
-      return wrap_jso(_blink.BlinkServiceWorkerGlobalScope.instance.fetch_Callback_2_(unwrap_jso(this), input, convertDartToNative_Dictionary(init)));
+      return _blink.BlinkServiceWorkerGlobalScope.instance.fetch_Callback_2_(this, input, convertDartToNative_Dictionary(init));
     }
-    return wrap_jso(_blink.BlinkServiceWorkerGlobalScope.instance.fetch_Callback_1_(unwrap_jso(this), input));
+    return _blink.BlinkServiceWorkerGlobalScope.instance.fetch_Callback_1_(this, input);
   }
 
   @DomName('ServiceWorkerGlobalScope.skipWaiting')
   @DocsEditable()
   @Experimental() // untriaged
-  Future skipWaiting() => wrap_jso(_blink.BlinkServiceWorkerGlobalScope.instance.skipWaiting_Callback_0_(unwrap_jso(this)));
+  Future skipWaiting() => convertNativePromiseToDartFuture(_blink.BlinkServiceWorkerGlobalScope.instance.skipWaiting_Callback_0_(this));
   
   @DomName('ServiceWorkerGlobalScope.onmessage')
   @DocsEditable()
@@ -35680,7 +33337,7 @@
   @DomName('ServiceWorkerMessageEvent.data')
   @DocsEditable()
   dynamic get data => convertNativeToDart_SerializedScriptValue(
-      _blink.BlinkMessageEvent.instance.data_Getter_(unwrap_jso(this)));
+      _blink.BlinkMessageEvent.instance.data_Getter_(this));
 
   // To suppress missing implicit constructor warnings.
   factory ServiceWorkerMessageEvent._() { throw new UnsupportedError("Not supported"); }
@@ -35690,18 +33347,14 @@
   factory ServiceWorkerMessageEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkServiceWorkerMessageEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkServiceWorkerMessageEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkServiceWorkerMessageEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkServiceWorkerMessageEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static ServiceWorkerMessageEvent internalCreateServiceWorkerMessageEvent() {
-    return new ServiceWorkerMessageEvent._internalWrap();
-  }
-
-  external factory ServiceWorkerMessageEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ServiceWorkerMessageEvent.internal_() : super.internal_();
@@ -35710,22 +33363,22 @@
   @DomName('ServiceWorkerMessageEvent.lastEventId')
   @DocsEditable()
   @Experimental() // untriaged
-  String get lastEventId => _blink.BlinkServiceWorkerMessageEvent.instance.lastEventId_Getter_(unwrap_jso(this));
+  String get lastEventId => _blink.BlinkServiceWorkerMessageEvent.instance.lastEventId_Getter_(this);
   
   @DomName('ServiceWorkerMessageEvent.origin')
   @DocsEditable()
   @Experimental() // untriaged
-  String get origin => _blink.BlinkServiceWorkerMessageEvent.instance.origin_Getter_(unwrap_jso(this));
+  String get origin => _blink.BlinkServiceWorkerMessageEvent.instance.origin_Getter_(this);
   
   @DomName('ServiceWorkerMessageEvent.ports')
   @DocsEditable()
   @Experimental() // untriaged
-  List<MessagePort> get ports => wrap_jso(_blink.BlinkServiceWorkerMessageEvent.instance.ports_Getter_(unwrap_jso(this)));
+  List<MessagePort> get ports => (_blink.BlinkServiceWorkerMessageEvent.instance.ports_Getter_(this));
   
   @DomName('ServiceWorkerMessageEvent.source')
   @DocsEditable()
   @Experimental() // untriaged
-  Object get source => wrap_jso(_blink.BlinkServiceWorkerMessageEvent.instance.source_Getter_(unwrap_jso(this)));
+  Object get source => (_blink.BlinkServiceWorkerMessageEvent.instance.source_Getter_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35744,11 +33397,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ServiceWorkerRegistration internalCreateServiceWorkerRegistration() {
-    return new ServiceWorkerRegistration._internalWrap();
-  }
-
-  external factory ServiceWorkerRegistration._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ServiceWorkerRegistration.internal_() : super.internal_();
@@ -35757,66 +33406,66 @@
   @DomName('ServiceWorkerRegistration.active')
   @DocsEditable()
   @Experimental() // untriaged
-  _ServiceWorker get active => wrap_jso(_blink.BlinkServiceWorkerRegistration.instance.active_Getter_(unwrap_jso(this)));
+  _ServiceWorker get active => _blink.BlinkServiceWorkerRegistration.instance.active_Getter_(this);
   
   @DomName('ServiceWorkerRegistration.geofencing')
   @DocsEditable()
   @Experimental() // untriaged
-  Geofencing get geofencing => wrap_jso(_blink.BlinkServiceWorkerRegistration.instance.geofencing_Getter_(unwrap_jso(this)));
+  Geofencing get geofencing => _blink.BlinkServiceWorkerRegistration.instance.geofencing_Getter_(this);
   
   @DomName('ServiceWorkerRegistration.installing')
   @DocsEditable()
   @Experimental() // untriaged
-  _ServiceWorker get installing => wrap_jso(_blink.BlinkServiceWorkerRegistration.instance.installing_Getter_(unwrap_jso(this)));
+  _ServiceWorker get installing => _blink.BlinkServiceWorkerRegistration.instance.installing_Getter_(this);
   
   @DomName('ServiceWorkerRegistration.periodicSync')
   @DocsEditable()
   @Experimental() // untriaged
-  PeriodicSyncManager get periodicSync => wrap_jso(_blink.BlinkServiceWorkerRegistration.instance.periodicSync_Getter_(unwrap_jso(this)));
+  PeriodicSyncManager get periodicSync => _blink.BlinkServiceWorkerRegistration.instance.periodicSync_Getter_(this);
   
   @DomName('ServiceWorkerRegistration.pushManager')
   @DocsEditable()
   @Experimental() // untriaged
-  PushManager get pushManager => wrap_jso(_blink.BlinkServiceWorkerRegistration.instance.pushManager_Getter_(unwrap_jso(this)));
+  PushManager get pushManager => _blink.BlinkServiceWorkerRegistration.instance.pushManager_Getter_(this);
   
   @DomName('ServiceWorkerRegistration.scope')
   @DocsEditable()
   @Experimental() // untriaged
-  String get scope => _blink.BlinkServiceWorkerRegistration.instance.scope_Getter_(unwrap_jso(this));
+  String get scope => _blink.BlinkServiceWorkerRegistration.instance.scope_Getter_(this);
   
   @DomName('ServiceWorkerRegistration.sync')
   @DocsEditable()
   @Experimental() // untriaged
-  SyncManager get sync => wrap_jso(_blink.BlinkServiceWorkerRegistration.instance.sync_Getter_(unwrap_jso(this)));
+  SyncManager get sync => _blink.BlinkServiceWorkerRegistration.instance.sync_Getter_(this);
   
   @DomName('ServiceWorkerRegistration.waiting')
   @DocsEditable()
   @Experimental() // untriaged
-  _ServiceWorker get waiting => wrap_jso(_blink.BlinkServiceWorkerRegistration.instance.waiting_Getter_(unwrap_jso(this)));
+  _ServiceWorker get waiting => _blink.BlinkServiceWorkerRegistration.instance.waiting_Getter_(this);
   
   Future getNotifications([Map filter]) {
     if (filter != null) {
-      return wrap_jso(_blink.BlinkServiceWorkerRegistration.instance.getNotifications_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(filter)));
+      return _blink.BlinkServiceWorkerRegistration.instance.getNotifications_Callback_1_(this, convertDartToNative_Dictionary(filter));
     }
-    return wrap_jso(_blink.BlinkServiceWorkerRegistration.instance.getNotifications_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkServiceWorkerRegistration.instance.getNotifications_Callback_0_(this);
   }
 
   Future showNotification(String title, [Map options]) {
     if (options != null) {
-      return wrap_jso(_blink.BlinkServiceWorkerRegistration.instance.showNotification_Callback_2_(unwrap_jso(this), title, convertDartToNative_Dictionary(options)));
+      return _blink.BlinkServiceWorkerRegistration.instance.showNotification_Callback_2_(this, title, convertDartToNative_Dictionary(options));
     }
-    return wrap_jso(_blink.BlinkServiceWorkerRegistration.instance.showNotification_Callback_1_(unwrap_jso(this), title));
+    return _blink.BlinkServiceWorkerRegistration.instance.showNotification_Callback_1_(this, title);
   }
 
   @DomName('ServiceWorkerRegistration.unregister')
   @DocsEditable()
   @Experimental() // untriaged
-  Future unregister() => wrap_jso(_blink.BlinkServiceWorkerRegistration.instance.unregister_Callback_0_(unwrap_jso(this)));
+  Future unregister() => convertNativePromiseToDartFuture(_blink.BlinkServiceWorkerRegistration.instance.unregister_Callback_0_(this));
   
   @DomName('ServiceWorkerRegistration.update')
   @DocsEditable()
   @Experimental() // untriaged
-  void update() => _blink.BlinkServiceWorkerRegistration.instance.update_Callback_0_(unwrap_jso(this));
+  void update() => _blink.BlinkServiceWorkerRegistration.instance.update_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35841,11 +33490,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ShadowElement internalCreateShadowElement() {
-    return new ShadowElement._internalWrap();
-  }
-
-  external factory ShadowElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ShadowElement.internal_() : super.internal_();
@@ -35863,7 +33508,7 @@
   @DomName('HTMLShadowElement.getDistributedNodes')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Node> getDistributedNodes() => wrap_jso(_blink.BlinkHTMLShadowElement.instance.getDistributedNodes_Callback_0_(unwrap_jso(this)));
+  List<Node> getDistributedNodes() => (_blink.BlinkHTMLShadowElement.instance.getDistributedNodes_Callback_0_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35883,11 +33528,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ShadowRoot internalCreateShadowRoot() {
-    return new ShadowRoot._internalWrap();
-  }
-
-  external factory ShadowRoot._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ShadowRoot.internal_() : super.internal_();
@@ -35895,52 +33536,52 @@
 
   @DomName('ShadowRoot.activeElement')
   @DocsEditable()
-  Element get activeElement => wrap_jso(_blink.BlinkShadowRoot.instance.activeElement_Getter_(unwrap_jso(this)));
+  Element get activeElement => _blink.BlinkShadowRoot.instance.activeElement_Getter_(this);
   
   @DomName('ShadowRoot.delegatesFocus')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get delegatesFocus => _blink.BlinkShadowRoot.instance.delegatesFocus_Getter_(unwrap_jso(this));
+  bool get delegatesFocus => _blink.BlinkShadowRoot.instance.delegatesFocus_Getter_(this);
   
   @DomName('ShadowRoot.host')
   @DocsEditable()
   @Experimental() // untriaged
-  Element get host => wrap_jso(_blink.BlinkShadowRoot.instance.host_Getter_(unwrap_jso(this)));
+  Element get host => _blink.BlinkShadowRoot.instance.host_Getter_(this);
   
   @DomName('ShadowRoot.innerHTML')
   @DocsEditable()
-  String get innerHtml => _blink.BlinkShadowRoot.instance.innerHTML_Getter_(unwrap_jso(this));
+  String get innerHtml => _blink.BlinkShadowRoot.instance.innerHTML_Getter_(this);
   
   @DomName('ShadowRoot.innerHTML')
   @DocsEditable()
-  set innerHtml(String value) => _blink.BlinkShadowRoot.instance.innerHTML_Setter_(unwrap_jso(this), value);
+  set innerHtml(String value) => _blink.BlinkShadowRoot.instance.innerHTML_Setter_(this, value);
   
   @DomName('ShadowRoot.olderShadowRoot')
   @DocsEditable()
   @Experimental() // untriaged
-  ShadowRoot get olderShadowRoot => wrap_jso(_blink.BlinkShadowRoot.instance.olderShadowRoot_Getter_(unwrap_jso(this)));
+  ShadowRoot get olderShadowRoot => _blink.BlinkShadowRoot.instance.olderShadowRoot_Getter_(this);
   
   @DomName('ShadowRoot.styleSheets')
   @DocsEditable()
   @Experimental() // untriaged
-  List<StyleSheet> get styleSheets => wrap_jso(_blink.BlinkShadowRoot.instance.styleSheets_Getter_(unwrap_jso(this)));
+  List<StyleSheet> get styleSheets => (_blink.BlinkShadowRoot.instance.styleSheets_Getter_(this));
   
   @DomName('ShadowRoot.cloneNode')
   @DocsEditable()
-  Node clone(bool deep) => wrap_jso(_blink.BlinkShadowRoot.instance.cloneNode_Callback_1_(unwrap_jso(this), deep));
+  Node clone(bool deep) => _blink.BlinkShadowRoot.instance.cloneNode_Callback_1_(this, deep);
   
   @DomName('ShadowRoot.elementFromPoint')
   @DocsEditable()
-  Element elementFromPoint(int x, int y) => wrap_jso(_blink.BlinkShadowRoot.instance.elementFromPoint_Callback_2_(unwrap_jso(this), x, y));
+  Element elementFromPoint(int x, int y) => _blink.BlinkShadowRoot.instance.elementFromPoint_Callback_2_(this, x, y);
   
   @DomName('ShadowRoot.elementsFromPoint')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Element> elementsFromPoint(int x, int y) => wrap_jso(_blink.BlinkShadowRoot.instance.elementsFromPoint_Callback_2_(unwrap_jso(this), x, y));
+  List<Element> elementsFromPoint(int x, int y) => (_blink.BlinkShadowRoot.instance.elementsFromPoint_Callback_2_(this, x, y));
   
   @DomName('ShadowRoot.getSelection')
   @DocsEditable()
-  Selection getSelection() => wrap_jso(_blink.BlinkShadowRoot.instance.getSelection_Callback_0_(unwrap_jso(this)));
+  Selection getSelection() => _blink.BlinkShadowRoot.instance.getSelection_Callback_0_(this);
   
   static final bool supported = true;
 
@@ -35993,25 +33634,17 @@
   // To suppress missing implicit constructor warnings.
   factory SharedArrayBuffer._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static SharedArrayBuffer internalCreateSharedArrayBuffer() {
-    return new SharedArrayBuffer._internalWrap();
-  }
 
-  factory SharedArrayBuffer._internalWrap() {
-    return new SharedArrayBuffer.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SharedArrayBuffer.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SharedArrayBuffer.byteLength')
   @DocsEditable()
   @Experimental() // untriaged
-  int get byteLength => _blink.BlinkSharedArrayBuffer.instance.byteLength_Getter_(unwrap_jso(this));
+  int get byteLength => _blink.BlinkSharedArrayBuffer.instance.byteLength_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -36037,16 +33670,12 @@
   @DomName('SharedWorker.SharedWorker')
   @DocsEditable()
   factory SharedWorker(String scriptURL, [String name]) {
-    return wrap_jso(_blink.BlinkSharedWorker.instance.constructorCallback_2_(scriptURL, name));
+    return _blink.BlinkSharedWorker.instance.constructorCallback_2_(scriptURL, name);
   }
 
 
   @Deprecated("Internal Use Only")
-  static SharedWorker internalCreateSharedWorker() {
-    return new SharedWorker._internalWrap();
-  }
-
-  external factory SharedWorker._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SharedWorker.internal_() : super.internal_();
@@ -36054,12 +33683,12 @@
 
   @DomName('SharedWorker.port')
   @DocsEditable()
-  MessagePort get port => wrap_jso(_blink.BlinkSharedWorker.instance.port_Getter_(unwrap_jso(this)));
+  MessagePort get port => _blink.BlinkSharedWorker.instance.port_Getter_(this);
   
   @DomName('SharedWorker.workerStart')
   @DocsEditable()
   @Experimental() // untriaged
-  num get workerStart => _blink.BlinkSharedWorker.instance.workerStart_Getter_(unwrap_jso(this));
+  num get workerStart => _blink.BlinkSharedWorker.instance.workerStart_Getter_(this);
   
   @DomName('SharedWorker.onerror')
   @DocsEditable()
@@ -36094,11 +33723,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static SharedWorkerGlobalScope internalCreateSharedWorkerGlobalScope() {
-    return new SharedWorkerGlobalScope._internalWrap();
-  }
-
-  external factory SharedWorkerGlobalScope._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SharedWorkerGlobalScope.internal_() : super.internal_();
@@ -36107,7 +33732,7 @@
   @DomName('SharedWorkerGlobalScope.name')
   @DocsEditable()
   @Experimental() // untriaged
-  String get name => _blink.BlinkSharedWorkerGlobalScope.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkSharedWorkerGlobalScope.instance.name_Getter_(this);
   
   /// Stream of `connect` events handled by this [SharedWorkerGlobalScope].
   @DomName('SharedWorkerGlobalScope.onconnect')
@@ -36133,11 +33758,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static SourceBuffer internalCreateSourceBuffer() {
-    return new SourceBuffer._internalWrap();
-  }
-
-  external factory SourceBuffer._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SourceBuffer.internal_() : super.internal_();
@@ -36146,87 +33767,87 @@
   @DomName('SourceBuffer.appendWindowEnd')
   @DocsEditable()
   @Experimental() // untriaged
-  num get appendWindowEnd => _blink.BlinkSourceBuffer.instance.appendWindowEnd_Getter_(unwrap_jso(this));
+  num get appendWindowEnd => _blink.BlinkSourceBuffer.instance.appendWindowEnd_Getter_(this);
   
   @DomName('SourceBuffer.appendWindowEnd')
   @DocsEditable()
   @Experimental() // untriaged
-  set appendWindowEnd(num value) => _blink.BlinkSourceBuffer.instance.appendWindowEnd_Setter_(unwrap_jso(this), value);
+  set appendWindowEnd(num value) => _blink.BlinkSourceBuffer.instance.appendWindowEnd_Setter_(this, value);
   
   @DomName('SourceBuffer.appendWindowStart')
   @DocsEditable()
   @Experimental() // untriaged
-  num get appendWindowStart => _blink.BlinkSourceBuffer.instance.appendWindowStart_Getter_(unwrap_jso(this));
+  num get appendWindowStart => _blink.BlinkSourceBuffer.instance.appendWindowStart_Getter_(this);
   
   @DomName('SourceBuffer.appendWindowStart')
   @DocsEditable()
   @Experimental() // untriaged
-  set appendWindowStart(num value) => _blink.BlinkSourceBuffer.instance.appendWindowStart_Setter_(unwrap_jso(this), value);
+  set appendWindowStart(num value) => _blink.BlinkSourceBuffer.instance.appendWindowStart_Setter_(this, value);
   
   @DomName('SourceBuffer.buffered')
   @DocsEditable()
-  TimeRanges get buffered => wrap_jso(_blink.BlinkSourceBuffer.instance.buffered_Getter_(unwrap_jso(this)));
+  TimeRanges get buffered => _blink.BlinkSourceBuffer.instance.buffered_Getter_(this);
   
   @DomName('SourceBuffer.mode')
   @DocsEditable()
   @Experimental() // untriaged
-  String get mode => _blink.BlinkSourceBuffer.instance.mode_Getter_(unwrap_jso(this));
+  String get mode => _blink.BlinkSourceBuffer.instance.mode_Getter_(this);
   
   @DomName('SourceBuffer.mode')
   @DocsEditable()
   @Experimental() // untriaged
-  set mode(String value) => _blink.BlinkSourceBuffer.instance.mode_Setter_(unwrap_jso(this), value);
+  set mode(String value) => _blink.BlinkSourceBuffer.instance.mode_Setter_(this, value);
   
   @DomName('SourceBuffer.timestampOffset')
   @DocsEditable()
-  num get timestampOffset => _blink.BlinkSourceBuffer.instance.timestampOffset_Getter_(unwrap_jso(this));
+  num get timestampOffset => _blink.BlinkSourceBuffer.instance.timestampOffset_Getter_(this);
   
   @DomName('SourceBuffer.timestampOffset')
   @DocsEditable()
-  set timestampOffset(num value) => _blink.BlinkSourceBuffer.instance.timestampOffset_Setter_(unwrap_jso(this), value);
+  set timestampOffset(num value) => _blink.BlinkSourceBuffer.instance.timestampOffset_Setter_(this, value);
   
   @DomName('SourceBuffer.trackDefaults')
   @DocsEditable()
   @Experimental() // untriaged
-  TrackDefaultList get trackDefaults => wrap_jso(_blink.BlinkSourceBuffer.instance.trackDefaults_Getter_(unwrap_jso(this)));
+  TrackDefaultList get trackDefaults => _blink.BlinkSourceBuffer.instance.trackDefaults_Getter_(this);
   
   @DomName('SourceBuffer.trackDefaults')
   @DocsEditable()
   @Experimental() // untriaged
-  set trackDefaults(TrackDefaultList value) => _blink.BlinkSourceBuffer.instance.trackDefaults_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set trackDefaults(TrackDefaultList value) => _blink.BlinkSourceBuffer.instance.trackDefaults_Setter_(this, value);
   
   @DomName('SourceBuffer.updating')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get updating => _blink.BlinkSourceBuffer.instance.updating_Getter_(unwrap_jso(this));
+  bool get updating => _blink.BlinkSourceBuffer.instance.updating_Getter_(this);
   
   @DomName('SourceBuffer.abort')
   @DocsEditable()
-  void abort() => _blink.BlinkSourceBuffer.instance.abort_Callback_0_(unwrap_jso(this));
+  void abort() => _blink.BlinkSourceBuffer.instance.abort_Callback_0_(this);
   
   @DomName('SourceBuffer.appendBuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  void appendBuffer(ByteBuffer data) => _blink.BlinkSourceBuffer.instance.appendBuffer_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+  void appendBuffer(ByteBuffer data) => _blink.BlinkSourceBuffer.instance.appendBuffer_Callback_1_(this, data);
   
   void appendStream(FileStream stream, [int maxSize]) {
     if (maxSize != null) {
-      _blink.BlinkSourceBuffer.instance.appendStream_Callback_2_(unwrap_jso(this), unwrap_jso(stream), maxSize);
+      _blink.BlinkSourceBuffer.instance.appendStream_Callback_2_(this, stream, maxSize);
       return;
     }
-    _blink.BlinkSourceBuffer.instance.appendStream_Callback_1_(unwrap_jso(this), unwrap_jso(stream));
+    _blink.BlinkSourceBuffer.instance.appendStream_Callback_1_(this, stream);
     return;
   }
 
   @DomName('SourceBuffer.appendTypedData')
   @DocsEditable()
   @Experimental() // untriaged
-  void appendTypedData(TypedData data) => _blink.BlinkSourceBuffer.instance.appendBuffer_Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.remove_Callback_2_(unwrap_jso(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
@@ -36246,11 +33867,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static SourceBufferList internalCreateSourceBufferList() {
-    return new SourceBufferList._internalWrap();
-  }
-
-  external factory SourceBufferList._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SourceBufferList.internal_() : super.internal_();
@@ -36258,15 +33875,15 @@
 
   @DomName('SourceBufferList.length')
   @DocsEditable()
-  int get length => _blink.BlinkSourceBufferList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkSourceBufferList.instance.length_Getter_(this);
   
   SourceBuffer operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkSourceBufferList.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  SourceBuffer _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkSourceBufferList.instance.item_Callback_1_(unwrap_jso(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.");
@@ -36308,7 +33925,7 @@
 
   @DomName('SourceBufferList.item')
   @DocsEditable()
-  SourceBuffer item(int index) => wrap_jso(_blink.BlinkSourceBufferList.instance.item_Callback_1_(unwrap_jso(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
@@ -36330,11 +33947,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static SourceElement internalCreateSourceElement() {
-    return new SourceElement._internalWrap();
-  }
-
-  external factory SourceElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SourceElement.internal_() : super.internal_();
@@ -36348,47 +33961,47 @@
 
   @DomName('HTMLSourceElement.media')
   @DocsEditable()
-  String get media => _blink.BlinkHTMLSourceElement.instance.media_Getter_(unwrap_jso(this));
+  String get media => _blink.BlinkHTMLSourceElement.instance.media_Getter_(this);
   
   @DomName('HTMLSourceElement.media')
   @DocsEditable()
-  set media(String value) => _blink.BlinkHTMLSourceElement.instance.media_Setter_(unwrap_jso(this), value);
+  set media(String value) => _blink.BlinkHTMLSourceElement.instance.media_Setter_(this, value);
   
   @DomName('HTMLSourceElement.sizes')
   @DocsEditable()
   @Experimental() // untriaged
-  String get sizes => _blink.BlinkHTMLSourceElement.instance.sizes_Getter_(unwrap_jso(this));
+  String get sizes => _blink.BlinkHTMLSourceElement.instance.sizes_Getter_(this);
   
   @DomName('HTMLSourceElement.sizes')
   @DocsEditable()
   @Experimental() // untriaged
-  set sizes(String value) => _blink.BlinkHTMLSourceElement.instance.sizes_Setter_(unwrap_jso(this), value);
+  set sizes(String value) => _blink.BlinkHTMLSourceElement.instance.sizes_Setter_(this, value);
   
   @DomName('HTMLSourceElement.src')
   @DocsEditable()
-  String get src => _blink.BlinkHTMLSourceElement.instance.src_Getter_(unwrap_jso(this));
+  String get src => _blink.BlinkHTMLSourceElement.instance.src_Getter_(this);
   
   @DomName('HTMLSourceElement.src')
   @DocsEditable()
-  set src(String value) => _blink.BlinkHTMLSourceElement.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkHTMLSourceElement.instance.src_Setter_(this, value);
   
   @DomName('HTMLSourceElement.srcset')
   @DocsEditable()
   @Experimental() // untriaged
-  String get srcset => _blink.BlinkHTMLSourceElement.instance.srcset_Getter_(unwrap_jso(this));
+  String get srcset => _blink.BlinkHTMLSourceElement.instance.srcset_Getter_(this);
   
   @DomName('HTMLSourceElement.srcset')
   @DocsEditable()
   @Experimental() // untriaged
-  set srcset(String value) => _blink.BlinkHTMLSourceElement.instance.srcset_Setter_(unwrap_jso(this), value);
+  set srcset(String value) => _blink.BlinkHTMLSourceElement.instance.srcset_Setter_(this, value);
   
   @DomName('HTMLSourceElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLSourceElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLSourceElement.instance.type_Getter_(this);
   
   @DomName('HTMLSourceElement.type')
   @DocsEditable()
-  set type(String value) => _blink.BlinkHTMLSourceElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLSourceElement.instance.type_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -36405,40 +34018,32 @@
   // To suppress missing implicit constructor warnings.
   factory SourceInfo._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static SourceInfo internalCreateSourceInfo() {
-    return new SourceInfo._internalWrap();
-  }
 
-  factory SourceInfo._internalWrap() {
-    return new SourceInfo.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SourceInfo.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SourceInfo.facing')
   @DocsEditable()
   @Experimental() // untriaged
-  String get facing => _blink.BlinkSourceInfo.instance.facing_Getter_(unwrap_jso(this));
+  String get facing => _blink.BlinkSourceInfo.instance.facing_Getter_(this);
   
   @DomName('SourceInfo.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkSourceInfo.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkSourceInfo.instance.id_Getter_(this);
   
   @DomName('SourceInfo.kind')
   @DocsEditable()
   @Experimental() // untriaged
-  String get kind => _blink.BlinkSourceInfo.instance.kind_Getter_(unwrap_jso(this));
+  String get kind => _blink.BlinkSourceInfo.instance.kind_Getter_(this);
   
   @DomName('SourceInfo.label')
   @DocsEditable()
   @Experimental() // untriaged
-  String get label => _blink.BlinkSourceInfo.instance.label_Getter_(unwrap_jso(this));
+  String get label => _blink.BlinkSourceInfo.instance.label_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -36460,11 +34065,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static SpanElement internalCreateSpanElement() {
-    return new SpanElement._internalWrap();
-  }
-
-  external factory SpanElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SpanElement.internal_() : super.internal_();
@@ -36495,39 +34096,31 @@
   @DomName('SpeechGrammar.SpeechGrammar')
   @DocsEditable()
   factory SpeechGrammar() {
-    return wrap_jso(_blink.BlinkSpeechGrammar.instance.constructorCallback_0_());
+    return _blink.BlinkSpeechGrammar.instance.constructorCallback_0_();
   }
 
+
   @Deprecated("Internal Use Only")
-  static SpeechGrammar internalCreateSpeechGrammar() {
-    return new SpeechGrammar._internalWrap();
-  }
-
-  factory SpeechGrammar._internalWrap() {
-    return new SpeechGrammar.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SpeechGrammar.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SpeechGrammar.src')
   @DocsEditable()
-  String get src => _blink.BlinkSpeechGrammar.instance.src_Getter_(unwrap_jso(this));
+  String get src => _blink.BlinkSpeechGrammar.instance.src_Getter_(this);
   
   @DomName('SpeechGrammar.src')
   @DocsEditable()
-  set src(String value) => _blink.BlinkSpeechGrammar.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkSpeechGrammar.instance.src_Setter_(this, value);
   
   @DomName('SpeechGrammar.weight')
   @DocsEditable()
-  num get weight => _blink.BlinkSpeechGrammar.instance.weight_Getter_(unwrap_jso(this));
+  num get weight => _blink.BlinkSpeechGrammar.instance.weight_Getter_(this);
   
   @DomName('SpeechGrammar.weight')
   @DocsEditable()
-  set weight(num value) => _blink.BlinkSpeechGrammar.instance.weight_Setter_(unwrap_jso(this), value);
+  set weight(num value) => _blink.BlinkSpeechGrammar.instance.weight_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -36548,35 +34141,27 @@
   @DomName('SpeechGrammarList.SpeechGrammarList')
   @DocsEditable()
   factory SpeechGrammarList() {
-    return wrap_jso(_blink.BlinkSpeechGrammarList.instance.constructorCallback_0_());
+    return _blink.BlinkSpeechGrammarList.instance.constructorCallback_0_();
   }
 
+
   @Deprecated("Internal Use Only")
-  static SpeechGrammarList internalCreateSpeechGrammarList() {
-    return new SpeechGrammarList._internalWrap();
-  }
-
-  factory SpeechGrammarList._internalWrap() {
-    return new SpeechGrammarList.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SpeechGrammarList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SpeechGrammarList.length')
   @DocsEditable()
-  int get length => _blink.BlinkSpeechGrammarList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkSpeechGrammarList.instance.length_Getter_(this);
   
   SpeechGrammar operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkSpeechGrammarList.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  SpeechGrammar _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkSpeechGrammarList.instance.item_Callback_1_(unwrap_jso(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.");
@@ -36618,25 +34203,25 @@
 
   void addFromString(String string, [num weight]) {
     if (weight != null) {
-      _blink.BlinkSpeechGrammarList.instance.addFromString_Callback_2_(unwrap_jso(this), string, weight);
+      _blink.BlinkSpeechGrammarList.instance.addFromString_Callback_2_(this, string, weight);
       return;
     }
-    _blink.BlinkSpeechGrammarList.instance.addFromString_Callback_1_(unwrap_jso(this), string);
+    _blink.BlinkSpeechGrammarList.instance.addFromString_Callback_1_(this, string);
     return;
   }
 
   void addFromUri(String src, [num weight]) {
     if (weight != null) {
-      _blink.BlinkSpeechGrammarList.instance.addFromUri_Callback_2_(unwrap_jso(this), src, weight);
+      _blink.BlinkSpeechGrammarList.instance.addFromUri_Callback_2_(this, src, weight);
       return;
     }
-    _blink.BlinkSpeechGrammarList.instance.addFromUri_Callback_1_(unwrap_jso(this), src);
+    _blink.BlinkSpeechGrammarList.instance.addFromUri_Callback_1_(this, src);
     return;
   }
 
   @DomName('SpeechGrammarList.item')
   @DocsEditable()
-  SpeechGrammar item(int index) => wrap_jso(_blink.BlinkSpeechGrammarList.instance.item_Callback_1_(unwrap_jso(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
@@ -36768,16 +34353,12 @@
   @DomName('SpeechRecognition.SpeechRecognition')
   @DocsEditable()
   factory SpeechRecognition() {
-    return wrap_jso(_blink.BlinkSpeechRecognition.instance.constructorCallback_0_());
+    return _blink.BlinkSpeechRecognition.instance.constructorCallback_0_();
   }
 
 
   @Deprecated("Internal Use Only")
-  static SpeechRecognition internalCreateSpeechRecognition() {
-    return new SpeechRecognition._internalWrap();
-  }
-
-  external factory SpeechRecognition._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SpeechRecognition.internal_() : super.internal_();
@@ -36789,74 +34370,74 @@
   @DomName('SpeechRecognition.audioTrack')
   @DocsEditable()
   @Experimental() // untriaged
-  MediaStreamTrack get audioTrack => wrap_jso(_blink.BlinkSpeechRecognition.instance.audioTrack_Getter_(unwrap_jso(this)));
+  MediaStreamTrack get audioTrack => _blink.BlinkSpeechRecognition.instance.audioTrack_Getter_(this);
   
   @DomName('SpeechRecognition.audioTrack')
   @DocsEditable()
   @Experimental() // untriaged
-  set audioTrack(MediaStreamTrack value) => _blink.BlinkSpeechRecognition.instance.audioTrack_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set audioTrack(MediaStreamTrack value) => _blink.BlinkSpeechRecognition.instance.audioTrack_Setter_(this, value);
   
   @DomName('SpeechRecognition.continuous')
   @DocsEditable()
-  bool get continuous => _blink.BlinkSpeechRecognition.instance.continuous_Getter_(unwrap_jso(this));
+  bool get continuous => _blink.BlinkSpeechRecognition.instance.continuous_Getter_(this);
   
   @DomName('SpeechRecognition.continuous')
   @DocsEditable()
-  set continuous(bool value) => _blink.BlinkSpeechRecognition.instance.continuous_Setter_(unwrap_jso(this), value);
+  set continuous(bool value) => _blink.BlinkSpeechRecognition.instance.continuous_Setter_(this, value);
   
   @DomName('SpeechRecognition.grammars')
   @DocsEditable()
-  SpeechGrammarList get grammars => wrap_jso(_blink.BlinkSpeechRecognition.instance.grammars_Getter_(unwrap_jso(this)));
+  SpeechGrammarList get grammars => _blink.BlinkSpeechRecognition.instance.grammars_Getter_(this);
   
   @DomName('SpeechRecognition.grammars')
   @DocsEditable()
-  set grammars(SpeechGrammarList value) => _blink.BlinkSpeechRecognition.instance.grammars_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set grammars(SpeechGrammarList value) => _blink.BlinkSpeechRecognition.instance.grammars_Setter_(this, value);
   
   @DomName('SpeechRecognition.interimResults')
   @DocsEditable()
-  bool get interimResults => _blink.BlinkSpeechRecognition.instance.interimResults_Getter_(unwrap_jso(this));
+  bool get interimResults => _blink.BlinkSpeechRecognition.instance.interimResults_Getter_(this);
   
   @DomName('SpeechRecognition.interimResults')
   @DocsEditable()
-  set interimResults(bool value) => _blink.BlinkSpeechRecognition.instance.interimResults_Setter_(unwrap_jso(this), value);
+  set interimResults(bool value) => _blink.BlinkSpeechRecognition.instance.interimResults_Setter_(this, value);
   
   @DomName('SpeechRecognition.lang')
   @DocsEditable()
-  String get lang => _blink.BlinkSpeechRecognition.instance.lang_Getter_(unwrap_jso(this));
+  String get lang => _blink.BlinkSpeechRecognition.instance.lang_Getter_(this);
   
   @DomName('SpeechRecognition.lang')
   @DocsEditable()
-  set lang(String value) => _blink.BlinkSpeechRecognition.instance.lang_Setter_(unwrap_jso(this), value);
+  set lang(String value) => _blink.BlinkSpeechRecognition.instance.lang_Setter_(this, value);
   
   @DomName('SpeechRecognition.maxAlternatives')
   @DocsEditable()
-  int get maxAlternatives => _blink.BlinkSpeechRecognition.instance.maxAlternatives_Getter_(unwrap_jso(this));
+  int get maxAlternatives => _blink.BlinkSpeechRecognition.instance.maxAlternatives_Getter_(this);
   
   @DomName('SpeechRecognition.maxAlternatives')
   @DocsEditable()
-  set maxAlternatives(int value) => _blink.BlinkSpeechRecognition.instance.maxAlternatives_Setter_(unwrap_jso(this), value);
+  set maxAlternatives(int value) => _blink.BlinkSpeechRecognition.instance.maxAlternatives_Setter_(this, value);
   
   @DomName('SpeechRecognition.serviceURI')
   @DocsEditable()
   @Experimental() // untriaged
-  String get serviceUri => _blink.BlinkSpeechRecognition.instance.serviceURI_Getter_(unwrap_jso(this));
+  String get serviceUri => _blink.BlinkSpeechRecognition.instance.serviceURI_Getter_(this);
   
   @DomName('SpeechRecognition.serviceURI')
   @DocsEditable()
   @Experimental() // untriaged
-  set serviceUri(String value) => _blink.BlinkSpeechRecognition.instance.serviceURI_Setter_(unwrap_jso(this), value);
+  set serviceUri(String value) => _blink.BlinkSpeechRecognition.instance.serviceURI_Setter_(this, value);
   
   @DomName('SpeechRecognition.abort')
   @DocsEditable()
-  void abort() => _blink.BlinkSpeechRecognition.instance.abort_Callback_0_(unwrap_jso(this));
+  void abort() => _blink.BlinkSpeechRecognition.instance.abort_Callback_0_(this);
   
   @DomName('SpeechRecognition.start')
   @DocsEditable()
-  void start() => _blink.BlinkSpeechRecognition.instance.start_Callback_0_(unwrap_jso(this));
+  void start() => _blink.BlinkSpeechRecognition.instance.start_Callback_0_(this);
   
   @DomName('SpeechRecognition.stop')
   @DocsEditable()
-  void stop() => _blink.BlinkSpeechRecognition.instance.stop_Callback_0_(unwrap_jso(this));
+  void stop() => _blink.BlinkSpeechRecognition.instance.stop_Callback_0_(this);
   
   /// Stream of `audioend` events handled by this [SpeechRecognition].
   @DomName('SpeechRecognition.onaudioend')
@@ -36930,28 +34511,20 @@
   // To suppress missing implicit constructor warnings.
   factory SpeechRecognitionAlternative._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static SpeechRecognitionAlternative internalCreateSpeechRecognitionAlternative() {
-    return new SpeechRecognitionAlternative._internalWrap();
-  }
 
-  factory SpeechRecognitionAlternative._internalWrap() {
-    return new SpeechRecognitionAlternative.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SpeechRecognitionAlternative.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SpeechRecognitionAlternative.confidence')
   @DocsEditable()
-  num get confidence => _blink.BlinkSpeechRecognitionAlternative.instance.confidence_Getter_(unwrap_jso(this));
+  num get confidence => _blink.BlinkSpeechRecognitionAlternative.instance.confidence_Getter_(this);
   
   @DomName('SpeechRecognitionAlternative.transcript')
   @DocsEditable()
-  String get transcript => _blink.BlinkSpeechRecognitionAlternative.instance.transcript_Getter_(unwrap_jso(this));
+  String get transcript => _blink.BlinkSpeechRecognitionAlternative.instance.transcript_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -36975,18 +34548,14 @@
   factory SpeechRecognitionError(String type, [Map initDict]) {
     if (initDict != null) {
       var initDict_1 = convertDartToNative_Dictionary(initDict);
-      return wrap_jso(_blink.BlinkSpeechRecognitionError.instance.constructorCallback_2_(type, initDict_1));
+      return _blink.BlinkSpeechRecognitionError.instance.constructorCallback_2_(type, initDict_1);
     }
-    return wrap_jso(_blink.BlinkSpeechRecognitionError.instance.constructorCallback_1_(type));
+    return _blink.BlinkSpeechRecognitionError.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static SpeechRecognitionError internalCreateSpeechRecognitionError() {
-    return new SpeechRecognitionError._internalWrap();
-  }
-
-  external factory SpeechRecognitionError._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SpeechRecognitionError.internal_() : super.internal_();
@@ -36994,11 +34563,11 @@
 
   @DomName('SpeechRecognitionError.error')
   @DocsEditable()
-  String get error => _blink.BlinkSpeechRecognitionError.instance.error_Getter_(unwrap_jso(this));
+  String get error => _blink.BlinkSpeechRecognitionError.instance.error_Getter_(this);
   
   @DomName('SpeechRecognitionError.message')
   @DocsEditable()
-  String get message => _blink.BlinkSpeechRecognitionError.instance.message_Getter_(unwrap_jso(this));
+  String get message => _blink.BlinkSpeechRecognitionError.instance.message_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -37022,18 +34591,14 @@
   factory SpeechRecognitionEvent(String type, [Map initDict]) {
     if (initDict != null) {
       var initDict_1 = convertDartToNative_Dictionary(initDict);
-      return wrap_jso(_blink.BlinkSpeechRecognitionEvent.instance.constructorCallback_2_(type, initDict_1));
+      return _blink.BlinkSpeechRecognitionEvent.instance.constructorCallback_2_(type, initDict_1);
     }
-    return wrap_jso(_blink.BlinkSpeechRecognitionEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkSpeechRecognitionEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static SpeechRecognitionEvent internalCreateSpeechRecognitionEvent() {
-    return new SpeechRecognitionEvent._internalWrap();
-  }
-
-  external factory SpeechRecognitionEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SpeechRecognitionEvent.internal_() : super.internal_();
@@ -37041,19 +34606,19 @@
 
   @DomName('SpeechRecognitionEvent.emma')
   @DocsEditable()
-  Document get emma => wrap_jso(_blink.BlinkSpeechRecognitionEvent.instance.emma_Getter_(unwrap_jso(this)));
+  Document get emma => _blink.BlinkSpeechRecognitionEvent.instance.emma_Getter_(this);
   
   @DomName('SpeechRecognitionEvent.interpretation')
   @DocsEditable()
-  Document get interpretation => wrap_jso(_blink.BlinkSpeechRecognitionEvent.instance.interpretation_Getter_(unwrap_jso(this)));
+  Document get interpretation => _blink.BlinkSpeechRecognitionEvent.instance.interpretation_Getter_(this);
   
   @DomName('SpeechRecognitionEvent.resultIndex')
   @DocsEditable()
-  int get resultIndex => _blink.BlinkSpeechRecognitionEvent.instance.resultIndex_Getter_(unwrap_jso(this));
+  int get resultIndex => _blink.BlinkSpeechRecognitionEvent.instance.resultIndex_Getter_(this);
   
   @DomName('SpeechRecognitionEvent.results')
   @DocsEditable()
-  List<SpeechRecognitionResult> get results => wrap_jso(_blink.BlinkSpeechRecognitionEvent.instance.results_Getter_(unwrap_jso(this)));
+  List<SpeechRecognitionResult> get results => (_blink.BlinkSpeechRecognitionEvent.instance.results_Getter_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -37072,32 +34637,24 @@
   // To suppress missing implicit constructor warnings.
   factory SpeechRecognitionResult._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static SpeechRecognitionResult internalCreateSpeechRecognitionResult() {
-    return new SpeechRecognitionResult._internalWrap();
-  }
 
-  factory SpeechRecognitionResult._internalWrap() {
-    return new SpeechRecognitionResult.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SpeechRecognitionResult.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SpeechRecognitionResult.isFinal')
   @DocsEditable()
-  bool get isFinal => _blink.BlinkSpeechRecognitionResult.instance.isFinal_Getter_(unwrap_jso(this));
+  bool get isFinal => _blink.BlinkSpeechRecognitionResult.instance.isFinal_Getter_(this);
   
   @DomName('SpeechRecognitionResult.length')
   @DocsEditable()
-  int get length => _blink.BlinkSpeechRecognitionResult.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkSpeechRecognitionResult.instance.length_Getter_(this);
   
   @DomName('SpeechRecognitionResult.item')
   @DocsEditable()
-  SpeechRecognitionAlternative item(int index) => wrap_jso(_blink.BlinkSpeechRecognitionResult.instance.item_Callback_1_(unwrap_jso(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
@@ -37117,11 +34674,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static SpeechSynthesis internalCreateSpeechSynthesis() {
-    return new SpeechSynthesis._internalWrap();
-  }
-
-  external factory SpeechSynthesis._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SpeechSynthesis.internal_() : super.internal_();
@@ -37129,35 +34682,35 @@
 
   @DomName('SpeechSynthesis.paused')
   @DocsEditable()
-  bool get paused => _blink.BlinkSpeechSynthesis.instance.paused_Getter_(unwrap_jso(this));
+  bool get paused => _blink.BlinkSpeechSynthesis.instance.paused_Getter_(this);
   
   @DomName('SpeechSynthesis.pending')
   @DocsEditable()
-  bool get pending => _blink.BlinkSpeechSynthesis.instance.pending_Getter_(unwrap_jso(this));
+  bool get pending => _blink.BlinkSpeechSynthesis.instance.pending_Getter_(this);
   
   @DomName('SpeechSynthesis.speaking')
   @DocsEditable()
-  bool get speaking => _blink.BlinkSpeechSynthesis.instance.speaking_Getter_(unwrap_jso(this));
+  bool get speaking => _blink.BlinkSpeechSynthesis.instance.speaking_Getter_(this);
   
   @DomName('SpeechSynthesis.cancel')
   @DocsEditable()
-  void cancel() => _blink.BlinkSpeechSynthesis.instance.cancel_Callback_0_(unwrap_jso(this));
+  void cancel() => _blink.BlinkSpeechSynthesis.instance.cancel_Callback_0_(this);
   
   @DomName('SpeechSynthesis.getVoices')
   @DocsEditable()
-  List<SpeechSynthesisVoice> getVoices() => wrap_jso(_blink.BlinkSpeechSynthesis.instance.getVoices_Callback_0_(unwrap_jso(this)));
+  List<SpeechSynthesisVoice> getVoices() => (_blink.BlinkSpeechSynthesis.instance.getVoices_Callback_0_(this));
   
   @DomName('SpeechSynthesis.pause')
   @DocsEditable()
-  void pause() => _blink.BlinkSpeechSynthesis.instance.pause_Callback_0_(unwrap_jso(this));
+  void pause() => _blink.BlinkSpeechSynthesis.instance.pause_Callback_0_(this);
   
   @DomName('SpeechSynthesis.resume')
   @DocsEditable()
-  void resume() => _blink.BlinkSpeechSynthesis.instance.resume_Callback_0_(unwrap_jso(this));
+  void resume() => _blink.BlinkSpeechSynthesis.instance.resume_Callback_0_(this);
   
   @DomName('SpeechSynthesis.speak')
   @DocsEditable()
-  void speak(SpeechSynthesisUtterance utterance) => _blink.BlinkSpeechSynthesis.instance.speak_Callback_1_(unwrap_jso(this), unwrap_jso(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
@@ -37177,11 +34730,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static SpeechSynthesisEvent internalCreateSpeechSynthesisEvent() {
-    return new SpeechSynthesisEvent._internalWrap();
-  }
-
-  external factory SpeechSynthesisEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SpeechSynthesisEvent.internal_() : super.internal_();
@@ -37189,20 +34738,20 @@
 
   @DomName('SpeechSynthesisEvent.charIndex')
   @DocsEditable()
-  int get charIndex => _blink.BlinkSpeechSynthesisEvent.instance.charIndex_Getter_(unwrap_jso(this));
+  int get charIndex => _blink.BlinkSpeechSynthesisEvent.instance.charIndex_Getter_(this);
   
   @DomName('SpeechSynthesisEvent.elapsedTime')
   @DocsEditable()
-  num get elapsedTime => _blink.BlinkSpeechSynthesisEvent.instance.elapsedTime_Getter_(unwrap_jso(this));
+  num get elapsedTime => _blink.BlinkSpeechSynthesisEvent.instance.elapsedTime_Getter_(this);
   
   @DomName('SpeechSynthesisEvent.name')
   @DocsEditable()
-  String get name => _blink.BlinkSpeechSynthesisEvent.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkSpeechSynthesisEvent.instance.name_Getter_(this);
   
   @DomName('SpeechSynthesisEvent.utterance')
   @DocsEditable()
   @Experimental() // untriaged
-  SpeechSynthesisUtterance get utterance => wrap_jso(_blink.BlinkSpeechSynthesisEvent.instance.utterance_Getter_(unwrap_jso(this)));
+  SpeechSynthesisUtterance get utterance => _blink.BlinkSpeechSynthesisEvent.instance.utterance_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -37293,16 +34842,12 @@
   @DomName('SpeechSynthesisUtterance.SpeechSynthesisUtterance')
   @DocsEditable()
   factory SpeechSynthesisUtterance([String text]) {
-    return wrap_jso(_blink.BlinkSpeechSynthesisUtterance.instance.constructorCallback_1_(text));
+    return _blink.BlinkSpeechSynthesisUtterance.instance.constructorCallback_1_(text);
   }
 
 
   @Deprecated("Internal Use Only")
-  static SpeechSynthesisUtterance internalCreateSpeechSynthesisUtterance() {
-    return new SpeechSynthesisUtterance._internalWrap();
-  }
-
-  external factory SpeechSynthesisUtterance._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SpeechSynthesisUtterance.internal_() : super.internal_();
@@ -37310,51 +34855,51 @@
 
   @DomName('SpeechSynthesisUtterance.lang')
   @DocsEditable()
-  String get lang => _blink.BlinkSpeechSynthesisUtterance.instance.lang_Getter_(unwrap_jso(this));
+  String get lang => _blink.BlinkSpeechSynthesisUtterance.instance.lang_Getter_(this);
   
   @DomName('SpeechSynthesisUtterance.lang')
   @DocsEditable()
-  set lang(String value) => _blink.BlinkSpeechSynthesisUtterance.instance.lang_Setter_(unwrap_jso(this), value);
+  set lang(String value) => _blink.BlinkSpeechSynthesisUtterance.instance.lang_Setter_(this, value);
   
   @DomName('SpeechSynthesisUtterance.pitch')
   @DocsEditable()
-  num get pitch => _blink.BlinkSpeechSynthesisUtterance.instance.pitch_Getter_(unwrap_jso(this));
+  num get pitch => _blink.BlinkSpeechSynthesisUtterance.instance.pitch_Getter_(this);
   
   @DomName('SpeechSynthesisUtterance.pitch')
   @DocsEditable()
-  set pitch(num value) => _blink.BlinkSpeechSynthesisUtterance.instance.pitch_Setter_(unwrap_jso(this), value);
+  set pitch(num value) => _blink.BlinkSpeechSynthesisUtterance.instance.pitch_Setter_(this, value);
   
   @DomName('SpeechSynthesisUtterance.rate')
   @DocsEditable()
-  num get rate => _blink.BlinkSpeechSynthesisUtterance.instance.rate_Getter_(unwrap_jso(this));
+  num get rate => _blink.BlinkSpeechSynthesisUtterance.instance.rate_Getter_(this);
   
   @DomName('SpeechSynthesisUtterance.rate')
   @DocsEditable()
-  set rate(num value) => _blink.BlinkSpeechSynthesisUtterance.instance.rate_Setter_(unwrap_jso(this), value);
+  set rate(num value) => _blink.BlinkSpeechSynthesisUtterance.instance.rate_Setter_(this, value);
   
   @DomName('SpeechSynthesisUtterance.text')
   @DocsEditable()
-  String get text => _blink.BlinkSpeechSynthesisUtterance.instance.text_Getter_(unwrap_jso(this));
+  String get text => _blink.BlinkSpeechSynthesisUtterance.instance.text_Getter_(this);
   
   @DomName('SpeechSynthesisUtterance.text')
   @DocsEditable()
-  set text(String value) => _blink.BlinkSpeechSynthesisUtterance.instance.text_Setter_(unwrap_jso(this), value);
+  set text(String value) => _blink.BlinkSpeechSynthesisUtterance.instance.text_Setter_(this, value);
   
   @DomName('SpeechSynthesisUtterance.voice')
   @DocsEditable()
-  SpeechSynthesisVoice get voice => wrap_jso(_blink.BlinkSpeechSynthesisUtterance.instance.voice_Getter_(unwrap_jso(this)));
+  SpeechSynthesisVoice get voice => _blink.BlinkSpeechSynthesisUtterance.instance.voice_Getter_(this);
   
   @DomName('SpeechSynthesisUtterance.voice')
   @DocsEditable()
-  set voice(SpeechSynthesisVoice value) => _blink.BlinkSpeechSynthesisUtterance.instance.voice_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set voice(SpeechSynthesisVoice value) => _blink.BlinkSpeechSynthesisUtterance.instance.voice_Setter_(this, value);
   
   @DomName('SpeechSynthesisUtterance.volume')
   @DocsEditable()
-  num get volume => _blink.BlinkSpeechSynthesisUtterance.instance.volume_Getter_(unwrap_jso(this));
+  num get volume => _blink.BlinkSpeechSynthesisUtterance.instance.volume_Getter_(this);
   
   @DomName('SpeechSynthesisUtterance.volume')
   @DocsEditable()
-  set volume(num value) => _blink.BlinkSpeechSynthesisUtterance.instance.volume_Setter_(unwrap_jso(this), value);
+  set volume(num value) => _blink.BlinkSpeechSynthesisUtterance.instance.volume_Setter_(this, value);
   
   /// Stream of `boundary` events handled by this [SpeechSynthesisUtterance].
   @DomName('SpeechSynthesisUtterance.onboundary')
@@ -37407,40 +34952,32 @@
   // To suppress missing implicit constructor warnings.
   factory SpeechSynthesisVoice._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static SpeechSynthesisVoice internalCreateSpeechSynthesisVoice() {
-    return new SpeechSynthesisVoice._internalWrap();
-  }
 
-  factory SpeechSynthesisVoice._internalWrap() {
-    return new SpeechSynthesisVoice.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SpeechSynthesisVoice.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SpeechSynthesisVoice.default')
   @DocsEditable()
-  bool get defaultValue => _blink.BlinkSpeechSynthesisVoice.instance.default_Getter_(unwrap_jso(this));
+  bool get defaultValue => _blink.BlinkSpeechSynthesisVoice.instance.default_Getter_(this);
   
   @DomName('SpeechSynthesisVoice.lang')
   @DocsEditable()
-  String get lang => _blink.BlinkSpeechSynthesisVoice.instance.lang_Getter_(unwrap_jso(this));
+  String get lang => _blink.BlinkSpeechSynthesisVoice.instance.lang_Getter_(this);
   
   @DomName('SpeechSynthesisVoice.localService')
   @DocsEditable()
-  bool get localService => _blink.BlinkSpeechSynthesisVoice.instance.localService_Getter_(unwrap_jso(this));
+  bool get localService => _blink.BlinkSpeechSynthesisVoice.instance.localService_Getter_(this);
   
   @DomName('SpeechSynthesisVoice.name')
   @DocsEditable()
-  String get name => _blink.BlinkSpeechSynthesisVoice.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkSpeechSynthesisVoice.instance.name_Getter_(this);
   
   @DomName('SpeechSynthesisVoice.voiceURI')
   @DocsEditable()
-  String get voiceUri => _blink.BlinkSpeechSynthesisVoice.instance.voiceURI_Getter_(unwrap_jso(this));
+  String get voiceUri => _blink.BlinkSpeechSynthesisVoice.instance.voiceURI_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -37459,11 +34996,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static StashedMessagePort internalCreateStashedMessagePort() {
-    return new StashedMessagePort._internalWrap();
-  }
-
-  external factory StashedMessagePort._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   StashedMessagePort.internal_() : super.internal_();
@@ -37472,7 +35005,7 @@
   @DomName('StashedMessagePort.name')
   @DocsEditable()
   @Experimental() // untriaged
-  String get name => _blink.BlinkStashedMessagePort.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkStashedMessagePort.instance.name_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -37496,11 +35029,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static StashedPortCollection internalCreateStashedPortCollection() {
-    return new StashedPortCollection._internalWrap();
-  }
-
-  external factory StashedPortCollection._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   StashedPortCollection.internal_() : super.internal_();
@@ -37509,7 +35038,7 @@
   @DomName('StashedPortCollection.add')
   @DocsEditable()
   @Experimental() // untriaged
-  StashedMessagePort add(String name, MessagePort port) => wrap_jso(_blink.BlinkStashedPortCollection.instance.add_Callback_2_(unwrap_jso(this), name, unwrap_jso(port)));
+  StashedMessagePort add(String name, MessagePort port) => _blink.BlinkStashedPortCollection.instance.add_Callback_2_(this, name, port);
   
   @DomName('StashedPortCollection.onmessage')
   @DocsEditable()
@@ -37607,52 +35136,44 @@
   // To suppress missing implicit constructor warnings.
   factory Storage._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Storage internalCreateStorage() {
-    return new Storage._internalWrap();
-  }
 
-  factory Storage._internalWrap() {
-    return new Storage.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Storage.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Storage.length')
   @DocsEditable()
-  int get _length => _blink.BlinkStorage.instance.length_Getter_(unwrap_jso(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.instance.$__delete___Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.$__delete___Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.$__getter___Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.$__getter___Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.$__setter___Callback_2_(unwrap_jso(this), unwrap_jso(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.instance.$__setter___Callback_2_(unwrap_jso(this), unwrap_jso(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");
@@ -37660,23 +35181,23 @@
 
   @DomName('Storage.clear')
   @DocsEditable()
-  void _clear() => _blink.BlinkStorage.instance.clear_Callback_0_(unwrap_jso(this));
+  void _clear() => _blink.BlinkStorage.instance.clear_Callback_0_(this);
   
   @DomName('Storage.getItem')
   @DocsEditable()
-  String _getItem(String key) => _blink.BlinkStorage.instance.getItem_Callback_1_(unwrap_jso(this), key);
+  String _getItem(String key) => _blink.BlinkStorage.instance.getItem_Callback_1_(this, key);
   
   @DomName('Storage.key')
   @DocsEditable()
-  String _key(int index) => _blink.BlinkStorage.instance.key_Callback_1_(unwrap_jso(this), index);
+  String _key(int index) => _blink.BlinkStorage.instance.key_Callback_1_(this, index);
   
   @DomName('Storage.removeItem')
   @DocsEditable()
-  void _removeItem(String key) => _blink.BlinkStorage.instance.removeItem_Callback_1_(unwrap_jso(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.instance.setItem_Callback_2_(unwrap_jso(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
@@ -37715,18 +35236,14 @@
   factory StorageEvent._(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkStorageEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkStorageEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkStorageEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkStorageEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static StorageEvent internalCreateStorageEvent() {
-    return new StorageEvent._internalWrap();
-  }
-
-  external factory StorageEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   StorageEvent.internal_() : super.internal_();
@@ -37734,27 +35251,27 @@
 
   @DomName('StorageEvent.key')
   @DocsEditable()
-  String get key => _blink.BlinkStorageEvent.instance.key_Getter_(unwrap_jso(this));
+  String get key => _blink.BlinkStorageEvent.instance.key_Getter_(this);
   
   @DomName('StorageEvent.newValue')
   @DocsEditable()
-  String get newValue => _blink.BlinkStorageEvent.instance.newValue_Getter_(unwrap_jso(this));
+  String get newValue => _blink.BlinkStorageEvent.instance.newValue_Getter_(this);
   
   @DomName('StorageEvent.oldValue')
   @DocsEditable()
-  String get oldValue => _blink.BlinkStorageEvent.instance.oldValue_Getter_(unwrap_jso(this));
+  String get oldValue => _blink.BlinkStorageEvent.instance.oldValue_Getter_(this);
   
   @DomName('StorageEvent.storageArea')
   @DocsEditable()
-  Storage get storageArea => wrap_jso(_blink.BlinkStorageEvent.instance.storageArea_Getter_(unwrap_jso(this)));
+  Storage get storageArea => _blink.BlinkStorageEvent.instance.storageArea_Getter_(this);
   
   @DomName('StorageEvent.url')
   @DocsEditable()
-  String get url => _blink.BlinkStorageEvent.instance.url_Getter_(unwrap_jso(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.instance.initStorageEvent_Callback_8_(unwrap_jso(this), typeArg, canBubbleArg, cancelableArg, keyArg, oldValueArg, newValueArg, urlArg, unwrap_jso(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
@@ -37772,30 +35289,22 @@
   // To suppress missing implicit constructor warnings.
   factory StorageInfo._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static StorageInfo internalCreateStorageInfo() {
-    return new StorageInfo._internalWrap();
-  }
 
-  factory StorageInfo._internalWrap() {
-    return new StorageInfo.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   StorageInfo.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('StorageInfo.quota')
   @DocsEditable()
   @Experimental() // untriaged
-  int get quota => _blink.BlinkStorageInfo.instance.quota_Getter_(unwrap_jso(this));
+  int get quota => _blink.BlinkStorageInfo.instance.quota_Getter_(this);
   
   @DomName('StorageInfo.usage')
   @DocsEditable()
   @Experimental() // untriaged
-  int get usage => _blink.BlinkStorageInfo.instance.usage_Getter_(unwrap_jso(this));
+  int get usage => _blink.BlinkStorageInfo.instance.usage_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -37813,35 +35322,27 @@
   // To suppress missing implicit constructor warnings.
   factory StorageQuota._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static StorageQuota internalCreateStorageQuota() {
-    return new StorageQuota._internalWrap();
-  }
 
-  factory StorageQuota._internalWrap() {
-    return new StorageQuota.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   StorageQuota.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('StorageQuota.supportedTypes')
   @DocsEditable()
   @Experimental() // untriaged
-  List<String> get supportedTypes => wrap_jso(_blink.BlinkStorageQuota.instance.supportedTypes_Getter_(unwrap_jso(this)));
+  List<String> get supportedTypes => _blink.BlinkStorageQuota.instance.supportedTypes_Getter_(this);
   
   @DomName('StorageQuota.queryInfo')
   @DocsEditable()
   @Experimental() // untriaged
-  Future queryInfo(String type) => wrap_jso(_blink.BlinkStorageQuota.instance.queryInfo_Callback_1_(unwrap_jso(this), type));
+  Future queryInfo(String type) => convertNativePromiseToDartFuture(_blink.BlinkStorageQuota.instance.queryInfo_Callback_1_(this, type));
   
   @DomName('StorageQuota.requestPersistentQuota')
   @DocsEditable()
   @Experimental() // untriaged
-  Future requestPersistentQuota(int newQuota) => wrap_jso(_blink.BlinkStorageQuota.instance.requestPersistentQuota_Callback_1_(unwrap_jso(this), newQuota));
+  Future requestPersistentQuota(int newQuota) => convertNativePromiseToDartFuture(_blink.BlinkStorageQuota.instance.requestPersistentQuota_Callback_1_(this, newQuota));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -37896,11 +35397,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static StyleElement internalCreateStyleElement() {
-    return new StyleElement._internalWrap();
-  }
-
-  external factory StyleElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   StyleElement.internal_() : super.internal_();
@@ -37914,31 +35411,31 @@
 
   @DomName('HTMLStyleElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLStyleElement.instance.disabled_Getter_(unwrap_jso(this));
+  bool get disabled => _blink.BlinkHTMLStyleElement.instance.disabled_Getter_(this);
   
   @DomName('HTMLStyleElement.disabled')
   @DocsEditable()
-  set disabled(bool value) => _blink.BlinkHTMLStyleElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLStyleElement.instance.disabled_Setter_(this, value);
   
   @DomName('HTMLStyleElement.media')
   @DocsEditable()
-  String get media => _blink.BlinkHTMLStyleElement.instance.media_Getter_(unwrap_jso(this));
+  String get media => _blink.BlinkHTMLStyleElement.instance.media_Getter_(this);
   
   @DomName('HTMLStyleElement.media')
   @DocsEditable()
-  set media(String value) => _blink.BlinkHTMLStyleElement.instance.media_Setter_(unwrap_jso(this), value);
+  set media(String value) => _blink.BlinkHTMLStyleElement.instance.media_Setter_(this, value);
   
   @DomName('HTMLStyleElement.sheet')
   @DocsEditable()
-  StyleSheet get sheet => wrap_jso(_blink.BlinkHTMLStyleElement.instance.sheet_Getter_(unwrap_jso(this)));
+  StyleSheet get sheet => _blink.BlinkHTMLStyleElement.instance.sheet_Getter_(this);
   
   @DomName('HTMLStyleElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLStyleElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLStyleElement.instance.type_Getter_(this);
   
   @DomName('HTMLStyleElement.type')
   @DocsEditable()
-  set type(String value) => _blink.BlinkHTMLStyleElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLStyleElement.instance.type_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -37956,28 +35453,20 @@
   // To suppress missing implicit constructor warnings.
   factory StyleMedia._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static StyleMedia internalCreateStyleMedia() {
-    return new StyleMedia._internalWrap();
-  }
 
-  factory StyleMedia._internalWrap() {
-    return new StyleMedia.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   StyleMedia.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('StyleMedia.type')
   @DocsEditable()
-  String get type => _blink.BlinkStyleMedia.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkStyleMedia.instance.type_Getter_(this);
   
   @DomName('StyleMedia.matchMedium')
   @DocsEditable()
-  bool matchMedium(String mediaquery) => _blink.BlinkStyleMedia.instance.matchMedium_Callback_1_(unwrap_jso(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
@@ -37993,52 +35482,44 @@
   // To suppress missing implicit constructor warnings.
   factory StyleSheet._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static StyleSheet internalCreateStyleSheet() {
-    return new StyleSheet._internalWrap();
-  }
 
-  factory StyleSheet._internalWrap() {
-    return new StyleSheet.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   StyleSheet.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('StyleSheet.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkStyleSheet.instance.disabled_Getter_(unwrap_jso(this));
+  bool get disabled => _blink.BlinkStyleSheet.instance.disabled_Getter_(this);
   
   @DomName('StyleSheet.disabled')
   @DocsEditable()
-  set disabled(bool value) => _blink.BlinkStyleSheet.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkStyleSheet.instance.disabled_Setter_(this, value);
   
   @DomName('StyleSheet.href')
   @DocsEditable()
-  String get href => _blink.BlinkStyleSheet.instance.href_Getter_(unwrap_jso(this));
+  String get href => _blink.BlinkStyleSheet.instance.href_Getter_(this);
   
   @DomName('StyleSheet.media')
   @DocsEditable()
-  MediaList get media => wrap_jso(_blink.BlinkStyleSheet.instance.media_Getter_(unwrap_jso(this)));
+  MediaList get media => _blink.BlinkStyleSheet.instance.media_Getter_(this);
   
   @DomName('StyleSheet.ownerNode')
   @DocsEditable()
-  Node get ownerNode => wrap_jso(_blink.BlinkStyleSheet.instance.ownerNode_Getter_(unwrap_jso(this)));
+  Node get ownerNode => _blink.BlinkStyleSheet.instance.ownerNode_Getter_(this);
   
   @DomName('StyleSheet.parentStyleSheet')
   @DocsEditable()
-  StyleSheet get parentStyleSheet => wrap_jso(_blink.BlinkStyleSheet.instance.parentStyleSheet_Getter_(unwrap_jso(this)));
+  StyleSheet get parentStyleSheet => _blink.BlinkStyleSheet.instance.parentStyleSheet_Getter_(this);
   
   @DomName('StyleSheet.title')
   @DocsEditable()
-  String get title => _blink.BlinkStyleSheet.instance.title_Getter_(unwrap_jso(this));
+  String get title => _blink.BlinkStyleSheet.instance.title_Getter_(this);
   
   @DomName('StyleSheet.type')
   @DocsEditable()
-  String get type => _blink.BlinkStyleSheet.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkStyleSheet.instance.type_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -38059,16 +35540,12 @@
   @DocsEditable()
   factory SyncEvent(String type, Map init) {
     var init_1 = convertDartToNative_Dictionary(init);
-    return wrap_jso(_blink.BlinkSyncEvent.instance.constructorCallback_2_(type, init_1));
+    return _blink.BlinkSyncEvent.instance.constructorCallback_2_(type, init_1);
   }
 
 
   @Deprecated("Internal Use Only")
-  static SyncEvent internalCreateSyncEvent() {
-    return new SyncEvent._internalWrap();
-  }
-
-  external factory SyncEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SyncEvent.internal_() : super.internal_();
@@ -38077,7 +35554,7 @@
   @DomName('SyncEvent.registration')
   @DocsEditable()
   @Experimental() // untriaged
-  SyncRegistration get registration => wrap_jso(_blink.BlinkSyncEvent.instance.registration_Getter_(unwrap_jso(this)));
+  SyncRegistration get registration => _blink.BlinkSyncEvent.instance.registration_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -38094,41 +35571,33 @@
   // To suppress missing implicit constructor warnings.
   factory SyncManager._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static SyncManager internalCreateSyncManager() {
-    return new SyncManager._internalWrap();
-  }
 
-  factory SyncManager._internalWrap() {
-    return new SyncManager.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SyncManager.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SyncManager.getRegistration')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getRegistration(String tag) => wrap_jso(_blink.BlinkSyncManager.instance.getRegistration_Callback_1_(unwrap_jso(this), tag));
+  Future getRegistration(String tag) => convertNativePromiseToDartFuture(_blink.BlinkSyncManager.instance.getRegistration_Callback_1_(this, tag));
   
   @DomName('SyncManager.getRegistrations')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getRegistrations() => wrap_jso(_blink.BlinkSyncManager.instance.getRegistrations_Callback_0_(unwrap_jso(this)));
+  Future getRegistrations() => convertNativePromiseToDartFuture(_blink.BlinkSyncManager.instance.getRegistrations_Callback_0_(this));
   
   @DomName('SyncManager.permissionState')
   @DocsEditable()
   @Experimental() // untriaged
-  Future permissionState() => wrap_jso(_blink.BlinkSyncManager.instance.permissionState_Callback_0_(unwrap_jso(this)));
+  Future permissionState() => convertNativePromiseToDartFuture(_blink.BlinkSyncManager.instance.permissionState_Callback_0_(this));
   
   Future register([Map options]) {
     if (options != null) {
-      return wrap_jso(_blink.BlinkSyncManager.instance.register_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(options)));
+      return _blink.BlinkSyncManager.instance.register_Callback_1_(this, convertDartToNative_Dictionary(options));
     }
-    return wrap_jso(_blink.BlinkSyncManager.instance.register_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkSyncManager.instance.register_Callback_0_(this);
   }
 
 }
@@ -38146,30 +35615,22 @@
   // To suppress missing implicit constructor warnings.
   factory SyncRegistration._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static SyncRegistration internalCreateSyncRegistration() {
-    return new SyncRegistration._internalWrap();
-  }
 
-  factory SyncRegistration._internalWrap() {
-    return new SyncRegistration.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SyncRegistration.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SyncRegistration.tag')
   @DocsEditable()
   @Experimental() // untriaged
-  String get tag => _blink.BlinkSyncRegistration.instance.tag_Getter_(unwrap_jso(this));
+  String get tag => _blink.BlinkSyncRegistration.instance.tag_Getter_(this);
   
   @DomName('SyncRegistration.unregister')
   @DocsEditable()
   @Experimental() // untriaged
-  Future unregister() => wrap_jso(_blink.BlinkSyncRegistration.instance.unregister_Callback_0_(unwrap_jso(this)));
+  Future unregister() => convertNativePromiseToDartFuture(_blink.BlinkSyncRegistration.instance.unregister_Callback_0_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -38191,11 +35652,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TableCaptionElement internalCreateTableCaptionElement() {
-    return new TableCaptionElement._internalWrap();
-  }
-
-  external factory TableCaptionElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TableCaptionElement.internal_() : super.internal_();
@@ -38227,11 +35684,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TableCellElement internalCreateTableCellElement() {
-    return new TableCellElement._internalWrap();
-  }
-
-  external factory TableCellElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TableCellElement.internal_() : super.internal_();
@@ -38245,31 +35698,31 @@
 
   @DomName('HTMLTableCellElement.cellIndex')
   @DocsEditable()
-  int get cellIndex => _blink.BlinkHTMLTableCellElement.instance.cellIndex_Getter_(unwrap_jso(this));
+  int get cellIndex => _blink.BlinkHTMLTableCellElement.instance.cellIndex_Getter_(this);
   
   @DomName('HTMLTableCellElement.colSpan')
   @DocsEditable()
-  int get colSpan => _blink.BlinkHTMLTableCellElement.instance.colSpan_Getter_(unwrap_jso(this));
+  int get colSpan => _blink.BlinkHTMLTableCellElement.instance.colSpan_Getter_(this);
   
   @DomName('HTMLTableCellElement.colSpan')
   @DocsEditable()
-  set colSpan(int value) => _blink.BlinkHTMLTableCellElement.instance.colSpan_Setter_(unwrap_jso(this), value);
+  set colSpan(int value) => _blink.BlinkHTMLTableCellElement.instance.colSpan_Setter_(this, value);
   
   @DomName('HTMLTableCellElement.headers')
   @DocsEditable()
-  String get headers => _blink.BlinkHTMLTableCellElement.instance.headers_Getter_(unwrap_jso(this));
+  String get headers => _blink.BlinkHTMLTableCellElement.instance.headers_Getter_(this);
   
   @DomName('HTMLTableCellElement.headers')
   @DocsEditable()
-  set headers(String value) => _blink.BlinkHTMLTableCellElement.instance.headers_Setter_(unwrap_jso(this), value);
+  set headers(String value) => _blink.BlinkHTMLTableCellElement.instance.headers_Setter_(this, value);
   
   @DomName('HTMLTableCellElement.rowSpan')
   @DocsEditable()
-  int get rowSpan => _blink.BlinkHTMLTableCellElement.instance.rowSpan_Getter_(unwrap_jso(this));
+  int get rowSpan => _blink.BlinkHTMLTableCellElement.instance.rowSpan_Getter_(this);
   
   @DomName('HTMLTableCellElement.rowSpan')
   @DocsEditable()
-  set rowSpan(int value) => _blink.BlinkHTMLTableCellElement.instance.rowSpan_Setter_(unwrap_jso(this), value);
+  set rowSpan(int value) => _blink.BlinkHTMLTableCellElement.instance.rowSpan_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -38291,11 +35744,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TableColElement internalCreateTableColElement() {
-    return new TableColElement._internalWrap();
-  }
-
-  external factory TableColElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TableColElement.internal_() : super.internal_();
@@ -38309,11 +35758,11 @@
 
   @DomName('HTMLTableColElement.span')
   @DocsEditable()
-  int get span => _blink.BlinkHTMLTableColElement.instance.span_Getter_(unwrap_jso(this));
+  int get span => _blink.BlinkHTMLTableColElement.instance.span_Getter_(this);
   
   @DomName('HTMLTableColElement.span')
   @DocsEditable()
-  set span(int value) => _blink.BlinkHTMLTableColElement.instance.span_Setter_(unwrap_jso(this), value);
+  set span(int value) => _blink.BlinkHTMLTableColElement.instance.span_Setter_(this, value);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -38353,11 +35802,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TableElement internalCreateTableElement() {
-    return new TableElement._internalWrap();
-  }
-
-  external factory TableElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TableElement.internal_() : super.internal_();
@@ -38371,73 +35816,73 @@
 
   @DomName('HTMLTableElement.caption')
   @DocsEditable()
-  TableCaptionElement get caption => wrap_jso(_blink.BlinkHTMLTableElement.instance.caption_Getter_(unwrap_jso(this)));
+  TableCaptionElement get caption => _blink.BlinkHTMLTableElement.instance.caption_Getter_(this);
   
   @DomName('HTMLTableElement.caption')
   @DocsEditable()
-  set caption(TableCaptionElement value) => _blink.BlinkHTMLTableElement.instance.caption_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set caption(TableCaptionElement value) => _blink.BlinkHTMLTableElement.instance.caption_Setter_(this, value);
   
   @DomName('HTMLTableElement.rows')
   @DocsEditable()
-  List<Node> get _rows => wrap_jso(_blink.BlinkHTMLTableElement.instance.rows_Getter_(unwrap_jso(this)));
+  List<Node> get _rows => (_blink.BlinkHTMLTableElement.instance.rows_Getter_(this));
   
   @DomName('HTMLTableElement.tBodies')
   @DocsEditable()
-  List<Node> get _tBodies => wrap_jso(_blink.BlinkHTMLTableElement.instance.tBodies_Getter_(unwrap_jso(this)));
+  List<Node> get _tBodies => (_blink.BlinkHTMLTableElement.instance.tBodies_Getter_(this));
   
   @DomName('HTMLTableElement.tFoot')
   @DocsEditable()
-  TableSectionElement get tFoot => wrap_jso(_blink.BlinkHTMLTableElement.instance.tFoot_Getter_(unwrap_jso(this)));
+  TableSectionElement get tFoot => _blink.BlinkHTMLTableElement.instance.tFoot_Getter_(this);
   
   @DomName('HTMLTableElement.tFoot')
   @DocsEditable()
-  set tFoot(TableSectionElement value) => _blink.BlinkHTMLTableElement.instance.tFoot_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set tFoot(TableSectionElement value) => _blink.BlinkHTMLTableElement.instance.tFoot_Setter_(this, value);
   
   @DomName('HTMLTableElement.tHead')
   @DocsEditable()
-  TableSectionElement get tHead => wrap_jso(_blink.BlinkHTMLTableElement.instance.tHead_Getter_(unwrap_jso(this)));
+  TableSectionElement get tHead => _blink.BlinkHTMLTableElement.instance.tHead_Getter_(this);
   
   @DomName('HTMLTableElement.tHead')
   @DocsEditable()
-  set tHead(TableSectionElement value) => _blink.BlinkHTMLTableElement.instance.tHead_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set tHead(TableSectionElement value) => _blink.BlinkHTMLTableElement.instance.tHead_Setter_(this, value);
   
   @DomName('HTMLTableElement.createCaption')
   @DocsEditable()
-  HtmlElement _createCaption() => wrap_jso(_blink.BlinkHTMLTableElement.instance.createCaption_Callback_0_(unwrap_jso(this)));
+  HtmlElement _createCaption() => _blink.BlinkHTMLTableElement.instance.createCaption_Callback_0_(this);
   
   @DomName('HTMLTableElement.createTBody')
   @DocsEditable()
-  HtmlElement _createTBody() => wrap_jso(_blink.BlinkHTMLTableElement.instance.createTBody_Callback_0_(unwrap_jso(this)));
+  HtmlElement _createTBody() => _blink.BlinkHTMLTableElement.instance.createTBody_Callback_0_(this);
   
   @DomName('HTMLTableElement.createTFoot')
   @DocsEditable()
-  HtmlElement _createTFoot() => wrap_jso(_blink.BlinkHTMLTableElement.instance.createTFoot_Callback_0_(unwrap_jso(this)));
+  HtmlElement _createTFoot() => _blink.BlinkHTMLTableElement.instance.createTFoot_Callback_0_(this);
   
   @DomName('HTMLTableElement.createTHead')
   @DocsEditable()
-  HtmlElement _createTHead() => wrap_jso(_blink.BlinkHTMLTableElement.instance.createTHead_Callback_0_(unwrap_jso(this)));
+  HtmlElement _createTHead() => _blink.BlinkHTMLTableElement.instance.createTHead_Callback_0_(this);
   
   @DomName('HTMLTableElement.deleteCaption')
   @DocsEditable()
-  void deleteCaption() => _blink.BlinkHTMLTableElement.instance.deleteCaption_Callback_0_(unwrap_jso(this));
+  void deleteCaption() => _blink.BlinkHTMLTableElement.instance.deleteCaption_Callback_0_(this);
   
   @DomName('HTMLTableElement.deleteRow')
   @DocsEditable()
-  void deleteRow(int index) => _blink.BlinkHTMLTableElement.instance.deleteRow_Callback_1_(unwrap_jso(this), index);
+  void deleteRow(int index) => _blink.BlinkHTMLTableElement.instance.deleteRow_Callback_1_(this, index);
   
   @DomName('HTMLTableElement.deleteTFoot')
   @DocsEditable()
-  void deleteTFoot() => _blink.BlinkHTMLTableElement.instance.deleteTFoot_Callback_0_(unwrap_jso(this));
+  void deleteTFoot() => _blink.BlinkHTMLTableElement.instance.deleteTFoot_Callback_0_(this);
   
   @DomName('HTMLTableElement.deleteTHead')
   @DocsEditable()
-  void deleteTHead() => _blink.BlinkHTMLTableElement.instance.deleteTHead_Callback_0_(unwrap_jso(this));
+  void deleteTHead() => _blink.BlinkHTMLTableElement.instance.deleteTHead_Callback_0_(this);
   
   HtmlElement _insertRow([int index]) {
     if (index != null) {
-      return wrap_jso(_blink.BlinkHTMLTableElement.instance.insertRow_Callback_1_(unwrap_jso(this), index));
+      return _blink.BlinkHTMLTableElement.instance.insertRow_Callback_1_(this, index);
     }
-    return wrap_jso(_blink.BlinkHTMLTableElement.instance.insertRow_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkHTMLTableElement.instance.insertRow_Callback_0_(this);
   }
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -38469,11 +35914,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TableRowElement internalCreateTableRowElement() {
-    return new TableRowElement._internalWrap();
-  }
-
-  external factory TableRowElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TableRowElement.internal_() : super.internal_();
@@ -38487,25 +35928,25 @@
 
   @DomName('HTMLTableRowElement.cells')
   @DocsEditable()
-  List<Node> get _cells => wrap_jso(_blink.BlinkHTMLTableRowElement.instance.cells_Getter_(unwrap_jso(this)));
+  List<Node> get _cells => (_blink.BlinkHTMLTableRowElement.instance.cells_Getter_(this));
   
   @DomName('HTMLTableRowElement.rowIndex')
   @DocsEditable()
-  int get rowIndex => _blink.BlinkHTMLTableRowElement.instance.rowIndex_Getter_(unwrap_jso(this));
+  int get rowIndex => _blink.BlinkHTMLTableRowElement.instance.rowIndex_Getter_(this);
   
   @DomName('HTMLTableRowElement.sectionRowIndex')
   @DocsEditable()
-  int get sectionRowIndex => _blink.BlinkHTMLTableRowElement.instance.sectionRowIndex_Getter_(unwrap_jso(this));
+  int get sectionRowIndex => _blink.BlinkHTMLTableRowElement.instance.sectionRowIndex_Getter_(this);
   
   @DomName('HTMLTableRowElement.deleteCell')
   @DocsEditable()
-  void deleteCell(int index) => _blink.BlinkHTMLTableRowElement.instance.deleteCell_Callback_1_(unwrap_jso(this), index);
+  void deleteCell(int index) => _blink.BlinkHTMLTableRowElement.instance.deleteCell_Callback_1_(this, index);
   
   HtmlElement _insertCell([int index]) {
     if (index != null) {
-      return wrap_jso(_blink.BlinkHTMLTableRowElement.instance.insertCell_Callback_1_(unwrap_jso(this), index));
+      return _blink.BlinkHTMLTableRowElement.instance.insertCell_Callback_1_(this, index);
     }
-    return wrap_jso(_blink.BlinkHTMLTableRowElement.instance.insertCell_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkHTMLTableRowElement.instance.insertCell_Callback_0_(this);
   }
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -38533,11 +35974,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TableSectionElement internalCreateTableSectionElement() {
-    return new TableSectionElement._internalWrap();
-  }
-
-  external factory TableSectionElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TableSectionElement.internal_() : super.internal_();
@@ -38551,17 +35988,17 @@
 
   @DomName('HTMLTableSectionElement.rows')
   @DocsEditable()
-  List<Node> get _rows => wrap_jso(_blink.BlinkHTMLTableSectionElement.instance.rows_Getter_(unwrap_jso(this)));
+  List<Node> get _rows => (_blink.BlinkHTMLTableSectionElement.instance.rows_Getter_(this));
   
   @DomName('HTMLTableSectionElement.deleteRow')
   @DocsEditable()
-  void deleteRow(int index) => _blink.BlinkHTMLTableSectionElement.instance.deleteRow_Callback_1_(unwrap_jso(this), index);
+  void deleteRow(int index) => _blink.BlinkHTMLTableSectionElement.instance.deleteRow_Callback_1_(this, index);
   
   HtmlElement _insertRow([int index]) {
     if (index != null) {
-      return wrap_jso(_blink.BlinkHTMLTableSectionElement.instance.insertRow_Callback_1_(unwrap_jso(this), index));
+      return _blink.BlinkHTMLTableSectionElement.instance.insertRow_Callback_1_(this, index);
     }
-    return wrap_jso(_blink.BlinkHTMLTableSectionElement.instance.insertRow_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkHTMLTableSectionElement.instance.insertRow_Callback_0_(this);
   }
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -38586,11 +36023,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TemplateElement internalCreateTemplateElement() {
-    return new TemplateElement._internalWrap();
-  }
-
-  external factory TemplateElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TemplateElement.internal_() : super.internal_();
@@ -38607,7 +36040,7 @@
 
   @DomName('HTMLTemplateElement.content')
   @DocsEditable()
-  DocumentFragment get content => wrap_jso(_blink.BlinkHTMLTemplateElement.instance.content_Getter_(unwrap_jso(this)));
+  DocumentFragment get content => _blink.BlinkHTMLTemplateElement.instance.content_Getter_(this);
   
 
   /**
@@ -38641,11 +36074,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static Text internalCreateText() {
-    return new Text._internalWrap();
-  }
-
-  external factory Text._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Text.internal_() : super.internal_();
@@ -38653,16 +36082,16 @@
 
   @DomName('Text.wholeText')
   @DocsEditable()
-  String get wholeText => _blink.BlinkText.instance.wholeText_Getter_(unwrap_jso(this));
+  String get wholeText => _blink.BlinkText.instance.wholeText_Getter_(this);
   
   @DomName('Text.getDestinationInsertionPoints')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Node> getDestinationInsertionPoints() => wrap_jso(_blink.BlinkText.instance.getDestinationInsertionPoints_Callback_0_(unwrap_jso(this)));
+  List<Node> getDestinationInsertionPoints() => (_blink.BlinkText.instance.getDestinationInsertionPoints_Callback_0_(this));
   
   @DomName('Text.splitText')
   @DocsEditable()
-  Text splitText(int offset) => wrap_jso(_blink.BlinkText.instance.splitText_Callback_1_(unwrap_jso(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
@@ -38684,11 +36113,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TextAreaElement internalCreateTextAreaElement() {
-    return new TextAreaElement._internalWrap();
-  }
-
-  external factory TextAreaElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TextAreaElement.internal_() : super.internal_();
@@ -38703,218 +36128,218 @@
   @DomName('HTMLTextAreaElement.autocapitalize')
   @DocsEditable()
   @Experimental() // untriaged
-  String get autocapitalize => _blink.BlinkHTMLTextAreaElement.instance.autocapitalize_Getter_(unwrap_jso(this));
+  String get autocapitalize => _blink.BlinkHTMLTextAreaElement.instance.autocapitalize_Getter_(this);
   
   @DomName('HTMLTextAreaElement.autocapitalize')
   @DocsEditable()
   @Experimental() // untriaged
-  set autocapitalize(String value) => _blink.BlinkHTMLTextAreaElement.instance.autocapitalize_Setter_(unwrap_jso(this), value);
+  set autocapitalize(String value) => _blink.BlinkHTMLTextAreaElement.instance.autocapitalize_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.autofocus')
   @DocsEditable()
-  bool get autofocus => _blink.BlinkHTMLTextAreaElement.instance.autofocus_Getter_(unwrap_jso(this));
+  bool get autofocus => _blink.BlinkHTMLTextAreaElement.instance.autofocus_Getter_(this);
   
   @DomName('HTMLTextAreaElement.autofocus')
   @DocsEditable()
-  set autofocus(bool value) => _blink.BlinkHTMLTextAreaElement.instance.autofocus_Setter_(unwrap_jso(this), value);
+  set autofocus(bool value) => _blink.BlinkHTMLTextAreaElement.instance.autofocus_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.cols')
   @DocsEditable()
-  int get cols => _blink.BlinkHTMLTextAreaElement.instance.cols_Getter_(unwrap_jso(this));
+  int get cols => _blink.BlinkHTMLTextAreaElement.instance.cols_Getter_(this);
   
   @DomName('HTMLTextAreaElement.cols')
   @DocsEditable()
-  set cols(int value) => _blink.BlinkHTMLTextAreaElement.instance.cols_Setter_(unwrap_jso(this), value);
+  set cols(int value) => _blink.BlinkHTMLTextAreaElement.instance.cols_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.defaultValue')
   @DocsEditable()
-  String get defaultValue => _blink.BlinkHTMLTextAreaElement.instance.defaultValue_Getter_(unwrap_jso(this));
+  String get defaultValue => _blink.BlinkHTMLTextAreaElement.instance.defaultValue_Getter_(this);
   
   @DomName('HTMLTextAreaElement.defaultValue')
   @DocsEditable()
-  set defaultValue(String value) => _blink.BlinkHTMLTextAreaElement.instance.defaultValue_Setter_(unwrap_jso(this), value);
+  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.instance.dirName_Getter_(unwrap_jso(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()
-  set dirName(String value) => _blink.BlinkHTMLTextAreaElement.instance.dirName_Setter_(unwrap_jso(this), value);
+  set dirName(String value) => _blink.BlinkHTMLTextAreaElement.instance.dirName_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLTextAreaElement.instance.disabled_Getter_(unwrap_jso(this));
+  bool get disabled => _blink.BlinkHTMLTextAreaElement.instance.disabled_Getter_(this);
   
   @DomName('HTMLTextAreaElement.disabled')
   @DocsEditable()
-  set disabled(bool value) => _blink.BlinkHTMLTextAreaElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLTextAreaElement.instance.disabled_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.form')
   @DocsEditable()
-  FormElement get form => wrap_jso(_blink.BlinkHTMLTextAreaElement.instance.form_Getter_(unwrap_jso(this)));
+  FormElement get form => _blink.BlinkHTMLTextAreaElement.instance.form_Getter_(this);
   
   @DomName('HTMLTextAreaElement.inputMode')
   @DocsEditable()
   @Experimental() // untriaged
-  String get inputMode => _blink.BlinkHTMLTextAreaElement.instance.inputMode_Getter_(unwrap_jso(this));
+  String get inputMode => _blink.BlinkHTMLTextAreaElement.instance.inputMode_Getter_(this);
   
   @DomName('HTMLTextAreaElement.inputMode')
   @DocsEditable()
   @Experimental() // untriaged
-  set inputMode(String value) => _blink.BlinkHTMLTextAreaElement.instance.inputMode_Setter_(unwrap_jso(this), value);
+  set inputMode(String value) => _blink.BlinkHTMLTextAreaElement.instance.inputMode_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => wrap_jso(_blink.BlinkHTMLTextAreaElement.instance.labels_Getter_(unwrap_jso(this)));
+  List<Node> get labels => (_blink.BlinkHTMLTextAreaElement.instance.labels_Getter_(this));
   
   @DomName('HTMLTextAreaElement.maxLength')
   @DocsEditable()
-  int get maxLength => _blink.BlinkHTMLTextAreaElement.instance.maxLength_Getter_(unwrap_jso(this));
+  int get maxLength => _blink.BlinkHTMLTextAreaElement.instance.maxLength_Getter_(this);
   
   @DomName('HTMLTextAreaElement.maxLength')
   @DocsEditable()
-  set maxLength(int value) => _blink.BlinkHTMLTextAreaElement.instance.maxLength_Setter_(unwrap_jso(this), value);
+  set maxLength(int value) => _blink.BlinkHTMLTextAreaElement.instance.maxLength_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.minLength')
   @DocsEditable()
   @Experimental() // untriaged
-  int get minLength => _blink.BlinkHTMLTextAreaElement.instance.minLength_Getter_(unwrap_jso(this));
+  int get minLength => _blink.BlinkHTMLTextAreaElement.instance.minLength_Getter_(this);
   
   @DomName('HTMLTextAreaElement.minLength')
   @DocsEditable()
   @Experimental() // untriaged
-  set minLength(int value) => _blink.BlinkHTMLTextAreaElement.instance.minLength_Setter_(unwrap_jso(this), value);
+  set minLength(int value) => _blink.BlinkHTMLTextAreaElement.instance.minLength_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLTextAreaElement.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkHTMLTextAreaElement.instance.name_Getter_(this);
   
   @DomName('HTMLTextAreaElement.name')
   @DocsEditable()
-  set name(String value) => _blink.BlinkHTMLTextAreaElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLTextAreaElement.instance.name_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.placeholder')
   @DocsEditable()
-  String get placeholder => _blink.BlinkHTMLTextAreaElement.instance.placeholder_Getter_(unwrap_jso(this));
+  String get placeholder => _blink.BlinkHTMLTextAreaElement.instance.placeholder_Getter_(this);
   
   @DomName('HTMLTextAreaElement.placeholder')
   @DocsEditable()
-  set placeholder(String value) => _blink.BlinkHTMLTextAreaElement.instance.placeholder_Setter_(unwrap_jso(this), value);
+  set placeholder(String value) => _blink.BlinkHTMLTextAreaElement.instance.placeholder_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.readOnly')
   @DocsEditable()
-  bool get readOnly => _blink.BlinkHTMLTextAreaElement.instance.readOnly_Getter_(unwrap_jso(this));
+  bool get readOnly => _blink.BlinkHTMLTextAreaElement.instance.readOnly_Getter_(this);
   
   @DomName('HTMLTextAreaElement.readOnly')
   @DocsEditable()
-  set readOnly(bool value) => _blink.BlinkHTMLTextAreaElement.instance.readOnly_Setter_(unwrap_jso(this), value);
+  set readOnly(bool value) => _blink.BlinkHTMLTextAreaElement.instance.readOnly_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.required')
   @DocsEditable()
-  bool get required => _blink.BlinkHTMLTextAreaElement.instance.required_Getter_(unwrap_jso(this));
+  bool get required => _blink.BlinkHTMLTextAreaElement.instance.required_Getter_(this);
   
   @DomName('HTMLTextAreaElement.required')
   @DocsEditable()
-  set required(bool value) => _blink.BlinkHTMLTextAreaElement.instance.required_Setter_(unwrap_jso(this), value);
+  set required(bool value) => _blink.BlinkHTMLTextAreaElement.instance.required_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.rows')
   @DocsEditable()
-  int get rows => _blink.BlinkHTMLTextAreaElement.instance.rows_Getter_(unwrap_jso(this));
+  int get rows => _blink.BlinkHTMLTextAreaElement.instance.rows_Getter_(this);
   
   @DomName('HTMLTextAreaElement.rows')
   @DocsEditable()
-  set rows(int value) => _blink.BlinkHTMLTextAreaElement.instance.rows_Setter_(unwrap_jso(this), value);
+  set rows(int value) => _blink.BlinkHTMLTextAreaElement.instance.rows_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.selectionDirection')
   @DocsEditable()
-  String get selectionDirection => _blink.BlinkHTMLTextAreaElement.instance.selectionDirection_Getter_(unwrap_jso(this));
+  String get selectionDirection => _blink.BlinkHTMLTextAreaElement.instance.selectionDirection_Getter_(this);
   
   @DomName('HTMLTextAreaElement.selectionDirection')
   @DocsEditable()
-  set selectionDirection(String value) => _blink.BlinkHTMLTextAreaElement.instance.selectionDirection_Setter_(unwrap_jso(this), value);
+  set selectionDirection(String value) => _blink.BlinkHTMLTextAreaElement.instance.selectionDirection_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.selectionEnd')
   @DocsEditable()
-  int get selectionEnd => _blink.BlinkHTMLTextAreaElement.instance.selectionEnd_Getter_(unwrap_jso(this));
+  int get selectionEnd => _blink.BlinkHTMLTextAreaElement.instance.selectionEnd_Getter_(this);
   
   @DomName('HTMLTextAreaElement.selectionEnd')
   @DocsEditable()
-  set selectionEnd(int value) => _blink.BlinkHTMLTextAreaElement.instance.selectionEnd_Setter_(unwrap_jso(this), value);
+  set selectionEnd(int value) => _blink.BlinkHTMLTextAreaElement.instance.selectionEnd_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.selectionStart')
   @DocsEditable()
-  int get selectionStart => _blink.BlinkHTMLTextAreaElement.instance.selectionStart_Getter_(unwrap_jso(this));
+  int get selectionStart => _blink.BlinkHTMLTextAreaElement.instance.selectionStart_Getter_(this);
   
   @DomName('HTMLTextAreaElement.selectionStart')
   @DocsEditable()
-  set selectionStart(int value) => _blink.BlinkHTMLTextAreaElement.instance.selectionStart_Setter_(unwrap_jso(this), value);
+  set selectionStart(int value) => _blink.BlinkHTMLTextAreaElement.instance.selectionStart_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.textLength')
   @DocsEditable()
-  int get textLength => _blink.BlinkHTMLTextAreaElement.instance.textLength_Getter_(unwrap_jso(this));
+  int get textLength => _blink.BlinkHTMLTextAreaElement.instance.textLength_Getter_(this);
   
   @DomName('HTMLTextAreaElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLTextAreaElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkHTMLTextAreaElement.instance.type_Getter_(this);
   
   @DomName('HTMLTextAreaElement.validationMessage')
   @DocsEditable()
-  String get validationMessage => _blink.BlinkHTMLTextAreaElement.instance.validationMessage_Getter_(unwrap_jso(this));
+  String get validationMessage => _blink.BlinkHTMLTextAreaElement.instance.validationMessage_Getter_(this);
   
   @DomName('HTMLTextAreaElement.validity')
   @DocsEditable()
-  ValidityState get validity => wrap_jso(_blink.BlinkHTMLTextAreaElement.instance.validity_Getter_(unwrap_jso(this)));
+  ValidityState get validity => _blink.BlinkHTMLTextAreaElement.instance.validity_Getter_(this);
   
   @DomName('HTMLTextAreaElement.value')
   @DocsEditable()
-  String get value => _blink.BlinkHTMLTextAreaElement.instance.value_Getter_(unwrap_jso(this));
+  String get value => _blink.BlinkHTMLTextAreaElement.instance.value_Getter_(this);
   
   @DomName('HTMLTextAreaElement.value')
   @DocsEditable()
-  set value(String value) => _blink.BlinkHTMLTextAreaElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkHTMLTextAreaElement.instance.value_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.willValidate')
   @DocsEditable()
-  bool get willValidate => _blink.BlinkHTMLTextAreaElement.instance.willValidate_Getter_(unwrap_jso(this));
+  bool get willValidate => _blink.BlinkHTMLTextAreaElement.instance.willValidate_Getter_(this);
   
   @DomName('HTMLTextAreaElement.wrap')
   @DocsEditable()
-  String get wrap => _blink.BlinkHTMLTextAreaElement.instance.wrap_Getter_(unwrap_jso(this));
+  String get wrap => _blink.BlinkHTMLTextAreaElement.instance.wrap_Getter_(this);
   
   @DomName('HTMLTextAreaElement.wrap')
   @DocsEditable()
-  set wrap(String value) => _blink.BlinkHTMLTextAreaElement.instance.wrap_Setter_(unwrap_jso(this), value);
+  set wrap(String value) => _blink.BlinkHTMLTextAreaElement.instance.wrap_Setter_(this, value);
   
   @DomName('HTMLTextAreaElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLTextAreaElement.instance.checkValidity_Callback_0_(unwrap_jso(this));
+  bool checkValidity() => _blink.BlinkHTMLTextAreaElement.instance.checkValidity_Callback_0_(this);
   
   @DomName('HTMLTextAreaElement.reportValidity')
   @DocsEditable()
   @Experimental() // untriaged
-  bool reportValidity() => _blink.BlinkHTMLTextAreaElement.instance.reportValidity_Callback_0_(unwrap_jso(this));
+  bool reportValidity() => _blink.BlinkHTMLTextAreaElement.instance.reportValidity_Callback_0_(this);
   
   @DomName('HTMLTextAreaElement.select')
   @DocsEditable()
-  void select() => _blink.BlinkHTMLTextAreaElement.instance.select_Callback_0_(unwrap_jso(this));
+  void select() => _blink.BlinkHTMLTextAreaElement.instance.select_Callback_0_(this);
   
   @DomName('HTMLTextAreaElement.setCustomValidity')
   @DocsEditable()
-  void setCustomValidity(String error) => _blink.BlinkHTMLTextAreaElement.instance.setCustomValidity_Callback_1_(unwrap_jso(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.instance.setRangeText_Callback_1_(unwrap_jso(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.instance.setRangeText_Callback_4_(unwrap_jso(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");
@@ -38922,10 +36347,10 @@
 
   void setSelectionRange(int start, int end, [String direction]) {
     if (direction != null) {
-      _blink.BlinkHTMLTextAreaElement.instance.setSelectionRange_Callback_3_(unwrap_jso(this), start, end, direction);
+      _blink.BlinkHTMLTextAreaElement.instance.setSelectionRange_Callback_3_(this, start, end, direction);
       return;
     }
-    _blink.BlinkHTMLTextAreaElement.instance.setSelectionRange_Callback_2_(unwrap_jso(this), start, end);
+    _blink.BlinkHTMLTextAreaElement.instance.setSelectionRange_Callback_2_(this, start, end);
     return;
   }
 
@@ -38954,11 +36379,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TextEvent internalCreateTextEvent() {
-    return new TextEvent._internalWrap();
-  }
-
-  external factory TextEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TextEvent.internal_() : super.internal_();
@@ -38966,11 +36387,11 @@
 
   @DomName('TextEvent.data')
   @DocsEditable()
-  String get data => _blink.BlinkTextEvent.instance.data_Getter_(unwrap_jso(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.instance.initTextEvent_Callback_5_(unwrap_jso(this), typeArg, canBubbleArg, cancelableArg, unwrap_jso(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
@@ -38986,79 +36407,71 @@
   // To suppress missing implicit constructor warnings.
   factory TextMetrics._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static TextMetrics internalCreateTextMetrics() {
-    return new TextMetrics._internalWrap();
-  }
 
-  factory TextMetrics._internalWrap() {
-    return new TextMetrics.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TextMetrics.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('TextMetrics.actualBoundingBoxAscent')
   @DocsEditable()
   @Experimental() // untriaged
-  num get actualBoundingBoxAscent => _blink.BlinkTextMetrics.instance.actualBoundingBoxAscent_Getter_(unwrap_jso(this));
+  num get actualBoundingBoxAscent => _blink.BlinkTextMetrics.instance.actualBoundingBoxAscent_Getter_(this);
   
   @DomName('TextMetrics.actualBoundingBoxDescent')
   @DocsEditable()
   @Experimental() // untriaged
-  num get actualBoundingBoxDescent => _blink.BlinkTextMetrics.instance.actualBoundingBoxDescent_Getter_(unwrap_jso(this));
+  num get actualBoundingBoxDescent => _blink.BlinkTextMetrics.instance.actualBoundingBoxDescent_Getter_(this);
   
   @DomName('TextMetrics.actualBoundingBoxLeft')
   @DocsEditable()
   @Experimental() // untriaged
-  num get actualBoundingBoxLeft => _blink.BlinkTextMetrics.instance.actualBoundingBoxLeft_Getter_(unwrap_jso(this));
+  num get actualBoundingBoxLeft => _blink.BlinkTextMetrics.instance.actualBoundingBoxLeft_Getter_(this);
   
   @DomName('TextMetrics.actualBoundingBoxRight')
   @DocsEditable()
   @Experimental() // untriaged
-  num get actualBoundingBoxRight => _blink.BlinkTextMetrics.instance.actualBoundingBoxRight_Getter_(unwrap_jso(this));
+  num get actualBoundingBoxRight => _blink.BlinkTextMetrics.instance.actualBoundingBoxRight_Getter_(this);
   
   @DomName('TextMetrics.alphabeticBaseline')
   @DocsEditable()
   @Experimental() // untriaged
-  num get alphabeticBaseline => _blink.BlinkTextMetrics.instance.alphabeticBaseline_Getter_(unwrap_jso(this));
+  num get alphabeticBaseline => _blink.BlinkTextMetrics.instance.alphabeticBaseline_Getter_(this);
   
   @DomName('TextMetrics.emHeightAscent')
   @DocsEditable()
   @Experimental() // untriaged
-  num get emHeightAscent => _blink.BlinkTextMetrics.instance.emHeightAscent_Getter_(unwrap_jso(this));
+  num get emHeightAscent => _blink.BlinkTextMetrics.instance.emHeightAscent_Getter_(this);
   
   @DomName('TextMetrics.emHeightDescent')
   @DocsEditable()
   @Experimental() // untriaged
-  num get emHeightDescent => _blink.BlinkTextMetrics.instance.emHeightDescent_Getter_(unwrap_jso(this));
+  num get emHeightDescent => _blink.BlinkTextMetrics.instance.emHeightDescent_Getter_(this);
   
   @DomName('TextMetrics.fontBoundingBoxAscent')
   @DocsEditable()
   @Experimental() // untriaged
-  num get fontBoundingBoxAscent => _blink.BlinkTextMetrics.instance.fontBoundingBoxAscent_Getter_(unwrap_jso(this));
+  num get fontBoundingBoxAscent => _blink.BlinkTextMetrics.instance.fontBoundingBoxAscent_Getter_(this);
   
   @DomName('TextMetrics.fontBoundingBoxDescent')
   @DocsEditable()
   @Experimental() // untriaged
-  num get fontBoundingBoxDescent => _blink.BlinkTextMetrics.instance.fontBoundingBoxDescent_Getter_(unwrap_jso(this));
+  num get fontBoundingBoxDescent => _blink.BlinkTextMetrics.instance.fontBoundingBoxDescent_Getter_(this);
   
   @DomName('TextMetrics.hangingBaseline')
   @DocsEditable()
   @Experimental() // untriaged
-  num get hangingBaseline => _blink.BlinkTextMetrics.instance.hangingBaseline_Getter_(unwrap_jso(this));
+  num get hangingBaseline => _blink.BlinkTextMetrics.instance.hangingBaseline_Getter_(this);
   
   @DomName('TextMetrics.ideographicBaseline')
   @DocsEditable()
   @Experimental() // untriaged
-  num get ideographicBaseline => _blink.BlinkTextMetrics.instance.ideographicBaseline_Getter_(unwrap_jso(this));
+  num get ideographicBaseline => _blink.BlinkTextMetrics.instance.ideographicBaseline_Getter_(this);
   
   @DomName('TextMetrics.width')
   @DocsEditable()
-  num get width => _blink.BlinkTextMetrics.instance.width_Getter_(unwrap_jso(this));
+  num get width => _blink.BlinkTextMetrics.instance.width_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -39088,11 +36501,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TextTrack internalCreateTextTrack() {
-    return new TextTrack._internalWrap();
-  }
-
-  external factory TextTrack._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TextTrack.internal_() : super.internal_();
@@ -39100,59 +36509,59 @@
 
   @DomName('TextTrack.activeCues')
   @DocsEditable()
-  TextTrackCueList get activeCues => wrap_jso(_blink.BlinkTextTrack.instance.activeCues_Getter_(unwrap_jso(this)));
+  TextTrackCueList get activeCues => _blink.BlinkTextTrack.instance.activeCues_Getter_(this);
   
   @DomName('TextTrack.cues')
   @DocsEditable()
-  TextTrackCueList get cues => wrap_jso(_blink.BlinkTextTrack.instance.cues_Getter_(unwrap_jso(this)));
+  TextTrackCueList get cues => _blink.BlinkTextTrack.instance.cues_Getter_(this);
   
   @DomName('TextTrack.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkTextTrack.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkTextTrack.instance.id_Getter_(this);
   
   @DomName('TextTrack.kind')
   @DocsEditable()
-  String get kind => _blink.BlinkTextTrack.instance.kind_Getter_(unwrap_jso(this));
+  String get kind => _blink.BlinkTextTrack.instance.kind_Getter_(this);
   
   @DomName('TextTrack.label')
   @DocsEditable()
-  String get label => _blink.BlinkTextTrack.instance.label_Getter_(unwrap_jso(this));
+  String get label => _blink.BlinkTextTrack.instance.label_Getter_(this);
   
   @DomName('TextTrack.language')
   @DocsEditable()
-  String get language => _blink.BlinkTextTrack.instance.language_Getter_(unwrap_jso(this));
+  String get language => _blink.BlinkTextTrack.instance.language_Getter_(this);
   
   @DomName('TextTrack.mode')
   @DocsEditable()
-  String get mode => _blink.BlinkTextTrack.instance.mode_Getter_(unwrap_jso(this));
+  String get mode => _blink.BlinkTextTrack.instance.mode_Getter_(this);
   
   @DomName('TextTrack.mode')
   @DocsEditable()
-  set mode(String value) => _blink.BlinkTextTrack.instance.mode_Setter_(unwrap_jso(this), value);
+  set mode(String value) => _blink.BlinkTextTrack.instance.mode_Setter_(this, value);
   
   @DomName('TextTrack.regions')
   @DocsEditable()
   @Experimental() // untriaged
-  VttRegionList get regions => wrap_jso(_blink.BlinkTextTrack.instance.regions_Getter_(unwrap_jso(this)));
+  VttRegionList get regions => _blink.BlinkTextTrack.instance.regions_Getter_(this);
   
   @DomName('TextTrack.addCue')
   @DocsEditable()
-  void addCue(TextTrackCue cue) => _blink.BlinkTextTrack.instance.addCue_Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.addRegion_Callback_1_(unwrap_jso(this), unwrap_jso(region));
+  void addRegion(VttRegion region) => _blink.BlinkTextTrack.instance.addRegion_Callback_1_(this, region);
   
   @DomName('TextTrack.removeCue')
   @DocsEditable()
-  void removeCue(TextTrackCue cue) => _blink.BlinkTextTrack.instance.removeCue_Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.removeRegion_Callback_1_(unwrap_jso(this), unwrap_jso(region));
+  void removeRegion(VttRegion region) => _blink.BlinkTextTrack.instance.removeRegion_Callback_1_(this, region);
   
   /// Stream of `cuechange` events handled by this [TextTrack].
   @DomName('TextTrack.oncuechange')
@@ -39197,11 +36606,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TextTrackCue internalCreateTextTrackCue() {
-    return new TextTrackCue._internalWrap();
-  }
-
-  external factory TextTrackCue._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TextTrackCue.internal_() : super.internal_();
@@ -39209,39 +36614,39 @@
 
   @DomName('TextTrackCue.endTime')
   @DocsEditable()
-  num get endTime => _blink.BlinkTextTrackCue.instance.endTime_Getter_(unwrap_jso(this));
+  num get endTime => _blink.BlinkTextTrackCue.instance.endTime_Getter_(this);
   
   @DomName('TextTrackCue.endTime')
   @DocsEditable()
-  set endTime(num value) => _blink.BlinkTextTrackCue.instance.endTime_Setter_(unwrap_jso(this), value);
+  set endTime(num value) => _blink.BlinkTextTrackCue.instance.endTime_Setter_(this, value);
   
   @DomName('TextTrackCue.id')
   @DocsEditable()
-  String get id => _blink.BlinkTextTrackCue.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkTextTrackCue.instance.id_Getter_(this);
   
   @DomName('TextTrackCue.id')
   @DocsEditable()
-  set id(String value) => _blink.BlinkTextTrackCue.instance.id_Setter_(unwrap_jso(this), value);
+  set id(String value) => _blink.BlinkTextTrackCue.instance.id_Setter_(this, value);
   
   @DomName('TextTrackCue.pauseOnExit')
   @DocsEditable()
-  bool get pauseOnExit => _blink.BlinkTextTrackCue.instance.pauseOnExit_Getter_(unwrap_jso(this));
+  bool get pauseOnExit => _blink.BlinkTextTrackCue.instance.pauseOnExit_Getter_(this);
   
   @DomName('TextTrackCue.pauseOnExit')
   @DocsEditable()
-  set pauseOnExit(bool value) => _blink.BlinkTextTrackCue.instance.pauseOnExit_Setter_(unwrap_jso(this), value);
+  set pauseOnExit(bool value) => _blink.BlinkTextTrackCue.instance.pauseOnExit_Setter_(this, value);
   
   @DomName('TextTrackCue.startTime')
   @DocsEditable()
-  num get startTime => _blink.BlinkTextTrackCue.instance.startTime_Getter_(unwrap_jso(this));
+  num get startTime => _blink.BlinkTextTrackCue.instance.startTime_Getter_(this);
   
   @DomName('TextTrackCue.startTime')
   @DocsEditable()
-  set startTime(num value) => _blink.BlinkTextTrackCue.instance.startTime_Setter_(unwrap_jso(this), value);
+  set startTime(num value) => _blink.BlinkTextTrackCue.instance.startTime_Setter_(this, value);
   
   @DomName('TextTrackCue.track')
   @DocsEditable()
-  TextTrack get track => wrap_jso(_blink.BlinkTextTrackCue.instance.track_Getter_(unwrap_jso(this)));
+  TextTrack get track => _blink.BlinkTextTrackCue.instance.track_Getter_(this);
   
   /// Stream of `enter` events handled by this [TextTrackCue].
   @DomName('TextTrackCue.onenter')
@@ -39269,32 +36674,24 @@
   // To suppress missing implicit constructor warnings.
   factory TextTrackCueList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static TextTrackCueList internalCreateTextTrackCueList() {
-    return new TextTrackCueList._internalWrap();
-  }
 
-  factory TextTrackCueList._internalWrap() {
-    return new TextTrackCueList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TextTrackCueList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('TextTrackCueList.length')
   @DocsEditable()
-  int get length => _blink.BlinkTextTrackCueList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkTextTrackCueList.instance.length_Getter_(this);
   
   TextTrackCue operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkTextTrackCueList.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  TextTrackCue _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkTextTrackCueList.instance.item_Callback_1_(unwrap_jso(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.");
@@ -39336,11 +36733,11 @@
 
   @DomName('TextTrackCueList.getCueById')
   @DocsEditable()
-  TextTrackCue getCueById(String id) => wrap_jso(_blink.BlinkTextTrackCueList.instance.getCueById_Callback_1_(unwrap_jso(this), id));
+  TextTrackCue getCueById(String id) => _blink.BlinkTextTrackCueList.instance.getCueById_Callback_1_(this, id);
   
   @DomName('TextTrackCueList.item')
   @DocsEditable()
-  TextTrackCue item(int index) => wrap_jso(_blink.BlinkTextTrackCueList.instance.item_Callback_1_(unwrap_jso(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
@@ -39375,11 +36772,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TextTrackList internalCreateTextTrackList() {
-    return new TextTrackList._internalWrap();
-  }
-
-  external factory TextTrackList._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TextTrackList.internal_() : super.internal_();
@@ -39387,15 +36780,15 @@
 
   @DomName('TextTrackList.length')
   @DocsEditable()
-  int get length => _blink.BlinkTextTrackList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkTextTrackList.instance.length_Getter_(this);
   
   TextTrack operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkTextTrackList.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  TextTrack _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkTextTrackList.instance.item_Callback_1_(unwrap_jso(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.");
@@ -39438,11 +36831,11 @@
   @DomName('TextTrackList.getTrackById')
   @DocsEditable()
   @Experimental() // untriaged
-  TextTrack getTrackById(String id) => wrap_jso(_blink.BlinkTextTrackList.instance.getTrackById_Callback_1_(unwrap_jso(this), id));
+  TextTrack getTrackById(String id) => _blink.BlinkTextTrackList.instance.getTrackById_Callback_1_(this, id);
   
   @DomName('TextTrackList.item')
   @DocsEditable()
-  TextTrack item(int index) => wrap_jso(_blink.BlinkTextTrackList.instance.item_Callback_1_(unwrap_jso(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')
@@ -39469,32 +36862,24 @@
   // To suppress missing implicit constructor warnings.
   factory TimeRanges._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static TimeRanges internalCreateTimeRanges() {
-    return new TimeRanges._internalWrap();
-  }
 
-  factory TimeRanges._internalWrap() {
-    return new TimeRanges.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TimeRanges.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('TimeRanges.length')
   @DocsEditable()
-  int get length => _blink.BlinkTimeRanges.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkTimeRanges.instance.length_Getter_(this);
   
   @DomName('TimeRanges.end')
   @DocsEditable()
-  num end(int index) => _blink.BlinkTimeRanges.instance.end_Callback_1_(unwrap_jso(this), index);
+  num end(int index) => _blink.BlinkTimeRanges.instance.end_Callback_1_(this, index);
   
   @DomName('TimeRanges.start')
   @DocsEditable()
-  num start(int index) => _blink.BlinkTimeRanges.instance.start_Callback_1_(unwrap_jso(this), index);
+  num start(int index) => _blink.BlinkTimeRanges.instance.start_Callback_1_(this, index);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -39525,11 +36910,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TitleElement internalCreateTitleElement() {
-    return new TitleElement._internalWrap();
-  }
-
-  external factory TitleElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TitleElement.internal_() : super.internal_();
@@ -39555,84 +36936,76 @@
   // To suppress missing implicit constructor warnings.
   factory Touch._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Touch internalCreateTouch() {
-    return new Touch._internalWrap();
-  }
 
-  factory Touch._internalWrap() {
-    return new Touch.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Touch.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('Touch.clientX')
   @DocsEditable()
-  num get _clientX => _blink.BlinkTouch.instance.clientX_Getter_(unwrap_jso(this));
+  num get _clientX => _blink.BlinkTouch.instance.clientX_Getter_(this);
   
   @DomName('Touch.clientY')
   @DocsEditable()
-  num get _clientY => _blink.BlinkTouch.instance.clientY_Getter_(unwrap_jso(this));
+  num get _clientY => _blink.BlinkTouch.instance.clientY_Getter_(this);
   
   @DomName('Touch.force')
   @DocsEditable()
   @Experimental() // untriaged
-  num get force => _blink.BlinkTouch.instance.force_Getter_(unwrap_jso(this));
+  num get force => _blink.BlinkTouch.instance.force_Getter_(this);
   
   @DomName('Touch.identifier')
   @DocsEditable()
-  int get identifier => _blink.BlinkTouch.instance.identifier_Getter_(unwrap_jso(this));
+  int get identifier => _blink.BlinkTouch.instance.identifier_Getter_(this);
   
   @DomName('Touch.pageX')
   @DocsEditable()
-  num get _pageX => _blink.BlinkTouch.instance.pageX_Getter_(unwrap_jso(this));
+  num get _pageX => _blink.BlinkTouch.instance.pageX_Getter_(this);
   
   @DomName('Touch.pageY')
   @DocsEditable()
-  num get _pageY => _blink.BlinkTouch.instance.pageY_Getter_(unwrap_jso(this));
+  num get _pageY => _blink.BlinkTouch.instance.pageY_Getter_(this);
   
   @DomName('Touch.radiusX')
   @DocsEditable()
   @Experimental() // untriaged
-  num get _radiusX => _blink.BlinkTouch.instance.radiusX_Getter_(unwrap_jso(this));
+  num get _radiusX => _blink.BlinkTouch.instance.radiusX_Getter_(this);
   
   @DomName('Touch.radiusY')
   @DocsEditable()
   @Experimental() // untriaged
-  num get _radiusY => _blink.BlinkTouch.instance.radiusY_Getter_(unwrap_jso(this));
+  num get _radiusY => _blink.BlinkTouch.instance.radiusY_Getter_(this);
   
   @DomName('Touch.rotationAngle')
   @DocsEditable()
   @Experimental() // untriaged
-  num get rotationAngle => _blink.BlinkTouch.instance.rotationAngle_Getter_(unwrap_jso(this));
+  num get rotationAngle => _blink.BlinkTouch.instance.rotationAngle_Getter_(this);
   
   @DomName('Touch.screenX')
   @DocsEditable()
-  num get _screenX => _blink.BlinkTouch.instance.screenX_Getter_(unwrap_jso(this));
+  num get _screenX => _blink.BlinkTouch.instance.screenX_Getter_(this);
   
   @DomName('Touch.screenY')
   @DocsEditable()
-  num get _screenY => _blink.BlinkTouch.instance.screenY_Getter_(unwrap_jso(this));
+  num get _screenY => _blink.BlinkTouch.instance.screenY_Getter_(this);
   
   @DomName('Touch.target')
   @DocsEditable()
-  EventTarget get target => wrap_jso(_blink.BlinkTouch.instance.target_Getter_(unwrap_jso(this)));
+  EventTarget get target => _blink.BlinkTouch.instance.target_Getter_(this);
   
 
 // As of Chrome 37, these all changed from long to double.  This code
 // preserves backwards compatability for the time being.
-  int get __clientX => _blink.BlinkTouch.instance.clientX_Getter_(unwrap_jso(this)).round();
-  int get __clientY => _blink.BlinkTouch.instance.clientY_Getter_(unwrap_jso(this)).round();
-  int get __screenX => _blink.BlinkTouch.instance.screenX_Getter_(unwrap_jso(this)).round();
-  int get __screenY => _blink.BlinkTouch.instance.screenY_Getter_(unwrap_jso(this)).round();
-  int get __pageX => _blink.BlinkTouch.instance.pageX_Getter_(unwrap_jso(this)).round();
-  int get __pageY => _blink.BlinkTouch.instance.pageY_Getter_(unwrap_jso(this)).round();
-  int get __radiusX => _blink.BlinkTouch.instance.radiusX_Getter_(unwrap_jso(this)).round();
-  int get __radiusY => _blink.BlinkTouch.instance.radiusY_Getter_(unwrap_jso(this)).round();
+  int get __clientX => _blink.BlinkTouch.instance.clientX_Getter_(this).round();
+  int get __clientY => _blink.BlinkTouch.instance.clientY_Getter_(this).round();
+  int get __screenX => _blink.BlinkTouch.instance.screenX_Getter_(this).round();
+  int get __screenY => _blink.BlinkTouch.instance.screenY_Getter_(this).round();
+  int get __pageX => _blink.BlinkTouch.instance.pageX_Getter_(this).round();
+  int get __pageY => _blink.BlinkTouch.instance.pageY_Getter_(this).round();
+  int get __radiusX => _blink.BlinkTouch.instance.radiusX_Getter_(this).round();
+  int get __radiusY => _blink.BlinkTouch.instance.radiusY_Getter_(this).round();
 
   @DomName('Touch.clientX')
   @DomName('Touch.clientY')
@@ -39690,11 +37063,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TouchEvent internalCreateTouchEvent() {
-    return new TouchEvent._internalWrap();
-  }
-
-  external factory TouchEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TouchEvent.internal_() : super.internal_();
@@ -39702,35 +37071,35 @@
 
   @DomName('TouchEvent.altKey')
   @DocsEditable()
-  bool get altKey => _blink.BlinkTouchEvent.instance.altKey_Getter_(unwrap_jso(this));
+  bool get altKey => _blink.BlinkTouchEvent.instance.altKey_Getter_(this);
   
   @DomName('TouchEvent.changedTouches')
   @DocsEditable()
-  TouchList get changedTouches => wrap_jso(_blink.BlinkTouchEvent.instance.changedTouches_Getter_(unwrap_jso(this)));
+  TouchList get changedTouches => _blink.BlinkTouchEvent.instance.changedTouches_Getter_(this);
   
   @DomName('TouchEvent.ctrlKey')
   @DocsEditable()
-  bool get ctrlKey => _blink.BlinkTouchEvent.instance.ctrlKey_Getter_(unwrap_jso(this));
+  bool get ctrlKey => _blink.BlinkTouchEvent.instance.ctrlKey_Getter_(this);
   
   @DomName('TouchEvent.metaKey')
   @DocsEditable()
-  bool get metaKey => _blink.BlinkTouchEvent.instance.metaKey_Getter_(unwrap_jso(this));
+  bool get metaKey => _blink.BlinkTouchEvent.instance.metaKey_Getter_(this);
   
   @DomName('TouchEvent.shiftKey')
   @DocsEditable()
-  bool get shiftKey => _blink.BlinkTouchEvent.instance.shiftKey_Getter_(unwrap_jso(this));
+  bool get shiftKey => _blink.BlinkTouchEvent.instance.shiftKey_Getter_(this);
   
   @DomName('TouchEvent.targetTouches')
   @DocsEditable()
-  TouchList get targetTouches => wrap_jso(_blink.BlinkTouchEvent.instance.targetTouches_Getter_(unwrap_jso(this)));
+  TouchList get targetTouches => _blink.BlinkTouchEvent.instance.targetTouches_Getter_(this);
   
   @DomName('TouchEvent.touches')
   @DocsEditable()
-  TouchList get touches => wrap_jso(_blink.BlinkTouchEvent.instance.touches_Getter_(unwrap_jso(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.instance.initTouchEvent_Callback_13_(unwrap_jso(this), unwrap_jso(touches), unwrap_jso(targetTouches), unwrap_jso(changedTouches), type, unwrap_jso(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);
   
 
   /**
@@ -39760,35 +37129,27 @@
   // To suppress missing implicit constructor warnings.
   factory TouchList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static TouchList internalCreateTouchList() {
-    return new TouchList._internalWrap();
-  }
 
-  factory TouchList._internalWrap() {
-    return new TouchList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TouchList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
   @DomName('TouchList.length')
   @DocsEditable()
-  int get length => _blink.BlinkTouchList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkTouchList.instance.length_Getter_(this);
   
   Touch operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkTouchList.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  Touch _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkTouchList.instance.item_Callback_1_(unwrap_jso(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.");
@@ -39830,7 +37191,7 @@
 
   @DomName('TouchList.item')
   @DocsEditable()
-  Touch item(int index) => wrap_jso(_blink.BlinkTouchList.instance.item_Callback_1_(unwrap_jso(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
@@ -39852,51 +37213,43 @@
   factory TrackDefault(String type, String language, String label, List<String> kinds, [String byteStreamTrackID]) {
     if (byteStreamTrackID != null) {
       List kinds_1 = convertDartToNative_StringArray(kinds);
-      return wrap_jso(_blink.BlinkTrackDefault.instance.constructorCallback_5_(type, language, label, kinds_1, byteStreamTrackID));
+      return _blink.BlinkTrackDefault.instance.constructorCallback_5_(type, language, label, kinds_1, byteStreamTrackID);
     }
     List kinds_1 = convertDartToNative_StringArray(kinds);
-    return wrap_jso(_blink.BlinkTrackDefault.instance.constructorCallback_4_(type, language, label, kinds_1));
+    return _blink.BlinkTrackDefault.instance.constructorCallback_4_(type, language, label, kinds_1);
   }
 
+
   @Deprecated("Internal Use Only")
-  static TrackDefault internalCreateTrackDefault() {
-    return new TrackDefault._internalWrap();
-  }
-
-  factory TrackDefault._internalWrap() {
-    return new TrackDefault.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TrackDefault.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('TrackDefault.byteStreamTrackID')
   @DocsEditable()
   @Experimental() // untriaged
-  String get byteStreamTrackID => _blink.BlinkTrackDefault.instance.byteStreamTrackID_Getter_(unwrap_jso(this));
+  String get byteStreamTrackID => _blink.BlinkTrackDefault.instance.byteStreamTrackID_Getter_(this);
   
   @DomName('TrackDefault.kinds')
   @DocsEditable()
   @Experimental() // untriaged
-  List<String> get kinds => _blink.BlinkTrackDefault.instance.kinds_Getter_(unwrap_jso(this));
+  List<String> get kinds => _blink.BlinkTrackDefault.instance.kinds_Getter_(this);
   
   @DomName('TrackDefault.label')
   @DocsEditable()
   @Experimental() // untriaged
-  String get label => _blink.BlinkTrackDefault.instance.label_Getter_(unwrap_jso(this));
+  String get label => _blink.BlinkTrackDefault.instance.label_Getter_(this);
   
   @DomName('TrackDefault.language')
   @DocsEditable()
   @Experimental() // untriaged
-  String get language => _blink.BlinkTrackDefault.instance.language_Getter_(unwrap_jso(this));
+  String get language => _blink.BlinkTrackDefault.instance.language_Getter_(this);
   
   @DomName('TrackDefault.type')
   @DocsEditable()
   @Experimental() // untriaged
-  String get type => _blink.BlinkTrackDefault.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkTrackDefault.instance.type_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -39917,35 +37270,27 @@
   @DocsEditable()
   factory TrackDefaultList([List<TrackDefault> trackDefaults]) {
     if (trackDefaults != null) {
-      return wrap_jso(_blink.BlinkTrackDefaultList.instance.constructorCallback_1_(trackDefaults));
+      return _blink.BlinkTrackDefaultList.instance.constructorCallback_1_(trackDefaults);
     }
-    return wrap_jso(_blink.BlinkTrackDefaultList.instance.constructorCallback_0_());
+    return _blink.BlinkTrackDefaultList.instance.constructorCallback_0_();
   }
 
+
   @Deprecated("Internal Use Only")
-  static TrackDefaultList internalCreateTrackDefaultList() {
-    return new TrackDefaultList._internalWrap();
-  }
-
-  factory TrackDefaultList._internalWrap() {
-    return new TrackDefaultList.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TrackDefaultList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('TrackDefaultList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkTrackDefaultList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkTrackDefaultList.instance.length_Getter_(this);
   
   @DomName('TrackDefaultList.item')
   @DocsEditable()
   @Experimental() // untriaged
-  TrackDefault item(int index) => wrap_jso(_blink.BlinkTrackDefaultList.instance.item_Callback_1_(unwrap_jso(this), index));
+  TrackDefault item(int index) => _blink.BlinkTrackDefaultList.instance.item_Callback_1_(this, index);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -39972,11 +37317,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TrackElement internalCreateTrackElement() {
-    return new TrackElement._internalWrap();
-  }
-
-  external factory TrackElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TrackElement.internal_() : super.internal_();
@@ -40009,51 +37350,51 @@
 
   @DomName('HTMLTrackElement.default')
   @DocsEditable()
-  bool get defaultValue => _blink.BlinkHTMLTrackElement.instance.default_Getter_(unwrap_jso(this));
+  bool get defaultValue => _blink.BlinkHTMLTrackElement.instance.default_Getter_(this);
   
   @DomName('HTMLTrackElement.default')
   @DocsEditable()
-  set defaultValue(bool value) => _blink.BlinkHTMLTrackElement.instance.default_Setter_(unwrap_jso(this), value);
+  set defaultValue(bool value) => _blink.BlinkHTMLTrackElement.instance.default_Setter_(this, value);
   
   @DomName('HTMLTrackElement.kind')
   @DocsEditable()
-  String get kind => _blink.BlinkHTMLTrackElement.instance.kind_Getter_(unwrap_jso(this));
+  String get kind => _blink.BlinkHTMLTrackElement.instance.kind_Getter_(this);
   
   @DomName('HTMLTrackElement.kind')
   @DocsEditable()
-  set kind(String value) => _blink.BlinkHTMLTrackElement.instance.kind_Setter_(unwrap_jso(this), value);
+  set kind(String value) => _blink.BlinkHTMLTrackElement.instance.kind_Setter_(this, value);
   
   @DomName('HTMLTrackElement.label')
   @DocsEditable()
-  String get label => _blink.BlinkHTMLTrackElement.instance.label_Getter_(unwrap_jso(this));
+  String get label => _blink.BlinkHTMLTrackElement.instance.label_Getter_(this);
   
   @DomName('HTMLTrackElement.label')
   @DocsEditable()
-  set label(String value) => _blink.BlinkHTMLTrackElement.instance.label_Setter_(unwrap_jso(this), value);
+  set label(String value) => _blink.BlinkHTMLTrackElement.instance.label_Setter_(this, value);
   
   @DomName('HTMLTrackElement.readyState')
   @DocsEditable()
-  int get readyState => _blink.BlinkHTMLTrackElement.instance.readyState_Getter_(unwrap_jso(this));
+  int get readyState => _blink.BlinkHTMLTrackElement.instance.readyState_Getter_(this);
   
   @DomName('HTMLTrackElement.src')
   @DocsEditable()
-  String get src => _blink.BlinkHTMLTrackElement.instance.src_Getter_(unwrap_jso(this));
+  String get src => _blink.BlinkHTMLTrackElement.instance.src_Getter_(this);
   
   @DomName('HTMLTrackElement.src')
   @DocsEditable()
-  set src(String value) => _blink.BlinkHTMLTrackElement.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkHTMLTrackElement.instance.src_Setter_(this, value);
   
   @DomName('HTMLTrackElement.srclang')
   @DocsEditable()
-  String get srclang => _blink.BlinkHTMLTrackElement.instance.srclang_Getter_(unwrap_jso(this));
+  String get srclang => _blink.BlinkHTMLTrackElement.instance.srclang_Getter_(this);
   
   @DomName('HTMLTrackElement.srclang')
   @DocsEditable()
-  set srclang(String value) => _blink.BlinkHTMLTrackElement.instance.srclang_Setter_(unwrap_jso(this), value);
+  set srclang(String value) => _blink.BlinkHTMLTrackElement.instance.srclang_Setter_(this, value);
   
   @DomName('HTMLTrackElement.track')
   @DocsEditable()
-  TextTrack get track => wrap_jso(_blink.BlinkHTMLTrackElement.instance.track_Getter_(unwrap_jso(this)));
+  TextTrack get track => _blink.BlinkHTMLTrackElement.instance.track_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -40075,18 +37416,14 @@
   factory TrackEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkTrackEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkTrackEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkTrackEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkTrackEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static TrackEvent internalCreateTrackEvent() {
-    return new TrackEvent._internalWrap();
-  }
-
-  external factory TrackEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TrackEvent.internal_() : super.internal_();
@@ -40094,7 +37431,7 @@
 
   @DomName('TrackEvent.track')
   @DocsEditable()
-  Object get track => wrap_jso(_blink.BlinkTrackEvent.instance.track_Getter_(unwrap_jso(this)));
+  Object get track => (_blink.BlinkTrackEvent.instance.track_Getter_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -40115,18 +37452,14 @@
   factory TransitionEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkTransitionEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkTransitionEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkTransitionEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkTransitionEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static TransitionEvent internalCreateTransitionEvent() {
-    return new TransitionEvent._internalWrap();
-  }
-
-  external factory TransitionEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TransitionEvent.internal_() : super.internal_();
@@ -40134,15 +37467,15 @@
 
   @DomName('TransitionEvent.elapsedTime')
   @DocsEditable()
-  num get elapsedTime => _blink.BlinkTransitionEvent.instance.elapsedTime_Getter_(unwrap_jso(this));
+  num get elapsedTime => _blink.BlinkTransitionEvent.instance.elapsedTime_Getter_(this);
   
   @DomName('TransitionEvent.propertyName')
   @DocsEditable()
-  String get propertyName => _blink.BlinkTransitionEvent.instance.propertyName_Getter_(unwrap_jso(this));
+  String get propertyName => _blink.BlinkTransitionEvent.instance.propertyName_Getter_(this);
   
   @DomName('TransitionEvent.pseudoElement')
   @DocsEditable()
-  String get pseudoElement => _blink.BlinkTransitionEvent.instance.pseudoElement_Getter_(unwrap_jso(this));
+  String get pseudoElement => _blink.BlinkTransitionEvent.instance.pseudoElement_Getter_(this);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -40159,68 +37492,60 @@
   // To suppress missing implicit constructor warnings.
   factory TreeWalker._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static TreeWalker internalCreateTreeWalker() {
-    return new TreeWalker._internalWrap();
-  }
 
-  factory TreeWalker._internalWrap() {
-    return new TreeWalker.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TreeWalker.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('TreeWalker.currentNode')
   @DocsEditable()
-  Node get currentNode => wrap_jso(_blink.BlinkTreeWalker.instance.currentNode_Getter_(unwrap_jso(this)));
+  Node get currentNode => _blink.BlinkTreeWalker.instance.currentNode_Getter_(this);
   
   @DomName('TreeWalker.currentNode')
   @DocsEditable()
-  set currentNode(Node value) => _blink.BlinkTreeWalker.instance.currentNode_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set currentNode(Node value) => _blink.BlinkTreeWalker.instance.currentNode_Setter_(this, value);
   
   @DomName('TreeWalker.filter')
   @DocsEditable()
-  NodeFilter get filter => wrap_jso(_blink.BlinkTreeWalker.instance.filter_Getter_(unwrap_jso(this)));
+  NodeFilter get filter => _blink.BlinkTreeWalker.instance.filter_Getter_(this);
   
   @DomName('TreeWalker.root')
   @DocsEditable()
-  Node get root => wrap_jso(_blink.BlinkTreeWalker.instance.root_Getter_(unwrap_jso(this)));
+  Node get root => _blink.BlinkTreeWalker.instance.root_Getter_(this);
   
   @DomName('TreeWalker.whatToShow')
   @DocsEditable()
-  int get whatToShow => _blink.BlinkTreeWalker.instance.whatToShow_Getter_(unwrap_jso(this));
+  int get whatToShow => _blink.BlinkTreeWalker.instance.whatToShow_Getter_(this);
   
   @DomName('TreeWalker.firstChild')
   @DocsEditable()
-  Node firstChild() => wrap_jso(_blink.BlinkTreeWalker.instance.firstChild_Callback_0_(unwrap_jso(this)));
+  Node firstChild() => _blink.BlinkTreeWalker.instance.firstChild_Callback_0_(this);
   
   @DomName('TreeWalker.lastChild')
   @DocsEditable()
-  Node lastChild() => wrap_jso(_blink.BlinkTreeWalker.instance.lastChild_Callback_0_(unwrap_jso(this)));
+  Node lastChild() => _blink.BlinkTreeWalker.instance.lastChild_Callback_0_(this);
   
   @DomName('TreeWalker.nextNode')
   @DocsEditable()
-  Node nextNode() => wrap_jso(_blink.BlinkTreeWalker.instance.nextNode_Callback_0_(unwrap_jso(this)));
+  Node nextNode() => _blink.BlinkTreeWalker.instance.nextNode_Callback_0_(this);
   
   @DomName('TreeWalker.nextSibling')
   @DocsEditable()
-  Node nextSibling() => wrap_jso(_blink.BlinkTreeWalker.instance.nextSibling_Callback_0_(unwrap_jso(this)));
+  Node nextSibling() => _blink.BlinkTreeWalker.instance.nextSibling_Callback_0_(this);
   
   @DomName('TreeWalker.parentNode')
   @DocsEditable()
-  Node parentNode() => wrap_jso(_blink.BlinkTreeWalker.instance.parentNode_Callback_0_(unwrap_jso(this)));
+  Node parentNode() => _blink.BlinkTreeWalker.instance.parentNode_Callback_0_(this);
   
   @DomName('TreeWalker.previousNode')
   @DocsEditable()
-  Node previousNode() => wrap_jso(_blink.BlinkTreeWalker.instance.previousNode_Callback_0_(unwrap_jso(this)));
+  Node previousNode() => _blink.BlinkTreeWalker.instance.previousNode_Callback_0_(this);
   
   @DomName('TreeWalker.previousSibling')
   @DocsEditable()
-  Node previousSibling() => wrap_jso(_blink.BlinkTreeWalker.instance.previousSibling_Callback_0_(unwrap_jso(this)));
+  Node previousSibling() => _blink.BlinkTreeWalker.instance.previousSibling_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -40254,18 +37579,14 @@
   factory UIEvent._(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkUIEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkUIEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkUIEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkUIEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static UIEvent internalCreateUIEvent() {
-    return new UIEvent._internalWrap();
-  }
-
-  external factory UIEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   UIEvent.internal_() : super.internal_();
@@ -40274,34 +37595,34 @@
   @DomName('UIEvent.charCode')
   @DocsEditable()
   @Unstable()
-  int get _charCode => _blink.BlinkUIEvent.instance.charCode_Getter_(unwrap_jso(this));
+  int get _charCode => _blink.BlinkUIEvent.instance.charCode_Getter_(this);
   
   @DomName('UIEvent.detail')
   @DocsEditable()
-  int get detail => _blink.BlinkUIEvent.instance.detail_Getter_(unwrap_jso(this));
+  int get detail => _blink.BlinkUIEvent.instance.detail_Getter_(this);
   
   @DomName('UIEvent.keyCode')
   @DocsEditable()
   @Unstable()
-  int get _keyCode => _blink.BlinkUIEvent.instance.keyCode_Getter_(unwrap_jso(this));
+  int get _keyCode => _blink.BlinkUIEvent.instance.keyCode_Getter_(this);
   
   @DomName('UIEvent.sourceDevice')
   @DocsEditable()
   @Experimental() // untriaged
-  InputDevice get sourceDevice => wrap_jso(_blink.BlinkUIEvent.instance.sourceDevice_Getter_(unwrap_jso(this)));
+  InputDevice get sourceDevice => _blink.BlinkUIEvent.instance.sourceDevice_Getter_(this);
   
   @DomName('UIEvent.view')
   @DocsEditable()
-  WindowBase get view => wrap_jso(_blink.BlinkUIEvent.instance.view_Getter_(unwrap_jso(this)));
+  WindowBase get view => _blink.BlinkUIEvent.instance.view_Getter_(this);
   
   @DomName('UIEvent.which')
   @DocsEditable()
   @Unstable()
-  int get _which => _blink.BlinkUIEvent.instance.which_Getter_(unwrap_jso(this));
+  int get _which => _blink.BlinkUIEvent.instance.which_Getter_(this);
   
   @DomName('UIEvent.initUIEvent')
   @DocsEditable()
-  void _initUIEvent(String type, bool bubbles, bool cancelable, Window view, int detail) => _blink.BlinkUIEvent.instance.initUIEvent_Callback_5_(unwrap_jso(this), type, bubbles, cancelable, unwrap_jso(view), detail);
+  void _initUIEvent(String type, bool bubbles, bool cancelable, Window view, int detail) => _blink.BlinkUIEvent.instance.initUIEvent_Callback_5_(this, type, bubbles, cancelable, view, detail);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -40323,11 +37644,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static UListElement internalCreateUListElement() {
-    return new UListElement._internalWrap();
-  }
-
-  external factory UListElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   UListElement.internal_() : super.internal_();
@@ -40355,11 +37672,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static UnknownElement internalCreateUnknownElement() {
-    return new UnknownElement._internalWrap();
-  }
-
-  external factory UnknownElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   UnknownElement.internal_() : super.internal_();
@@ -40385,45 +37698,37 @@
   // To suppress missing implicit constructor warnings.
   factory Url._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Url internalCreateUrl() {
-    return new Url._internalWrap();
-  }
 
-  factory Url._internalWrap() {
-    return new Url.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Url.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   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.instance.createObjectURL_Callback_1_(unwrap_jso(blob_OR_source_OR_stream));
-    }
-    if ((blob_OR_source_OR_stream is MediaSource)) {
-      return _blink.BlinkURL.instance.createObjectURL_Callback_1_(unwrap_jso(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.instance.createObjectURL_Callback_1_(unwrap_jso(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.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.instance.createObjectURL_Callback_1_(unwrap_jso(blob));
+  static String createObjectUrlFromBlob(Blob blob) => _blink.BlinkURL.instance.createObjectURL_Callback_1_(blob);
   
   @DomName('URL.createObjectUrlFromSource')
   @DocsEditable()
-  static String createObjectUrlFromSource(MediaSource source) => _blink.BlinkURL.instance.createObjectURL_Callback_1_(unwrap_jso(source));
+  static String createObjectUrlFromSource(MediaSource source) => _blink.BlinkURL.instance.createObjectURL_Callback_1_(source);
   
   @DomName('URL.createObjectUrlFromStream')
   @DocsEditable()
-  static String createObjectUrlFromStream(MediaStream stream) => _blink.BlinkURL.instance.createObjectURL_Callback_1_(unwrap_jso(stream));
+  static String createObjectUrlFromStream(MediaStream stream) => _blink.BlinkURL.instance.createObjectURL_Callback_1_(stream);
   
   @DomName('URL.revokeObjectURL')
   @DocsEditable()
@@ -40432,112 +37737,112 @@
   @DomName('URL.hash')
   @DocsEditable()
   @Experimental() // untriaged
-  String get hash => _blink.BlinkURL.instance.hash_Getter_(unwrap_jso(this));
+  String get hash => _blink.BlinkURL.instance.hash_Getter_(this);
   
   @DomName('URL.hash')
   @DocsEditable()
   @Experimental() // untriaged
-  set hash(String value) => _blink.BlinkURL.instance.hash_Setter_(unwrap_jso(this), value);
+  set hash(String value) => _blink.BlinkURL.instance.hash_Setter_(this, value);
   
   @DomName('URL.host')
   @DocsEditable()
   @Experimental() // untriaged
-  String get host => _blink.BlinkURL.instance.host_Getter_(unwrap_jso(this));
+  String get host => _blink.BlinkURL.instance.host_Getter_(this);
   
   @DomName('URL.host')
   @DocsEditable()
   @Experimental() // untriaged
-  set host(String value) => _blink.BlinkURL.instance.host_Setter_(unwrap_jso(this), value);
+  set host(String value) => _blink.BlinkURL.instance.host_Setter_(this, value);
   
   @DomName('URL.hostname')
   @DocsEditable()
   @Experimental() // untriaged
-  String get hostname => _blink.BlinkURL.instance.hostname_Getter_(unwrap_jso(this));
+  String get hostname => _blink.BlinkURL.instance.hostname_Getter_(this);
   
   @DomName('URL.hostname')
   @DocsEditable()
   @Experimental() // untriaged
-  set hostname(String value) => _blink.BlinkURL.instance.hostname_Setter_(unwrap_jso(this), value);
+  set hostname(String value) => _blink.BlinkURL.instance.hostname_Setter_(this, value);
   
   @DomName('URL.href')
   @DocsEditable()
   @Experimental() // untriaged
-  String get href => _blink.BlinkURL.instance.href_Getter_(unwrap_jso(this));
+  String get href => _blink.BlinkURL.instance.href_Getter_(this);
   
   @DomName('URL.href')
   @DocsEditable()
   @Experimental() // untriaged
-  set href(String value) => _blink.BlinkURL.instance.href_Setter_(unwrap_jso(this), value);
+  set href(String value) => _blink.BlinkURL.instance.href_Setter_(this, value);
   
   @DomName('URL.origin')
   @DocsEditable()
   @Experimental() // untriaged
-  String get origin => _blink.BlinkURL.instance.origin_Getter_(unwrap_jso(this));
+  String get origin => _blink.BlinkURL.instance.origin_Getter_(this);
   
   @DomName('URL.password')
   @DocsEditable()
   @Experimental() // untriaged
-  String get password => _blink.BlinkURL.instance.password_Getter_(unwrap_jso(this));
+  String get password => _blink.BlinkURL.instance.password_Getter_(this);
   
   @DomName('URL.password')
   @DocsEditable()
   @Experimental() // untriaged
-  set password(String value) => _blink.BlinkURL.instance.password_Setter_(unwrap_jso(this), value);
+  set password(String value) => _blink.BlinkURL.instance.password_Setter_(this, value);
   
   @DomName('URL.pathname')
   @DocsEditable()
   @Experimental() // untriaged
-  String get pathname => _blink.BlinkURL.instance.pathname_Getter_(unwrap_jso(this));
+  String get pathname => _blink.BlinkURL.instance.pathname_Getter_(this);
   
   @DomName('URL.pathname')
   @DocsEditable()
   @Experimental() // untriaged
-  set pathname(String value) => _blink.BlinkURL.instance.pathname_Setter_(unwrap_jso(this), value);
+  set pathname(String value) => _blink.BlinkURL.instance.pathname_Setter_(this, value);
   
   @DomName('URL.port')
   @DocsEditable()
   @Experimental() // untriaged
-  String get port => _blink.BlinkURL.instance.port_Getter_(unwrap_jso(this));
+  String get port => _blink.BlinkURL.instance.port_Getter_(this);
   
   @DomName('URL.port')
   @DocsEditable()
   @Experimental() // untriaged
-  set port(String value) => _blink.BlinkURL.instance.port_Setter_(unwrap_jso(this), value);
+  set port(String value) => _blink.BlinkURL.instance.port_Setter_(this, value);
   
   @DomName('URL.protocol')
   @DocsEditable()
   @Experimental() // untriaged
-  String get protocol => _blink.BlinkURL.instance.protocol_Getter_(unwrap_jso(this));
+  String get protocol => _blink.BlinkURL.instance.protocol_Getter_(this);
   
   @DomName('URL.protocol')
   @DocsEditable()
   @Experimental() // untriaged
-  set protocol(String value) => _blink.BlinkURL.instance.protocol_Setter_(unwrap_jso(this), value);
+  set protocol(String value) => _blink.BlinkURL.instance.protocol_Setter_(this, value);
   
   @DomName('URL.search')
   @DocsEditable()
   @Experimental() // untriaged
-  String get search => _blink.BlinkURL.instance.search_Getter_(unwrap_jso(this));
+  String get search => _blink.BlinkURL.instance.search_Getter_(this);
   
   @DomName('URL.search')
   @DocsEditable()
   @Experimental() // untriaged
-  set search(String value) => _blink.BlinkURL.instance.search_Setter_(unwrap_jso(this), value);
+  set search(String value) => _blink.BlinkURL.instance.search_Setter_(this, value);
   
   @DomName('URL.username')
   @DocsEditable()
   @Experimental() // untriaged
-  String get username => _blink.BlinkURL.instance.username_Getter_(unwrap_jso(this));
+  String get username => _blink.BlinkURL.instance.username_Getter_(this);
   
   @DomName('URL.username')
   @DocsEditable()
   @Experimental() // untriaged
-  set username(String value) => _blink.BlinkURL.instance.username_Setter_(unwrap_jso(this), value);
+  set username(String value) => _blink.BlinkURL.instance.username_Setter_(this, value);
   
   @DomName('URL.toString')
   @DocsEditable()
   @Experimental() // untriaged
-  String toString() => _blink.BlinkURL.instance.toString_Callback_0_(unwrap_jso(this));
+  String toString() => _blink.BlinkURL.instance.toString_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -40744,35 +38049,27 @@
   // To suppress missing implicit constructor warnings.
   factory VRDevice._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static VRDevice internalCreateVRDevice() {
-    return new VRDevice._internalWrap();
-  }
 
-  factory VRDevice._internalWrap() {
-    return new VRDevice.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   VRDevice.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('VRDevice.deviceId')
   @DocsEditable()
   @Experimental() // untriaged
-  String get deviceId => _blink.BlinkVRDevice.instance.deviceId_Getter_(unwrap_jso(this));
+  String get deviceId => _blink.BlinkVRDevice.instance.deviceId_Getter_(this);
   
   @DomName('VRDevice.deviceName')
   @DocsEditable()
   @Experimental() // untriaged
-  String get deviceName => _blink.BlinkVRDevice.instance.deviceName_Getter_(unwrap_jso(this));
+  String get deviceName => _blink.BlinkVRDevice.instance.deviceName_Getter_(this);
   
   @DomName('VRDevice.hardwareUnitId')
   @DocsEditable()
   @Experimental() // untriaged
-  String get hardwareUnitId => _blink.BlinkVRDevice.instance.hardwareUnitId_Getter_(unwrap_jso(this));
+  String get hardwareUnitId => _blink.BlinkVRDevice.instance.hardwareUnitId_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -40789,50 +38086,42 @@
   // To suppress missing implicit constructor warnings.
   factory VREyeParameters._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static VREyeParameters internalCreateVREyeParameters() {
-    return new VREyeParameters._internalWrap();
-  }
 
-  factory VREyeParameters._internalWrap() {
-    return new VREyeParameters.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   VREyeParameters.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('VREyeParameters.currentFieldOfView')
   @DocsEditable()
   @Experimental() // untriaged
-  VRFieldOfView get currentFieldOfView => wrap_jso(_blink.BlinkVREyeParameters.instance.currentFieldOfView_Getter_(unwrap_jso(this)));
+  VRFieldOfView get currentFieldOfView => _blink.BlinkVREyeParameters.instance.currentFieldOfView_Getter_(this);
   
   @DomName('VREyeParameters.eyeTranslation')
   @DocsEditable()
   @Experimental() // untriaged
-  DomPoint get eyeTranslation => wrap_jso(_blink.BlinkVREyeParameters.instance.eyeTranslation_Getter_(unwrap_jso(this)));
+  DomPoint get eyeTranslation => _blink.BlinkVREyeParameters.instance.eyeTranslation_Getter_(this);
   
   @DomName('VREyeParameters.maximumFieldOfView')
   @DocsEditable()
   @Experimental() // untriaged
-  VRFieldOfView get maximumFieldOfView => wrap_jso(_blink.BlinkVREyeParameters.instance.maximumFieldOfView_Getter_(unwrap_jso(this)));
+  VRFieldOfView get maximumFieldOfView => _blink.BlinkVREyeParameters.instance.maximumFieldOfView_Getter_(this);
   
   @DomName('VREyeParameters.minimumFieldOfView')
   @DocsEditable()
   @Experimental() // untriaged
-  VRFieldOfView get minimumFieldOfView => wrap_jso(_blink.BlinkVREyeParameters.instance.minimumFieldOfView_Getter_(unwrap_jso(this)));
+  VRFieldOfView get minimumFieldOfView => _blink.BlinkVREyeParameters.instance.minimumFieldOfView_Getter_(this);
   
   @DomName('VREyeParameters.recommendedFieldOfView')
   @DocsEditable()
   @Experimental() // untriaged
-  VRFieldOfView get recommendedFieldOfView => wrap_jso(_blink.BlinkVREyeParameters.instance.recommendedFieldOfView_Getter_(unwrap_jso(this)));
+  VRFieldOfView get recommendedFieldOfView => _blink.BlinkVREyeParameters.instance.recommendedFieldOfView_Getter_(this);
   
   @DomName('VREyeParameters.renderRect')
   @DocsEditable()
   @Experimental() // untriaged
-  _DomRect get renderRect => wrap_jso(_blink.BlinkVREyeParameters.instance.renderRect_Getter_(unwrap_jso(this)));
+  _DomRect get renderRect => _blink.BlinkVREyeParameters.instance.renderRect_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -40854,65 +38143,57 @@
   factory VRFieldOfView([Map fov]) {
     if (fov != null) {
       var fov_1 = convertDartToNative_Dictionary(fov);
-      return wrap_jso(_blink.BlinkVRFieldOfView.instance.constructorCallback_1_(fov_1));
+      return _blink.BlinkVRFieldOfView.instance.constructorCallback_1_(fov_1);
     }
-    return wrap_jso(_blink.BlinkVRFieldOfView.instance.constructorCallback_0_());
+    return _blink.BlinkVRFieldOfView.instance.constructorCallback_0_();
   }
 
+
   @Deprecated("Internal Use Only")
-  static VRFieldOfView internalCreateVRFieldOfView() {
-    return new VRFieldOfView._internalWrap();
-  }
-
-  factory VRFieldOfView._internalWrap() {
-    return new VRFieldOfView.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   VRFieldOfView.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('VRFieldOfView.downDegrees')
   @DocsEditable()
   @Experimental() // untriaged
-  num get downDegrees => _blink.BlinkVRFieldOfView.instance.downDegrees_Getter_(unwrap_jso(this));
+  num get downDegrees => _blink.BlinkVRFieldOfView.instance.downDegrees_Getter_(this);
   
   @DomName('VRFieldOfView.downDegrees')
   @DocsEditable()
   @Experimental() // untriaged
-  set downDegrees(num value) => _blink.BlinkVRFieldOfView.instance.downDegrees_Setter_(unwrap_jso(this), value);
+  set downDegrees(num value) => _blink.BlinkVRFieldOfView.instance.downDegrees_Setter_(this, value);
   
   @DomName('VRFieldOfView.leftDegrees')
   @DocsEditable()
   @Experimental() // untriaged
-  num get leftDegrees => _blink.BlinkVRFieldOfView.instance.leftDegrees_Getter_(unwrap_jso(this));
+  num get leftDegrees => _blink.BlinkVRFieldOfView.instance.leftDegrees_Getter_(this);
   
   @DomName('VRFieldOfView.leftDegrees')
   @DocsEditable()
   @Experimental() // untriaged
-  set leftDegrees(num value) => _blink.BlinkVRFieldOfView.instance.leftDegrees_Setter_(unwrap_jso(this), value);
+  set leftDegrees(num value) => _blink.BlinkVRFieldOfView.instance.leftDegrees_Setter_(this, value);
   
   @DomName('VRFieldOfView.rightDegrees')
   @DocsEditable()
   @Experimental() // untriaged
-  num get rightDegrees => _blink.BlinkVRFieldOfView.instance.rightDegrees_Getter_(unwrap_jso(this));
+  num get rightDegrees => _blink.BlinkVRFieldOfView.instance.rightDegrees_Getter_(this);
   
   @DomName('VRFieldOfView.rightDegrees')
   @DocsEditable()
   @Experimental() // untriaged
-  set rightDegrees(num value) => _blink.BlinkVRFieldOfView.instance.rightDegrees_Setter_(unwrap_jso(this), value);
+  set rightDegrees(num value) => _blink.BlinkVRFieldOfView.instance.rightDegrees_Setter_(this, value);
   
   @DomName('VRFieldOfView.upDegrees')
   @DocsEditable()
   @Experimental() // untriaged
-  num get upDegrees => _blink.BlinkVRFieldOfView.instance.upDegrees_Getter_(unwrap_jso(this));
+  num get upDegrees => _blink.BlinkVRFieldOfView.instance.upDegrees_Getter_(this);
   
   @DomName('VRFieldOfView.upDegrees')
   @DocsEditable()
   @Experimental() // untriaged
-  set upDegrees(num value) => _blink.BlinkVRFieldOfView.instance.upDegrees_Setter_(unwrap_jso(this), value);
+  set upDegrees(num value) => _blink.BlinkVRFieldOfView.instance.upDegrees_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -40929,55 +38210,47 @@
   // To suppress missing implicit constructor warnings.
   factory VRPositionState._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static VRPositionState internalCreateVRPositionState() {
-    return new VRPositionState._internalWrap();
-  }
 
-  factory VRPositionState._internalWrap() {
-    return new VRPositionState.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   VRPositionState.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('VRPositionState.angularAcceleration')
   @DocsEditable()
   @Experimental() // untriaged
-  DomPoint get angularAcceleration => wrap_jso(_blink.BlinkVRPositionState.instance.angularAcceleration_Getter_(unwrap_jso(this)));
+  DomPoint get angularAcceleration => _blink.BlinkVRPositionState.instance.angularAcceleration_Getter_(this);
   
   @DomName('VRPositionState.angularVelocity')
   @DocsEditable()
   @Experimental() // untriaged
-  DomPoint get angularVelocity => wrap_jso(_blink.BlinkVRPositionState.instance.angularVelocity_Getter_(unwrap_jso(this)));
+  DomPoint get angularVelocity => _blink.BlinkVRPositionState.instance.angularVelocity_Getter_(this);
   
   @DomName('VRPositionState.linearAcceleration')
   @DocsEditable()
   @Experimental() // untriaged
-  DomPoint get linearAcceleration => wrap_jso(_blink.BlinkVRPositionState.instance.linearAcceleration_Getter_(unwrap_jso(this)));
+  DomPoint get linearAcceleration => _blink.BlinkVRPositionState.instance.linearAcceleration_Getter_(this);
   
   @DomName('VRPositionState.linearVelocity')
   @DocsEditable()
   @Experimental() // untriaged
-  DomPoint get linearVelocity => wrap_jso(_blink.BlinkVRPositionState.instance.linearVelocity_Getter_(unwrap_jso(this)));
+  DomPoint get linearVelocity => _blink.BlinkVRPositionState.instance.linearVelocity_Getter_(this);
   
   @DomName('VRPositionState.orientation')
   @DocsEditable()
   @Experimental() // untriaged
-  DomPoint get orientation => wrap_jso(_blink.BlinkVRPositionState.instance.orientation_Getter_(unwrap_jso(this)));
+  DomPoint get orientation => _blink.BlinkVRPositionState.instance.orientation_Getter_(this);
   
   @DomName('VRPositionState.position')
   @DocsEditable()
   @Experimental() // untriaged
-  DomPoint get position => wrap_jso(_blink.BlinkVRPositionState.instance.position_Getter_(unwrap_jso(this)));
+  DomPoint get position => _blink.BlinkVRPositionState.instance.position_Getter_(this);
   
   @DomName('VRPositionState.timeStamp')
   @DocsEditable()
   @Experimental() // untriaged
-  num get timeStamp => _blink.BlinkVRPositionState.instance.timeStamp_Getter_(unwrap_jso(this));
+  num get timeStamp => _blink.BlinkVRPositionState.instance.timeStamp_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -40993,65 +38266,57 @@
   // To suppress missing implicit constructor warnings.
   factory ValidityState._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ValidityState internalCreateValidityState() {
-    return new ValidityState._internalWrap();
-  }
 
-  factory ValidityState._internalWrap() {
-    return new ValidityState.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ValidityState.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('ValidityState.badInput')
   @DocsEditable()
-  bool get badInput => _blink.BlinkValidityState.instance.badInput_Getter_(unwrap_jso(this));
+  bool get badInput => _blink.BlinkValidityState.instance.badInput_Getter_(this);
   
   @DomName('ValidityState.customError')
   @DocsEditable()
-  bool get customError => _blink.BlinkValidityState.instance.customError_Getter_(unwrap_jso(this));
+  bool get customError => _blink.BlinkValidityState.instance.customError_Getter_(this);
   
   @DomName('ValidityState.patternMismatch')
   @DocsEditable()
-  bool get patternMismatch => _blink.BlinkValidityState.instance.patternMismatch_Getter_(unwrap_jso(this));
+  bool get patternMismatch => _blink.BlinkValidityState.instance.patternMismatch_Getter_(this);
   
   @DomName('ValidityState.rangeOverflow')
   @DocsEditable()
-  bool get rangeOverflow => _blink.BlinkValidityState.instance.rangeOverflow_Getter_(unwrap_jso(this));
+  bool get rangeOverflow => _blink.BlinkValidityState.instance.rangeOverflow_Getter_(this);
   
   @DomName('ValidityState.rangeUnderflow')
   @DocsEditable()
-  bool get rangeUnderflow => _blink.BlinkValidityState.instance.rangeUnderflow_Getter_(unwrap_jso(this));
+  bool get rangeUnderflow => _blink.BlinkValidityState.instance.rangeUnderflow_Getter_(this);
   
   @DomName('ValidityState.stepMismatch')
   @DocsEditable()
-  bool get stepMismatch => _blink.BlinkValidityState.instance.stepMismatch_Getter_(unwrap_jso(this));
+  bool get stepMismatch => _blink.BlinkValidityState.instance.stepMismatch_Getter_(this);
   
   @DomName('ValidityState.tooLong')
   @DocsEditable()
-  bool get tooLong => _blink.BlinkValidityState.instance.tooLong_Getter_(unwrap_jso(this));
+  bool get tooLong => _blink.BlinkValidityState.instance.tooLong_Getter_(this);
   
   @DomName('ValidityState.tooShort')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get tooShort => _blink.BlinkValidityState.instance.tooShort_Getter_(unwrap_jso(this));
+  bool get tooShort => _blink.BlinkValidityState.instance.tooShort_Getter_(this);
   
   @DomName('ValidityState.typeMismatch')
   @DocsEditable()
-  bool get typeMismatch => _blink.BlinkValidityState.instance.typeMismatch_Getter_(unwrap_jso(this));
+  bool get typeMismatch => _blink.BlinkValidityState.instance.typeMismatch_Getter_(this);
   
   @DomName('ValidityState.valid')
   @DocsEditable()
-  bool get valid => _blink.BlinkValidityState.instance.valid_Getter_(unwrap_jso(this));
+  bool get valid => _blink.BlinkValidityState.instance.valid_Getter_(this);
   
   @DomName('ValidityState.valueMissing')
   @DocsEditable()
-  bool get valueMissing => _blink.BlinkValidityState.instance.valueMissing_Getter_(unwrap_jso(this));
+  bool get valueMissing => _blink.BlinkValidityState.instance.valueMissing_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -41070,11 +38335,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static VideoElement internalCreateVideoElement() {
-    return new VideoElement._internalWrap();
-  }
-
-  external factory VideoElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   VideoElement.internal_() : super.internal_();
@@ -41088,54 +38349,54 @@
 
   @DomName('HTMLVideoElement.height')
   @DocsEditable()
-  int get height => _blink.BlinkHTMLVideoElement.instance.height_Getter_(unwrap_jso(this));
+  int get height => _blink.BlinkHTMLVideoElement.instance.height_Getter_(this);
   
   @DomName('HTMLVideoElement.height')
   @DocsEditable()
-  set height(int value) => _blink.BlinkHTMLVideoElement.instance.height_Setter_(unwrap_jso(this), value);
+  set height(int value) => _blink.BlinkHTMLVideoElement.instance.height_Setter_(this, value);
   
   @DomName('HTMLVideoElement.poster')
   @DocsEditable()
-  String get poster => _blink.BlinkHTMLVideoElement.instance.poster_Getter_(unwrap_jso(this));
+  String get poster => _blink.BlinkHTMLVideoElement.instance.poster_Getter_(this);
   
   @DomName('HTMLVideoElement.poster')
   @DocsEditable()
-  set poster(String value) => _blink.BlinkHTMLVideoElement.instance.poster_Setter_(unwrap_jso(this), value);
+  set poster(String value) => _blink.BlinkHTMLVideoElement.instance.poster_Setter_(this, value);
   
   @DomName('HTMLVideoElement.videoHeight')
   @DocsEditable()
-  int get videoHeight => _blink.BlinkHTMLVideoElement.instance.videoHeight_Getter_(unwrap_jso(this));
+  int get videoHeight => _blink.BlinkHTMLVideoElement.instance.videoHeight_Getter_(this);
   
   @DomName('HTMLVideoElement.videoWidth')
   @DocsEditable()
-  int get videoWidth => _blink.BlinkHTMLVideoElement.instance.videoWidth_Getter_(unwrap_jso(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.instance.webkitDecodedFrameCount_Getter_(unwrap_jso(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.instance.webkitDroppedFrameCount_Getter_(unwrap_jso(this));
+  int get droppedFrameCount => _blink.BlinkHTMLVideoElement.instance.webkitDroppedFrameCount_Getter_(this);
   
   @DomName('HTMLVideoElement.width')
   @DocsEditable()
-  int get width => _blink.BlinkHTMLVideoElement.instance.width_Getter_(unwrap_jso(this));
+  int get width => _blink.BlinkHTMLVideoElement.instance.width_Getter_(this);
   
   @DomName('HTMLVideoElement.width')
   @DocsEditable()
-  set width(int value) => _blink.BlinkHTMLVideoElement.instance.width_Setter_(unwrap_jso(this), value);
+  set width(int value) => _blink.BlinkHTMLVideoElement.instance.width_Setter_(this, value);
   
   @DomName('HTMLVideoElement.getVideoPlaybackQuality')
   @DocsEditable()
   @Experimental() // untriaged
-  VideoPlaybackQuality getVideoPlaybackQuality() => wrap_jso(_blink.BlinkHTMLVideoElement.instance.getVideoPlaybackQuality_Callback_0_(unwrap_jso(this)));
+  VideoPlaybackQuality getVideoPlaybackQuality() => _blink.BlinkHTMLVideoElement.instance.getVideoPlaybackQuality_Callback_0_(this);
   
   @DomName('HTMLVideoElement.webkitEnterFullscreen')
   @DocsEditable()
@@ -41143,7 +38404,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
-  void enterFullscreen() => _blink.BlinkHTMLVideoElement.instance.webkitEnterFullscreen_Callback_0_(unwrap_jso(this));
+  void enterFullscreen() => _blink.BlinkHTMLVideoElement.instance.webkitEnterFullscreen_Callback_0_(this);
   
   @DomName('HTMLVideoElement.webkitExitFullscreen')
   @DocsEditable()
@@ -41151,7 +38412,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-exitfullscreen
-  void exitFullscreen() => _blink.BlinkHTMLVideoElement.instance.webkitExitFullscreen_Callback_0_(unwrap_jso(this));
+  void exitFullscreen() => _blink.BlinkHTMLVideoElement.instance.webkitExitFullscreen_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -41168,40 +38429,32 @@
   // To suppress missing implicit constructor warnings.
   factory VideoPlaybackQuality._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static VideoPlaybackQuality internalCreateVideoPlaybackQuality() {
-    return new VideoPlaybackQuality._internalWrap();
-  }
 
-  factory VideoPlaybackQuality._internalWrap() {
-    return new VideoPlaybackQuality.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   VideoPlaybackQuality.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('VideoPlaybackQuality.corruptedVideoFrames')
   @DocsEditable()
   @Experimental() // untriaged
-  int get corruptedVideoFrames => _blink.BlinkVideoPlaybackQuality.instance.corruptedVideoFrames_Getter_(unwrap_jso(this));
+  int get corruptedVideoFrames => _blink.BlinkVideoPlaybackQuality.instance.corruptedVideoFrames_Getter_(this);
   
   @DomName('VideoPlaybackQuality.creationTime')
   @DocsEditable()
   @Experimental() // untriaged
-  num get creationTime => _blink.BlinkVideoPlaybackQuality.instance.creationTime_Getter_(unwrap_jso(this));
+  num get creationTime => _blink.BlinkVideoPlaybackQuality.instance.creationTime_Getter_(this);
   
   @DomName('VideoPlaybackQuality.droppedVideoFrames')
   @DocsEditable()
   @Experimental() // untriaged
-  int get droppedVideoFrames => _blink.BlinkVideoPlaybackQuality.instance.droppedVideoFrames_Getter_(unwrap_jso(this));
+  int get droppedVideoFrames => _blink.BlinkVideoPlaybackQuality.instance.droppedVideoFrames_Getter_(this);
   
   @DomName('VideoPlaybackQuality.totalVideoFrames')
   @DocsEditable()
   @Experimental() // untriaged
-  int get totalVideoFrames => _blink.BlinkVideoPlaybackQuality.instance.totalVideoFrames_Getter_(unwrap_jso(this));
+  int get totalVideoFrames => _blink.BlinkVideoPlaybackQuality.instance.totalVideoFrames_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -41218,50 +38471,42 @@
   // To suppress missing implicit constructor warnings.
   factory VideoTrack._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static VideoTrack internalCreateVideoTrack() {
-    return new VideoTrack._internalWrap();
-  }
 
-  factory VideoTrack._internalWrap() {
-    return new VideoTrack.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   VideoTrack.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('VideoTrack.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkVideoTrack.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkVideoTrack.instance.id_Getter_(this);
   
   @DomName('VideoTrack.kind')
   @DocsEditable()
   @Experimental() // untriaged
-  String get kind => _blink.BlinkVideoTrack.instance.kind_Getter_(unwrap_jso(this));
+  String get kind => _blink.BlinkVideoTrack.instance.kind_Getter_(this);
   
   @DomName('VideoTrack.label')
   @DocsEditable()
   @Experimental() // untriaged
-  String get label => _blink.BlinkVideoTrack.instance.label_Getter_(unwrap_jso(this));
+  String get label => _blink.BlinkVideoTrack.instance.label_Getter_(this);
   
   @DomName('VideoTrack.language')
   @DocsEditable()
   @Experimental() // untriaged
-  String get language => _blink.BlinkVideoTrack.instance.language_Getter_(unwrap_jso(this));
+  String get language => _blink.BlinkVideoTrack.instance.language_Getter_(this);
   
   @DomName('VideoTrack.selected')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get selected => _blink.BlinkVideoTrack.instance.selected_Getter_(unwrap_jso(this));
+  bool get selected => _blink.BlinkVideoTrack.instance.selected_Getter_(this);
   
   @DomName('VideoTrack.selected')
   @DocsEditable()
   @Experimental() // untriaged
-  set selected(bool value) => _blink.BlinkVideoTrack.instance.selected_Setter_(unwrap_jso(this), value);
+  set selected(bool value) => _blink.BlinkVideoTrack.instance.selected_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -41285,11 +38530,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static VideoTrackList internalCreateVideoTrackList() {
-    return new VideoTrackList._internalWrap();
-  }
-
-  external factory VideoTrackList._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   VideoTrackList.internal_() : super.internal_();
@@ -41298,22 +38539,22 @@
   @DomName('VideoTrackList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkVideoTrackList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkVideoTrackList.instance.length_Getter_(this);
   
   @DomName('VideoTrackList.selectedIndex')
   @DocsEditable()
   @Experimental() // untriaged
-  int get selectedIndex => _blink.BlinkVideoTrackList.instance.selectedIndex_Getter_(unwrap_jso(this));
+  int get selectedIndex => _blink.BlinkVideoTrackList.instance.selectedIndex_Getter_(this);
   
   @DomName('VideoTrackList.__getter__')
   @DocsEditable()
   @Experimental() // untriaged
-  VideoTrack __getter__(int index) => wrap_jso(_blink.BlinkVideoTrackList.instance.$__getter___Callback_1_(unwrap_jso(this), index));
+  VideoTrack __getter__(int index) => _blink.BlinkVideoTrackList.instance.$__getter___Callback_1_(this, index);
   
   @DomName('VideoTrackList.getTrackById')
   @DocsEditable()
   @Experimental() // untriaged
-  VideoTrack getTrackById(String id) => wrap_jso(_blink.BlinkVideoTrackList.instance.getTrackById_Callback_1_(unwrap_jso(this), id));
+  VideoTrack getTrackById(String id) => _blink.BlinkVideoTrackList.instance.getTrackById_Callback_1_(this, id);
   
   @DomName('VideoTrackList.onchange')
   @DocsEditable()
@@ -41349,16 +38590,12 @@
   @DomName('VTTCue.VTTCue')
   @DocsEditable()
   factory VttCue(num startTime, num endTime, String text) {
-    return wrap_jso(_blink.BlinkVTTCue.instance.constructorCallback_3_(startTime, endTime, text));
+    return _blink.BlinkVTTCue.instance.constructorCallback_3_(startTime, endTime, text);
   }
 
 
   @Deprecated("Internal Use Only")
-  static VttCue internalCreateVttCue() {
-    return new VttCue._internalWrap();
-  }
-
-  external factory VttCue._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   VttCue.internal_() : super.internal_();
@@ -41367,87 +38604,87 @@
   @DomName('VTTCue.align')
   @DocsEditable()
   @Experimental() // untriaged
-  String get align => _blink.BlinkVTTCue.instance.align_Getter_(unwrap_jso(this));
+  String get align => _blink.BlinkVTTCue.instance.align_Getter_(this);
   
   @DomName('VTTCue.align')
   @DocsEditable()
   @Experimental() // untriaged
-  set align(String value) => _blink.BlinkVTTCue.instance.align_Setter_(unwrap_jso(this), value);
+  set align(String value) => _blink.BlinkVTTCue.instance.align_Setter_(this, value);
   
   @DomName('VTTCue.line')
   @DocsEditable()
   @Experimental() // untriaged
-  Object get line => wrap_jso(_blink.BlinkVTTCue.instance.line_Getter_(unwrap_jso(this)));
+  Object get line => (_blink.BlinkVTTCue.instance.line_Getter_(this));
   
   @DomName('VTTCue.line')
   @DocsEditable()
   @Experimental() // untriaged
-  set line(Object value) => _blink.BlinkVTTCue.instance.line_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set line(Object value) => _blink.BlinkVTTCue.instance.line_Setter_(this, value);
   
   @DomName('VTTCue.position')
   @DocsEditable()
   @Experimental() // untriaged
-  Object get position => wrap_jso(_blink.BlinkVTTCue.instance.position_Getter_(unwrap_jso(this)));
+  Object get position => (_blink.BlinkVTTCue.instance.position_Getter_(this));
   
   @DomName('VTTCue.position')
   @DocsEditable()
   @Experimental() // untriaged
-  set position(Object value) => _blink.BlinkVTTCue.instance.position_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set position(Object value) => _blink.BlinkVTTCue.instance.position_Setter_(this, value);
   
   @DomName('VTTCue.regionId')
   @DocsEditable()
   @Experimental() // untriaged
-  String get regionId => _blink.BlinkVTTCue.instance.regionId_Getter_(unwrap_jso(this));
+  String get regionId => _blink.BlinkVTTCue.instance.regionId_Getter_(this);
   
   @DomName('VTTCue.regionId')
   @DocsEditable()
   @Experimental() // untriaged
-  set regionId(String value) => _blink.BlinkVTTCue.instance.regionId_Setter_(unwrap_jso(this), value);
+  set regionId(String value) => _blink.BlinkVTTCue.instance.regionId_Setter_(this, value);
   
   @DomName('VTTCue.size')
   @DocsEditable()
   @Experimental() // untriaged
-  num get size => _blink.BlinkVTTCue.instance.size_Getter_(unwrap_jso(this));
+  num get size => _blink.BlinkVTTCue.instance.size_Getter_(this);
   
   @DomName('VTTCue.size')
   @DocsEditable()
   @Experimental() // untriaged
-  set size(num value) => _blink.BlinkVTTCue.instance.size_Setter_(unwrap_jso(this), value);
+  set size(num value) => _blink.BlinkVTTCue.instance.size_Setter_(this, value);
   
   @DomName('VTTCue.snapToLines')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get snapToLines => _blink.BlinkVTTCue.instance.snapToLines_Getter_(unwrap_jso(this));
+  bool get snapToLines => _blink.BlinkVTTCue.instance.snapToLines_Getter_(this);
   
   @DomName('VTTCue.snapToLines')
   @DocsEditable()
   @Experimental() // untriaged
-  set snapToLines(bool value) => _blink.BlinkVTTCue.instance.snapToLines_Setter_(unwrap_jso(this), value);
+  set snapToLines(bool value) => _blink.BlinkVTTCue.instance.snapToLines_Setter_(this, value);
   
   @DomName('VTTCue.text')
   @DocsEditable()
   @Experimental() // untriaged
-  String get text => _blink.BlinkVTTCue.instance.text_Getter_(unwrap_jso(this));
+  String get text => _blink.BlinkVTTCue.instance.text_Getter_(this);
   
   @DomName('VTTCue.text')
   @DocsEditable()
   @Experimental() // untriaged
-  set text(String value) => _blink.BlinkVTTCue.instance.text_Setter_(unwrap_jso(this), value);
+  set text(String value) => _blink.BlinkVTTCue.instance.text_Setter_(this, value);
   
   @DomName('VTTCue.vertical')
   @DocsEditable()
   @Experimental() // untriaged
-  String get vertical => _blink.BlinkVTTCue.instance.vertical_Getter_(unwrap_jso(this));
+  String get vertical => _blink.BlinkVTTCue.instance.vertical_Getter_(this);
   
   @DomName('VTTCue.vertical')
   @DocsEditable()
   @Experimental() // untriaged
-  set vertical(String value) => _blink.BlinkVTTCue.instance.vertical_Setter_(unwrap_jso(this), value);
+  set vertical(String value) => _blink.BlinkVTTCue.instance.vertical_Setter_(this, value);
   
   @DomName('VTTCue.getCueAsHTML')
   @DocsEditable()
   @Experimental() // untriaged
-  DocumentFragment getCueAsHtml() => wrap_jso(_blink.BlinkVTTCue.instance.getCueAsHTML_Callback_0_(unwrap_jso(this)));
+  DocumentFragment getCueAsHtml() => _blink.BlinkVTTCue.instance.getCueAsHTML_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -41467,108 +38704,100 @@
   @DomName('VTTRegion.VTTRegion')
   @DocsEditable()
   factory VttRegion() {
-    return wrap_jso(_blink.BlinkVTTRegion.instance.constructorCallback_0_());
+    return _blink.BlinkVTTRegion.instance.constructorCallback_0_();
   }
 
+
   @Deprecated("Internal Use Only")
-  static VttRegion internalCreateVttRegion() {
-    return new VttRegion._internalWrap();
-  }
-
-  factory VttRegion._internalWrap() {
-    return new VttRegion.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   VttRegion.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('VTTRegion.height')
   @DocsEditable()
   @Experimental() // untriaged
-  int get height => _blink.BlinkVTTRegion.instance.height_Getter_(unwrap_jso(this));
+  int get height => _blink.BlinkVTTRegion.instance.height_Getter_(this);
   
   @DomName('VTTRegion.height')
   @DocsEditable()
   @Experimental() // untriaged
-  set height(int value) => _blink.BlinkVTTRegion.instance.height_Setter_(unwrap_jso(this), value);
+  set height(int value) => _blink.BlinkVTTRegion.instance.height_Setter_(this, value);
   
   @DomName('VTTRegion.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkVTTRegion.instance.id_Getter_(unwrap_jso(this));
+  String get id => _blink.BlinkVTTRegion.instance.id_Getter_(this);
   
   @DomName('VTTRegion.id')
   @DocsEditable()
   @Experimental() // untriaged
-  set id(String value) => _blink.BlinkVTTRegion.instance.id_Setter_(unwrap_jso(this), value);
+  set id(String value) => _blink.BlinkVTTRegion.instance.id_Setter_(this, value);
   
   @DomName('VTTRegion.regionAnchorX')
   @DocsEditable()
   @Experimental() // untriaged
-  num get regionAnchorX => _blink.BlinkVTTRegion.instance.regionAnchorX_Getter_(unwrap_jso(this));
+  num get regionAnchorX => _blink.BlinkVTTRegion.instance.regionAnchorX_Getter_(this);
   
   @DomName('VTTRegion.regionAnchorX')
   @DocsEditable()
   @Experimental() // untriaged
-  set regionAnchorX(num value) => _blink.BlinkVTTRegion.instance.regionAnchorX_Setter_(unwrap_jso(this), value);
+  set regionAnchorX(num value) => _blink.BlinkVTTRegion.instance.regionAnchorX_Setter_(this, value);
   
   @DomName('VTTRegion.regionAnchorY')
   @DocsEditable()
   @Experimental() // untriaged
-  num get regionAnchorY => _blink.BlinkVTTRegion.instance.regionAnchorY_Getter_(unwrap_jso(this));
+  num get regionAnchorY => _blink.BlinkVTTRegion.instance.regionAnchorY_Getter_(this);
   
   @DomName('VTTRegion.regionAnchorY')
   @DocsEditable()
   @Experimental() // untriaged
-  set regionAnchorY(num value) => _blink.BlinkVTTRegion.instance.regionAnchorY_Setter_(unwrap_jso(this), value);
+  set regionAnchorY(num value) => _blink.BlinkVTTRegion.instance.regionAnchorY_Setter_(this, value);
   
   @DomName('VTTRegion.scroll')
   @DocsEditable()
   @Experimental() // untriaged
-  String get scroll => _blink.BlinkVTTRegion.instance.scroll_Getter_(unwrap_jso(this));
+  String get scroll => _blink.BlinkVTTRegion.instance.scroll_Getter_(this);
   
   @DomName('VTTRegion.scroll')
   @DocsEditable()
   @Experimental() // untriaged
-  set scroll(String value) => _blink.BlinkVTTRegion.instance.scroll_Setter_(unwrap_jso(this), value);
+  set scroll(String value) => _blink.BlinkVTTRegion.instance.scroll_Setter_(this, value);
   
   @DomName('VTTRegion.track')
   @DocsEditable()
   @Experimental() // untriaged
-  TextTrack get track => wrap_jso(_blink.BlinkVTTRegion.instance.track_Getter_(unwrap_jso(this)));
+  TextTrack get track => _blink.BlinkVTTRegion.instance.track_Getter_(this);
   
   @DomName('VTTRegion.viewportAnchorX')
   @DocsEditable()
   @Experimental() // untriaged
-  num get viewportAnchorX => _blink.BlinkVTTRegion.instance.viewportAnchorX_Getter_(unwrap_jso(this));
+  num get viewportAnchorX => _blink.BlinkVTTRegion.instance.viewportAnchorX_Getter_(this);
   
   @DomName('VTTRegion.viewportAnchorX')
   @DocsEditable()
   @Experimental() // untriaged
-  set viewportAnchorX(num value) => _blink.BlinkVTTRegion.instance.viewportAnchorX_Setter_(unwrap_jso(this), value);
+  set viewportAnchorX(num value) => _blink.BlinkVTTRegion.instance.viewportAnchorX_Setter_(this, value);
   
   @DomName('VTTRegion.viewportAnchorY')
   @DocsEditable()
   @Experimental() // untriaged
-  num get viewportAnchorY => _blink.BlinkVTTRegion.instance.viewportAnchorY_Getter_(unwrap_jso(this));
+  num get viewportAnchorY => _blink.BlinkVTTRegion.instance.viewportAnchorY_Getter_(this);
   
   @DomName('VTTRegion.viewportAnchorY')
   @DocsEditable()
   @Experimental() // untriaged
-  set viewportAnchorY(num value) => _blink.BlinkVTTRegion.instance.viewportAnchorY_Setter_(unwrap_jso(this), value);
+  set viewportAnchorY(num value) => _blink.BlinkVTTRegion.instance.viewportAnchorY_Setter_(this, value);
   
   @DomName('VTTRegion.width')
   @DocsEditable()
   @Experimental() // untriaged
-  num get width => _blink.BlinkVTTRegion.instance.width_Getter_(unwrap_jso(this));
+  num get width => _blink.BlinkVTTRegion.instance.width_Getter_(this);
   
   @DomName('VTTRegion.width')
   @DocsEditable()
   @Experimental() // untriaged
-  set width(num value) => _blink.BlinkVTTRegion.instance.width_Setter_(unwrap_jso(this), value);
+  set width(num value) => _blink.BlinkVTTRegion.instance.width_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -41585,35 +38814,27 @@
   // To suppress missing implicit constructor warnings.
   factory VttRegionList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static VttRegionList internalCreateVttRegionList() {
-    return new VttRegionList._internalWrap();
-  }
 
-  factory VttRegionList._internalWrap() {
-    return new VttRegionList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   VttRegionList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('VTTRegionList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkVTTRegionList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkVTTRegionList.instance.length_Getter_(this);
   
   @DomName('VTTRegionList.getRegionById')
   @DocsEditable()
   @Experimental() // untriaged
-  VttRegion getRegionById(String id) => wrap_jso(_blink.BlinkVTTRegionList.instance.getRegionById_Callback_1_(unwrap_jso(this), id));
+  VttRegion getRegionById(String id) => _blink.BlinkVTTRegionList.instance.getRegionById_Callback_1_(this, id);
   
   @DomName('VTTRegionList.item')
   @DocsEditable()
   @Experimental() // untriaged
-  VttRegion item(int index) => wrap_jso(_blink.BlinkVTTRegionList.instance.item_Callback_1_(unwrap_jso(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
@@ -41712,18 +38933,14 @@
   @DocsEditable()
   factory WebSocket(String url, [Object protocols]) {
     if (protocols != null) {
-      return wrap_jso(_blink.BlinkWebSocket.instance.constructorCallback_2_(url, protocols));
+      return _blink.BlinkWebSocket.instance.constructorCallback_2_(url, protocols);
     }
-    return wrap_jso(_blink.BlinkWebSocket.instance.constructorCallback_1_(url));
+    return _blink.BlinkWebSocket.instance.constructorCallback_1_(url);
   }
 
 
   @Deprecated("Internal Use Only")
-  static WebSocket internalCreateWebSocket() {
-    return new WebSocket._internalWrap();
-  }
-
-  external factory WebSocket._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   WebSocket.internal_() : super.internal_();
@@ -41750,60 +38967,60 @@
 
   @DomName('WebSocket.binaryType')
   @DocsEditable()
-  String get binaryType => _blink.BlinkWebSocket.instance.binaryType_Getter_(unwrap_jso(this));
+  String get binaryType => _blink.BlinkWebSocket.instance.binaryType_Getter_(this);
   
   @DomName('WebSocket.binaryType')
   @DocsEditable()
-  set binaryType(String value) => _blink.BlinkWebSocket.instance.binaryType_Setter_(unwrap_jso(this), value);
+  set binaryType(String value) => _blink.BlinkWebSocket.instance.binaryType_Setter_(this, value);
   
   @DomName('WebSocket.bufferedAmount')
   @DocsEditable()
-  int get bufferedAmount => _blink.BlinkWebSocket.instance.bufferedAmount_Getter_(unwrap_jso(this));
+  int get bufferedAmount => _blink.BlinkWebSocket.instance.bufferedAmount_Getter_(this);
   
   @DomName('WebSocket.extensions')
   @DocsEditable()
-  String get extensions => _blink.BlinkWebSocket.instance.extensions_Getter_(unwrap_jso(this));
+  String get extensions => _blink.BlinkWebSocket.instance.extensions_Getter_(this);
   
   @DomName('WebSocket.protocol')
   @DocsEditable()
-  String get protocol => _blink.BlinkWebSocket.instance.protocol_Getter_(unwrap_jso(this));
+  String get protocol => _blink.BlinkWebSocket.instance.protocol_Getter_(this);
   
   @DomName('WebSocket.readyState')
   @DocsEditable()
-  int get readyState => _blink.BlinkWebSocket.instance.readyState_Getter_(unwrap_jso(this));
+  int get readyState => _blink.BlinkWebSocket.instance.readyState_Getter_(this);
   
   @DomName('WebSocket.url')
   @DocsEditable()
-  String get url => _blink.BlinkWebSocket.instance.url_Getter_(unwrap_jso(this));
+  String get url => _blink.BlinkWebSocket.instance.url_Getter_(this);
   
   void close([int code, String reason]) {
     if (reason != null) {
-      _blink.BlinkWebSocket.instance.close_Callback_2_(unwrap_jso(this), code, reason);
+      _blink.BlinkWebSocket.instance.close_Callback_2_(this, code, reason);
       return;
     }
     if (code != null) {
-      _blink.BlinkWebSocket.instance.close_Callback_1_(unwrap_jso(this), code);
+      _blink.BlinkWebSocket.instance.close_Callback_1_(this, code);
       return;
     }
-    _blink.BlinkWebSocket.instance.close_Callback_0_(unwrap_jso(this));
+    _blink.BlinkWebSocket.instance.close_Callback_0_(this);
     return;
   }
 
   void send(data) {
     if ((data is String)) {
-      _blink.BlinkWebSocket.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+      _blink.BlinkWebSocket.instance.send_Callback_1_(this, data);
       return;
     }
     if ((data is Blob)) {
-      _blink.BlinkWebSocket.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+      _blink.BlinkWebSocket.instance.send_Callback_1_(this, data);
       return;
     }
     if ((data is TypedData)) {
-      _blink.BlinkWebSocket.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+      _blink.BlinkWebSocket.instance.send_Callback_1_(this, data);
       return;
     }
     if ((data is ByteBuffer)) {
-      _blink.BlinkWebSocket.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+      _blink.BlinkWebSocket.instance.send_Callback_1_(this, data);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -41811,19 +39028,19 @@
 
   @DomName('WebSocket.sendBlob')
   @DocsEditable()
-  void sendBlob(Blob data) => _blink.BlinkWebSocket.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+  void sendBlob(Blob data) => _blink.BlinkWebSocket.instance.send_Callback_1_(this, data);
   
   @DomName('WebSocket.sendByteBuffer')
   @DocsEditable()
-  void sendByteBuffer(ByteBuffer data) => _blink.BlinkWebSocket.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+  void sendByteBuffer(ByteBuffer data) => _blink.BlinkWebSocket.instance.send_Callback_1_(this, data);
   
   @DomName('WebSocket.sendString')
   @DocsEditable()
-  void sendString(String data) => _blink.BlinkWebSocket.instance.send_Callback_1_(unwrap_jso(this), data);
+  void sendString(String data) => _blink.BlinkWebSocket.instance.send_Callback_1_(this, data);
   
   @DomName('WebSocket.sendTypedData')
   @DocsEditable()
-  void sendTypedData(TypedData data) => _blink.BlinkWebSocket.instance.send_Callback_1_(unwrap_jso(this), unwrap_jso(data));
+  void sendTypedData(TypedData data) => _blink.BlinkWebSocket.instance.send_Callback_1_(this, data);
   
   /// Stream of `close` events handled by this [WebSocket].
   @DomName('WebSocket.onclose')
@@ -41883,7 +39100,7 @@
       'relatedTarget': relatedTarget,
     };
 
-    return wrap_jso(_blink.BlinkWheelEvent.instance.constructorCallback_2_(type, convertDartToNative_Dictionary(options)));
+    return _blink.BlinkWheelEvent.instance.constructorCallback_2_(type, convertDartToNative_Dictionary(options));
   }
 
 
@@ -41892,18 +39109,14 @@
   factory WheelEvent._(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkWheelEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkWheelEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkWheelEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkWheelEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static WheelEvent internalCreateWheelEvent() {
-    return new WheelEvent._internalWrap();
-  }
-
-  external factory WheelEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   WheelEvent.internal_() : super.internal_();
@@ -41923,19 +39136,19 @@
 
   @DomName('WheelEvent.deltaMode')
   @DocsEditable()
-  int get deltaMode => _blink.BlinkWheelEvent.instance.deltaMode_Getter_(unwrap_jso(this));
+  int get deltaMode => _blink.BlinkWheelEvent.instance.deltaMode_Getter_(this);
   
   @DomName('WheelEvent.deltaX')
   @DocsEditable()
-  num get _deltaX => _blink.BlinkWheelEvent.instance.deltaX_Getter_(unwrap_jso(this));
+  num get _deltaX => _blink.BlinkWheelEvent.instance.deltaX_Getter_(this);
   
   @DomName('WheelEvent.deltaY')
   @DocsEditable()
-  num get _deltaY => _blink.BlinkWheelEvent.instance.deltaY_Getter_(unwrap_jso(this));
+  num get _deltaY => _blink.BlinkWheelEvent.instance.deltaY_Getter_(this);
   
   @DomName('WheelEvent.deltaZ')
   @DocsEditable()
-  num get deltaZ => _blink.BlinkWheelEvent.instance.deltaZ_Getter_(unwrap_jso(this));
+  num get deltaZ => _blink.BlinkWheelEvent.instance.deltaZ_Getter_(this);
   
 
   /**
@@ -42239,11 +39452,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static Window internalCreateWindow() {
-    return new Window._internalWrap();
-  }
-
-  external factory Window._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Window.internal_() : super.internal_();
@@ -42297,20 +39506,20 @@
    */
   @DomName('Window.applicationCache')
   @DocsEditable()
-  ApplicationCache get applicationCache => wrap_jso(_blink.BlinkWindow.instance.applicationCache_Getter_(unwrap_jso(this)));
+  ApplicationCache get applicationCache => _blink.BlinkWindow.instance.applicationCache_Getter_(this);
   
   @DomName('Window.caches')
   @DocsEditable()
   @Experimental() // untriaged
-  CacheStorage get caches => wrap_jso(_blink.BlinkWindow.instance.caches_Getter_(unwrap_jso(this)));
+  CacheStorage get caches => _blink.BlinkWindow.instance.caches_Getter_(this);
   
   @DomName('Window.closed')
   @DocsEditable()
-  bool get closed => _blink.BlinkWindow.instance.closed_Getter_(unwrap_jso(this));
+  bool get closed => _blink.BlinkWindow.instance.closed_Getter_(this);
   
   @DomName('Window.console')
   @DocsEditable()
-  Console get console => wrap_jso(_blink.BlinkWindow.instance.console_Getter_(unwrap_jso(this)));
+  Console get console => _blink.BlinkWindow.instance.console_Getter_(this);
   
   /**
    * Entrypoint for the browser's cryptographic functions.
@@ -42323,31 +39532,31 @@
   @DocsEditable()
   // http://www.w3.org/TR/WebCryptoAPI/
   @Experimental()
-  Crypto get crypto => wrap_jso(_blink.BlinkWindow.instance.crypto_Getter_(unwrap_jso(this)));
+  Crypto get crypto => _blink.BlinkWindow.instance.crypto_Getter_(this);
   
   /// *Deprecated*.
   @DomName('Window.defaultStatus')
   @DocsEditable()
   @Experimental() // non-standard
-  String get defaultStatus => _blink.BlinkWindow.instance.defaultStatus_Getter_(unwrap_jso(this));
+  String get defaultStatus => _blink.BlinkWindow.instance.defaultStatus_Getter_(this);
   
   /// *Deprecated*.
   @DomName('Window.defaultStatus')
   @DocsEditable()
   @Experimental() // non-standard
-  set defaultStatus(String value) => _blink.BlinkWindow.instance.defaultStatus_Setter_(unwrap_jso(this), value);
+  set defaultStatus(String value) => _blink.BlinkWindow.instance.defaultStatus_Setter_(this, value);
   
   /// *Deprecated*.
   @DomName('Window.defaultstatus')
   @DocsEditable()
   @Experimental() // non-standard
-  String get defaultstatus => _blink.BlinkWindow.instance.defaultstatus_Getter_(unwrap_jso(this));
+  String get defaultstatus => _blink.BlinkWindow.instance.defaultstatus_Getter_(this);
   
   /// *Deprecated*.
   @DomName('Window.defaultstatus')
   @DocsEditable()
   @Experimental() // non-standard
-  set defaultstatus(String value) => _blink.BlinkWindow.instance.defaultstatus_Setter_(unwrap_jso(this), value);
+  set defaultstatus(String value) => _blink.BlinkWindow.instance.defaultstatus_Setter_(this, value);
   
   /**
    * The ratio between physical pixels and logical CSS pixels.
@@ -42363,11 +39572,11 @@
   @DocsEditable()
   // http://www.quirksmode.org/blog/archives/2012/06/devicepixelrati.html
   @Experimental() // non-standard
-  num get devicePixelRatio => _blink.BlinkWindow.instance.devicePixelRatio_Getter_(unwrap_jso(this));
+  num get devicePixelRatio => _blink.BlinkWindow.instance.devicePixelRatio_Getter_(this);
   
   @DomName('Window.document')
   @DocsEditable()
-  Document get document => wrap_jso(_blink.BlinkWindow.instance.document_Getter_(unwrap_jso(this)));
+  Document get document => _blink.BlinkWindow.instance.document_Getter_(this);
   
   /**
    * The current session history for this window's newest document.
@@ -42379,7 +39588,7 @@
    */
   @DomName('Window.history')
   @DocsEditable()
-  History get history => wrap_jso(_blink.BlinkWindow.instance.history_Getter_(unwrap_jso(this)));
+  History get history => _blink.BlinkWindow.instance.history_Getter_(this);
   
   @DomName('Window.indexedDB')
   @DocsEditable()
@@ -42387,7 +39596,7 @@
   @SupportedBrowser(SupportedBrowser.FIREFOX, '15')
   @SupportedBrowser(SupportedBrowser.IE, '10')
   @Experimental()
-  IdbFactory get indexedDB => wrap_jso(_blink.BlinkWindow.instance.indexedDB_Getter_(unwrap_jso(this)));
+  IdbFactory get indexedDB => _blink.BlinkWindow.instance.indexedDB_Getter_(this);
   
   /**
    * The height of the viewport including scrollbars.
@@ -42399,7 +39608,7 @@
    */
   @DomName('Window.innerHeight')
   @DocsEditable()
-  int get innerHeight => _blink.BlinkWindow.instance.innerHeight_Getter_(unwrap_jso(this));
+  int get innerHeight => _blink.BlinkWindow.instance.innerHeight_Getter_(this);
   
   /**
    * The width of the viewport including scrollbars.
@@ -42411,7 +39620,7 @@
    */
   @DomName('Window.innerWidth')
   @DocsEditable()
-  int get innerWidth => _blink.BlinkWindow.instance.innerWidth_Getter_(unwrap_jso(this));
+  int get innerWidth => _blink.BlinkWindow.instance.innerWidth_Getter_(this);
   
   /**
    * Storage for this window that persists across sessions.
@@ -42427,11 +39636,11 @@
    */
   @DomName('Window.localStorage')
   @DocsEditable()
-  Storage get localStorage => wrap_jso(_blink.BlinkWindow.instance.localStorage_Getter_(unwrap_jso(this)));
+  Storage get localStorage => _blink.BlinkWindow.instance.localStorage_Getter_(this);
   
   @DomName('Window.location')
   @DocsEditable()
-  Location get location => wrap_jso(_blink.BlinkWindow.instance.location_Getter_(unwrap_jso(this)));
+  Location get location => _blink.BlinkWindow.instance.location_Getter_(this);
   
   /**
    * This window's location bar, which displays the URL.
@@ -42444,7 +39653,7 @@
    */
   @DomName('Window.locationbar')
   @DocsEditable()
-  BarProp get locationbar => wrap_jso(_blink.BlinkWindow.instance.locationbar_Getter_(unwrap_jso(this)));
+  BarProp get locationbar => _blink.BlinkWindow.instance.locationbar_Getter_(this);
   
   /**
    * This window's menu bar, which displays menu commands.
@@ -42457,7 +39666,7 @@
    */
   @DomName('Window.menubar')
   @DocsEditable()
-  BarProp get menubar => wrap_jso(_blink.BlinkWindow.instance.menubar_Getter_(unwrap_jso(this)));
+  BarProp get menubar => _blink.BlinkWindow.instance.menubar_Getter_(this);
   
   /**
    * The name of this window.
@@ -42469,7 +39678,7 @@
    */
   @DomName('Window.name')
   @DocsEditable()
-  String get name => _blink.BlinkWindow.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkWindow.instance.name_Getter_(this);
   
   /**
    * The name of this window.
@@ -42481,7 +39690,7 @@
    */
   @DomName('Window.name')
   @DocsEditable()
-  set name(String value) => _blink.BlinkWindow.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkWindow.instance.name_Setter_(this, value);
   
   /**
    * The user agent accessing this window.
@@ -42494,7 +39703,7 @@
    */
   @DomName('Window.navigator')
   @DocsEditable()
-  Navigator get navigator => wrap_jso(_blink.BlinkWindow.instance.navigator_Getter_(unwrap_jso(this)));
+  Navigator get navigator => _blink.BlinkWindow.instance.navigator_Getter_(this);
   
   /**
    * Whether objects are drawn offscreen before being displayed.
@@ -42507,20 +39716,20 @@
   @DomName('Window.offscreenBuffering')
   @DocsEditable()
   @Experimental() // non-standard
-  bool get offscreenBuffering => _blink.BlinkWindow.instance.offscreenBuffering_Getter_(unwrap_jso(this));
+  bool get offscreenBuffering => _blink.BlinkWindow.instance.offscreenBuffering_Getter_(this);
   
   @DomName('Window.opener')
   @DocsEditable()
-  WindowBase get opener => wrap_jso(_blink.BlinkWindow.instance.opener_Getter_(unwrap_jso(this)));
+  WindowBase get opener => _blink.BlinkWindow.instance.opener_Getter_(this);
   
   @DomName('Window.opener')
   @DocsEditable()
-  set opener(Window value) => _blink.BlinkWindow.instance.opener_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set opener(Window value) => _blink.BlinkWindow.instance.opener_Setter_(this, value);
   
   @DomName('Window.orientation')
   @DocsEditable()
   @Experimental() // untriaged
-  int get orientation => _blink.BlinkWindow.instance.orientation_Getter_(unwrap_jso(this));
+  int get orientation => _blink.BlinkWindow.instance.orientation_Getter_(this);
   
   /**
    * The height of this window including all user interface elements.
@@ -42532,7 +39741,7 @@
    */
   @DomName('Window.outerHeight')
   @DocsEditable()
-  int get outerHeight => _blink.BlinkWindow.instance.outerHeight_Getter_(unwrap_jso(this));
+  int get outerHeight => _blink.BlinkWindow.instance.outerHeight_Getter_(this);
   
   /**
    * The width of the window including all user interface elements.
@@ -42544,7 +39753,7 @@
    */
   @DomName('Window.outerWidth')
   @DocsEditable()
-  int get outerWidth => _blink.BlinkWindow.instance.outerWidth_Getter_(unwrap_jso(this));
+  int get outerWidth => _blink.BlinkWindow.instance.outerWidth_Getter_(this);
   
   /**
    * The distance this window has been scrolled horizontally.
@@ -42561,7 +39770,7 @@
    */
   @DomName('Window.pageXOffset')
   @DocsEditable()
-  num get _pageXOffset => _blink.BlinkWindow.instance.pageXOffset_Getter_(unwrap_jso(this));
+  num get _pageXOffset => _blink.BlinkWindow.instance.pageXOffset_Getter_(this);
   
   /**
    * The distance this window has been scrolled vertically.
@@ -42578,11 +39787,11 @@
    */
   @DomName('Window.pageYOffset')
   @DocsEditable()
-  num get _pageYOffset => _blink.BlinkWindow.instance.pageYOffset_Getter_(unwrap_jso(this));
+  num get _pageYOffset => _blink.BlinkWindow.instance.pageYOffset_Getter_(this);
   
   @DomName('Window.parent')
   @DocsEditable()
-  WindowBase get parent => wrap_jso(_blink.BlinkWindow.instance.parent_Getter_(unwrap_jso(this)));
+  WindowBase get parent => _blink.BlinkWindow.instance.parent_Getter_(this);
   
   /**
    * Timing and navigation data for this window.
@@ -42600,7 +39809,7 @@
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.FIREFOX)
   @SupportedBrowser(SupportedBrowser.IE)
-  Performance get performance => wrap_jso(_blink.BlinkWindow.instance.performance_Getter_(unwrap_jso(this)));
+  Performance get performance => _blink.BlinkWindow.instance.performance_Getter_(this);
   
   /**
    * Information about the screen displaying this window.
@@ -42612,7 +39821,7 @@
    */
   @DomName('Window.screen')
   @DocsEditable()
-  Screen get screen => wrap_jso(_blink.BlinkWindow.instance.screen_Getter_(unwrap_jso(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
@@ -42625,7 +39834,7 @@
    */
   @DomName('Window.screenLeft')
   @DocsEditable()
-  int get screenLeft => _blink.BlinkWindow.instance.screenLeft_Getter_(unwrap_jso(this));
+  int get screenLeft => _blink.BlinkWindow.instance.screenLeft_Getter_(this);
   
   /**
    * The distance from the top of the screen to the top of this window.
@@ -42637,7 +39846,7 @@
    */
   @DomName('Window.screenTop')
   @DocsEditable()
-  int get screenTop => _blink.BlinkWindow.instance.screenTop_Getter_(unwrap_jso(this));
+  int get screenTop => _blink.BlinkWindow.instance.screenTop_Getter_(this);
   
   /**
    * The distance from the left side of the screen to the mouse pointer.
@@ -42649,7 +39858,7 @@
    */
   @DomName('Window.screenX')
   @DocsEditable()
-  int get screenX => _blink.BlinkWindow.instance.screenX_Getter_(unwrap_jso(this));
+  int get screenX => _blink.BlinkWindow.instance.screenX_Getter_(this);
   
   /**
    * The distance from the top of the screen to the mouse pointer.
@@ -42661,15 +39870,15 @@
    */
   @DomName('Window.screenY')
   @DocsEditable()
-  int get screenY => _blink.BlinkWindow.instance.screenY_Getter_(unwrap_jso(this));
+  int get screenY => _blink.BlinkWindow.instance.screenY_Getter_(this);
   
   @DomName('Window.scrollX')
   @DocsEditable()
-  num get _scrollX => _blink.BlinkWindow.instance.scrollX_Getter_(unwrap_jso(this));
+  num get _scrollX => _blink.BlinkWindow.instance.scrollX_Getter_(this);
   
   @DomName('Window.scrollY')
   @DocsEditable()
-  num get _scrollY => _blink.BlinkWindow.instance.scrollY_Getter_(unwrap_jso(this));
+  num get _scrollY => _blink.BlinkWindow.instance.scrollY_Getter_(this);
   
   /**
    * This window's scroll bars.
@@ -42682,7 +39891,7 @@
    */
   @DomName('Window.scrollbars')
   @DocsEditable()
-  BarProp get scrollbars => wrap_jso(_blink.BlinkWindow.instance.scrollbars_Getter_(unwrap_jso(this)));
+  BarProp get scrollbars => _blink.BlinkWindow.instance.scrollbars_Getter_(this);
   
   /**
    * The current window.
@@ -42694,7 +39903,7 @@
    */
   @DomName('Window.self')
   @DocsEditable()
-  WindowBase get self => wrap_jso(_blink.BlinkWindow.instance.self_Getter_(unwrap_jso(this)));
+  WindowBase get self => _blink.BlinkWindow.instance.self_Getter_(this);
   
   /**
    * Storage for this window that is cleared when this session ends.
@@ -42711,7 +39920,7 @@
    */
   @DomName('Window.sessionStorage')
   @DocsEditable()
-  Storage get sessionStorage => wrap_jso(_blink.BlinkWindow.instance.sessionStorage_Getter_(unwrap_jso(this)));
+  Storage get sessionStorage => _blink.BlinkWindow.instance.sessionStorage_Getter_(this);
   
   /**
    * Access to speech synthesis in the browser.
@@ -42726,17 +39935,17 @@
   @DocsEditable()
   // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#tts-section
   @Experimental()
-  SpeechSynthesis get speechSynthesis => wrap_jso(_blink.BlinkWindow.instance.speechSynthesis_Getter_(unwrap_jso(this)));
+  SpeechSynthesis get speechSynthesis => _blink.BlinkWindow.instance.speechSynthesis_Getter_(this);
   
   /// *Deprecated*.
   @DomName('Window.status')
   @DocsEditable()
-  String get status => _blink.BlinkWindow.instance.status_Getter_(unwrap_jso(this));
+  String get status => _blink.BlinkWindow.instance.status_Getter_(this);
   
   /// *Deprecated*.
   @DomName('Window.status')
   @DocsEditable()
-  set status(String value) => _blink.BlinkWindow.instance.status_Setter_(unwrap_jso(this), value);
+  set status(String value) => _blink.BlinkWindow.instance.status_Setter_(this, value);
   
   /**
    * This window's status bar.
@@ -42749,7 +39958,7 @@
    */
   @DomName('Window.statusbar')
   @DocsEditable()
-  BarProp get statusbar => wrap_jso(_blink.BlinkWindow.instance.statusbar_Getter_(unwrap_jso(this)));
+  BarProp get statusbar => _blink.BlinkWindow.instance.statusbar_Getter_(this);
   
   /**
    * Access to CSS media queries.
@@ -42764,7 +39973,7 @@
   @DocsEditable()
   // http://developer.apple.com/library/safari/#documentation/SafariDOMAdditions/Reference/StyleMedia/StyleMedia/StyleMedia.html
   @Experimental() // nonstandard
-  StyleMedia get styleMedia => wrap_jso(_blink.BlinkWindow.instance.styleMedia_Getter_(unwrap_jso(this)));
+  StyleMedia get styleMedia => _blink.BlinkWindow.instance.styleMedia_Getter_(this);
   
   /**
    * This window's tool bar.
@@ -42777,11 +39986,11 @@
    */
   @DomName('Window.toolbar')
   @DocsEditable()
-  BarProp get toolbar => wrap_jso(_blink.BlinkWindow.instance.toolbar_Getter_(unwrap_jso(this)));
+  BarProp get toolbar => _blink.BlinkWindow.instance.toolbar_Getter_(this);
   
   @DomName('Window.top')
   @DocsEditable()
-  WindowBase get top => wrap_jso(_blink.BlinkWindow.instance.top_Getter_(unwrap_jso(this)));
+  WindowBase get top => _blink.BlinkWindow.instance.top_Getter_(this);
   
   /**
    * The current window.
@@ -42793,47 +40002,47 @@
    */
   @DomName('Window.window')
   @DocsEditable()
-  WindowBase get window => wrap_jso(_blink.BlinkWindow.instance.window_Getter_(unwrap_jso(this)));
+  WindowBase get window => _blink.BlinkWindow.instance.window_Getter_(this);
   
   WindowBase __getter__(index_OR_name) {
     if ((index_OR_name is int)) {
-      return wrap_jso(_blink.BlinkWindow.instance.$__getter___Callback_1_(unwrap_jso(this), unwrap_jso(index_OR_name)));
+      return _blink.BlinkWindow.instance.$__getter___Callback_1_(this, index_OR_name);
     }
     if ((index_OR_name is String)) {
-      return wrap_jso(_blink.BlinkWindow.instance.$__getter___Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.alert_Callback_1_(unwrap_jso(this), message);
+      _blink.BlinkWindow.instance.alert_Callback_1_(this, message);
       return;
     }
-    _blink.BlinkWindow.instance.alert_Callback_0_(unwrap_jso(this));
+    _blink.BlinkWindow.instance.alert_Callback_0_(this);
     return;
   }
 
   @DomName('Window.cancelAnimationFrame')
   @DocsEditable()
-  void cancelAnimationFrame(int handle) => _blink.BlinkWindow.instance.cancelAnimationFrame_Callback_1_(unwrap_jso(this), handle);
+  void cancelAnimationFrame(int handle) => _blink.BlinkWindow.instance.cancelAnimationFrame_Callback_1_(this, handle);
   
   @DomName('Window.close')
   @DocsEditable()
-  void close() => _blink.BlinkWindow.instance.close_Callback_0_(unwrap_jso(this));
+  void close() => _blink.BlinkWindow.instance.close_Callback_0_(this);
   
   bool confirm([String message]) {
     if (message != null) {
-      return _blink.BlinkWindow.instance.confirm_Callback_1_(unwrap_jso(this), message);
+      return _blink.BlinkWindow.instance.confirm_Callback_1_(this, message);
     }
-    return _blink.BlinkWindow.instance.confirm_Callback_0_(unwrap_jso(this));
+    return _blink.BlinkWindow.instance.confirm_Callback_0_(this);
   }
 
   Future fetch(/*RequestInfo*/ input, [Map init]) {
     if (init != null) {
-      return wrap_jso(_blink.BlinkWindow.instance.fetch_Callback_2_(unwrap_jso(this), input, convertDartToNative_Dictionary(init)));
+      return _blink.BlinkWindow.instance.fetch_Callback_2_(this, input, convertDartToNative_Dictionary(init));
     }
-    return wrap_jso(_blink.BlinkWindow.instance.fetch_Callback_1_(unwrap_jso(this), input));
+    return _blink.BlinkWindow.instance.fetch_Callback_1_(this, input);
   }
 
   /**
@@ -42847,11 +40056,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.instance.find_Callback_7_(unwrap_jso(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 elt, String pseudoElt) => wrap_jso(_blink.BlinkWindow.instance.getComputedStyle_Callback_2_(unwrap_jso(this), unwrap_jso(elt), pseudoElt));
+  CssStyleDeclaration _getComputedStyle(Element elt, String pseudoElt) => _blink.BlinkWindow.instance.getComputedStyle_Callback_2_(this, elt, pseudoElt);
   
   /**
    * Returns all CSS rules that apply to the element's pseudo-element.
@@ -42859,7 +40068,7 @@
   @DomName('Window.getMatchedCSSRules')
   @DocsEditable()
   @Experimental() // non-standard
-  List<CssRule> getMatchedCssRules(Element element, String pseudoElement) => wrap_jso(_blink.BlinkWindow.instance.getMatchedCSSRules_Callback_2_(unwrap_jso(this), unwrap_jso(element), pseudoElement));
+  List<CssRule> getMatchedCssRules(Element element, String pseudoElement) => _blink.BlinkWindow.instance.getMatchedCSSRules_Callback_2_(this, element, pseudoElement);
   
   /**
    * Returns the currently selected text.
@@ -42871,7 +40080,7 @@
    */
   @DomName('Window.getSelection')
   @DocsEditable()
-  Selection getSelection() => wrap_jso(_blink.BlinkWindow.instance.getSelection_Callback_0_(unwrap_jso(this)));
+  Selection getSelection() => _blink.BlinkWindow.instance.getSelection_Callback_0_(this);
   
   /**
    * Returns a list of media queries for the given query string.
@@ -42886,7 +40095,7 @@
    */
   @DomName('Window.matchMedia')
   @DocsEditable()
-  MediaQueryList matchMedia(String query) => wrap_jso(_blink.BlinkWindow.instance.matchMedia_Callback_1_(unwrap_jso(this), query));
+  MediaQueryList matchMedia(String query) => _blink.BlinkWindow.instance.matchMedia_Callback_1_(this, query);
   
   /**
    * Moves this window.
@@ -42901,26 +40110,26 @@
    */
   @DomName('Window.moveBy')
   @DocsEditable()
-  void moveBy(int x, int y) => _blink.BlinkWindow.instance.moveBy_Callback_2_(unwrap_jso(this), x, y);
+  void moveBy(int x, int y) => _blink.BlinkWindow.instance.moveBy_Callback_2_(this, x, y);
   
   @DomName('Window.moveTo')
   @DocsEditable()
-  void _moveTo(int x, int y) => _blink.BlinkWindow.instance.moveTo_Callback_2_(unwrap_jso(this), x, y);
+  void _moveTo(int x, int y) => _blink.BlinkWindow.instance.moveTo_Callback_2_(this, x, y);
   
   @DomName('Window.open')
   @DocsEditable()
-  WindowBase open(String url, String target, [String features]) => wrap_jso(_blink.BlinkWindow.instance.open_Callback_3_(unwrap_jso(this), url, target, features));
+  WindowBase open(String url, String target, [String features]) => _blink.BlinkWindow.instance.open_Callback_3_(this, url, target, features);
   
   SqlDatabase openDatabase(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) {
     if (creationCallback != null) {
-      return wrap_jso(_blink.BlinkWindow.instance.openDatabase_Callback_5_(unwrap_jso(this), name, version, displayName, estimatedSize, unwrap_jso((database) => creationCallback(wrap_jso(database)))));
+      return _blink.BlinkWindow.instance.openDatabase_Callback_5_(this, name, version, displayName, estimatedSize, creationCallback);
     }
-    return wrap_jso(_blink.BlinkWindow.instance.openDatabase_Callback_4_(unwrap_jso(this), name, version, displayName, estimatedSize));
+    return _blink.BlinkWindow.instance.openDatabase_Callback_4_(this, name, version, displayName, estimatedSize);
   }
 
   @DomName('Window.postMessage')
   @DocsEditable()
-  void postMessage(Object message, String targetOrigin, [List<MessagePort> transfer]) => _blink.BlinkWindow.instance.postMessage_Callback_3_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message), targetOrigin, transfer);
+  void postMessage(Object message, String targetOrigin, [List<MessagePort> transfer]) => _blink.BlinkWindow.instance.postMessage_Callback_3_(this, convertDartToNative_SerializedScriptValue(message), targetOrigin, transfer);
   
   /**
    * Opens the print dialog for this window.
@@ -42932,11 +40141,11 @@
    */
   @DomName('Window.print')
   @DocsEditable()
-  void print() => _blink.BlinkWindow.instance.print_Callback_0_(unwrap_jso(this));
+  void print() => _blink.BlinkWindow.instance.print_Callback_0_(this);
   
   @DomName('Window.requestAnimationFrame')
   @DocsEditable()
-  int _requestAnimationFrame(FrameRequestCallback callback) => _blink.BlinkWindow.instance.requestAnimationFrame_Callback_1_(unwrap_jso(this), unwrap_jso((highResTime) => callback(highResTime)));
+  int _requestAnimationFrame(FrameRequestCallback callback) => _blink.BlinkWindow.instance.requestAnimationFrame_Callback_1_(this, callback);
   
   /**
    * Resizes this window by an offset.
@@ -42948,7 +40157,7 @@
    */
   @DomName('Window.resizeBy')
   @DocsEditable()
-  void resizeBy(int x, int y) => _blink.BlinkWindow.instance.resizeBy_Callback_2_(unwrap_jso(this), x, y);
+  void resizeBy(int x, int y) => _blink.BlinkWindow.instance.resizeBy_Callback_2_(this, x, y);
   
   /**
    * Resizes this window to a specific width and height.
@@ -42960,27 +40169,27 @@
    */
   @DomName('Window.resizeTo')
   @DocsEditable()
-  void resizeTo(int x, int y) => _blink.BlinkWindow.instance.resizeTo_Callback_2_(unwrap_jso(this), x, y);
+  void resizeTo(int x, int y) => _blink.BlinkWindow.instance.resizeTo_Callback_2_(this, x, y);
   
   void scroll([options_OR_x, y, Map scrollOptions]) {
     if (options_OR_x == null && y == null && scrollOptions == null) {
-      _blink.BlinkWindow.instance.scroll_Callback_0_(unwrap_jso(this));
+      _blink.BlinkWindow.instance.scroll_Callback_0_(this);
       return;
     }
     if ((options_OR_x is Map) && y == null && scrollOptions == null) {
-      _blink.BlinkWindow.instance.scroll_Callback_1_(unwrap_jso(this), unwrap_jso(options_OR_x));
+      _blink.BlinkWindow.instance.scroll_Callback_1_(this, options_OR_x);
       return;
     }
     if ((y is num) && (options_OR_x is num) && scrollOptions == null) {
-      _blink.BlinkWindow.instance.scroll_Callback_2_(unwrap_jso(this), unwrap_jso(options_OR_x), unwrap_jso(y));
+      _blink.BlinkWindow.instance.scroll_Callback_2_(this, options_OR_x, y);
       return;
     }
     if ((y is int) && (options_OR_x is int) && scrollOptions == null) {
-      _blink.BlinkWindow.instance.scroll_Callback_2_(unwrap_jso(this), unwrap_jso(options_OR_x), unwrap_jso(y));
+      _blink.BlinkWindow.instance.scroll_Callback_2_(this, options_OR_x, y);
       return;
     }
     if ((scrollOptions is Map) && (y is int) && (options_OR_x is int)) {
-      _blink.BlinkWindow.instance.scroll_Callback_3_(unwrap_jso(this), unwrap_jso(options_OR_x), unwrap_jso(y), convertDartToNative_Dictionary(scrollOptions));
+      _blink.BlinkWindow.instance.scroll_Callback_3_(this, options_OR_x, y, convertDartToNative_Dictionary(scrollOptions));
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -42988,23 +40197,23 @@
 
   void scrollBy([options_OR_x, y, Map scrollOptions]) {
     if (options_OR_x == null && y == null && scrollOptions == null) {
-      _blink.BlinkWindow.instance.scrollBy_Callback_0_(unwrap_jso(this));
+      _blink.BlinkWindow.instance.scrollBy_Callback_0_(this);
       return;
     }
     if ((options_OR_x is Map) && y == null && scrollOptions == null) {
-      _blink.BlinkWindow.instance.scrollBy_Callback_1_(unwrap_jso(this), unwrap_jso(options_OR_x));
+      _blink.BlinkWindow.instance.scrollBy_Callback_1_(this, options_OR_x);
       return;
     }
     if ((y is num) && (options_OR_x is num) && scrollOptions == null) {
-      _blink.BlinkWindow.instance.scrollBy_Callback_2_(unwrap_jso(this), unwrap_jso(options_OR_x), unwrap_jso(y));
+      _blink.BlinkWindow.instance.scrollBy_Callback_2_(this, options_OR_x, y);
       return;
     }
     if ((y is int) && (options_OR_x is int) && scrollOptions == null) {
-      _blink.BlinkWindow.instance.scrollBy_Callback_2_(unwrap_jso(this), unwrap_jso(options_OR_x), unwrap_jso(y));
+      _blink.BlinkWindow.instance.scrollBy_Callback_2_(this, options_OR_x, y);
       return;
     }
     if ((scrollOptions is Map) && (y is int) && (options_OR_x is int)) {
-      _blink.BlinkWindow.instance.scrollBy_Callback_3_(unwrap_jso(this), unwrap_jso(options_OR_x), unwrap_jso(y), convertDartToNative_Dictionary(scrollOptions));
+      _blink.BlinkWindow.instance.scrollBy_Callback_3_(this, options_OR_x, y, convertDartToNative_Dictionary(scrollOptions));
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -43012,23 +40221,23 @@
 
   void scrollTo([options_OR_x, y, Map scrollOptions]) {
     if (options_OR_x == null && y == null && scrollOptions == null) {
-      _blink.BlinkWindow.instance.scrollTo_Callback_0_(unwrap_jso(this));
+      _blink.BlinkWindow.instance.scrollTo_Callback_0_(this);
       return;
     }
     if ((options_OR_x is Map) && y == null && scrollOptions == null) {
-      _blink.BlinkWindow.instance.scrollTo_Callback_1_(unwrap_jso(this), unwrap_jso(options_OR_x));
+      _blink.BlinkWindow.instance.scrollTo_Callback_1_(this, options_OR_x);
       return;
     }
     if ((y is num) && (options_OR_x is num) && scrollOptions == null) {
-      _blink.BlinkWindow.instance.scrollTo_Callback_2_(unwrap_jso(this), unwrap_jso(options_OR_x), unwrap_jso(y));
+      _blink.BlinkWindow.instance.scrollTo_Callback_2_(this, options_OR_x, y);
       return;
     }
     if ((y is int) && (options_OR_x is int) && scrollOptions == null) {
-      _blink.BlinkWindow.instance.scrollTo_Callback_2_(unwrap_jso(this), unwrap_jso(options_OR_x), unwrap_jso(y));
+      _blink.BlinkWindow.instance.scrollTo_Callback_2_(this, options_OR_x, y);
       return;
     }
     if ((scrollOptions is Map) && (y is int) && (options_OR_x is int)) {
-      _blink.BlinkWindow.instance.scrollTo_Callback_3_(unwrap_jso(this), unwrap_jso(options_OR_x), unwrap_jso(y), convertDartToNative_Dictionary(scrollOptions));
+      _blink.BlinkWindow.instance.scrollTo_Callback_3_(this, options_OR_x, y, convertDartToNative_Dictionary(scrollOptions));
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -43045,14 +40254,14 @@
    */
   @DomName('Window.stop')
   @DocsEditable()
-  void stop() => _blink.BlinkWindow.instance.stop_Callback_0_(unwrap_jso(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.instance.webkitRequestFileSystem_Callback_4_(unwrap_jso(this), type, size, unwrap_jso((fileSystem) => successCallback(wrap_jso(fileSystem))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkWindow.instance.webkitRequestFileSystem_Callback_4_(this, type, size, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkWindow.instance.webkitRequestFileSystem_Callback_3_(unwrap_jso(this), type, size, unwrap_jso((fileSystem) => successCallback(wrap_jso(fileSystem))));
+    _blink.BlinkWindow.instance.webkitRequestFileSystem_Callback_3_(this, type, size, successCallback);
     return;
   }
 
@@ -43066,10 +40275,10 @@
 
   void _resolveLocalFileSystemUrl(String url, _EntryCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkWindow.instance.webkitResolveLocalFileSystemURL_Callback_3_(unwrap_jso(this), url, unwrap_jso((entry) => successCallback(wrap_jso(entry))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkWindow.instance.webkitResolveLocalFileSystemURL_Callback_3_(this, url, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkWindow.instance.webkitResolveLocalFileSystemURL_Callback_2_(unwrap_jso(this), url, unwrap_jso((entry) => successCallback(wrap_jso(entry))));
+    _blink.BlinkWindow.instance.webkitResolveLocalFileSystemURL_Callback_2_(this, url, successCallback);
     return;
   }
 
@@ -43083,56 +40292,56 @@
 
   @DomName('Window.atob')
   @DocsEditable()
-  String atob(String atob) => _blink.BlinkWindow.instance.atob_Callback_1_(unwrap_jso(this), atob);
+  String atob(String atob) => _blink.BlinkWindow.instance.atob_Callback_1_(this, atob);
   
   @DomName('Window.btoa')
   @DocsEditable()
-  String btoa(String btoa) => _blink.BlinkWindow.instance.btoa_Callback_1_(unwrap_jso(this), btoa);
+  String btoa(String btoa) => _blink.BlinkWindow.instance.btoa_Callback_1_(this, btoa);
   
   int _setInterval_String(String handler, [int timeout, Object arguments]) {
     if (timeout != null) {
-      return _blink.BlinkWindow.instance.setInterval_Callback_3_(unwrap_jso(this), handler, timeout, arguments);
+      return _blink.BlinkWindow.instance.setInterval_Callback_3_(this, handler, timeout, arguments);
     }
-    return _blink.BlinkWindow.instance.setInterval_Callback_1_(unwrap_jso(this), handler);
+    return _blink.BlinkWindow.instance.setInterval_Callback_1_(this, handler);
   }
 
   int _setTimeout_String(String handler, [int timeout, Object arguments]) {
     if (timeout != null) {
-      return _blink.BlinkWindow.instance.setTimeout_Callback_3_(unwrap_jso(this), handler, timeout, arguments);
+      return _blink.BlinkWindow.instance.setTimeout_Callback_3_(this, handler, timeout, arguments);
     }
-    return _blink.BlinkWindow.instance.setTimeout_Callback_1_(unwrap_jso(this), handler);
+    return _blink.BlinkWindow.instance.setTimeout_Callback_1_(this, handler);
   }
 
   void _clearInterval([int handle]) {
     if (handle != null) {
-      _blink.BlinkWindow.instance.clearInterval_Callback_1_(unwrap_jso(this), handle);
+      _blink.BlinkWindow.instance.clearInterval_Callback_1_(this, handle);
       return;
     }
-    _blink.BlinkWindow.instance.clearInterval_Callback_0_(unwrap_jso(this));
+    _blink.BlinkWindow.instance.clearInterval_Callback_0_(this);
     return;
   }
 
   void _clearTimeout([int handle]) {
     if (handle != null) {
-      _blink.BlinkWindow.instance.clearTimeout_Callback_1_(unwrap_jso(this), handle);
+      _blink.BlinkWindow.instance.clearTimeout_Callback_1_(this, handle);
       return;
     }
-    _blink.BlinkWindow.instance.clearTimeout_Callback_0_(unwrap_jso(this));
+    _blink.BlinkWindow.instance.clearTimeout_Callback_0_(this);
     return;
   }
 
   int _setInterval(Object handler, [int timeout]) {
     if (timeout != null) {
-      return _blink.BlinkWindow.instance.setInterval_Callback_2_(unwrap_jso(this), handler, timeout);
+      return _blink.BlinkWindow.instance.setInterval_Callback_2_(this, handler, timeout);
     }
-    return _blink.BlinkWindow.instance.setInterval_Callback_1_(unwrap_jso(this), handler);
+    return _blink.BlinkWindow.instance.setInterval_Callback_1_(this, handler);
   }
 
   int _setTimeout(Object handler, [int timeout]) {
     if (timeout != null) {
-      return _blink.BlinkWindow.instance.setTimeout_Callback_2_(unwrap_jso(this), handler, timeout);
+      return _blink.BlinkWindow.instance.setTimeout_Callback_2_(this, handler, timeout);
     }
-    return _blink.BlinkWindow.instance.setTimeout_Callback_1_(unwrap_jso(this), handler);
+    return _blink.BlinkWindow.instance.setTimeout_Callback_1_(this, handler);
   }
 
   /// Stream of `contentloaded` events handled by this [Window].
@@ -43542,19 +40751,19 @@
 
   @DomName('Window.pageXOffset')
   @DocsEditable()
-  int get pageXOffset => _blink.BlinkWindow.instance.pageXOffset_Getter_(unwrap_jso(this)).round();
+  int get pageXOffset => _blink.BlinkWindow.instance.pageXOffset_Getter_(this).round();
 
   @DomName('Window.pageYOffset')
   @DocsEditable()
-  int get pageYOffset => _blink.BlinkWindow.instance.pageYOffset_Getter_(unwrap_jso(this)).round();
+  int get pageYOffset => _blink.BlinkWindow.instance.pageYOffset_Getter_(this).round();
 
   @DomName('Window.scrollX')
   @DocsEditable()
-  int get scrollX => _blink.BlinkWindow.instance.scrollX_Getter_(unwrap_jso(this)).round();
+  int get scrollX => _blink.BlinkWindow.instance.scrollX_Getter_(this).round();
 
   @DomName('Window.scrollY')
   @DocsEditable()
-  int get scrollY => _blink.BlinkWindow.instance.scrollY_Getter_(unwrap_jso(this)).round();
+  int get scrollY => _blink.BlinkWindow.instance.scrollY_Getter_(this).round();
 }
 
 
@@ -43623,11 +40832,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static WindowClient internalCreateWindowClient() {
-    return new WindowClient._internalWrap();
-  }
-
-  external factory WindowClient._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   WindowClient.internal_() : super.internal_();
@@ -43636,17 +40841,17 @@
   @DomName('WindowClient.focused')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get focused => _blink.BlinkWindowClient.instance.focused_Getter_(unwrap_jso(this));
+  bool get focused => _blink.BlinkWindowClient.instance.focused_Getter_(this);
   
   @DomName('WindowClient.visibilityState')
   @DocsEditable()
   @Experimental() // untriaged
-  String get visibilityState => _blink.BlinkWindowClient.instance.visibilityState_Getter_(unwrap_jso(this));
+  String get visibilityState => _blink.BlinkWindowClient.instance.visibilityState_Getter_(this);
   
   @DomName('WindowClient.focus')
   @DocsEditable()
   @Experimental() // untriaged
-  Future focus() => wrap_jso(_blink.BlinkWindowClient.instance.focus_Callback_0_(unwrap_jso(this)));
+  Future focus() => convertNativePromiseToDartFuture(_blink.BlinkWindowClient.instance.focus_Callback_0_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -43774,16 +40979,12 @@
   @DomName('Worker.Worker')
   @DocsEditable()
   factory Worker(String scriptUrl) {
-    return wrap_jso(_blink.BlinkWorker.instance.constructorCallback_1_(scriptUrl));
+    return _blink.BlinkWorker.instance.constructorCallback_1_(scriptUrl);
   }
 
 
   @Deprecated("Internal Use Only")
-  static Worker internalCreateWorker() {
-    return new Worker._internalWrap();
-  }
-
-  external factory Worker._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Worker.internal_() : super.internal_();
@@ -43794,16 +40995,16 @@
 
   void postMessage(/*SerializedScriptValue*/ message, [List<MessagePort> transfer]) {
     if (transfer != null) {
-      _blink.BlinkWorker.instance.postMessage_Callback_2_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message), transfer);
+      _blink.BlinkWorker.instance.postMessage_Callback_2_(this, convertDartToNative_SerializedScriptValue(message), transfer);
       return;
     }
-    _blink.BlinkWorker.instance.postMessage_Callback_1_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message));
+    _blink.BlinkWorker.instance.postMessage_Callback_1_(this, convertDartToNative_SerializedScriptValue(message));
     return;
   }
 
   @DomName('Worker.terminate')
   @DocsEditable()
-  void terminate() => _blink.BlinkWorker.instance.terminate_Callback_0_(unwrap_jso(this));
+  void terminate() => _blink.BlinkWorker.instance.terminate_Callback_0_(this);
   
   /// Stream of `error` events handled by this [Worker].
   @DomName('Worker.onerror')
@@ -43833,11 +41034,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static WorkerConsole internalCreateWorkerConsole() {
-    return new WorkerConsole._internalWrap();
-  }
-
-  external factory WorkerConsole._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   WorkerConsole.internal_() : super.internal_();
@@ -43871,11 +41068,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static WorkerGlobalScope internalCreateWorkerGlobalScope() {
-    return new WorkerGlobalScope._internalWrap();
-  }
-
-  external factory WorkerGlobalScope._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   WorkerGlobalScope.internal_() : super.internal_();
@@ -43894,70 +41087,70 @@
   @DomName('WorkerGlobalScope.caches')
   @DocsEditable()
   @Experimental() // untriaged
-  CacheStorage get caches => wrap_jso(_blink.BlinkWorkerGlobalScope.instance.caches_Getter_(unwrap_jso(this)));
+  CacheStorage get caches => _blink.BlinkWorkerGlobalScope.instance.caches_Getter_(this);
   
   @DomName('WorkerGlobalScope.console')
   @DocsEditable()
   @Experimental() // untriaged
-  WorkerConsole get console => wrap_jso(_blink.BlinkWorkerGlobalScope.instance.console_Getter_(unwrap_jso(this)));
+  WorkerConsole get console => _blink.BlinkWorkerGlobalScope.instance.console_Getter_(this);
   
   @DomName('WorkerGlobalScope.crypto')
   @DocsEditable()
   @Experimental() // untriaged
-  Crypto get crypto => wrap_jso(_blink.BlinkWorkerGlobalScope.instance.crypto_Getter_(unwrap_jso(this)));
+  Crypto get crypto => _blink.BlinkWorkerGlobalScope.instance.crypto_Getter_(this);
   
   @DomName('WorkerGlobalScope.indexedDB')
   @DocsEditable()
   @Experimental() // untriaged
-  IdbFactory get indexedDB => wrap_jso(_blink.BlinkWorkerGlobalScope.instance.indexedDB_Getter_(unwrap_jso(this)));
+  IdbFactory get indexedDB => _blink.BlinkWorkerGlobalScope.instance.indexedDB_Getter_(this);
   
   @DomName('WorkerGlobalScope.location')
   @DocsEditable()
   @Experimental() // untriaged
-  _WorkerLocation get location => wrap_jso(_blink.BlinkWorkerGlobalScope.instance.location_Getter_(unwrap_jso(this)));
+  _WorkerLocation get location => _blink.BlinkWorkerGlobalScope.instance.location_Getter_(this);
   
   @DomName('WorkerGlobalScope.navigator')
   @DocsEditable()
   @Experimental() // untriaged
-  _WorkerNavigator get navigator => wrap_jso(_blink.BlinkWorkerGlobalScope.instance.navigator_Getter_(unwrap_jso(this)));
+  _WorkerNavigator get navigator => _blink.BlinkWorkerGlobalScope.instance.navigator_Getter_(this);
   
   @DomName('WorkerGlobalScope.performance')
   @DocsEditable()
   @Experimental() // untriaged
-  WorkerPerformance get performance => wrap_jso(_blink.BlinkWorkerGlobalScope.instance.performance_Getter_(unwrap_jso(this)));
+  WorkerPerformance get performance => _blink.BlinkWorkerGlobalScope.instance.performance_Getter_(this);
   
   @DomName('WorkerGlobalScope.self')
   @DocsEditable()
   @Experimental() // untriaged
-  WorkerGlobalScope get self => wrap_jso(_blink.BlinkWorkerGlobalScope.instance.self_Getter_(unwrap_jso(this)));
+  WorkerGlobalScope get self => _blink.BlinkWorkerGlobalScope.instance.self_Getter_(this);
   
   @DomName('WorkerGlobalScope.close')
   @DocsEditable()
   @Experimental() // untriaged
-  void close() => _blink.BlinkWorkerGlobalScope.instance.close_Callback_0_(unwrap_jso(this));
+  void close() => _blink.BlinkWorkerGlobalScope.instance.close_Callback_0_(this);
   
   Future fetch(/*RequestInfo*/ input, [Map init]) {
     if (init != null) {
-      return wrap_jso(_blink.BlinkWorkerGlobalScope.instance.fetch_Callback_2_(unwrap_jso(this), input, convertDartToNative_Dictionary(init)));
+      return _blink.BlinkWorkerGlobalScope.instance.fetch_Callback_2_(this, input, convertDartToNative_Dictionary(init));
     }
-    return wrap_jso(_blink.BlinkWorkerGlobalScope.instance.fetch_Callback_1_(unwrap_jso(this), input));
+    return _blink.BlinkWorkerGlobalScope.instance.fetch_Callback_1_(this, input);
   }
 
   @DomName('WorkerGlobalScope.importScripts')
   @DocsEditable()
   @Experimental() // untriaged
-  void importScripts(String urls) => _blink.BlinkWorkerGlobalScope.instance.importScripts_Callback_1_(unwrap_jso(this), urls);
+  void importScripts(String urls) => _blink.BlinkWorkerGlobalScope.instance.importScripts_Callback_1_(this, urls);
   
   void _webkitRequestFileSystem(int type, int size, [_FileSystemCallback successCallback, _ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystem_Callback_4_(unwrap_jso(this), type, size, unwrap_jso((fileSystem) => successCallback(wrap_jso(fileSystem))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystem_Callback_4_(this, type, size, successCallback, errorCallback);
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystem_Callback_3_(unwrap_jso(this), type, size, unwrap_jso((fileSystem) => successCallback(wrap_jso(fileSystem))));
+      _blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystem_Callback_3_(this, type, size, successCallback);
       return;
     }
-    _blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystem_Callback_2_(unwrap_jso(this), type, size);
+    _blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystem_Callback_2_(this, type, size);
     return;
   }
 
@@ -43975,7 +41168,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   @Experimental() // untriaged
-  _DOMFileSystemSync requestFileSystemSync(int type, int size) => wrap_jso(_blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystemSync_Callback_2_(unwrap_jso(this), type, size));
+  _DOMFileSystemSync requestFileSystemSync(int type, int size) => _blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystemSync_Callback_2_(this, type, size);
   
   @DomName('WorkerGlobalScope.webkitResolveLocalFileSystemSyncURL')
   @DocsEditable()
@@ -43983,14 +41176,14 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   @Experimental() // untriaged
-  _EntrySync resolveLocalFileSystemSyncUrl(String url) => wrap_jso(_blink.BlinkWorkerGlobalScope.instance.webkitResolveLocalFileSystemSyncURL_Callback_1_(unwrap_jso(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.instance.webkitResolveLocalFileSystemURL_Callback_3_(unwrap_jso(this), url, unwrap_jso((entry) => successCallback(wrap_jso(entry))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkWorkerGlobalScope.instance.webkitResolveLocalFileSystemURL_Callback_3_(this, url, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkWorkerGlobalScope.instance.webkitResolveLocalFileSystemURL_Callback_2_(unwrap_jso(this), url, unwrap_jso((entry) => successCallback(wrap_jso(entry))));
+    _blink.BlinkWorkerGlobalScope.instance.webkitResolveLocalFileSystemURL_Callback_2_(this, url, successCallback);
     return;
   }
 
@@ -44005,57 +41198,57 @@
   @DomName('WorkerGlobalScope.atob')
   @DocsEditable()
   @Experimental() // untriaged
-  String atob(String atob) => _blink.BlinkWorkerGlobalScope.instance.atob_Callback_1_(unwrap_jso(this), atob);
+  String atob(String atob) => _blink.BlinkWorkerGlobalScope.instance.atob_Callback_1_(this, atob);
   
   @DomName('WorkerGlobalScope.btoa')
   @DocsEditable()
   @Experimental() // untriaged
-  String btoa(String btoa) => _blink.BlinkWorkerGlobalScope.instance.btoa_Callback_1_(unwrap_jso(this), btoa);
+  String btoa(String btoa) => _blink.BlinkWorkerGlobalScope.instance.btoa_Callback_1_(this, btoa);
   
   int _setInterval_String(String handler, [int timeout, Object arguments]) {
     if (timeout != null) {
-      return _blink.BlinkWorkerGlobalScope.instance.setInterval_Callback_3_(unwrap_jso(this), handler, timeout, arguments);
+      return _blink.BlinkWorkerGlobalScope.instance.setInterval_Callback_3_(this, handler, timeout, arguments);
     }
-    return _blink.BlinkWorkerGlobalScope.instance.setInterval_Callback_1_(unwrap_jso(this), handler);
+    return _blink.BlinkWorkerGlobalScope.instance.setInterval_Callback_1_(this, handler);
   }
 
   int _setTimeout_String(String handler, [int timeout, Object arguments]) {
     if (timeout != null) {
-      return _blink.BlinkWorkerGlobalScope.instance.setTimeout_Callback_3_(unwrap_jso(this), handler, timeout, arguments);
+      return _blink.BlinkWorkerGlobalScope.instance.setTimeout_Callback_3_(this, handler, timeout, arguments);
     }
-    return _blink.BlinkWorkerGlobalScope.instance.setTimeout_Callback_1_(unwrap_jso(this), handler);
+    return _blink.BlinkWorkerGlobalScope.instance.setTimeout_Callback_1_(this, handler);
   }
 
   void _clearInterval([int handle]) {
     if (handle != null) {
-      _blink.BlinkWorkerGlobalScope.instance.clearInterval_Callback_1_(unwrap_jso(this), handle);
+      _blink.BlinkWorkerGlobalScope.instance.clearInterval_Callback_1_(this, handle);
       return;
     }
-    _blink.BlinkWorkerGlobalScope.instance.clearInterval_Callback_0_(unwrap_jso(this));
+    _blink.BlinkWorkerGlobalScope.instance.clearInterval_Callback_0_(this);
     return;
   }
 
   void _clearTimeout([int handle]) {
     if (handle != null) {
-      _blink.BlinkWorkerGlobalScope.instance.clearTimeout_Callback_1_(unwrap_jso(this), handle);
+      _blink.BlinkWorkerGlobalScope.instance.clearTimeout_Callback_1_(this, handle);
       return;
     }
-    _blink.BlinkWorkerGlobalScope.instance.clearTimeout_Callback_0_(unwrap_jso(this));
+    _blink.BlinkWorkerGlobalScope.instance.clearTimeout_Callback_0_(this);
     return;
   }
 
   int _setInterval(Object handler, [int timeout]) {
     if (timeout != null) {
-      return _blink.BlinkWorkerGlobalScope.instance.setInterval_Callback_2_(unwrap_jso(this), handler, timeout);
+      return _blink.BlinkWorkerGlobalScope.instance.setInterval_Callback_2_(this, handler, timeout);
     }
-    return _blink.BlinkWorkerGlobalScope.instance.setInterval_Callback_1_(unwrap_jso(this), handler);
+    return _blink.BlinkWorkerGlobalScope.instance.setInterval_Callback_1_(this, handler);
   }
 
   int _setTimeout(Object handler, [int timeout]) {
     if (timeout != null) {
-      return _blink.BlinkWorkerGlobalScope.instance.setTimeout_Callback_2_(unwrap_jso(this), handler, timeout);
+      return _blink.BlinkWorkerGlobalScope.instance.setTimeout_Callback_2_(this, handler, timeout);
     }
-    return _blink.BlinkWorkerGlobalScope.instance.setTimeout_Callback_1_(unwrap_jso(this), handler);
+    return _blink.BlinkWorkerGlobalScope.instance.setTimeout_Callback_1_(this, handler);
   }
 
   /// Stream of `error` events handled by this [WorkerGlobalScope].
@@ -44081,11 +41274,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static WorkerPerformance internalCreateWorkerPerformance() {
-    return new WorkerPerformance._internalWrap();
-  }
-
-  external factory WorkerPerformance._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   WorkerPerformance.internal_() : super.internal_();
@@ -44094,47 +41283,47 @@
   @DomName('WorkerPerformance.memory')
   @DocsEditable()
   @Experimental() // untriaged
-  MemoryInfo get memory => wrap_jso(_blink.BlinkWorkerPerformance.instance.memory_Getter_(unwrap_jso(this)));
+  MemoryInfo get memory => _blink.BlinkWorkerPerformance.instance.memory_Getter_(this);
   
   @DomName('WorkerPerformance.clearMarks')
   @DocsEditable()
   @Experimental() // untriaged
-  void clearMarks(String markName) => _blink.BlinkWorkerPerformance.instance.clearMarks_Callback_1_(unwrap_jso(this), markName);
+  void clearMarks(String markName) => _blink.BlinkWorkerPerformance.instance.clearMarks_Callback_1_(this, markName);
   
   @DomName('WorkerPerformance.clearMeasures')
   @DocsEditable()
   @Experimental() // untriaged
-  void clearMeasures(String measureName) => _blink.BlinkWorkerPerformance.instance.clearMeasures_Callback_1_(unwrap_jso(this), measureName);
+  void clearMeasures(String measureName) => _blink.BlinkWorkerPerformance.instance.clearMeasures_Callback_1_(this, measureName);
   
   @DomName('WorkerPerformance.getEntries')
   @DocsEditable()
   @Experimental() // untriaged
-  List<PerformanceEntry> getEntries() => wrap_jso(_blink.BlinkWorkerPerformance.instance.getEntries_Callback_0_(unwrap_jso(this)));
+  List<PerformanceEntry> getEntries() => (_blink.BlinkWorkerPerformance.instance.getEntries_Callback_0_(this));
   
   @DomName('WorkerPerformance.getEntriesByName')
   @DocsEditable()
   @Experimental() // untriaged
-  List<PerformanceEntry> getEntriesByName(String name, String entryType) => wrap_jso(_blink.BlinkWorkerPerformance.instance.getEntriesByName_Callback_2_(unwrap_jso(this), name, entryType));
+  List<PerformanceEntry> getEntriesByName(String name, String entryType) => (_blink.BlinkWorkerPerformance.instance.getEntriesByName_Callback_2_(this, name, entryType));
   
   @DomName('WorkerPerformance.getEntriesByType')
   @DocsEditable()
   @Experimental() // untriaged
-  List<PerformanceEntry> getEntriesByType(String entryType) => wrap_jso(_blink.BlinkWorkerPerformance.instance.getEntriesByType_Callback_1_(unwrap_jso(this), entryType));
+  List<PerformanceEntry> getEntriesByType(String entryType) => (_blink.BlinkWorkerPerformance.instance.getEntriesByType_Callback_1_(this, entryType));
   
   @DomName('WorkerPerformance.mark')
   @DocsEditable()
   @Experimental() // untriaged
-  void mark(String markName) => _blink.BlinkWorkerPerformance.instance.mark_Callback_1_(unwrap_jso(this), markName);
+  void mark(String markName) => _blink.BlinkWorkerPerformance.instance.mark_Callback_1_(this, markName);
   
   @DomName('WorkerPerformance.measure')
   @DocsEditable()
   @Experimental() // untriaged
-  void measure(String measureName, String startMark, String endMark) => _blink.BlinkWorkerPerformance.instance.measure_Callback_3_(unwrap_jso(this), measureName, startMark, endMark);
+  void measure(String measureName, String startMark, String endMark) => _blink.BlinkWorkerPerformance.instance.measure_Callback_3_(this, measureName, startMark, endMark);
   
   @DomName('WorkerPerformance.now')
   @DocsEditable()
   @Experimental() // untriaged
-  num now() => _blink.BlinkWorkerPerformance.instance.now_Callback_0_(unwrap_jso(this));
+  num now() => _blink.BlinkWorkerPerformance.instance.now_Callback_0_(this);
   
   @DomName('WorkerPerformance.webkitClearResourceTimings')
   @DocsEditable()
@@ -44142,7 +41331,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   @Experimental() // untriaged
-  void clearResourceTimings() => _blink.BlinkWorkerPerformance.instance.webkitClearResourceTimings_Callback_0_(unwrap_jso(this));
+  void clearResourceTimings() => _blink.BlinkWorkerPerformance.instance.webkitClearResourceTimings_Callback_0_(this);
   
   @DomName('WorkerPerformance.webkitSetResourceTimingBufferSize')
   @DocsEditable()
@@ -44150,7 +41339,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   @Experimental() // untriaged
-  void setResourceTimingBufferSize(int maxSize) => _blink.BlinkWorkerPerformance.instance.webkitSetResourceTimingBufferSize_Callback_1_(unwrap_jso(this), maxSize);
+  void setResourceTimingBufferSize(int maxSize) => _blink.BlinkWorkerPerformance.instance.webkitSetResourceTimingBufferSize_Callback_1_(this, maxSize);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -44171,37 +41360,29 @@
   @DomName('XPathEvaluator.XPathEvaluator')
   @DocsEditable()
   factory XPathEvaluator() {
-    return wrap_jso(_blink.BlinkXPathEvaluator.instance.constructorCallback_0_());
+    return _blink.BlinkXPathEvaluator.instance.constructorCallback_0_();
   }
 
+
   @Deprecated("Internal Use Only")
-  static XPathEvaluator internalCreateXPathEvaluator() {
-    return new XPathEvaluator._internalWrap();
-  }
-
-  factory XPathEvaluator._internalWrap() {
-    return new XPathEvaluator.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   XPathEvaluator.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('XPathEvaluator.createExpression')
   @DocsEditable()
-  XPathExpression createExpression(String expression, XPathNSResolver resolver) => wrap_jso(_blink.BlinkXPathEvaluator.instance.createExpression_Callback_2_(unwrap_jso(this), expression, unwrap_jso(resolver)));
+  XPathExpression createExpression(String expression, XPathNSResolver resolver) => _blink.BlinkXPathEvaluator.instance.createExpression_Callback_2_(this, expression, resolver);
   
   @DomName('XPathEvaluator.createNSResolver')
   @DocsEditable()
-  XPathNSResolver createNSResolver(Node nodeResolver) => wrap_jso(_blink.BlinkXPathEvaluator.instance.createNSResolver_Callback_1_(unwrap_jso(this), unwrap_jso(nodeResolver)));
+  XPathNSResolver createNSResolver(Node nodeResolver) => _blink.BlinkXPathEvaluator.instance.createNSResolver_Callback_1_(this, nodeResolver);
   
   XPathResult evaluate(String expression, Node contextNode, XPathNSResolver resolver, [int type, Object inResult]) {
     if (type != null) {
-      return wrap_jso(_blink.BlinkXPathEvaluator.instance.evaluate_Callback_5_(unwrap_jso(this), expression, unwrap_jso(contextNode), unwrap_jso(resolver), type, inResult));
+      return _blink.BlinkXPathEvaluator.instance.evaluate_Callback_5_(this, expression, contextNode, resolver, type, inResult);
     }
-    return wrap_jso(_blink.BlinkXPathEvaluator.instance.evaluate_Callback_3_(unwrap_jso(this), expression, unwrap_jso(contextNode), unwrap_jso(resolver)));
+    return _blink.BlinkXPathEvaluator.instance.evaluate_Callback_3_(this, expression, contextNode, resolver);
   }
 
 }
@@ -44220,26 +41401,18 @@
   // To suppress missing implicit constructor warnings.
   factory XPathExpression._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static XPathExpression internalCreateXPathExpression() {
-    return new XPathExpression._internalWrap();
-  }
 
-  factory XPathExpression._internalWrap() {
-    return new XPathExpression.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   XPathExpression.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   XPathResult evaluate(Node contextNode, [int type, Object inResult]) {
     if (type != null) {
-      return wrap_jso(_blink.BlinkXPathExpression.instance.evaluate_Callback_3_(unwrap_jso(this), unwrap_jso(contextNode), type, inResult));
+      return _blink.BlinkXPathExpression.instance.evaluate_Callback_3_(this, contextNode, type, inResult);
     }
-    return wrap_jso(_blink.BlinkXPathExpression.instance.evaluate_Callback_1_(unwrap_jso(this), unwrap_jso(contextNode)));
+    return _blink.BlinkXPathExpression.instance.evaluate_Callback_1_(this, contextNode);
   }
 
 }
@@ -44258,24 +41431,16 @@
   // To suppress missing implicit constructor warnings.
   factory XPathNSResolver._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static XPathNSResolver internalCreateXPathNSResolver() {
-    return new XPathNSResolver._internalWrap();
-  }
 
-  factory XPathNSResolver._internalWrap() {
-    return new XPathNSResolver.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   XPathNSResolver.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('XPathNSResolver.lookupNamespaceURI')
   @DocsEditable()
-  String lookupNamespaceUri(String prefix) => _blink.BlinkXPathNSResolver.instance.lookupNamespaceURI_Callback_1_(unwrap_jso(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
@@ -44293,21 +41458,13 @@
   // To suppress missing implicit constructor warnings.
   factory XPathResult._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static XPathResult internalCreateXPathResult() {
-    return new XPathResult._internalWrap();
-  }
 
-  factory XPathResult._internalWrap() {
-    return new XPathResult.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   XPathResult.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('XPathResult.ANY_TYPE')
   @DocsEditable()
   static const int ANY_TYPE = 0;
@@ -44350,39 +41507,39 @@
 
   @DomName('XPathResult.booleanValue')
   @DocsEditable()
-  bool get booleanValue => _blink.BlinkXPathResult.instance.booleanValue_Getter_(unwrap_jso(this));
+  bool get booleanValue => _blink.BlinkXPathResult.instance.booleanValue_Getter_(this);
   
   @DomName('XPathResult.invalidIteratorState')
   @DocsEditable()
-  bool get invalidIteratorState => _blink.BlinkXPathResult.instance.invalidIteratorState_Getter_(unwrap_jso(this));
+  bool get invalidIteratorState => _blink.BlinkXPathResult.instance.invalidIteratorState_Getter_(this);
   
   @DomName('XPathResult.numberValue')
   @DocsEditable()
-  num get numberValue => _blink.BlinkXPathResult.instance.numberValue_Getter_(unwrap_jso(this));
+  num get numberValue => _blink.BlinkXPathResult.instance.numberValue_Getter_(this);
   
   @DomName('XPathResult.resultType')
   @DocsEditable()
-  int get resultType => _blink.BlinkXPathResult.instance.resultType_Getter_(unwrap_jso(this));
+  int get resultType => _blink.BlinkXPathResult.instance.resultType_Getter_(this);
   
   @DomName('XPathResult.singleNodeValue')
   @DocsEditable()
-  Node get singleNodeValue => wrap_jso(_blink.BlinkXPathResult.instance.singleNodeValue_Getter_(unwrap_jso(this)));
+  Node get singleNodeValue => _blink.BlinkXPathResult.instance.singleNodeValue_Getter_(this);
   
   @DomName('XPathResult.snapshotLength')
   @DocsEditable()
-  int get snapshotLength => _blink.BlinkXPathResult.instance.snapshotLength_Getter_(unwrap_jso(this));
+  int get snapshotLength => _blink.BlinkXPathResult.instance.snapshotLength_Getter_(this);
   
   @DomName('XPathResult.stringValue')
   @DocsEditable()
-  String get stringValue => _blink.BlinkXPathResult.instance.stringValue_Getter_(unwrap_jso(this));
+  String get stringValue => _blink.BlinkXPathResult.instance.stringValue_Getter_(this);
   
   @DomName('XPathResult.iterateNext')
   @DocsEditable()
-  Node iterateNext() => wrap_jso(_blink.BlinkXPathResult.instance.iterateNext_Callback_0_(unwrap_jso(this)));
+  Node iterateNext() => _blink.BlinkXPathResult.instance.iterateNext_Callback_0_(this);
   
   @DomName('XPathResult.snapshotItem')
   @DocsEditable()
-  Node snapshotItem(int index) => wrap_jso(_blink.BlinkXPathResult.instance.snapshotItem_Callback_1_(unwrap_jso(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
@@ -44401,11 +41558,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static XmlDocument internalCreateXmlDocument() {
-    return new XmlDocument._internalWrap();
-  }
-
-  external factory XmlDocument._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   XmlDocument.internal_() : super.internal_();
@@ -44430,27 +41583,19 @@
   @DomName('XMLSerializer.XMLSerializer')
   @DocsEditable()
   factory XmlSerializer() {
-    return wrap_jso(_blink.BlinkXMLSerializer.instance.constructorCallback_0_());
+    return _blink.BlinkXMLSerializer.instance.constructorCallback_0_();
   }
 
+
   @Deprecated("Internal Use Only")
-  static XmlSerializer internalCreateXmlSerializer() {
-    return new XmlSerializer._internalWrap();
-  }
-
-  factory XmlSerializer._internalWrap() {
-    return new XmlSerializer.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   XmlSerializer.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('XMLSerializer.serializeToString')
   @DocsEditable()
-  String serializeToString(Node root) => _blink.BlinkXMLSerializer.instance.serializeToString_Callback_1_(unwrap_jso(this), unwrap_jso(root));
+  String serializeToString(Node root) => _blink.BlinkXMLSerializer.instance.serializeToString_Callback_1_(this, root);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -44473,58 +41618,50 @@
   @DomName('XSLTProcessor.XSLTProcessor')
   @DocsEditable()
   factory XsltProcessor() {
-    return wrap_jso(_blink.BlinkXSLTProcessor.instance.constructorCallback_0_());
+    return _blink.BlinkXSLTProcessor.instance.constructorCallback_0_();
   }
 
+
   @Deprecated("Internal Use Only")
-  static XsltProcessor internalCreateXsltProcessor() {
-    return new XsltProcessor._internalWrap();
-  }
-
-  factory XsltProcessor._internalWrap() {
-    return new XsltProcessor.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   XsltProcessor.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
   @DomName('XSLTProcessor.clearParameters')
   @DocsEditable()
-  void clearParameters() => _blink.BlinkXSLTProcessor.instance.clearParameters_Callback_0_(unwrap_jso(this));
+  void clearParameters() => _blink.BlinkXSLTProcessor.instance.clearParameters_Callback_0_(this);
   
   @DomName('XSLTProcessor.getParameter')
   @DocsEditable()
-  String getParameter(String namespaceURI, String localName) => _blink.BlinkXSLTProcessor.instance.getParameter_Callback_2_(unwrap_jso(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 style) => _blink.BlinkXSLTProcessor.instance.importStylesheet_Callback_1_(unwrap_jso(this), unwrap_jso(style));
+  void importStylesheet(Node style) => _blink.BlinkXSLTProcessor.instance.importStylesheet_Callback_1_(this, style);
   
   @DomName('XSLTProcessor.removeParameter')
   @DocsEditable()
-  void removeParameter(String namespaceURI, String localName) => _blink.BlinkXSLTProcessor.instance.removeParameter_Callback_2_(unwrap_jso(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.instance.reset_Callback_0_(unwrap_jso(this));
+  void reset() => _blink.BlinkXSLTProcessor.instance.reset_Callback_0_(this);
   
   @DomName('XSLTProcessor.setParameter')
   @DocsEditable()
-  void setParameter(String namespaceURI, String localName, String value) => _blink.BlinkXSLTProcessor.instance.setParameter_Callback_3_(unwrap_jso(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) => wrap_jso(_blink.BlinkXSLTProcessor.instance.transformToDocument_Callback_1_(unwrap_jso(this), unwrap_jso(source)));
+  Document transformToDocument(Node source) => _blink.BlinkXSLTProcessor.instance.transformToDocument_Callback_1_(this, source);
   
   @DomName('XSLTProcessor.transformToFragment')
   @DocsEditable()
-  DocumentFragment transformToFragment(Node source, Document output) => wrap_jso(_blink.BlinkXSLTProcessor.instance.transformToFragment_Callback_2_(unwrap_jso(this), unwrap_jso(source), unwrap_jso(output)));
+  DocumentFragment transformToFragment(Node source, Document output) => _blink.BlinkXSLTProcessor.instance.transformToFragment_Callback_2_(this, source, output);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -44542,11 +41679,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _Attr internalCreate_Attr() {
-    return new _Attr._internalWrap();
-  }
-
-  external factory _Attr._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _Attr.internal_() : super.internal_();
@@ -44555,39 +41688,39 @@
   @DomName('Attr.localName')
   @DocsEditable()
   @Experimental() // untriaged
-  String get _localName => _blink.BlinkAttr.instance.localName_Getter_(unwrap_jso(this));
+  String get _localName => _blink.BlinkAttr.instance.localName_Getter_(this);
   
   @DomName('Attr.name')
   @DocsEditable()
-  String get name => _blink.BlinkAttr.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkAttr.instance.name_Getter_(this);
   
   @DomName('Attr.namespaceURI')
   @DocsEditable()
   @Experimental() // untriaged
-  String get _namespaceUri => _blink.BlinkAttr.instance.namespaceURI_Getter_(unwrap_jso(this));
+  String get _namespaceUri => _blink.BlinkAttr.instance.namespaceURI_Getter_(this);
   
   @DomName('Attr.nodeValue')
   @DocsEditable()
   @Experimental() // untriaged
-  String get nodeValue => _blink.BlinkAttr.instance.nodeValue_Getter_(unwrap_jso(this));
+  String get nodeValue => _blink.BlinkAttr.instance.nodeValue_Getter_(this);
   
   @DomName('Attr.textContent')
   @DocsEditable()
   @Experimental() // untriaged
-  String get text => _blink.BlinkAttr.instance.textContent_Getter_(unwrap_jso(this));
+  String get text => _blink.BlinkAttr.instance.textContent_Getter_(this);
   
   @DomName('Attr.textContent')
   @DocsEditable()
   @Experimental() // untriaged
-  set text(String value) => _blink.BlinkAttr.instance.textContent_Setter_(unwrap_jso(this), value);
+  set text(String value) => _blink.BlinkAttr.instance.textContent_Setter_(this, value);
   
   @DomName('Attr.value')
   @DocsEditable()
-  String get value => _blink.BlinkAttr.instance.value_Getter_(unwrap_jso(this));
+  String get value => _blink.BlinkAttr.instance.value_Getter_(this);
   
   @DomName('Attr.value')
   @DocsEditable()
-  set value(String value) => _blink.BlinkAttr.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkAttr.instance.value_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -44604,21 +41737,13 @@
   // To suppress missing implicit constructor warnings.
   factory _Cache._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _Cache internalCreate_Cache() {
-    return new _Cache._internalWrap();
-  }
 
-  factory _Cache._internalWrap() {
-    return new _Cache.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _Cache.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -44736,42 +41861,36 @@
     // To suppress missing implicit constructor warnings.
   factory _ClientRect._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _ClientRect internalCreate_ClientRect() {
-    return new _ClientRect._internalWrap();
-  }
 
-  factory _ClientRect._internalWrap() {
-    return new _ClientRect.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _ClientRect.internal_() { }
 
-
   @DomName('ClientRect.bottom')
   @DocsEditable()
-  num get bottom => _blink.BlinkClientRect.instance.bottom_Getter_(unwrap_jso(this));
+  num get bottom => _blink.BlinkClientRect.instance.bottom_Getter_(this);
   
   @DomName('ClientRect.height')
   @DocsEditable()
-  num get height => _blink.BlinkClientRect.instance.height_Getter_(unwrap_jso(this));
+  num get height => _blink.BlinkClientRect.instance.height_Getter_(this);
   
   @DomName('ClientRect.left')
   @DocsEditable()
-  num get left => _blink.BlinkClientRect.instance.left_Getter_(unwrap_jso(this));
+  num get left => _blink.BlinkClientRect.instance.left_Getter_(this);
   
   @DomName('ClientRect.right')
   @DocsEditable()
-  num get right => _blink.BlinkClientRect.instance.right_Getter_(unwrap_jso(this));
+  num get right => _blink.BlinkClientRect.instance.right_Getter_(this);
   
   @DomName('ClientRect.top')
   @DocsEditable()
-  num get top => _blink.BlinkClientRect.instance.top_Getter_(unwrap_jso(this));
+  num get top => _blink.BlinkClientRect.instance.top_Getter_(this);
   
   @DomName('ClientRect.width')
   @DocsEditable()
-  num get width => _blink.BlinkClientRect.instance.width_Getter_(unwrap_jso(this));
+  num get width => _blink.BlinkClientRect.instance.width_Getter_(this);
   }
 
 /**
@@ -44823,32 +41942,24 @@
   // To suppress missing implicit constructor warnings.
   factory _ClientRectList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _ClientRectList internalCreate_ClientRectList() {
-    return new _ClientRectList._internalWrap();
-  }
 
-  factory _ClientRectList._internalWrap() {
-    return new _ClientRectList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _ClientRectList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('ClientRectList.length')
   @DocsEditable()
-  int get length => _blink.BlinkClientRectList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkClientRectList.instance.length_Getter_(this);
   
   Rectangle operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkClientRectList.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  Rectangle _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkClientRectList.instance.item_Callback_1_(unwrap_jso(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.");
@@ -44891,11 +42002,11 @@
   @DomName('ClientRectList.__getter__')
   @DocsEditable()
   @Experimental() // untriaged
-  Rectangle __getter__(int index) => make_dart_rectangle(_blink.BlinkClientRectList.instance.$__getter___Callback_1_(unwrap_jso(this), index));
+  Rectangle __getter__(int index) => make_dart_rectangle(_blink.BlinkClientRectList.instance.$__getter___Callback_1_(this, index));
   
   @DomName('ClientRectList.item')
   @DocsEditable()
-  Rectangle item(int index) => make_dart_rectangle(_blink.BlinkClientRectList.instance.item_Callback_1_(unwrap_jso(this), index));
+  Rectangle item(int index) => make_dart_rectangle(_blink.BlinkClientRectList.instance.item_Callback_1_(this, index));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -44911,32 +42022,24 @@
   // To suppress missing implicit constructor warnings.
   factory _CssRuleList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _CssRuleList internalCreate_CssRuleList() {
-    return new _CssRuleList._internalWrap();
-  }
 
-  factory _CssRuleList._internalWrap() {
-    return new _CssRuleList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _CssRuleList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('CSSRuleList.length')
   @DocsEditable()
-  int get length => _blink.BlinkCSSRuleList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkCSSRuleList.instance.length_Getter_(this);
   
   CssRule operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkCSSRuleList.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  CssRule _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkCSSRuleList.instance.item_Callback_1_(unwrap_jso(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.");
@@ -44978,7 +42081,7 @@
 
   @DomName('CSSRuleList.item')
   @DocsEditable()
-  CssRule item(int index) => wrap_jso(_blink.BlinkCSSRuleList.instance.item_Callback_1_(unwrap_jso(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
@@ -44997,21 +42100,13 @@
   // To suppress missing implicit constructor warnings.
   factory _DOMFileSystemSync._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _DOMFileSystemSync internalCreate_DOMFileSystemSync() {
-    return new _DOMFileSystemSync._internalWrap();
-  }
 
-  factory _DOMFileSystemSync._internalWrap() {
-    return new _DOMFileSystemSync.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _DOMFileSystemSync.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -45030,11 +42125,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _DirectoryEntrySync internalCreate_DirectoryEntrySync() {
-    return new _DirectoryEntrySync._internalWrap();
-  }
-
-  external factory _DirectoryEntrySync._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _DirectoryEntrySync.internal_() : super.internal_();
@@ -45056,21 +42147,13 @@
   // To suppress missing implicit constructor warnings.
   factory _DirectoryReaderSync._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _DirectoryReaderSync internalCreate_DirectoryReaderSync() {
-    return new _DirectoryReaderSync._internalWrap();
-  }
 
-  factory _DirectoryReaderSync._internalWrap() {
-    return new _DirectoryReaderSync.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _DirectoryReaderSync.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -45087,19 +42170,15 @@
 
 
   @Deprecated("Internal Use Only")
-  static _DocumentType internalCreate_DocumentType() {
-    return new _DocumentType._internalWrap();
-  }
-
-  external factory _DocumentType._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _DocumentType.internal_() : super.internal_();
 
 
   // Override this methods for Dartium _DocumentType can't be abstract.
-  Element get nextElementSibling => wrap_jso(_blink.BlinkDocumentType.instance.nextElementSibling_Getter_(unwrap_jso(this)));
-  Element get previousElementSibling => wrap_jso(_blink.BlinkDocumentType.instance.previousElementSibling_Getter_(unwrap_jso(this)));
+  Element get nextElementSibling => _blink.BlinkDocumentType.instance.nextElementSibling_Getter_(this);
+  Element get previousElementSibling => _blink.BlinkDocumentType.instance.previousElementSibling_Getter_(this);
 }
 
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -45120,27 +42199,23 @@
   @DocsEditable()
   factory _DomRect([num x, num y, num width, num height]) {
     if (height != null) {
-      return wrap_jso(_blink.BlinkDOMRect.instance.constructorCallback_4_(x, y, width, height));
+      return _blink.BlinkDOMRect.instance.constructorCallback_4_(x, y, width, height);
     }
     if (width != null) {
-      return wrap_jso(_blink.BlinkDOMRect.instance.constructorCallback_3_(x, y, width));
+      return _blink.BlinkDOMRect.instance.constructorCallback_3_(x, y, width);
     }
     if (y != null) {
-      return wrap_jso(_blink.BlinkDOMRect.instance.constructorCallback_2_(x, y));
+      return _blink.BlinkDOMRect.instance.constructorCallback_2_(x, y);
     }
     if (x != null) {
-      return wrap_jso(_blink.BlinkDOMRect.instance.constructorCallback_1_(x));
+      return _blink.BlinkDOMRect.instance.constructorCallback_1_(x);
     }
-    return wrap_jso(_blink.BlinkDOMRect.instance.constructorCallback_0_());
+    return _blink.BlinkDOMRect.instance.constructorCallback_0_();
   }
 
 
   @Deprecated("Internal Use Only")
-  static _DomRect internalCreate_DomRect() {
-    return new _DomRect._internalWrap();
-  }
-
-  external factory _DomRect._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _DomRect.internal_() : super.internal_();
@@ -45149,42 +42224,42 @@
   @DomName('DOMRect.height')
   @DocsEditable()
   @Experimental() // untriaged
-  num get height => _blink.BlinkDOMRect.instance.height_Getter_(unwrap_jso(this));
+  num get height => _blink.BlinkDOMRect.instance.height_Getter_(this);
   
   @DomName('DOMRect.height')
   @DocsEditable()
   @Experimental() // untriaged
-  set height(num value) => _blink.BlinkDOMRect.instance.height_Setter_(unwrap_jso(this), value);
+  set height(num value) => _blink.BlinkDOMRect.instance.height_Setter_(this, value);
   
   @DomName('DOMRect.width')
   @DocsEditable()
   @Experimental() // untriaged
-  num get width => _blink.BlinkDOMRect.instance.width_Getter_(unwrap_jso(this));
+  num get width => _blink.BlinkDOMRect.instance.width_Getter_(this);
   
   @DomName('DOMRect.width')
   @DocsEditable()
   @Experimental() // untriaged
-  set width(num value) => _blink.BlinkDOMRect.instance.width_Setter_(unwrap_jso(this), value);
+  set width(num value) => _blink.BlinkDOMRect.instance.width_Setter_(this, value);
   
   @DomName('DOMRect.x')
   @DocsEditable()
   @Experimental() // untriaged
-  num get x => _blink.BlinkDOMRect.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkDOMRect.instance.x_Getter_(this);
   
   @DomName('DOMRect.x')
   @DocsEditable()
   @Experimental() // untriaged
-  set x(num value) => _blink.BlinkDOMRect.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkDOMRect.instance.x_Setter_(this, value);
   
   @DomName('DOMRect.y')
   @DocsEditable()
   @Experimental() // untriaged
-  num get y => _blink.BlinkDOMRect.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkDOMRect.instance.y_Getter_(this);
   
   @DomName('DOMRect.y')
   @DocsEditable()
   @Experimental() // untriaged
-  set y(num value) => _blink.BlinkDOMRect.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkDOMRect.instance.y_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -45202,21 +42277,13 @@
   // To suppress missing implicit constructor warnings.
   factory _EntrySync._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _EntrySync internalCreate_EntrySync() {
-    return new _EntrySync._internalWrap();
-  }
 
-  factory _EntrySync._internalWrap() {
-    return new _EntrySync.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _EntrySync.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -45235,11 +42302,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _FileEntrySync internalCreate_FileEntrySync() {
-    return new _FileEntrySync._internalWrap();
-  }
-
-  external factory _FileEntrySync._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _FileEntrySync.internal_() : super.internal_();
@@ -45264,24 +42327,16 @@
   @DomName('FileReaderSync.FileReaderSync')
   @DocsEditable()
   factory _FileReaderSync() {
-    return wrap_jso(_blink.BlinkFileReaderSync.instance.constructorCallback_0_());
+    return _blink.BlinkFileReaderSync.instance.constructorCallback_0_();
   }
 
+
   @Deprecated("Internal Use Only")
-  static _FileReaderSync internalCreate_FileReaderSync() {
-    return new _FileReaderSync._internalWrap();
-  }
-
-  factory _FileReaderSync._internalWrap() {
-    return new _FileReaderSync.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _FileReaderSync.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -45298,21 +42353,13 @@
   // To suppress missing implicit constructor warnings.
   factory _FileWriterSync._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _FileWriterSync internalCreate_FileWriterSync() {
-    return new _FileWriterSync._internalWrap();
-  }
 
-  factory _FileWriterSync._internalWrap() {
-    return new _FileWriterSync.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _FileWriterSync.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -45329,32 +42376,24 @@
   // To suppress missing implicit constructor warnings.
   factory _GamepadList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _GamepadList internalCreate_GamepadList() {
-    return new _GamepadList._internalWrap();
-  }
 
-  factory _GamepadList._internalWrap() {
-    return new _GamepadList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _GamepadList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('GamepadList.length')
   @DocsEditable()
-  int get length => _blink.BlinkGamepadList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkGamepadList.instance.length_Getter_(this);
   
   Gamepad operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkGamepadList.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  Gamepad _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkGamepadList.instance.item_Callback_1_(unwrap_jso(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.");
@@ -45396,7 +42435,7 @@
 
   @DomName('GamepadList.item')
   @DocsEditable()
-  Gamepad item(int index) => wrap_jso(_blink.BlinkGamepadList.instance.item_Callback_1_(unwrap_jso(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
@@ -45414,27 +42453,19 @@
   // To suppress missing implicit constructor warnings.
   factory _HTMLAllCollection._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _HTMLAllCollection internalCreate_HTMLAllCollection() {
-    return new _HTMLAllCollection._internalWrap();
-  }
 
-  factory _HTMLAllCollection._internalWrap() {
-    return new _HTMLAllCollection.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _HTMLAllCollection.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   Element _item(int index) {
     if ((index is int || index == null)) {
-      return wrap_jso(_blink.BlinkHTMLAllCollection.instance.item_Callback_1_(unwrap_jso(this), index));
+      return _blink.BlinkHTMLAllCollection.instance.item_Callback_1_(this, index);
     }
     if ((index is int || index == null)) {
-      return wrap_jso(_blink.BlinkHTMLAllCollection.instance.item_Callback_1_(unwrap_jso(this), index));
+      return _blink.BlinkHTMLAllCollection.instance.item_Callback_1_(this, index);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -45457,11 +42488,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _HTMLAppletElement internalCreate_HTMLAppletElement() {
-    return new _HTMLAppletElement._internalWrap();
-  }
-
-  external factory _HTMLAppletElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _HTMLAppletElement.internal_() : super.internal_();
@@ -45491,11 +42518,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _HTMLDirectoryElement internalCreate_HTMLDirectoryElement() {
-    return new _HTMLDirectoryElement._internalWrap();
-  }
-
-  external factory _HTMLDirectoryElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _HTMLDirectoryElement.internal_() : super.internal_();
@@ -45525,11 +42548,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _HTMLFontElement internalCreate_HTMLFontElement() {
-    return new _HTMLFontElement._internalWrap();
-  }
-
-  external factory _HTMLFontElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _HTMLFontElement.internal_() : super.internal_();
@@ -45559,11 +42578,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _HTMLFrameElement internalCreate_HTMLFrameElement() {
-    return new _HTMLFrameElement._internalWrap();
-  }
-
-  external factory _HTMLFrameElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _HTMLFrameElement.internal_() : super.internal_();
@@ -45591,11 +42606,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _HTMLFrameSetElement internalCreate_HTMLFrameSetElement() {
-    return new _HTMLFrameSetElement._internalWrap();
-  }
-
-  external factory _HTMLFrameSetElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _HTMLFrameSetElement.internal_() : super.internal_();
@@ -45634,11 +42645,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _HTMLMarqueeElement internalCreate_HTMLMarqueeElement() {
-    return new _HTMLMarqueeElement._internalWrap();
-  }
-
-  external factory _HTMLMarqueeElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _HTMLMarqueeElement.internal_() : super.internal_();
@@ -45674,11 +42681,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _MutationEvent internalCreate_MutationEvent() {
-    return new _MutationEvent._internalWrap();
-  }
-
-  external factory _MutationEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _MutationEvent.internal_() : super.internal_();
@@ -45700,32 +42703,24 @@
   // To suppress missing implicit constructor warnings.
   factory _NamedNodeMap._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _NamedNodeMap internalCreate_NamedNodeMap() {
-    return new _NamedNodeMap._internalWrap();
-  }
 
-  factory _NamedNodeMap._internalWrap() {
-    return new _NamedNodeMap.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _NamedNodeMap.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('NamedNodeMap.length')
   @DocsEditable()
-  int get length => _blink.BlinkNamedNodeMap.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkNamedNodeMap.instance.length_Getter_(this);
   
   Node operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkNamedNodeMap.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  Node _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkNamedNodeMap.instance.item_Callback_1_(unwrap_jso(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.");
@@ -45767,37 +42762,37 @@
 
   _Attr getNamedItem(String name) {
     if ((name is String)) {
-      return wrap_jso(_blink.BlinkNamedNodeMap.instance.getNamedItem_Callback_1_(unwrap_jso(this), name));
+      return _blink.BlinkNamedNodeMap.instance.getNamedItem_Callback_1_(this, name);
     }
     if ((name is String)) {
-      return wrap_jso(_blink.BlinkNamedNodeMap.instance.getNamedItem_Callback_1_(unwrap_jso(this), name));
+      return _blink.BlinkNamedNodeMap.instance.getNamedItem_Callback_1_(this, name);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   @DomName('NamedNodeMap.getNamedItemNS')
   @DocsEditable()
-  _Attr getNamedItemNS(String namespaceURI, String localName) => wrap_jso(_blink.BlinkNamedNodeMap.instance.getNamedItemNS_Callback_2_(unwrap_jso(this), namespaceURI, localName));
+  _Attr getNamedItemNS(String namespaceURI, String localName) => _blink.BlinkNamedNodeMap.instance.getNamedItemNS_Callback_2_(this, namespaceURI, localName);
   
   @DomName('NamedNodeMap.item')
   @DocsEditable()
-  _Attr item(int index) => wrap_jso(_blink.BlinkNamedNodeMap.instance.item_Callback_1_(unwrap_jso(this), index));
+  _Attr item(int index) => _blink.BlinkNamedNodeMap.instance.item_Callback_1_(this, index);
   
   @DomName('NamedNodeMap.removeNamedItem')
   @DocsEditable()
-  _Attr removeNamedItem(String name) => wrap_jso(_blink.BlinkNamedNodeMap.instance.removeNamedItem_Callback_1_(unwrap_jso(this), name));
+  _Attr removeNamedItem(String name) => _blink.BlinkNamedNodeMap.instance.removeNamedItem_Callback_1_(this, name);
   
   @DomName('NamedNodeMap.removeNamedItemNS')
   @DocsEditable()
-  _Attr removeNamedItemNS(String namespaceURI, String localName) => wrap_jso(_blink.BlinkNamedNodeMap.instance.removeNamedItemNS_Callback_2_(unwrap_jso(this), namespaceURI, localName));
+  _Attr removeNamedItemNS(String namespaceURI, String localName) => _blink.BlinkNamedNodeMap.instance.removeNamedItemNS_Callback_2_(this, namespaceURI, localName);
   
   @DomName('NamedNodeMap.setNamedItem')
   @DocsEditable()
-  _Attr setNamedItem(_Attr attr) => wrap_jso(_blink.BlinkNamedNodeMap.instance.setNamedItem_Callback_1_(unwrap_jso(this), unwrap_jso(attr)));
+  _Attr setNamedItem(_Attr attr) => _blink.BlinkNamedNodeMap.instance.setNamedItem_Callback_1_(this, attr);
   
   @DomName('NamedNodeMap.setNamedItemNS')
   @DocsEditable()
-  _Attr setNamedItemNS(_Attr attr) => wrap_jso(_blink.BlinkNamedNodeMap.instance.setNamedItemNS_Callback_1_(unwrap_jso(this), unwrap_jso(attr)));
+  _Attr setNamedItemNS(_Attr attr) => _blink.BlinkNamedNodeMap.instance.setNamedItemNS_Callback_1_(this, attr);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -45814,21 +42809,13 @@
   // To suppress missing implicit constructor warnings.
   factory _PagePopupController._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _PagePopupController internalCreate_PagePopupController() {
-    return new _PagePopupController._internalWrap();
-  }
 
-  factory _PagePopupController._internalWrap() {
-    return new _PagePopupController.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _PagePopupController.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -45842,11 +42829,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _RadioNodeList internalCreate_RadioNodeList() {
-    return new _RadioNodeList._internalWrap();
-  }
-
-  external factory _RadioNodeList._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _RadioNodeList.internal_() : super.internal_();
@@ -45855,7 +42838,7 @@
   @DomName('RadioNodeList.item')
   @DocsEditable()
   @Experimental() // untriaged
-  Node _item(int index) => wrap_jso(_blink.BlinkRadioNodeList.instance.item_Callback_1_(unwrap_jso(this), index));
+  Node _item(int index) => _blink.BlinkRadioNodeList.instance.item_Callback_1_(this, index);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -45877,18 +42860,14 @@
   factory _Request(Object input, [Map requestInitDict]) {
     if (requestInitDict != null) {
       var requestInitDict_1 = convertDartToNative_Dictionary(requestInitDict);
-      return wrap_jso(_blink.BlinkRequest.instance.constructorCallback_2_(input, requestInitDict_1));
+      return _blink.BlinkRequest.instance.constructorCallback_2_(input, requestInitDict_1);
     }
-    return wrap_jso(_blink.BlinkRequest.instance.constructorCallback_1_(input));
+    return _blink.BlinkRequest.instance.constructorCallback_1_(input);
   }
 
 
   @Deprecated("Internal Use Only")
-  static _Request internalCreate_Request() {
-    return new _Request._internalWrap();
-  }
-
-  external factory _Request._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _Request.internal_() : super.internal_();
@@ -45897,37 +42876,37 @@
   @DomName('Request.context')
   @DocsEditable()
   @Experimental() // untriaged
-  String get context => _blink.BlinkRequest.instance.context_Getter_(unwrap_jso(this));
+  String get context => _blink.BlinkRequest.instance.context_Getter_(this);
   
   @DomName('Request.credentials')
   @DocsEditable()
   @Experimental() // untriaged
-  String get credentials => _blink.BlinkRequest.instance.credentials_Getter_(unwrap_jso(this));
+  String get credentials => _blink.BlinkRequest.instance.credentials_Getter_(this);
   
   @DomName('Request.headers')
   @DocsEditable()
   @Experimental() // untriaged
-  Headers get headers => wrap_jso(_blink.BlinkRequest.instance.headers_Getter_(unwrap_jso(this)));
+  Headers get headers => _blink.BlinkRequest.instance.headers_Getter_(this);
   
   @DomName('Request.mode')
   @DocsEditable()
   @Experimental() // untriaged
-  String get mode => _blink.BlinkRequest.instance.mode_Getter_(unwrap_jso(this));
+  String get mode => _blink.BlinkRequest.instance.mode_Getter_(this);
   
   @DomName('Request.referrer')
   @DocsEditable()
   @Experimental() // untriaged
-  String get referrer => _blink.BlinkRequest.instance.referrer_Getter_(unwrap_jso(this));
+  String get referrer => _blink.BlinkRequest.instance.referrer_Getter_(this);
   
   @DomName('Request.url')
   @DocsEditable()
   @Experimental() // untriaged
-  String get url => _blink.BlinkRequest.instance.url_Getter_(unwrap_jso(this));
+  String get url => _blink.BlinkRequest.instance.url_Getter_(this);
   
   @DomName('Request.clone')
   @DocsEditable()
   @Experimental() // untriaged
-  _Request clone() => wrap_jso(_blink.BlinkRequest.instance.clone_Callback_0_(unwrap_jso(this)));
+  _Request clone() => _blink.BlinkRequest.instance.clone_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -45949,21 +42928,17 @@
   factory _Response([Object body, Map responseInitDict]) {
     if (responseInitDict != null) {
       var responseInitDict_1 = convertDartToNative_Dictionary(responseInitDict);
-      return wrap_jso(_blink.BlinkResponse.instance.constructorCallback_2_(body, responseInitDict_1));
+      return _blink.BlinkResponse.instance.constructorCallback_2_(body, responseInitDict_1);
     }
     if (body != null) {
-      return wrap_jso(_blink.BlinkResponse.instance.constructorCallback_1_(body));
+      return _blink.BlinkResponse.instance.constructorCallback_1_(body);
     }
-    return wrap_jso(_blink.BlinkResponse.instance.constructorCallback_0_());
+    return _blink.BlinkResponse.instance.constructorCallback_0_();
   }
 
 
   @Deprecated("Internal Use Only")
-  static _Response internalCreate_Response() {
-    return new _Response._internalWrap();
-  }
-
-  external factory _Response._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _Response.internal_() : super.internal_();
@@ -45984,11 +42959,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _ServiceWorker internalCreate_ServiceWorker() {
-    return new _ServiceWorker._internalWrap();
-  }
-
-  external factory _ServiceWorker._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _ServiceWorker.internal_() : super.internal_();
@@ -46013,32 +42984,24 @@
   // To suppress missing implicit constructor warnings.
   factory _SpeechRecognitionResultList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _SpeechRecognitionResultList internalCreate_SpeechRecognitionResultList() {
-    return new _SpeechRecognitionResultList._internalWrap();
-  }
 
-  factory _SpeechRecognitionResultList._internalWrap() {
-    return new _SpeechRecognitionResultList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _SpeechRecognitionResultList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SpeechRecognitionResultList.length')
   @DocsEditable()
-  int get length => _blink.BlinkSpeechRecognitionResultList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkSpeechRecognitionResultList.instance.length_Getter_(this);
   
   SpeechRecognitionResult operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkSpeechRecognitionResultList.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  SpeechRecognitionResult _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkSpeechRecognitionResultList.instance.item_Callback_1_(unwrap_jso(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.");
@@ -46080,7 +43043,7 @@
 
   @DomName('SpeechRecognitionResultList.item')
   @DocsEditable()
-  SpeechRecognitionResult item(int index) => wrap_jso(_blink.BlinkSpeechRecognitionResultList.instance.item_Callback_1_(unwrap_jso(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
@@ -46096,32 +43059,24 @@
   // To suppress missing implicit constructor warnings.
   factory _StyleSheetList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _StyleSheetList internalCreate_StyleSheetList() {
-    return new _StyleSheetList._internalWrap();
-  }
 
-  factory _StyleSheetList._internalWrap() {
-    return new _StyleSheetList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _StyleSheetList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('StyleSheetList.length')
   @DocsEditable()
-  int get length => _blink.BlinkStyleSheetList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkStyleSheetList.instance.length_Getter_(this);
   
   StyleSheet operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkStyleSheetList.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  StyleSheet _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkStyleSheetList.instance.item_Callback_1_(unwrap_jso(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.");
@@ -46163,11 +43118,11 @@
 
   @DomName('StyleSheetList.__getter__')
   @DocsEditable()
-  CssStyleSheet __getter__(String name) => wrap_jso(_blink.BlinkStyleSheetList.instance.$__getter___Callback_1_(unwrap_jso(this), name));
+  CssStyleSheet __getter__(String name) => _blink.BlinkStyleSheetList.instance.$__getter___Callback_1_(this, name);
   
   @DomName('StyleSheetList.item')
   @DocsEditable()
-  StyleSheet item(int index) => wrap_jso(_blink.BlinkStyleSheetList.instance.item_Callback_1_(unwrap_jso(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
@@ -46184,21 +43139,13 @@
   // To suppress missing implicit constructor warnings.
   factory _SubtleCrypto._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _SubtleCrypto internalCreate_SubtleCrypto() {
-    return new _SubtleCrypto._internalWrap();
-  }
 
-  factory _SubtleCrypto._internalWrap() {
-    return new _SubtleCrypto.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _SubtleCrypto.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -46221,24 +43168,16 @@
   @DomName('WebKitCSSMatrix.WebKitCSSMatrix')
   @DocsEditable()
   factory _WebKitCSSMatrix([String cssValue]) {
-    return wrap_jso(_blink.BlinkWebKitCSSMatrix.instance.constructorCallback_1_(cssValue));
+    return _blink.BlinkWebKitCSSMatrix.instance.constructorCallback_1_(cssValue);
   }
 
+
   @Deprecated("Internal Use Only")
-  static _WebKitCSSMatrix internalCreate_WebKitCSSMatrix() {
-    return new _WebKitCSSMatrix._internalWrap();
-  }
-
-  factory _WebKitCSSMatrix._internalWrap() {
-    return new _WebKitCSSMatrix.internal_();
-  }
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _WebKitCSSMatrix.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -46256,48 +43195,48 @@
 
   int _setInterval_String(String handler, [int timeout, Object arguments]) {
     if (timeout != null) {
-      return _blink.BlinkWindowTimers.instance.setInterval_Callback_3_(unwrap_jso(this), handler, timeout, arguments);
+      return _blink.BlinkWindowTimers.instance.setInterval_Callback_3_(this, handler, timeout, arguments);
     }
-    return _blink.BlinkWindowTimers.instance.setInterval_Callback_1_(unwrap_jso(this), handler);
+    return _blink.BlinkWindowTimers.instance.setInterval_Callback_1_(this, handler);
   }
 
   int _setTimeout_String(String handler, [int timeout, Object arguments]) {
     if (timeout != null) {
-      return _blink.BlinkWindowTimers.instance.setTimeout_Callback_3_(unwrap_jso(this), handler, timeout, arguments);
+      return _blink.BlinkWindowTimers.instance.setTimeout_Callback_3_(this, handler, timeout, arguments);
     }
-    return _blink.BlinkWindowTimers.instance.setTimeout_Callback_1_(unwrap_jso(this), handler);
+    return _blink.BlinkWindowTimers.instance.setTimeout_Callback_1_(this, handler);
   }
 
   void _clearInterval([int handle]) {
     if (handle != null) {
-      _blink.BlinkWindowTimers.instance.clearInterval_Callback_1_(unwrap_jso(this), handle);
+      _blink.BlinkWindowTimers.instance.clearInterval_Callback_1_(this, handle);
       return;
     }
-    _blink.BlinkWindowTimers.instance.clearInterval_Callback_0_(unwrap_jso(this));
+    _blink.BlinkWindowTimers.instance.clearInterval_Callback_0_(this);
     return;
   }
 
   void _clearTimeout([int handle]) {
     if (handle != null) {
-      _blink.BlinkWindowTimers.instance.clearTimeout_Callback_1_(unwrap_jso(this), handle);
+      _blink.BlinkWindowTimers.instance.clearTimeout_Callback_1_(this, handle);
       return;
     }
-    _blink.BlinkWindowTimers.instance.clearTimeout_Callback_0_(unwrap_jso(this));
+    _blink.BlinkWindowTimers.instance.clearTimeout_Callback_0_(this);
     return;
   }
 
   int _setInterval(Object handler, [int timeout]) {
     if (timeout != null) {
-      return _blink.BlinkWindowTimers.instance.setInterval_Callback_2_(unwrap_jso(this), handler, timeout);
+      return _blink.BlinkWindowTimers.instance.setInterval_Callback_2_(this, handler, timeout);
     }
-    return _blink.BlinkWindowTimers.instance.setInterval_Callback_1_(unwrap_jso(this), handler);
+    return _blink.BlinkWindowTimers.instance.setInterval_Callback_1_(this, handler);
   }
 
   int _setTimeout(Object handler, [int timeout]) {
     if (timeout != null) {
-      return _blink.BlinkWindowTimers.instance.setTimeout_Callback_2_(unwrap_jso(this), handler, timeout);
+      return _blink.BlinkWindowTimers.instance.setTimeout_Callback_2_(this, handler, timeout);
     }
-    return _blink.BlinkWindowTimers.instance.setTimeout_Callback_1_(unwrap_jso(this), handler);
+    return _blink.BlinkWindowTimers.instance.setTimeout_Callback_1_(this, handler);
   }
 
 }
@@ -46314,31 +43253,23 @@
   // To suppress missing implicit constructor warnings.
   factory _WorkerLocation._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _WorkerLocation internalCreate_WorkerLocation() {
-    return new _WorkerLocation._internalWrap();
-  }
 
-  factory _WorkerLocation._internalWrap() {
-    return new _WorkerLocation.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _WorkerLocation.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   // Override these methods for Dartium _WorkerLocation can't be abstract.
-  String get hash => _blink.BlinkWorkerLocation.instance.hash_Getter_(unwrap_jso(this));
-  String get host => _blink.BlinkWorkerLocation.instance.host_Getter_(unwrap_jso(this));
-  String get hostname => _blink.BlinkWorkerLocation.instance.hostname_Getter_(unwrap_jso(this));
-  String get href => _blink.BlinkWorkerLocation.instance.href_Getter_(unwrap_jso(this));
-  String get origin => _blink.BlinkWorkerLocation.instance.origin_Getter_(unwrap_jso(this));
-  String get pathname => _blink.BlinkWorkerLocation.instance.pathname_Getter_(unwrap_jso(this));
-  String get port => _blink.BlinkWorkerLocation.instance.port_Getter_(unwrap_jso(this));
-  String get protocol => _blink.BlinkWorkerLocation.instance.protocol_Getter_(unwrap_jso(this));
-  String get search => _blink.BlinkWorkerLocation.instance.search_Getter_(unwrap_jso(this));
+  String get hash => _blink.BlinkWorkerLocation.instance.hash_Getter_(this);
+  String get host => _blink.BlinkWorkerLocation.instance.host_Getter_(this);
+  String get hostname => _blink.BlinkWorkerLocation.instance.hostname_Getter_(this);
+  String get href => _blink.BlinkWorkerLocation.instance.href_Getter_(this);
+  String get origin => _blink.BlinkWorkerLocation.instance.origin_Getter_(this);
+  String get pathname => _blink.BlinkWorkerLocation.instance.pathname_Getter_(this);
+  String get port => _blink.BlinkWorkerLocation.instance.port_Getter_(this);
+  String get protocol => _blink.BlinkWorkerLocation.instance.protocol_Getter_(this);
+  String get search => _blink.BlinkWorkerLocation.instance.search_Getter_(this);
 }
 
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -46354,31 +43285,23 @@
   // To suppress missing implicit constructor warnings.
   factory _WorkerNavigator._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _WorkerNavigator internalCreate_WorkerNavigator() {
-    return new _WorkerNavigator._internalWrap();
-  }
 
-  factory _WorkerNavigator._internalWrap() {
-    return new _WorkerNavigator.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _WorkerNavigator.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   // Override these methods for Dartium _WorkerNavigator can't be abstract.
-  String get appCodeName => _blink.BlinkWorkerNavigator.instance.appCodeName_Getter_(unwrap_jso(this));
-  String get appName => _blink.BlinkWorkerNavigator.instance.appCodeName_Getter_(unwrap_jso(this));
-  String get appVersion => _blink.BlinkWorkerNavigator.instance.appVersion_Getter_(unwrap_jso(this));
-  bool get dartEnabled => _blink.BlinkWorkerNavigator.instance.dartEnabled_Getter_(unwrap_jso(this));
-  String get platform => _blink.BlinkWorkerNavigator.instance.platform_Getter_(unwrap_jso(this));
-  String get product => _blink.BlinkWorkerNavigator.instance.product_Getter_(unwrap_jso(this));
-  String get userAgent => _blink.BlinkWorkerNavigator.instance.userAgent_Getter_(unwrap_jso(this));
-  int get hardwareConcurrency => _blink.BlinkWorkerNavigator.instance.hardwareConcurrency_Getter_(unwrap_jso(this));
-  bool get onLine => _blink.BlinkWorkerNavigator.instance.onLine_Getter_(unwrap_jso(this));
+  String get appCodeName => _blink.BlinkWorkerNavigator.instance.appCodeName_Getter_(this);
+  String get appName => _blink.BlinkWorkerNavigator.instance.appCodeName_Getter_(this);
+  String get appVersion => _blink.BlinkWorkerNavigator.instance.appVersion_Getter_(this);
+  bool get dartEnabled => _blink.BlinkWorkerNavigator.instance.dartEnabled_Getter_(this);
+  String get platform => _blink.BlinkWorkerNavigator.instance.platform_Getter_(this);
+  String get product => _blink.BlinkWorkerNavigator.instance.product_Getter_(this);
+  String get userAgent => _blink.BlinkWorkerNavigator.instance.userAgent_Getter_(this);
+  int get hardwareConcurrency => _blink.BlinkWorkerNavigator.instance.hardwareConcurrency_Getter_(this);
+  bool get onLine => _blink.BlinkWorkerNavigator.instance.onLine_Getter_(this);
 }
 
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -46397,11 +43320,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _XMLHttpRequestProgressEvent internalCreate_XMLHttpRequestProgressEvent() {
-    return new _XMLHttpRequestProgressEvent._internalWrap();
-  }
-
-  external factory _XMLHttpRequestProgressEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _XMLHttpRequestProgressEvent.internal_() : super.internal_();
@@ -50569,40 +47488,11 @@
   }
 
   Element upgrade(element) {
-    var jsObject;
-    var tag;
-    var isNativeElementExtension = false;
-
-    try {
-      tag = _getCustomElementName(element);
-    } catch (e) {
-      isNativeElementExtension = element.localName == _extendsTag;
+    // Only exact type matches are supported- cannot be a subclass.
+    if (element.runtimeType != _nativeType) {
+      throw new ArgumentError('element is not subclass of $_nativeType');
     }
-
-    if (element.runtimeType == HtmlElement || element.runtimeType == TemplateElement) {
-      if (tag != _extendsTag) {
-        throw new UnsupportedError('$tag is not registered.');
-      }
-      jsObject = unwrap_jso(element);
-    } else if (element.runtimeType == js.JsObject) {
-      // It's a Polymer core element (written in JS).
-      jsObject = element;
-    } else if (isNativeElementExtension) {
-      // Extending a native element.
-      jsObject = element.blink_jsObject;
-
-      // Element to extend is the real tag.
-      tag = element.localName;
-    } else if (tag != null && element.localName != tag) {
-      throw new UnsupportedError('Element is incorrect type. Got ${element.runtimeType}, expected native Html or Svg element to extend.');
-    } else if (tag == null) {
-      throw new UnsupportedError('Element is incorrect type. Got ${element.runtimeType}, expected HtmlElement/JsObject.');
-    }
-
-    // Remember Dart class to tagName for any upgrading done in wrap_jso.
-    addCustomElementType(tag, _type, _extendsTag);
-
-    return _createCustomUpgrader(_type, jsObject);
+    return _createCustomUpgrader(_type, element);
   }
 }
 
@@ -50694,13 +47584,7 @@
 @Experimental()
 class KeyEvent extends _WrappedEvent implements KeyboardEvent {
   /** Needed because KeyboardEvent is implements.
-   *  TODO(terry): Consider making blink_jsObject private (add underscore) for
-   *               all blink_jsObject.  Then needed private wrap/unwrap_jso
-   *               functions that delegate to a public wrap/unwrap_jso.
    */
-  @Deprecated("Internal Use Only")
-  js.JsObject blink_jsObject;
-
   /** The parent KeyboardEvent that this KeyEvent is wrapping and "fixing". */
   KeyboardEvent _parent;
 
@@ -50844,15 +47728,14 @@
 
 /**
  * Helper class to implement custom events which wrap DOM events.
+ * TODO(jacobr): consider using dart JsNative.$setInstanceInterceptor
+ * instead of using wrappers as that would allow passing these wrappers
+ * back through dispatchEvent unlike the current implementation.
+ * See https://github.com/dart-lang/sdk/issues/16869
  */
 class _WrappedEvent implements Event {
   /** Needed because KeyboardEvent is implements.
-   *  TODO(terry): Consider making blink_jsObject private (add underscore) for
-   *               all blink_jsObject.  Then needed private wrap/unwrap_jso
-   *               functions that delegate to a public wrap/unwrap_jso.
    */
-  js.JsObject blink_jsObject;
-
   final Event wrapped;
 
   /** The CSS selector involved with event delegation. */
@@ -51130,8 +48013,6 @@
     }
   }
 
-  static maybeUnwrapJso(obj) => unwrap_jso(obj);
-
   static List convertToList(List list) {
     // FIXME: [possible optimization]: do not copy the array if Dart_IsArray is fine w/ it.
     final length = list.length;
@@ -51195,15 +48076,14 @@
     return element;
   }
 
-  static window() => wrap_jso(js.context['window']);
-
   static forwardingPrint(String message) => _blink.Blink_Utils.forwardingPrint(message);
   static void spawnDomHelper(Function f, int replyTo) =>
       _blink.Blink_Utils.spawnDomHelper(f, replyTo);
 
   // TODO(vsm): Make this API compatible with spawnUri.  It should also
   // return a Future<Isolate>.
-  static spawnDomUri(String uri) => wrap_jso(_blink.Blink_Utils.spawnDomUri(uri));
+  // TODO(jacobr): IS THIS RIGHT? I worry we have broken conversion from Promise to Future.
+  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.
@@ -51780,13 +48660,13 @@
     return [
         "inspect",
         (o) {
-          host.callMethod("_inspect", [unwrap_jso(o)]);
+          js.JsNative.callMethod(host, "_inspect", [o]);
           return o;
         },
         "dir",
-        window().console.dir,
+        window.console.dir,
         "dirxml",
-        window().console.dirxml
+        window.console.dirxml
         // FIXME: add copy method.
         ];
   }
@@ -51810,38 +48690,34 @@
   }
 
   static void _register(Document document, String tag, Type customType,
-    String extendsTagName) => _blink.Blink_Utils.register(unwrap_jso(document), tag, customType, extendsTagName);
+    String extendsTagName) => _blink.Blink_Utils.register(document, tag, customType, extendsTagName);
 
   static Element createElement(Document document, String tagName) =>
-      wrap_jso(_blink.Blink_Utils.createElement(unwrap_jso(document), tagName));
-
-  static Element changeElementWrapper(HtmlElement element, Type type) =>
-      wrap_jso(_blink.Blink_Utils.changeElementWrapper(unwrap_jso(element), type));
+      _blink.Blink_Utils.createElement(document, tagName);
 }
 
+// TODO(jacobr): this seems busted. I believe we are actually
+// giving users real windows for opener, parent, top, etc.
+// Or worse, we are probaly returning a raw JSObject.
 class _DOMWindowCrossFrame extends DartHtmlDomObject implements
     WindowBase {
-  /** Needed because KeyboardEvent is implements.
-   *  TODO(terry): Consider making blink_jsObject private (add underscore) for
-   *               all blink_jsObject.  Then needed private wrap/unwrap_jso
-   *               functions that delegate to a public wrap/unwrap_jso.
-   */
-  js.JsObject blink_jsObject;
 
   _DOMWindowCrossFrame.internal();
+  
+  static _createSafe(win) => _blink.Blink_Utils.setInstanceInterceptor(win, _DOMWindowCrossFrame);
 
   // Fields.
-  HistoryBase get history => wrap_jso(_blink.Blink_DOMWindowCrossFrame.get_history(unwrap_jso(this)));
-  LocationBase get location => wrap_jso(_blink.Blink_DOMWindowCrossFrame.get_location(unwrap_jso(this)));
-  bool get closed => wrap_jso(_blink.Blink_DOMWindowCrossFrame.get_closed(unwrap_jso(this)));
-  WindowBase get opener => wrap_jso(_blink.Blink_DOMWindowCrossFrame.get_opener(unwrap_jso(this)));
-  WindowBase get parent => wrap_jso(_blink.Blink_DOMWindowCrossFrame.get_parent(unwrap_jso(this)));
-  WindowBase get top => wrap_jso(_blink.Blink_DOMWindowCrossFrame.get_top(unwrap_jso(this)));
+  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(unwrap_jso(this));
+  void close() => _blink.Blink_DOMWindowCrossFrame.close(this);
   void postMessage(/*SerializedScriptValue*/ message, String targetOrigin, [List messagePorts]) =>
-      _blink.Blink_DOMWindowCrossFrame.postMessage(unwrap_jso(this),
+      _blink.Blink_DOMWindowCrossFrame.postMessage(this,
          convertDartToNative_SerializedScriptValue(message), targetOrigin, messagePorts);
 
   // Implementation support.
@@ -51875,9 +48751,9 @@
   _HistoryCrossFrame.internal();
 
   // Methods.
-  void back() => _blink.Blink_HistoryCrossFrame.back(unwrap_jso(this));
-  void forward() => _blink.Blink_HistoryCrossFrame.forward(unwrap_jso(this));
-  void go(int distance) => _blink.Blink_HistoryCrossFrame.go(unwrap_jso(this), distance);
+  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";
@@ -51887,7 +48763,7 @@
   _LocationCrossFrame.internal();
 
   // Fields.
-  set href(String h) => _blink.Blink_LocationCrossFrame.set_href(unwrap_jso(this), h);
+  set href(String h) => _blink.Blink_LocationCrossFrame.set_href(this, h);
 
   // Implementation support.
   String get typeName => "Location";
diff --git a/sdk/lib/html/html_common/conversions_dart2js.dart b/sdk/lib/html/html_common/conversions_dart2js.dart
index b7f3d7c..b5a1064 100644
--- a/sdk/lib/html/html_common/conversions_dart2js.dart
+++ b/sdk/lib/html/html_common/conversions_dart2js.dart
@@ -91,9 +91,3 @@
   var newPromise = JS('', '#.then(#)["catch"](#)', promise, then, error);
   return completer.future;
 }
-
-/// Wrap a JS object with an instance of the matching dart:html class. Used only in Dartium.
-wrap_jso(jsObject) => jsObject;
-
-/// Find the underlying JS object for a dart:html Dart object.
-unwrap_jso(dartClass_instance) => dartClass_instance;
diff --git a/sdk/lib/html/html_common/conversions_dartium.dart b/sdk/lib/html/html_common/conversions_dartium.dart
index ad71852..ef02c00 100644
--- a/sdk/lib/html/html_common/conversions_dartium.dart
+++ b/sdk/lib/html/html_common/conversions_dartium.dart
@@ -7,74 +7,155 @@
     new _AcceptStructuredCloneDartium().convertNativeToDart_AcceptStructuredClone(object, mustCopy: mustCopy);
 
 class _StructuredCloneDartium extends _StructuredClone {
-  newJsMap() => new js.JsObject(js.context["Object"]);
-  putIntoMap(map, key, value) => map[key] = value;
-  // TODO(alanknight): Don't create two extra lists to get a fixed-length JS list.
-  newJsList(length) => new js.JsArray.from(new List(length));
-  cloneNotRequired(e) => e is js.JsObject;
+  newJsMap() => js.JsNative.newObject();
+  putIntoMap(map, key, value) => js.JsNative.setProperty(map, key, value);
+  newJsList(length) => js.JsNative.newArray()..length = length;
+  cloneNotRequired(e) =>
+      e is js.JSObject || e is TypedData || e is ByteBuffer;
 }
 
-class _AcceptStructuredCloneDartium extends _AcceptStructuredClone {
+/// A version of _AcceptStructuredClone, but using a different algorithm
+/// so we can take advantage of an identity HashMap on Dartium without
+/// the bad side-effect of modifying the JS source objects if we do the same in
+/// dart2js.
+///
+/// This no longer inherits anything from _AcceptStructuredClone
+/// and is never used polymorphically with it, so it doesn't inherit.
+class _AcceptStructuredCloneDartium {
   newDartList(length) => new List(length);
 
-  // JsObjects won't be identical, but will be equal only if the underlying
-  // Js entities are identical.
-  bool identicalInJs(a, b) =>
-      (a is js.JsObject) ? a == b : identical(a, b);
+  // As long as we stick to JSObject instead of intermingling legacy JsObject,
+  // we can simply use identical.
+  bool identicalInJs(a, b) => identical(a, b);
 
   void forEachJsField(jsObject, action) {
-    var keys = js.context["Object"].callMethod("keys", [jsObject]);
+    var keys = js.JsNative.callMethod(_object, "keys", [jsObject]);
     for (var key in keys) {
-      action(key, jsObject[key]);
+      action(key, js.JsNative.getProperty(jsObject, key));
     }
   }
+
+  // Keep track of the clones, keyed by the original object. If we're
+  // not copying, these may be the same.
+  var clones = new HashMap.identity();
+  bool mustCopy = false;
+
+  Object findSlot(value) {
+    return clones.putIfAbsent(value, () => null);
+  }
+
+  writeSlot(original, x) { clones[original] = x; }
+
+  walk(e) {
+    if (e == null) return e;
+    if (e is bool) return e;
+    if (e is num) return e;
+    if (e is String) return e;
+    if (e is DateTime) return e;
+
+    if (isJavaScriptRegExp(e)) {
+      // TODO(sra).
+      throw new UnimplementedError('structured clone of RegExp');
+    }
+
+    if (isJavaScriptPromise(e)) {
+      return convertNativePromiseToDartFuture(e);
+    }
+
+    if (isJavaScriptSimpleObject(e)) {
+      // TODO(sra): If mustCopy is false, swizzle the prototype for one of a Map
+      // implementation that uses the properies as storage.
+      var copy = findSlot(e);
+      if (copy != null) return copy;
+      copy = {};
+
+      writeSlot(e, copy);
+      forEachJsField(e, (key, value) => copy[key] = walk(value));
+      return copy;
+    }
+
+    if (isJavaScriptArray(e)) {
+      var copy = findSlot(e);
+      if (copy != null) return copy;
+
+      int length = e.length;
+      // Since a JavaScript Array is an instance of Dart List, we can modify it
+      // in-place unless we must copy.
+      copy = mustCopy ? newDartList(length) : e;
+      writeSlot(e, copy);
+
+      for (int i = 0; i < length; i++) {
+        copy[i] = walk(e[i]);
+      }
+      return copy;
+    }
+
+    // Assume anything else is already a valid Dart object, either by having
+    // already been processed, or e.g. a clonable native class.
+    return e;
+  }
+
+  convertNativeToDart_AcceptStructuredClone(object, {mustCopy: false}) {
+    this.mustCopy = mustCopy;
+    var copy = walk(object);
+    return copy;
+  }
 }
 
-final _dateConstructor = js.context["Date"];
-final _regexConstructor = js.context["RegExp"];
+final _dateConstructor = js.JsNative.getProperty(window, "Date");
+final _regexConstructor = js.JsNative.getProperty(window, "RegExp");
 
-bool isJavaScriptDate(value) => value is js.JsObject && value.instanceof(_dateConstructor);
-bool isJavaScriptRegExp(value) => value is js.JsObject && value.instanceof(_regexConstructor);
-bool isJavaScriptArray(value) => value is js.JsArray;
+bool isJavaScriptDate(value) => value is js.JSObject && js.JsNative.instanceof(value, _dateConstructor);
+bool isJavaScriptRegExp(value) => value is js.JSObject && js.JsNative.instanceof(value, _regexConstructor);
+bool isJavaScriptArray(value) => value is js.JSArray;
 
-final _object = js.context["Object"];
-final _getPrototypeOf = _object["getPrototypeOf"];
+final _object = js.JsNative.getProperty(window, "Object");
+final _getPrototypeOf = js.JsNative.getProperty(_object, "getPrototypeOf");
 _getProto(object) {
-  return _getPrototypeOf.apply([object]);
+  return _getPrototypeOf(object);
 }
-final _objectProto = js.context["Object"]["prototype"];
+final _objectProto = js.JsNative.getProperty(_object, "prototype");
 
 bool isJavaScriptSimpleObject(value) {
-  if (value is! js.JsObject) return false;
+  if (value is! js.JSObject) return false;
   var proto = _getProto(value);
   return proto == _objectProto || proto == null;
 }
+
+// TODO(jacobr): this makes little sense unless we are doing something
+// ambitious to make Dartium and Dart2Js interop well with each other.
 bool isImmutableJavaScriptArray(value) =>
-    isJavaScriptArray(value) && value["immutable$list"] != null;
+    isJavaScriptArray(value) && js.JsNative.getProperty(value, "immutable$list") != null;
 
-final _promiseConstructor = js.context['Promise'];
-bool isJavaScriptPromise(value) => value is js.JsObject && value['constructor'] == _promiseConstructor;
+final _promiseConstructor = js.JsNative.getProperty(window, 'Promise');
+bool isJavaScriptPromise(value) => value is js.JSObject && identical(js.JsNative.getProperty(value, 'constructor'), _promiseConstructor);
 
-Future convertNativePromiseToDartFuture(js.JsObject promise) {
+Future convertNativePromiseToDartFuture(js.JSObject promise) {
   var completer = new Completer();
-  var newPromise = promise
-    .callMethod("then", [(result) => completer.complete(result)])
-    .callMethod("catch", [(result) => completer.completeError(result)]);
+  var newPromise = js.JsNative.callMethod(js.JsNative.callMethod(promise,
+    "then", [js.allowInterop((result) => completer.complete(result))]),
+    "catch", [js.allowInterop((result) => completer.completeError(result))]);
   return completer.future;
 }
 
 convertDartToNative_DateTime(DateTime date) {
-  return new js.JsObject(js.context["Date"], [date.millisecondsSinceEpoch]);
+  return date;
 }
 
 /// Creates a Dart Rectangle from a Javascript object with properties
-/// left, top, width and height. Used internally in Dartium.
-Rectangle make_dart_rectangle(r) =>
-    r == null ? null : new Rectangle(
-    js.JsNative.getProperty(r, 'left'),
-    js.JsNative.getProperty(r, 'top'),
-    js.JsNative.getProperty(r, 'width'),
-    js.JsNative.getProperty(r, 'height'));
+/// left, top, width and height or a 4 element array of integers. Used internally in Dartium.
+Rectangle make_dart_rectangle(r) {
+  if (r == null) return null;
+  if (r is List) {
+    return new Rectangle(r[0], r[1], r[2], r[3]);
+  }
+
+  return new Rectangle(
+      js.JsNative.getProperty(r, 'left'),
+      js.JsNative.getProperty(r, 'top'),
+      js.JsNative.getProperty(r, 'width'),
+      js.JsNative.getProperty(r, 'height'));
+}
 
 // Converts a flat Dart map into a JavaScript object with properties this is
 // is the Dartium only version it uses dart:js.
@@ -82,16 +163,16 @@
 // code in html_common and be more general.
 convertDartToNative_Dictionary(Map dict) {
   if (dict == null) return null;
-  var jsObject = new js.JsObject(js.JsNative.getProperty(js.context, 'Object'));
+  var jsObject = js.JsNative.newObject();
   dict.forEach((String key, value) {
     if (value is List) {
-      var jsArray = new js.JsArray();
+      var jsArray = js.JsNative.newArray();
       value.forEach((elem) {
         jsArray.add(elem is Map ? convertDartToNative_Dictionary(elem): elem);
       });
-      jsObject[key] = jsArray;
+      js.JsNative.setProperty(jsObject, key, jsArray);
     } else {
-      jsObject[key] = value;
+      js.JsNative.setProperty(jsObject, key, value);
     }
   });
   return jsObject;
@@ -120,8 +201,15 @@
 
 // Helper function to wrapped a returned dictionary from blink to a Dart looking
 // class.
-convertNativeDictionaryToDartDictionary(Map values) =>
-  values != null ? new _ReturnedDictionary(values) : null;
+convertNativeDictionaryToDartDictionary(values) {
+  if (values is! Map) {
+    // TODO(jacobr): wish wwe didn't have to do this.
+    values = convertNativeToDart_SerializedScriptValue(values);
+  }
+  return values != null ? new _ReturnedDictionary(values) : null;
+}
+
+convertNativeToDart_Dictionary(values) => convertNativeToDart_SerializedScriptValue(values);
 
 // Conversion function place holder (currently not used in dart2js or dartium).
 List convertDartToNative_StringArray(List<String> input) => input;
@@ -129,284 +217,59 @@
 // Converts a Dart list into a JsArray. For the Dartium version only.
 convertDartToNative_List(List input) => new js.JsArray()..addAll(input);
 
-/// Find the underlying JS object for a dart:html Dart object.
-unwrap_jso(dartClass_instance) => js.unwrap_jso(dartClass_instance);
-
-// Flag to disable JS interop asserts.  Setting to false will speed up the
-// wrap_jso calls.
-bool interop_checks = false;
-
-/// Wrap a JS object with an instance of the matching dart:html class. Used only in Dartium.
-wrap_jso(jsObject) {
+// Incredibly slow implementation to lookup the runtime type for an object.
+// Fortunately, performance doesn't matter much as the results are cached
+// as long as the object being looked up has a valid prototype.
+// TODO(jacobr): we should track the # of lookups to ensure that things aren't
+// going off the rails due to objects with null prototypes, etc.
+// Note: unlike all other methods in this class, here we intentionally use
+// the old JsObject types to bootstrap the new typed bindings.
+Type lookupType(js.JsObject jsObject, bool isElement) {
   try {
-    if (jsObject is! js.JsObject || jsObject == null) {
-      // JS Interop converted the object to a Dart class e.g., Uint8ClampedList.
-      // or it's a simple type.
-      return jsObject;
-    }
-
-    var wrapper = js.getDartHtmlWrapperFor(jsObject);
-    // if we have a wrapper return the Dart instance.
-    if (wrapper != null) {
-      return wrapper;
-    }
-
-    if (jsObject is js.JsArray) {
-      wrapper = new js.JSArray.create(jsObject);
-      js.setDartHtmlWrapperFor(jsObject, wrapper);
-      return wrapper;
-    }
-    if (jsObject is js.JsFunction) {
-      wrapper = new js.JSFunction.create(jsObject);
-      js.setDartHtmlWrapperFor(jsObject, wrapper);
-      return wrapper;
-    }
-
-    // Try the most general type conversions on it.
-    // TODO(alanknight): We may be able to do better. This maintains identity,
-    // which is useful, but expensive. And if we nest something that only
-    // this conversion handles, how does that work? e.g. a list of maps of elements.
-    var converted = convertNativeToDart_SerializedScriptValue(jsObject);
-    if (!identical(converted, jsObject)) {
-      return converted;
-    }
+  // TODO(jacobr): add static methods that return the runtime type of the patch
+  // class so that this code works as expected.
+  if (jsObject is js.JsArray) {
+    return js.JSArray.instanceRuntimeType;
+  }
+  if (jsObject is js.JsFunction) {
+    return js.JSFunction.instanceRuntimeType;
+  }
 
     var constructor = js.JsNative.getProperty(jsObject, 'constructor');
     if (constructor == null) {
       // Perfectly valid case for JavaScript objects where __proto__ has
       // intentionally been set to null.
-      js.setDartHtmlWrapperFor(jsObject, new js.JSObject.create(jsObject));
-      return jsObject;
+      // We should track and warn about this case as peformance will be poor.
+      return js.JSObject.instanceRuntimeType;
     }
     var jsTypeName = js.JsNative.getProperty(constructor, 'name');
     if (jsTypeName is! String || jsTypeName.length == 0) {
       // Not an html type.
-      wrapper = new js.JSObject.create(jsObject);
-      js.setDartHtmlWrapperFor(jsObject, wrapper);
-      return wrapper;
+      return js.JSObject.instanceRuntimeType;
     }
 
     var dartClass_instance;
     var customElementClass = null;
-    var extendsTag = "";
-    var custom = getCustomElementEntry(jsObject);
-    if (custom != null) {
-      customElementClass = custom['type'];
-      extendsTag = custom['extends'];
-    }
+    var extendsTag = "";    
 
-    // Only allow custom elements to be created in the html or svg default
-    // namespace.
-    var func;
-    var defaultNS = jsObject['namespaceURI'] == 'http://www.w3.org/1999/xhtml' ||
-        jsObject['namespaceURI'] ==  'http://www.w3.org/2000/svg';
-    if (customElementClass != null && extendsTag == "" && defaultNS) {
-      // The customElementClass is known but we can't create the real class so
-      // create the HtmlElement and it will get upgraded when registerElement's
-      // createdCallback is called.
-      func = getHtmlCreateFunction('HTMLElement');
-    } else {
-      func = getHtmlCreateFunction(jsTypeName);
-      if (func == null) {
-        // Start walking the prototype chain looking for a JS class.
-        var prototype = jsObject['__proto__'];
-        var keepWalking = true;
-        while (keepWalking && prototype.hasProperty('__proto__')) {
-          prototype = prototype['__proto__'];
-          if (prototype != null && prototype is Element &&
-              prototype.blink_jsObject != null) {
-            // We're a Dart class that's pointing to a JS class.
-            var blinkJso = prototype.blink_jsObject;
-            jsTypeName = blinkJso['constructor']['name'];
-            func = getHtmlCreateFunction(jsTypeName);
-            keepWalking = func == null;
-          }
-        }
+    Type type = getHtmlCreateType(jsTypeName);
+    if (type != null) return type;
+
+    // Start walking the prototype chain looking for a JS class.
+    var prototype = js.JsNative.getProperty(jsObject, '__proto__');
+    while (prototype != null) {
+      // We're a Dart class that's pointing to a JS class.
+      var constructor = js.JsNative.getProperty(prototype, 'constructor');
+      if (constructor != null) {          
+        jsTypeName = js.JsNative.getProperty(constructor, 'name');
+        type = getHtmlCreateType(jsTypeName);
+        if (type != null) return type;
       }
+      prototype = js.JsNative.getProperty(prototype, '__proto__');
     }
-
-    // Can we construct a Dart class?
-    if (func != null) {
-      dartClass_instance = func();
-
-      // Wrap our Dart instance in both directions.
-      dartClass_instance.blink_jsObject = jsObject;
-      js.setDartHtmlWrapperFor(jsObject, dartClass_instance);
-    }
-
-    // TODO(jacobr): cache that this is not a dart:html JS class.
-    return dartClass_instance;
   } catch (e, stacktrace) {
-    if (interop_checks) {
-      if (e is DebugAssertException) window.console
-          .log("${e.message}\n ${stacktrace}");
-      else window.console.log("${stacktrace}");
-    }
+    if (e is DebugAssertException) print("${e.message}\n ${stacktrace}");
+    else print("${stacktrace}");
   }
-
-  return null;
-}
-
-/**
- * Create Dart class that maps to the JS Type, add the JsObject as an expando
- * on the Dart class and return the created Dart class.
- */
-wrap_jso_no_SerializedScriptvalue(jsObject) {
-  try {
-    if (jsObject is! js.JsObject || jsObject == null) {
-      // JS Interop converted the object to a Dart class e.g., Uint8ClampedList.
-      // or it's a simple type.
-      return jsObject;
-    }
-
-    // TODO(alanknight): With upgraded custom elements this causes a failure because
-    // we need a new wrapper after the type changes. We could possibly invalidate this
-    // if the constructor name didn't match?
-    var wrapper = js.getDartHtmlWrapperFor(jsObject);
-    if (wrapper != null) {
-      return wrapper;
-    }
-
-    if (jsObject is js.JsArray) {
-      wrapper = new js.JSArray.create(jsObject);
-      js.setDartHtmlWrapperFor(jsObject, wrapper);
-      return wrapper;
-    }
-    if (jsObject is js.JsFunction) {
-      wrapper = new js.JSFunction.create(jsObject);
-      js.setDartHtmlWrapperFor(jsObject, wrapper);
-      return wrapper;
-    }
-
-    var constructor = js.JsNative.getProperty(jsObject, 'constructor');
-    if (constructor == null) {
-      // Perfectly valid case for JavaScript objects where __proto__ has
-      // intentionally been set to null.
-      js.setDartHtmlWrapperFor(jsObject, new js.JSObject.create(jsObject));
-      return jsObject;
-    }
-    var jsTypeName = js.JsNative.getProperty(constructor, 'name');
-    if (jsTypeName is! String || jsTypeName.length == 0) {
-      // Not an html type.
-      wrapper = new js.JSObject.create(jsObject);
-      js.setDartHtmlWrapperFor(jsObject, wrapper);
-      return wrapper;
-    }
-
-    var func = getHtmlCreateFunction(jsTypeName);
-    if (func != null) {
-      var dartClass_instance = func();
-      dartClass_instance.blink_jsObject = jsObject;
-      js.setDartHtmlWrapperFor(jsObject, dartClass_instance);
-      return dartClass_instance;
-    }
-    wrapper = new js.JSObject.create(jsObject);
-    js.setDartHtmlWrapperFor(jsObject, wrapper);
-    return wrapper;
-  } catch (e, stacktrace) {
-    if (interop_checks) {
-      if (e is DebugAssertException) window.console
-          .log("${e.message}\n ${stacktrace}");
-      else window.console.log("${stacktrace}");
-    }
-  }
-
-  return null;
-}
-
-/**
- * Create Dart class that maps to the JS Type that is the JS type being
- * extended using JS interop createCallback (we need the base type of the
- * custom element) not the Dart created constructor.
- */
-wrap_jso_custom_element(jsObject) {
-  try {
-    if (jsObject is! js.JsObject) {
-      // JS Interop converted the object to a Dart class e.g., Uint8ClampedList.
-      return jsObject;
-    }
-
-    // Find out what object we're extending.
-    var objectName = jsObject.toString();
-    // Expect to see something like '[object HTMLElement]'.
-    if (!objectName.startsWith('[object ')) {
-      return jsObject;
-    }
-
-    var extendsClass = objectName.substring(8, objectName.length - 1);
-    var func = getHtmlCreateFunction(extendsClass);
-    if (interop_checks)
-      debug_or_assert("func != null name = ${extendsClass}", func != null);
-    var dartClass_instance = func();
-    dartClass_instance.blink_jsObject = jsObject;
-    return dartClass_instance;
-  } catch(e, stacktrace){
-    if (interop_checks) {
-      if (e is DebugAssertException)
-        window.console.log("${e.message}\n ${stacktrace}");
-      else
-        window.console.log("${stacktrace}");
-    }
-
-    // Problem?
-    return null;
-  }
-}
-
-getCustomElementEntry(element) {
-  var hasAttribute = false;
-
-  var jsObject;
-  var tag = "";
-  var runtimeType = element.runtimeType;
-  if (runtimeType == HtmlElement) {
-    tag = element.localName;
-  } else if (runtimeType == TemplateElement) {
-    // Data binding with a Dart class.
-    tag = element.attributes['is'];
-  } else if (runtimeType == js.JsObject) {
-    // It's a Polymer core element (written in JS).
-    // Make sure it's an element anything else we can ignore.
-    if (element.hasProperty('nodeType') && element['nodeType'] == 1) {
-      if (js.JsNative.callMethod(element, 'hasAttribute', ['is'])) {
-        hasAttribute = true;
-        // It's data binding use the is attribute.
-        tag = js.JsNative.callMethod(element, 'getAttribute', ['is']);
-      } else {
-        // It's a custom element we want the local name.
-        tag = element['localName'];
-      }
-    }
-  } else {
-    throw new UnsupportedError(
-        'Element is incorrect type. Got ${runtimeType}, expected HtmlElement/HtmlTemplate/JsObject.');
-  }
-
-  var entry = _knownCustomElements[tag];
-  if (entry != null) {
-    // If there's an 'is' attribute then check if the extends tag registered
-    // matches the tag if so then return the entry that's registered for this
-    // extendsTag or if there's no 'is' tag then return the entry found.
-    if ((hasAttribute && entry['extends'] == tag) || !hasAttribute) {
-      return entry;
-    }
-  }
-
-  return null;
-}
-
-// List of known tagName to DartClass for custom elements, used for upgrade.
-var _knownCustomElements = new Map<String, Map<Type, String>>();
-
-void addCustomElementType(String tagName, Type dartClass, [String extendTag]) {
-  _knownCustomElements[tagName] =
-      {'type': dartClass, 'extends': extendTag != null ? extendTag : "" };
-}
-
-Type getCustomElementType(object) {
-  var entry = getCustomElementEntry(object);
-  if (entry != null) {
-    return entry['type'];
-  }
-  return null;
+  return js.JSObject.instanceRuntimeType;
 }
diff --git a/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart b/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart
index 02a914f..39c78ed 100644
--- a/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart
+++ b/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart
@@ -110,37 +110,83 @@
 // FIXME: Can we make this private?
 @Deprecated("Internal Use Only")
 final indexed_dbBlinkMap = {
-  'IDBCursor': () => Cursor,
-  'IDBCursorWithValue': () => CursorWithValue,
-  'IDBDatabase': () => Database,
-  'IDBFactory': () => IdbFactory,
-  'IDBIndex': () => Index,
-  'IDBKeyRange': () => KeyRange,
-  'IDBObjectStore': () => ObjectStore,
-  'IDBOpenDBRequest': () => OpenDBRequest,
-  'IDBRequest': () => Request,
-  'IDBTransaction': () => Transaction,
-  'IDBVersionChangeEvent': () => VersionChangeEvent,
+  'IDBCursor': () => Cursor.instanceRuntimeType,
+  'IDBCursorWithValue': () => CursorWithValue.instanceRuntimeType,
+  'IDBDatabase': () => Database.instanceRuntimeType,
+  'IDBFactory': () => IdbFactory.instanceRuntimeType,
+  'IDBIndex': () => Index.instanceRuntimeType,
+  'IDBKeyRange': () => KeyRange.instanceRuntimeType,
+  'IDBObjectStore': () => ObjectStore.instanceRuntimeType,
+  'IDBOpenDBRequest': () => OpenDBRequest.instanceRuntimeType,
+  'IDBRequest': () => Request.instanceRuntimeType,
+  'IDBTransaction': () => Transaction.instanceRuntimeType,
+  'IDBVersionChangeEvent': () => VersionChangeEvent.instanceRuntimeType,
 
 };
 
-// FIXME: Can we make this private?
-@Deprecated("Internal Use Only")
-final indexed_dbBlinkFunctionMap = {
-  'IDBCursor': () => Cursor.internalCreateCursor,
-  'IDBCursorWithValue': () => CursorWithValue.internalCreateCursorWithValue,
-  'IDBDatabase': () => Database.internalCreateDatabase,
-  'IDBFactory': () => IdbFactory.internalCreateIdbFactory,
-  'IDBIndex': () => Index.internalCreateIndex,
-  'IDBKeyRange': () => KeyRange.internalCreateKeyRange,
-  'IDBObjectStore': () => ObjectStore.internalCreateObjectStore,
-  'IDBOpenDBRequest': () => OpenDBRequest.internalCreateOpenDBRequest,
-  'IDBRequest': () => Request.internalCreateRequest,
-  'IDBTransaction': () => Transaction.internalCreateTransaction,
-  'IDBVersionChangeEvent': () => VersionChangeEvent.internalCreateVersionChangeEvent,
 
-};
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+//
+// Per http://www.w3.org/TR/IndexedDB/#key-construct
+//
+// "A value is said to be a valid key if it is one of the following types: Array
+// JavaScript objects [ECMA-262], DOMString [WEBIDL], Date [ECMA-262] or float
+// [WEBIDL]. However Arrays are only valid keys if every item in the array is
+// defined and is a valid key (i.e. sparse arrays can not be valid keys) and if
+// the Array doesn't directly or indirectly contain itself. Any non-numeric
+// properties are ignored, and thus does not affect whether the Array is a valid
+// key. Additionally, if the value is of type float, it is only a valid key if
+// it is not NaN, and if the value is of type Date it is only a valid key if its
+// [[PrimitiveValue]] internal property, as defined by [ECMA-262], is not NaN."
+
+// What is required is to ensure that an Lists in the key are actually
+// JavaScript arrays, and any Dates are JavaScript Dates.
+
+
+/**
+ * Converts a native IDBKey into a Dart object.
+ *
+ * May return the original input.  May mutate the original input (but will be
+ * idempotent if mutation occurs).  It is assumed that this conversion happens
+ * on native IDBKeys on all paths that return IDBKeys from native DOM calls.
+ *
+ * If necessary, JavaScript Dates are converted into Dart Dates.
+ */
+_convertNativeToDart_IDBKey(nativeKey) {
+  containsDate(object) {
+    if (object is DateTime) return true;
+    if (object is List) {
+      for (int i = 0; i < object.length; i++) {
+        if (containsDate(object[i])) return true;
+      }
+    }
+    return false;  // number, string.
+  }
+  if (nativeKey is DateTime) {
+    throw new UnimplementedError('Key containing DateTime');
+  }
+  // TODO: Cache conversion somewhere?
+  return nativeKey;
+}
+
+/**
+ * Converts a Dart object into a valid IDBKey.
+ *
+ * May return the original input.  Does not mutate input.
+ *
+ * If necessary, [dartKey] may be copied to ensure all lists are converted into
+ * JavaScript Arrays and Dart Dates into JavaScript Dates.
+ */
+_convertDartToNative_IDBKey(dartKey) {
+  // TODO: Implement.
+  return dartKey;
+}
+
+
+
+/// May modify original.  If so, action is idempotent.
+_convertNativeToDart_IDBAny(object) {
+  return convertNativeToDart_AcceptStructuredClone(object, mustCopy: false);
+}// 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.
 
@@ -169,62 +215,54 @@
     // To suppress missing implicit constructor warnings.
   factory Cursor._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Cursor internalCreateCursor() {
-    return new Cursor._internalWrap();
-  }
 
-  factory Cursor._internalWrap() {
-    return new Cursor.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Cursor.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('IDBCursor.direction')
   @DocsEditable()
-  String get direction => _blink.BlinkIDBCursor.instance.direction_Getter_(unwrap_jso(this));
+  String get direction => _blink.BlinkIDBCursor.instance.direction_Getter_(this);
   
   @DomName('IDBCursor.key')
   @DocsEditable()
-  Object get key => wrap_jso(_blink.BlinkIDBCursor.instance.key_Getter_(unwrap_jso(this)));
+  Object get key => (_blink.BlinkIDBCursor.instance.key_Getter_(this));
   
   @DomName('IDBCursor.primaryKey')
   @DocsEditable()
-  Object get primaryKey => wrap_jso(_blink.BlinkIDBCursor.instance.primaryKey_Getter_(unwrap_jso(this)));
+  Object get primaryKey => (_blink.BlinkIDBCursor.instance.primaryKey_Getter_(this));
   
   @DomName('IDBCursor.source')
   @DocsEditable()
-  Object get source => wrap_jso(_blink.BlinkIDBCursor.instance.source_Getter_(unwrap_jso(this)));
+  Object get source => (_blink.BlinkIDBCursor.instance.source_Getter_(this));
   
   @DomName('IDBCursor.advance')
   @DocsEditable()
-  void advance(int count) => _blink.BlinkIDBCursor.instance.advance_Callback_1_(unwrap_jso(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.instance.continuePrimaryKey_Callback_2_(unwrap_jso(this), key, primaryKey);
+  void continuePrimaryKey(Object key, Object primaryKey) => _blink.BlinkIDBCursor.instance.continuePrimaryKey_Callback_2_(this, key, primaryKey);
   
   @DomName('IDBCursor.delete')
   @DocsEditable()
-  Request _delete() => wrap_jso(_blink.BlinkIDBCursor.instance.delete_Callback_0_(unwrap_jso(this)));
+  Request _delete() => _blink.BlinkIDBCursor.instance.delete_Callback_0_(this);
   
   void next([Object key]) {
     if (key != null) {
-      _blink.BlinkIDBCursor.instance.continue_Callback_1_(unwrap_jso(this), key);
+      _blink.BlinkIDBCursor.instance.continue_Callback_1_(this, key);
       return;
     }
-    _blink.BlinkIDBCursor.instance.continue_Callback_0_(unwrap_jso(this));
+    _blink.BlinkIDBCursor.instance.continue_Callback_0_(this);
     return;
   }
 
   @DomName('IDBCursor.update')
   @DocsEditable()
-  Request _update(Object value) => wrap_jso(_blink.BlinkIDBCursor.instance.update_Callback_1_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(value)));
+  Request _update(Object value) => _blink.BlinkIDBCursor.instance.update_Callback_1_(this, convertDartToNative_SerializedScriptValue(value));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -243,11 +281,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CursorWithValue internalCreateCursorWithValue() {
-    return new CursorWithValue._internalWrap();
-  }
-
-  external factory CursorWithValue._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CursorWithValue.internal_() : super.internal_();
@@ -255,7 +289,7 @@
 
   @DomName('IDBCursorWithValue.value')
   @DocsEditable()
-  Object get value => wrap_jso(_blink.BlinkIDBCursorWithValue.instance.value_Getter_(unwrap_jso(this)));
+  Object get value => _convertNativeToDart_IDBAny(_blink.BlinkIDBCursorWithValue.instance.value_Getter_(this));
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -298,14 +332,14 @@
     if (storeName_OR_storeNames == null) {
       throw new ArgumentError("stores may not be null in transaction");
     } else if (storeName_OR_storeNames is String || storeName_OR_storeNames is DomStringList) {
-      names = unwrap_jso(storeName_OR_storeNames);
+      names = storeName_OR_storeNames;
     } else if (storeName_OR_storeNames is List<String>) {
       names = convertDartToNative_List(storeName_OR_storeNames);
     } else {
       throw new ArgumentError("Invalid store(s) $store_Name_OR_storeNames");
     }
 
-    return wrap_jso(_blink.BlinkIDBDatabase.instance.transaction_Callback_2_(unwrap_jso(this), names, mode));
+    return _blink.BlinkIDBDatabase.instance.transaction_Callback_2_(this, names, mode);
   }
 
   Transaction transactionList(List<String> storeNames, String mode) => transaction(storeNames, mode);
@@ -359,11 +393,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static Database internalCreateDatabase() {
-    return new Database._internalWrap();
-  }
-
-  external factory Database._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Database.internal_() : super.internal_();
@@ -371,30 +401,30 @@
 
   @DomName('IDBDatabase.name')
   @DocsEditable()
-  String get name => _blink.BlinkIDBDatabase.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkIDBDatabase.instance.name_Getter_(this);
   
   @DomName('IDBDatabase.objectStoreNames')
   @DocsEditable()
-  List<String> get objectStoreNames => wrap_jso(_blink.BlinkIDBDatabase.instance.objectStoreNames_Getter_(unwrap_jso(this)));
+  List<String> get objectStoreNames => _blink.BlinkIDBDatabase.instance.objectStoreNames_Getter_(this);
   
   @DomName('IDBDatabase.version')
   @DocsEditable()
-  Object get version => wrap_jso(_blink.BlinkIDBDatabase.instance.version_Getter_(unwrap_jso(this)));
+  Object get version => (_blink.BlinkIDBDatabase.instance.version_Getter_(this));
   
   @DomName('IDBDatabase.close')
   @DocsEditable()
-  void close() => _blink.BlinkIDBDatabase.instance.close_Callback_0_(unwrap_jso(this));
+  void close() => _blink.BlinkIDBDatabase.instance.close_Callback_0_(this);
   
   ObjectStore _createObjectStore(String name, [Map options]) {
     if (options != null) {
-      return wrap_jso(_blink.BlinkIDBDatabase.instance.createObjectStore_Callback_2_(unwrap_jso(this), name, convertDartToNative_Dictionary(options)));
+      return _blink.BlinkIDBDatabase.instance.createObjectStore_Callback_2_(this, name, convertDartToNative_Dictionary(options));
     }
-    return wrap_jso(_blink.BlinkIDBDatabase.instance.createObjectStore_Callback_1_(unwrap_jso(this), name));
+    return _blink.BlinkIDBDatabase.instance.createObjectStore_Callback_1_(this, name);
   }
 
   @DomName('IDBDatabase.deleteObjectStore')
   @DocsEditable()
-  void deleteObjectStore(String name) => _blink.BlinkIDBDatabase.instance.deleteObjectStore_Callback_1_(unwrap_jso(this), name);
+  void deleteObjectStore(String name) => _blink.BlinkIDBDatabase.instance.deleteObjectStore_Callback_1_(this, name);
   
   /// Stream of `abort` events handled by this [Database].
   @DomName('IDBDatabase.onabort')
@@ -508,34 +538,26 @@
   // To suppress missing implicit constructor warnings.
   factory IdbFactory._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static IdbFactory internalCreateIdbFactory() {
-    return new IdbFactory._internalWrap();
-  }
 
-  factory IdbFactory._internalWrap() {
-    return new IdbFactory.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   IdbFactory.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('IDBFactory.cmp')
   @DocsEditable()
-  int cmp(Object first, Object second) => _blink.BlinkIDBFactory.instance.cmp_Callback_2_(unwrap_jso(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) => wrap_jso(_blink.BlinkIDBFactory.instance.deleteDatabase_Callback_1_(unwrap_jso(this), name));
+  OpenDBRequest _deleteDatabase(String name) => _blink.BlinkIDBFactory.instance.deleteDatabase_Callback_1_(this, name);
   
   OpenDBRequest _open(String name, [int version]) {
     if (version != null) {
-      return wrap_jso(_blink.BlinkIDBFactory.instance.open_Callback_2_(unwrap_jso(this), name, version));
+      return _blink.BlinkIDBFactory.instance.open_Callback_2_(this, name, version);
     }
-    return wrap_jso(_blink.BlinkIDBFactory.instance.open_Callback_1_(unwrap_jso(this), name));
+    return _blink.BlinkIDBFactory.instance.open_Callback_1_(this, name);
   }
 
   @DomName('IDBFactory.webkitGetDatabaseNames')
@@ -543,7 +565,7 @@
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
-  Request _webkitGetDatabaseNames() => wrap_jso(_blink.BlinkIDBFactory.instance.webkitGetDatabaseNames_Callback_0_(unwrap_jso(this)));
+  Request _webkitGetDatabaseNames() => _blink.BlinkIDBFactory.instance.webkitGetDatabaseNames_Callback_0_(this);
   
 }
 
@@ -661,79 +683,71 @@
     // To suppress missing implicit constructor warnings.
   factory Index._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Index internalCreateIndex() {
-    return new Index._internalWrap();
-  }
 
-  factory Index._internalWrap() {
-    return new Index.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Index.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('IDBIndex.keyPath')
   @DocsEditable()
-  Object get keyPath => wrap_jso(_blink.BlinkIDBIndex.instance.keyPath_Getter_(unwrap_jso(this)));
+  Object get keyPath => (_blink.BlinkIDBIndex.instance.keyPath_Getter_(this));
   
   @DomName('IDBIndex.multiEntry')
   @DocsEditable()
-  bool get multiEntry => _blink.BlinkIDBIndex.instance.multiEntry_Getter_(unwrap_jso(this));
+  bool get multiEntry => _blink.BlinkIDBIndex.instance.multiEntry_Getter_(this);
   
   @DomName('IDBIndex.name')
   @DocsEditable()
-  String get name => _blink.BlinkIDBIndex.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkIDBIndex.instance.name_Getter_(this);
   
   @DomName('IDBIndex.objectStore')
   @DocsEditable()
-  ObjectStore get objectStore => wrap_jso(_blink.BlinkIDBIndex.instance.objectStore_Getter_(unwrap_jso(this)));
+  ObjectStore get objectStore => _blink.BlinkIDBIndex.instance.objectStore_Getter_(this);
   
   @DomName('IDBIndex.unique')
   @DocsEditable()
-  bool get unique => _blink.BlinkIDBIndex.instance.unique_Getter_(unwrap_jso(this));
+  bool get unique => _blink.BlinkIDBIndex.instance.unique_Getter_(this);
   
   @DomName('IDBIndex.count')
   @DocsEditable()
-  Request _count(Object key) => wrap_jso(_blink.BlinkIDBIndex.instance.count_Callback_1_(unwrap_jso(this), key));
+  Request _count(Object key) => _blink.BlinkIDBIndex.instance.count_Callback_1_(this, key);
   
   @DomName('IDBIndex.get')
   @DocsEditable()
-  Request _get(Object key) => wrap_jso(_blink.BlinkIDBIndex.instance.get_Callback_1_(unwrap_jso(this), key));
+  Request _get(Object key) => _blink.BlinkIDBIndex.instance.get_Callback_1_(this, key);
   
   Request getAll(Object range, [int maxCount]) {
     if (maxCount != null) {
-      return wrap_jso(_blink.BlinkIDBIndex.instance.getAll_Callback_2_(unwrap_jso(this), range, maxCount));
+      return _blink.BlinkIDBIndex.instance.getAll_Callback_2_(this, range, maxCount);
     }
-    return wrap_jso(_blink.BlinkIDBIndex.instance.getAll_Callback_1_(unwrap_jso(this), range));
+    return _blink.BlinkIDBIndex.instance.getAll_Callback_1_(this, range);
   }
 
   Request getAllKeys(Object range, [int maxCount]) {
     if (maxCount != null) {
-      return wrap_jso(_blink.BlinkIDBIndex.instance.getAllKeys_Callback_2_(unwrap_jso(this), range, maxCount));
+      return _blink.BlinkIDBIndex.instance.getAllKeys_Callback_2_(this, range, maxCount);
     }
-    return wrap_jso(_blink.BlinkIDBIndex.instance.getAllKeys_Callback_1_(unwrap_jso(this), range));
+    return _blink.BlinkIDBIndex.instance.getAllKeys_Callback_1_(this, range);
   }
 
   @DomName('IDBIndex.getKey')
   @DocsEditable()
-  Request _getKey(Object key) => wrap_jso(_blink.BlinkIDBIndex.instance.getKey_Callback_1_(unwrap_jso(this), key));
+  Request _getKey(Object key) => _blink.BlinkIDBIndex.instance.getKey_Callback_1_(this, key);
   
   Request _openCursor(Object range, [String direction]) {
     if (direction != null) {
-      return wrap_jso(_blink.BlinkIDBIndex.instance.openCursor_Callback_2_(unwrap_jso(this), range, direction));
+      return _blink.BlinkIDBIndex.instance.openCursor_Callback_2_(this, range, direction);
     }
-    return wrap_jso(_blink.BlinkIDBIndex.instance.openCursor_Callback_1_(unwrap_jso(this), range));
+    return _blink.BlinkIDBIndex.instance.openCursor_Callback_1_(this, range);
   }
 
   Request _openKeyCursor(Object range, [String direction]) {
     if (direction != null) {
-      return wrap_jso(_blink.BlinkIDBIndex.instance.openKeyCursor_Callback_2_(unwrap_jso(this), range, direction));
+      return _blink.BlinkIDBIndex.instance.openKeyCursor_Callback_2_(this, range, direction);
     }
-    return wrap_jso(_blink.BlinkIDBIndex.instance.openKeyCursor_Callback_1_(unwrap_jso(this), range));
+    return _blink.BlinkIDBIndex.instance.openKeyCursor_Callback_1_(this, range);
   }
 
 }
@@ -766,64 +780,56 @@
   // To suppress missing implicit constructor warnings.
   factory KeyRange._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static KeyRange internalCreateKeyRange() {
-    return new KeyRange._internalWrap();
-  }
 
-  factory KeyRange._internalWrap() {
-    return new KeyRange.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   KeyRange.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('IDBKeyRange.lower')
   @DocsEditable()
-  Object get lower => wrap_jso(_blink.BlinkIDBKeyRange.instance.lower_Getter_(unwrap_jso(this)));
+  Object get lower => (_blink.BlinkIDBKeyRange.instance.lower_Getter_(this));
   
   @DomName('IDBKeyRange.lowerOpen')
   @DocsEditable()
-  bool get lowerOpen => _blink.BlinkIDBKeyRange.instance.lowerOpen_Getter_(unwrap_jso(this));
+  bool get lowerOpen => _blink.BlinkIDBKeyRange.instance.lowerOpen_Getter_(this);
   
   @DomName('IDBKeyRange.upper')
   @DocsEditable()
-  Object get upper => wrap_jso(_blink.BlinkIDBKeyRange.instance.upper_Getter_(unwrap_jso(this)));
+  Object get upper => (_blink.BlinkIDBKeyRange.instance.upper_Getter_(this));
   
   @DomName('IDBKeyRange.upperOpen')
   @DocsEditable()
-  bool get upperOpen => _blink.BlinkIDBKeyRange.instance.upperOpen_Getter_(unwrap_jso(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 wrap_jso(_blink.BlinkIDBKeyRange.instance.bound_Callback_4_(lower, upper, lowerOpen, upperOpen));
+      return _blink.BlinkIDBKeyRange.instance.bound_Callback_4_(lower, upper, lowerOpen, upperOpen);
     }
     if (lowerOpen != null) {
-      return wrap_jso(_blink.BlinkIDBKeyRange.instance.bound_Callback_3_(lower, upper, lowerOpen));
+      return _blink.BlinkIDBKeyRange.instance.bound_Callback_3_(lower, upper, lowerOpen);
     }
-    return wrap_jso(_blink.BlinkIDBKeyRange.instance.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 wrap_jso(_blink.BlinkIDBKeyRange.instance.lowerBound_Callback_2_(bound, open));
+      return _blink.BlinkIDBKeyRange.instance.lowerBound_Callback_2_(bound, open);
     }
-    return wrap_jso(_blink.BlinkIDBKeyRange.instance.lowerBound_Callback_1_(bound));
+    return _blink.BlinkIDBKeyRange.instance.lowerBound_Callback_1_(bound);
   }
 
   @DomName('IDBKeyRange.only_')
   @DocsEditable()
   @Experimental() // non-standard
-  static KeyRange only_(Object value) => wrap_jso(_blink.BlinkIDBKeyRange.instance.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 wrap_jso(_blink.BlinkIDBKeyRange.instance.upperBound_Callback_2_(bound, open));
+      return _blink.BlinkIDBKeyRange.instance.upperBound_Callback_2_(bound, open);
     }
-    return wrap_jso(_blink.BlinkIDBKeyRange.instance.upperBound_Callback_1_(bound));
+    return _blink.BlinkIDBKeyRange.instance.upperBound_Callback_1_(bound);
   }
 
 }
@@ -965,112 +971,104 @@
   // To suppress missing implicit constructor warnings.
   factory ObjectStore._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ObjectStore internalCreateObjectStore() {
-    return new ObjectStore._internalWrap();
-  }
 
-  factory ObjectStore._internalWrap() {
-    return new ObjectStore.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ObjectStore.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('IDBObjectStore.autoIncrement')
   @DocsEditable()
-  bool get autoIncrement => _blink.BlinkIDBObjectStore.instance.autoIncrement_Getter_(unwrap_jso(this));
+  bool get autoIncrement => _blink.BlinkIDBObjectStore.instance.autoIncrement_Getter_(this);
   
   @DomName('IDBObjectStore.indexNames')
   @DocsEditable()
-  List<String> get indexNames => wrap_jso(_blink.BlinkIDBObjectStore.instance.indexNames_Getter_(unwrap_jso(this)));
+  List<String> get indexNames => _blink.BlinkIDBObjectStore.instance.indexNames_Getter_(this);
   
   @DomName('IDBObjectStore.keyPath')
   @DocsEditable()
-  Object get keyPath => wrap_jso(_blink.BlinkIDBObjectStore.instance.keyPath_Getter_(unwrap_jso(this)));
+  Object get keyPath => (_blink.BlinkIDBObjectStore.instance.keyPath_Getter_(this));
   
   @DomName('IDBObjectStore.name')
   @DocsEditable()
-  String get name => _blink.BlinkIDBObjectStore.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkIDBObjectStore.instance.name_Getter_(this);
   
   @DomName('IDBObjectStore.transaction')
   @DocsEditable()
-  Transaction get transaction => wrap_jso(_blink.BlinkIDBObjectStore.instance.transaction_Getter_(unwrap_jso(this)));
+  Transaction get transaction => _blink.BlinkIDBObjectStore.instance.transaction_Getter_(this);
   
   Request _add(Object value, [Object key]) {
     if (key != null) {
-      return wrap_jso(_blink.BlinkIDBObjectStore.instance.add_Callback_2_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(value), convertDartToNative_SerializedScriptValue(key)));
+      return _blink.BlinkIDBObjectStore.instance.add_Callback_2_(this, convertDartToNative_SerializedScriptValue(value), convertDartToNative_SerializedScriptValue(key));
     }
-    return wrap_jso(_blink.BlinkIDBObjectStore.instance.add_Callback_1_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(value)));
+    return _blink.BlinkIDBObjectStore.instance.add_Callback_1_(this, convertDartToNative_SerializedScriptValue(value));
   }
 
   @DomName('IDBObjectStore.clear')
   @DocsEditable()
-  Request _clear() => wrap_jso(_blink.BlinkIDBObjectStore.instance.clear_Callback_0_(unwrap_jso(this)));
+  Request _clear() => _blink.BlinkIDBObjectStore.instance.clear_Callback_0_(this);
   
   @DomName('IDBObjectStore.count')
   @DocsEditable()
-  Request _count(Object key) => wrap_jso(_blink.BlinkIDBObjectStore.instance.count_Callback_1_(unwrap_jso(this), key));
+  Request _count(Object key) => _blink.BlinkIDBObjectStore.instance.count_Callback_1_(this, key);
   
   Index _createIndex(String name, Object keyPath, [Map options]) {
     if (options != null) {
-      return wrap_jso(_blink.BlinkIDBObjectStore.instance.createIndex_Callback_3_(unwrap_jso(this), name, keyPath, convertDartToNative_Dictionary(options)));
+      return _blink.BlinkIDBObjectStore.instance.createIndex_Callback_3_(this, name, keyPath, convertDartToNative_Dictionary(options));
     }
-    return wrap_jso(_blink.BlinkIDBObjectStore.instance.createIndex_Callback_2_(unwrap_jso(this), name, keyPath));
+    return _blink.BlinkIDBObjectStore.instance.createIndex_Callback_2_(this, name, keyPath);
   }
 
   @DomName('IDBObjectStore.delete')
   @DocsEditable()
-  Request _delete(Object key) => wrap_jso(_blink.BlinkIDBObjectStore.instance.delete_Callback_1_(unwrap_jso(this), key));
+  Request _delete(Object key) => _blink.BlinkIDBObjectStore.instance.delete_Callback_1_(this, key);
   
   @DomName('IDBObjectStore.deleteIndex')
   @DocsEditable()
-  void deleteIndex(String name) => _blink.BlinkIDBObjectStore.instance.deleteIndex_Callback_1_(unwrap_jso(this), name);
+  void deleteIndex(String name) => _blink.BlinkIDBObjectStore.instance.deleteIndex_Callback_1_(this, name);
   
   @DomName('IDBObjectStore.get')
   @DocsEditable()
-  Request _get(Object key) => wrap_jso(_blink.BlinkIDBObjectStore.instance.get_Callback_1_(unwrap_jso(this), key));
+  Request _get(Object key) => _blink.BlinkIDBObjectStore.instance.get_Callback_1_(this, key);
   
   Request getAll(Object range, [int maxCount]) {
     if (maxCount != null) {
-      return wrap_jso(_blink.BlinkIDBObjectStore.instance.getAll_Callback_2_(unwrap_jso(this), range, maxCount));
+      return _blink.BlinkIDBObjectStore.instance.getAll_Callback_2_(this, range, maxCount);
     }
-    return wrap_jso(_blink.BlinkIDBObjectStore.instance.getAll_Callback_1_(unwrap_jso(this), range));
+    return _blink.BlinkIDBObjectStore.instance.getAll_Callback_1_(this, range);
   }
 
   Request getAllKeys(Object range, [int maxCount]) {
     if (maxCount != null) {
-      return wrap_jso(_blink.BlinkIDBObjectStore.instance.getAllKeys_Callback_2_(unwrap_jso(this), range, maxCount));
+      return _blink.BlinkIDBObjectStore.instance.getAllKeys_Callback_2_(this, range, maxCount);
     }
-    return wrap_jso(_blink.BlinkIDBObjectStore.instance.getAllKeys_Callback_1_(unwrap_jso(this), range));
+    return _blink.BlinkIDBObjectStore.instance.getAllKeys_Callback_1_(this, range);
   }
 
   @DomName('IDBObjectStore.index')
   @DocsEditable()
-  Index index(String name) => wrap_jso(_blink.BlinkIDBObjectStore.instance.index_Callback_1_(unwrap_jso(this), name));
+  Index index(String name) => _blink.BlinkIDBObjectStore.instance.index_Callback_1_(this, name);
   
   Request _openCursor(Object range, [String direction]) {
     if (direction != null) {
-      return wrap_jso(_blink.BlinkIDBObjectStore.instance.openCursor_Callback_2_(unwrap_jso(this), range, direction));
+      return _blink.BlinkIDBObjectStore.instance.openCursor_Callback_2_(this, range, direction);
     }
-    return wrap_jso(_blink.BlinkIDBObjectStore.instance.openCursor_Callback_1_(unwrap_jso(this), range));
+    return _blink.BlinkIDBObjectStore.instance.openCursor_Callback_1_(this, range);
   }
 
   Request openKeyCursor(Object range, [String direction]) {
     if (direction != null) {
-      return wrap_jso(_blink.BlinkIDBObjectStore.instance.openKeyCursor_Callback_2_(unwrap_jso(this), range, direction));
+      return _blink.BlinkIDBObjectStore.instance.openKeyCursor_Callback_2_(this, range, direction);
     }
-    return wrap_jso(_blink.BlinkIDBObjectStore.instance.openKeyCursor_Callback_1_(unwrap_jso(this), range));
+    return _blink.BlinkIDBObjectStore.instance.openKeyCursor_Callback_1_(this, range);
   }
 
   Request _put(Object value, [Object key]) {
     if (key != null) {
-      return wrap_jso(_blink.BlinkIDBObjectStore.instance.put_Callback_2_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(value), convertDartToNative_SerializedScriptValue(key)));
+      return _blink.BlinkIDBObjectStore.instance.put_Callback_2_(this, convertDartToNative_SerializedScriptValue(value), convertDartToNative_SerializedScriptValue(key));
     }
-    return wrap_jso(_blink.BlinkIDBObjectStore.instance.put_Callback_1_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(value)));
+    return _blink.BlinkIDBObjectStore.instance.put_Callback_1_(this, convertDartToNative_SerializedScriptValue(value));
   }
 
 
@@ -1137,11 +1135,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static OpenDBRequest internalCreateOpenDBRequest() {
-    return new OpenDBRequest._internalWrap();
-  }
-
-  external factory OpenDBRequest._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   OpenDBRequest.internal_() : super.internal_();
@@ -1194,11 +1188,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static Request internalCreateRequest() {
-    return new Request._internalWrap();
-  }
-
-  external factory Request._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Request.internal_() : super.internal_();
@@ -1206,23 +1196,23 @@
 
   @DomName('IDBRequest.error')
   @DocsEditable()
-  DomError get error => wrap_jso(_blink.BlinkIDBRequest.instance.error_Getter_(unwrap_jso(this)));
+  DomError get error => _blink.BlinkIDBRequest.instance.error_Getter_(this);
   
   @DomName('IDBRequest.readyState')
   @DocsEditable()
-  String get readyState => _blink.BlinkIDBRequest.instance.readyState_Getter_(unwrap_jso(this));
+  String get readyState => _blink.BlinkIDBRequest.instance.readyState_Getter_(this);
   
   @DomName('IDBRequest.result')
   @DocsEditable()
-  Object get result => wrap_jso(_blink.BlinkIDBRequest.instance.result_Getter_(unwrap_jso(this)));
+  Object get result => _convertNativeToDart_IDBAny(_blink.BlinkIDBRequest.instance.result_Getter_(this));
   
   @DomName('IDBRequest.source')
   @DocsEditable()
-  Object get source => wrap_jso(_blink.BlinkIDBRequest.instance.source_Getter_(unwrap_jso(this)));
+  Object get source => (_blink.BlinkIDBRequest.instance.source_Getter_(this));
   
   @DomName('IDBRequest.transaction')
   @DocsEditable()
-  Transaction get transaction => wrap_jso(_blink.BlinkIDBRequest.instance.transaction_Getter_(unwrap_jso(this)));
+  Transaction get transaction => _blink.BlinkIDBRequest.instance.transaction_Getter_(this);
   
   /// Stream of `error` events handled by this [Request].
   @DomName('IDBRequest.onerror')
@@ -1307,11 +1297,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static Transaction internalCreateTransaction() {
-    return new Transaction._internalWrap();
-  }
-
-  external factory Transaction._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Transaction.internal_() : super.internal_();
@@ -1319,28 +1305,28 @@
 
   @DomName('IDBTransaction.db')
   @DocsEditable()
-  Database get db => wrap_jso(_blink.BlinkIDBTransaction.instance.db_Getter_(unwrap_jso(this)));
+  Database get db => _blink.BlinkIDBTransaction.instance.db_Getter_(this);
   
   @DomName('IDBTransaction.error')
   @DocsEditable()
-  DomError get error => wrap_jso(_blink.BlinkIDBTransaction.instance.error_Getter_(unwrap_jso(this)));
+  DomError get error => _blink.BlinkIDBTransaction.instance.error_Getter_(this);
   
   @DomName('IDBTransaction.mode')
   @DocsEditable()
-  String get mode => _blink.BlinkIDBTransaction.instance.mode_Getter_(unwrap_jso(this));
+  String get mode => _blink.BlinkIDBTransaction.instance.mode_Getter_(this);
   
   @DomName('IDBTransaction.objectStoreNames')
   @DocsEditable()
   @Experimental() // untriaged
-  List<String> get objectStoreNames => wrap_jso(_blink.BlinkIDBTransaction.instance.objectStoreNames_Getter_(unwrap_jso(this)));
+  List<String> get objectStoreNames => _blink.BlinkIDBTransaction.instance.objectStoreNames_Getter_(this);
   
   @DomName('IDBTransaction.abort')
   @DocsEditable()
-  void abort() => _blink.BlinkIDBTransaction.instance.abort_Callback_0_(unwrap_jso(this));
+  void abort() => _blink.BlinkIDBTransaction.instance.abort_Callback_0_(this);
   
   @DomName('IDBTransaction.objectStore')
   @DocsEditable()
-  ObjectStore objectStore(String name) => wrap_jso(_blink.BlinkIDBTransaction.instance.objectStore_Callback_1_(unwrap_jso(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')
@@ -1377,18 +1363,14 @@
   factory VersionChangeEvent(String type, [Map eventInitDict]) {
     if (eventInitDict != null) {
       var eventInitDict_1 = convertDartToNative_Dictionary(eventInitDict);
-      return wrap_jso(_blink.BlinkIDBVersionChangeEvent.instance.constructorCallback_2_(type, eventInitDict_1));
+      return _blink.BlinkIDBVersionChangeEvent.instance.constructorCallback_2_(type, eventInitDict_1);
     }
-    return wrap_jso(_blink.BlinkIDBVersionChangeEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkIDBVersionChangeEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static VersionChangeEvent internalCreateVersionChangeEvent() {
-    return new VersionChangeEvent._internalWrap();
-  }
-
-  external factory VersionChangeEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   VersionChangeEvent.internal_() : super.internal_();
@@ -1397,19 +1379,19 @@
   @DomName('IDBVersionChangeEvent.dataLoss')
   @DocsEditable()
   @Experimental() // untriaged
-  String get dataLoss => _blink.BlinkIDBVersionChangeEvent.instance.dataLoss_Getter_(unwrap_jso(this));
+  String get dataLoss => _blink.BlinkIDBVersionChangeEvent.instance.dataLoss_Getter_(this);
   
   @DomName('IDBVersionChangeEvent.dataLossMessage')
   @DocsEditable()
   @Experimental() // untriaged
-  String get dataLossMessage => _blink.BlinkIDBVersionChangeEvent.instance.dataLossMessage_Getter_(unwrap_jso(this));
+  String get dataLossMessage => _blink.BlinkIDBVersionChangeEvent.instance.dataLossMessage_Getter_(this);
   
   @DomName('IDBVersionChangeEvent.newVersion')
   @DocsEditable()
-  int get newVersion => _blink.BlinkIDBVersionChangeEvent.instance.newVersion_Getter_(unwrap_jso(this));
+  int get newVersion => _blink.BlinkIDBVersionChangeEvent.instance.newVersion_Getter_(this);
   
   @DomName('IDBVersionChangeEvent.oldVersion')
   @DocsEditable()
-  int get oldVersion => _blink.BlinkIDBVersionChangeEvent.instance.oldVersion_Getter_(unwrap_jso(this));
+  int get oldVersion => _blink.BlinkIDBVersionChangeEvent.instance.oldVersion_Getter_(this);
   
 }
diff --git a/sdk/lib/internal/iterable.dart b/sdk/lib/internal/iterable.dart
index f3e3166..7104c27 100644
--- a/sdk/lib/internal/iterable.dart
+++ b/sdk/lib/internal/iterable.dart
@@ -172,7 +172,8 @@
 
   Iterable<E> where(bool test(E element)) => super.where(test);
 
-  Iterable map(f(E element)) => new MappedListIterable(this, f);
+  Iterable/*<T>*/ map/*<T>*/(/*=T*/ f(E element)) =>
+      new MappedListIterable<E, dynamic/*=T*/ >(this, f);
 
   E reduce(E combine(var value, E element)) {
     int length = this.length;
@@ -188,7 +189,9 @@
     return value;
   }
 
-  fold(var initialValue, combine(var previousValue, E element)) {
+  /*=T*/ fold/*<T>*/(
+      var/*=T*/ initialValue, /*=T*/ combine(
+          var/*=T*/ previousValue, E element)) {
     var value = initialValue;
     int length = this.length;
     for (int i = 0; i < length; i++) {
@@ -555,7 +558,7 @@
 
 class TakeWhileIterator<E> extends Iterator<E> {
   final Iterator<E> _iterator;
-  final _ElementPredicate _f;
+  final _ElementPredicate<E> _f;
   bool _isFinished = false;
 
   TakeWhileIterator(this._iterator, bool this._f(E element));
@@ -637,7 +640,7 @@
 
 class SkipWhileIterable<E> extends Iterable<E> {
   final Iterable<E> _iterable;
-  final _ElementPredicate _f;
+  final _ElementPredicate<E> _f;
 
   SkipWhileIterable(this._iterable, bool this._f(E element));
 
@@ -648,7 +651,7 @@
 
 class SkipWhileIterator<E> extends Iterator<E> {
   final Iterator<E> _iterator;
-  final _ElementPredicate _f;
+  final _ElementPredicate<E> _f;
   bool _hasSkipped = false;
 
   SkipWhileIterator(this._iterator, bool this._f(E element));
@@ -713,13 +716,15 @@
 
   Iterable<E> where(bool test(E element)) => this;
 
-  Iterable map(f(E element)) => const EmptyIterable();
+  Iterable/*<T>*/ map/*<T>*/(/*=T*/ f(E element)) => const EmptyIterable();
 
   E reduce(E combine(E value, E element)) {
     throw IterableElementError.noElement();
   }
 
-  fold(var initialValue, combine(var previousValue, E element)) {
+  /*=T*/ fold/*<T>*/(
+      var/*=T*/ initialValue, /*=T*/ combine(
+          var/*=T*/ previousValue, E element)) {
     return initialValue;
   }
 
@@ -737,9 +742,9 @@
 
   Iterable<E> takeWhile(bool test(E element)) => this;
 
-  List toList({ bool growable: true }) => growable ? <E>[] : new List<E>(0);
+  List<E> toList({bool growable: true}) => growable ? <E>[] : new List<E>(0);
 
-  Set toSet() => new Set<E>();
+  Set<E> toSet() => new Set<E>();
 }
 
 /** The always empty iterator. */
diff --git a/sdk/lib/io/secure_socket.dart b/sdk/lib/io/secure_socket.dart
index c271d77..07ef23e 100644
--- a/sdk/lib/io/secure_socket.dart
+++ b/sdk/lib/io/secure_socket.dart
@@ -842,7 +842,9 @@
   }
 
   void _tryFilter() {
-    if (_status == CLOSED) return;
+    if (_status == CLOSED) {
+      return;
+    }
     if (_filterPending && !_filterActive) {
       _filterActive = true;
       _filterPending = false;
@@ -858,7 +860,9 @@
         if (_filterStatus.writeEmpty && _closedWrite && !_socketClosedWrite) {
           // Checks for and handles all cases of partially closed sockets.
           shutdown(SocketDirection.SEND);
-          if (_status == CLOSED) return;
+          if (_status == CLOSED) {
+            return;
+          }
         }
         if (_filterStatus.readEmpty && _socketClosedRead && !_closedRead) {
           if (_status == HANDSHAKE) {
@@ -870,14 +874,26 @@
           }
           _closeHandler();
         }
-        if (_status == CLOSED) return;
+        if (_status == CLOSED) {
+          return;
+        }
         if (_filterStatus.progress) {
           _filterPending = true;
-          if (_filterStatus.writePlaintextNoLongerFull) _sendWriteEvent();
-          if (_filterStatus.readEncryptedNoLongerFull) _readSocket();
-          if (_filterStatus.writeEncryptedNoLongerEmpty) _writeSocket();
-          if (_filterStatus.readPlaintextNoLongerEmpty) _scheduleReadEvent();
-          if (_status == HANDSHAKE) _secureHandshake();
+          if (_filterStatus.writeEncryptedNoLongerEmpty) {
+            _writeSocket();
+          }
+          if (_filterStatus.writePlaintextNoLongerFull) {
+            _sendWriteEvent();
+          }
+          if (_filterStatus.readEncryptedNoLongerFull) {
+            _readSocket();
+          }
+          if (_filterStatus.readPlaintextNoLongerEmpty) {
+            _scheduleReadEvent();
+          }
+          if (_status == HANDSHAKE) {
+            _secureHandshake();
+          }
         }
         _tryFilter();
       }).catchError(_reportError);
diff --git a/sdk/lib/js/dartium/cached_patches.dart b/sdk/lib/js/dartium/cached_patches.dart
new file mode 100644
index 0000000..1c3e7ea
--- /dev/null
+++ b/sdk/lib/js/dartium/cached_patches.dart
@@ -0,0 +1,6032 @@
+// START_OF_CACHED_PATCHES
+// 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.
+
+// DO NOT EDIT GENERATED FILE.
+
+library cached_patches;
+
+var cached_patches = {"dart:html": ["dart:html", "dart:html_js_interop_patch.dart", """import 'dart:js' as js_library;
+
+/**
+ * Placeholder object for cases where we need to determine exactly how many
+ * args were passed to a function.
+ */
+const _UNDEFINED_JS_CONST = const Object();
+
+patch class DivElement {
+  static Type get instanceRuntimeType => DivElementImpl;
+
+}
+class DivElementImpl extends DivElement implements js_library.JSObjectInterfacesDom {
+  DivElementImpl.internal_() : super.internal_();
+  get runtimeType => DivElement;
+  toString() => super.toString();
+}
+patch class ImageElement {
+  static Type get instanceRuntimeType => ImageElementImpl;
+
+}
+class ImageElementImpl extends ImageElement implements js_library.JSObjectInterfacesDom {
+  ImageElementImpl.internal_() : super.internal_();
+  get runtimeType => ImageElement;
+  toString() => super.toString();
+}
+patch class TreeWalker {
+  static Type get instanceRuntimeType => TreeWalkerImpl;
+
+}
+class TreeWalkerImpl extends TreeWalker implements js_library.JSObjectInterfacesDom {
+  TreeWalkerImpl.internal_() : super.internal_();
+  get runtimeType => TreeWalker;
+  toString() => super.toString();
+}
+patch class TableSectionElement {
+  static Type get instanceRuntimeType => TableSectionElementImpl;
+
+}
+class TableSectionElementImpl extends TableSectionElement implements js_library.JSObjectInterfacesDom {
+  TableSectionElementImpl.internal_() : super.internal_();
+  get runtimeType => TableSectionElement;
+  toString() => super.toString();
+}
+patch class DetailsElement {
+  static Type get instanceRuntimeType => DetailsElementImpl;
+
+}
+class DetailsElementImpl extends DetailsElement implements js_library.JSObjectInterfacesDom {
+  DetailsElementImpl.internal_() : super.internal_();
+  get runtimeType => DetailsElement;
+  toString() => super.toString();
+}
+patch class XPathResult {
+  static Type get instanceRuntimeType => XPathResultImpl;
+
+}
+class XPathResultImpl extends XPathResult implements js_library.JSObjectInterfacesDom {
+  XPathResultImpl.internal_() : super.internal_();
+  get runtimeType => XPathResult;
+  toString() => super.toString();
+}
+patch class HttpRequest {
+  static Type get instanceRuntimeType => HttpRequestImpl;
+
+}
+class HttpRequestImpl extends HttpRequest implements js_library.JSObjectInterfacesDom {
+  HttpRequestImpl.internal_() : super.internal_();
+  get runtimeType => HttpRequest;
+  toString() => super.toString();
+}
+patch class SpeechSynthesisUtterance {
+  static Type get instanceRuntimeType => SpeechSynthesisUtteranceImpl;
+
+}
+class SpeechSynthesisUtteranceImpl extends SpeechSynthesisUtterance implements js_library.JSObjectInterfacesDom {
+  SpeechSynthesisUtteranceImpl.internal_() : super.internal_();
+  get runtimeType => SpeechSynthesisUtterance;
+  toString() => super.toString();
+}
+patch class CredentialsContainer {
+  static Type get instanceRuntimeType => CredentialsContainerImpl;
+
+}
+class CredentialsContainerImpl extends CredentialsContainer implements js_library.JSObjectInterfacesDom {
+  CredentialsContainerImpl.internal_() : super.internal_();
+  get runtimeType => CredentialsContainer;
+  toString() => super.toString();
+}
+patch class MessageChannel {
+  static Type get instanceRuntimeType => MessageChannelImpl;
+
+}
+class MessageChannelImpl extends MessageChannel implements js_library.JSObjectInterfacesDom {
+  MessageChannelImpl.internal_() : super.internal_();
+  get runtimeType => MessageChannel;
+  toString() => super.toString();
+}
+patch class CloseEvent {
+  static Type get instanceRuntimeType => CloseEventImpl;
+
+}
+class CloseEventImpl extends CloseEvent implements js_library.JSObjectInterfacesDom {
+  CloseEventImpl.internal_() : super.internal_();
+  get runtimeType => CloseEvent;
+  toString() => super.toString();
+}
+patch class ProgressEvent {
+  static Type get instanceRuntimeType => ProgressEventImpl;
+
+}
+class ProgressEventImpl extends ProgressEvent implements js_library.JSObjectInterfacesDom {
+  ProgressEventImpl.internal_() : super.internal_();
+  get runtimeType => ProgressEvent;
+  toString() => super.toString();
+}
+patch class MediaController {
+  static Type get instanceRuntimeType => MediaControllerImpl;
+
+}
+class MediaControllerImpl extends MediaController implements js_library.JSObjectInterfacesDom {
+  MediaControllerImpl.internal_() : super.internal_();
+  get runtimeType => MediaController;
+  toString() => super.toString();
+}
+patch class VRDevice {
+  static Type get instanceRuntimeType => VRDeviceImpl;
+
+}
+class VRDeviceImpl extends VRDevice implements js_library.JSObjectInterfacesDom {
+  VRDeviceImpl.internal_() : super.internal_();
+  get runtimeType => VRDevice;
+  toString() => super.toString();
+}
+patch class SpeechSynthesis {
+  static Type get instanceRuntimeType => SpeechSynthesisImpl;
+
+}
+class SpeechSynthesisImpl extends SpeechSynthesis implements js_library.JSObjectInterfacesDom {
+  SpeechSynthesisImpl.internal_() : super.internal_();
+  get runtimeType => SpeechSynthesis;
+  toString() => super.toString();
+}
+patch class HtmlCollection {
+  static Type get instanceRuntimeType => HtmlCollectionImpl;
+
+}
+class HtmlCollectionImpl extends HtmlCollection implements js_library.JSObjectInterfacesDom {
+  HtmlCollectionImpl.internal_() : super.internal_();
+  get runtimeType => HtmlCollection;
+  toString() => super.toString();
+}
+patch class Element {
+  static Type get instanceRuntimeType => ElementImpl;
+
+}
+class ElementImpl extends Element implements js_library.JSObjectInterfacesDom {
+  ElementImpl.internal_() : super.internal_();
+  get runtimeType => Element;
+  toString() => super.toString();
+}
+patch class Plugin {
+  static Type get instanceRuntimeType => PluginImpl;
+
+}
+class PluginImpl extends Plugin implements js_library.JSObjectInterfacesDom {
+  PluginImpl.internal_() : super.internal_();
+  get runtimeType => Plugin;
+  toString() => super.toString();
+}
+patch class CssFontFaceRule {
+  static Type get instanceRuntimeType => CssFontFaceRuleImpl;
+
+}
+class CssFontFaceRuleImpl extends CssFontFaceRule implements js_library.JSObjectInterfacesDom {
+  CssFontFaceRuleImpl.internal_() : super.internal_();
+  get runtimeType => CssFontFaceRule;
+  toString() => super.toString();
+}
+patch class File {
+  static Type get instanceRuntimeType => FileImpl;
+
+}
+class FileImpl extends File implements js_library.JSObjectInterfacesDom {
+  FileImpl.internal_() : super.internal_();
+  get runtimeType => File;
+  toString() => super.toString();
+}
+patch class MouseEvent {
+  static Type get instanceRuntimeType => MouseEventImpl;
+
+}
+class MouseEventImpl extends MouseEvent implements js_library.JSObjectInterfacesDom {
+  MouseEventImpl.internal_() : super.internal_();
+  get runtimeType => MouseEvent;
+  toString() => super.toString();
+}
+patch class MenuElement {
+  static Type get instanceRuntimeType => MenuElementImpl;
+
+}
+class MenuElementImpl extends MenuElement implements js_library.JSObjectInterfacesDom {
+  MenuElementImpl.internal_() : super.internal_();
+  get runtimeType => MenuElement;
+  toString() => super.toString();
+}
+patch class ReadableByteStreamReader {
+  static Type get instanceRuntimeType => ReadableByteStreamReaderImpl;
+
+}
+class ReadableByteStreamReaderImpl extends ReadableByteStreamReader implements js_library.JSObjectInterfacesDom {
+  ReadableByteStreamReaderImpl.internal_() : super.internal_();
+  get runtimeType => ReadableByteStreamReader;
+  toString() => super.toString();
+}
+patch class FetchEvent {
+  static Type get instanceRuntimeType => FetchEventImpl;
+
+}
+class FetchEventImpl extends FetchEvent implements js_library.JSObjectInterfacesDom {
+  FetchEventImpl.internal_() : super.internal_();
+  get runtimeType => FetchEvent;
+  toString() => super.toString();
+}
+patch class MediaStreamTrack {
+  static Type get instanceRuntimeType => MediaStreamTrackImpl;
+
+}
+class MediaStreamTrackImpl extends MediaStreamTrack implements js_library.JSObjectInterfacesDom {
+  MediaStreamTrackImpl.internal_() : super.internal_();
+  get runtimeType => MediaStreamTrack;
+  toString() => super.toString();
+}
+patch class ShadowRoot {
+  static Type get instanceRuntimeType => ShadowRootImpl;
+
+}
+class ShadowRootImpl extends ShadowRoot implements js_library.JSObjectInterfacesDom {
+  ShadowRootImpl.internal_() : super.internal_();
+  get runtimeType => ShadowRoot;
+  toString() => super.toString();
+}
+patch class SpeechSynthesisEvent {
+  static Type get instanceRuntimeType => SpeechSynthesisEventImpl;
+
+}
+class SpeechSynthesisEventImpl extends SpeechSynthesisEvent implements js_library.JSObjectInterfacesDom {
+  SpeechSynthesisEventImpl.internal_() : super.internal_();
+  get runtimeType => SpeechSynthesisEvent;
+  toString() => super.toString();
+}
+patch class VRPositionState {
+  static Type get instanceRuntimeType => VRPositionStateImpl;
+
+}
+class VRPositionStateImpl extends VRPositionState implements js_library.JSObjectInterfacesDom {
+  VRPositionStateImpl.internal_() : super.internal_();
+  get runtimeType => VRPositionState;
+  toString() => super.toString();
+}
+patch class Window {
+  static Type get instanceRuntimeType => WindowImpl;
+
+}
+class WindowImpl extends Window implements js_library.JSObjectInterfacesDom {
+  WindowImpl.internal_() : super.internal_();
+  get runtimeType => Window;
+  toString() => super.toString();
+}
+patch class SpeechRecognition {
+  static Type get instanceRuntimeType => SpeechRecognitionImpl;
+
+}
+class SpeechRecognitionImpl extends SpeechRecognition implements js_library.JSObjectInterfacesDom {
+  SpeechRecognitionImpl.internal_() : super.internal_();
+  get runtimeType => SpeechRecognition;
+  toString() => super.toString();
+}
+patch class Console {
+  static Type get instanceRuntimeType => ConsoleImpl;
+
+}
+class ConsoleImpl extends Console implements js_library.JSObjectInterfacesDom {
+  ConsoleImpl.internal_() : super.internal_();
+  get runtimeType => Console;
+  toString() => super.toString();
+}
+patch class AutocompleteErrorEvent {
+  static Type get instanceRuntimeType => AutocompleteErrorEventImpl;
+
+}
+class AutocompleteErrorEventImpl extends AutocompleteErrorEvent implements js_library.JSObjectInterfacesDom {
+  AutocompleteErrorEventImpl.internal_() : super.internal_();
+  get runtimeType => AutocompleteErrorEvent;
+  toString() => super.toString();
+}
+patch class CanvasGradient {
+  static Type get instanceRuntimeType => CanvasGradientImpl;
+
+}
+class CanvasGradientImpl extends CanvasGradient implements js_library.JSObjectInterfacesDom {
+  CanvasGradientImpl.internal_() : super.internal_();
+  get runtimeType => CanvasGradient;
+  toString() => super.toString();
+}
+patch class MediaStream {
+  static Type get instanceRuntimeType => MediaStreamImpl;
+
+}
+class MediaStreamImpl extends MediaStream implements js_library.JSObjectInterfacesDom {
+  MediaStreamImpl.internal_() : super.internal_();
+  get runtimeType => MediaStream;
+  toString() => super.toString();
+}
+patch class _ClientRectList {
+  static Type get instanceRuntimeType => _ClientRectListImpl;
+
+}
+class _ClientRectListImpl extends _ClientRectList implements js_library.JSObjectInterfacesDom {
+  _ClientRectListImpl.internal_() : super.internal_();
+  get runtimeType => _ClientRectList;
+  toString() => super.toString();
+}
+patch class Document {
+  static Type get instanceRuntimeType => DocumentImpl;
+
+}
+class DocumentImpl extends Document implements js_library.JSObjectInterfacesDom {
+  DocumentImpl.internal_() : super.internal_();
+  get runtimeType => Document;
+  toString() => super.toString();
+}
+patch class MessageEvent {
+  static Type get instanceRuntimeType => MessageEventImpl;
+
+}
+class MessageEventImpl extends MessageEvent implements js_library.JSObjectInterfacesDom {
+  MessageEventImpl.internal_() : super.internal_();
+  get runtimeType => MessageEvent;
+  toString() => super.toString();
+}
+patch class RtcDtmfSender {
+  static Type get instanceRuntimeType => RtcDtmfSenderImpl;
+
+}
+class RtcDtmfSenderImpl extends RtcDtmfSender implements js_library.JSObjectInterfacesDom {
+  RtcDtmfSenderImpl.internal_() : super.internal_();
+  get runtimeType => RtcDtmfSender;
+  toString() => super.toString();
+}
+patch class ParamElement {
+  static Type get instanceRuntimeType => ParamElementImpl;
+
+}
+class ParamElementImpl extends ParamElement implements js_library.JSObjectInterfacesDom {
+  ParamElementImpl.internal_() : super.internal_();
+  get runtimeType => ParamElement;
+  toString() => super.toString();
+}
+patch class TextTrack {
+  static Type get instanceRuntimeType => TextTrackImpl;
+
+}
+class TextTrackImpl extends TextTrack implements js_library.JSObjectInterfacesDom {
+  TextTrackImpl.internal_() : super.internal_();
+  get runtimeType => TextTrack;
+  toString() => super.toString();
+}
+patch class ModElement {
+  static Type get instanceRuntimeType => ModElementImpl;
+
+}
+class ModElementImpl extends ModElement implements js_library.JSObjectInterfacesDom {
+  ModElementImpl.internal_() : super.internal_();
+  get runtimeType => ModElement;
+  toString() => super.toString();
+}
+patch class ScriptElement {
+  static Type get instanceRuntimeType => ScriptElementImpl;
+
+}
+class ScriptElementImpl extends ScriptElement implements js_library.JSObjectInterfacesDom {
+  ScriptElementImpl.internal_() : super.internal_();
+  get runtimeType => ScriptElement;
+  toString() => super.toString();
+}
+patch class VRFieldOfView {
+  static Type get instanceRuntimeType => VRFieldOfViewImpl;
+
+}
+class VRFieldOfViewImpl extends VRFieldOfView implements js_library.JSObjectInterfacesDom {
+  VRFieldOfViewImpl.internal_() : super.internal_();
+  get runtimeType => VRFieldOfView;
+  toString() => super.toString();
+}
+patch class SyncRegistration {
+  static Type get instanceRuntimeType => SyncRegistrationImpl;
+
+}
+class SyncRegistrationImpl extends SyncRegistration implements js_library.JSObjectInterfacesDom {
+  SyncRegistrationImpl.internal_() : super.internal_();
+  get runtimeType => SyncRegistration;
+  toString() => super.toString();
+}
+patch class Touch {
+  static Type get instanceRuntimeType => TouchImpl;
+
+}
+class TouchImpl extends Touch implements js_library.JSObjectInterfacesDom {
+  TouchImpl.internal_() : super.internal_();
+  get runtimeType => Touch;
+  toString() => super.toString();
+}
+patch class BarProp {
+  static Type get instanceRuntimeType => BarPropImpl;
+
+}
+class BarPropImpl extends BarProp implements js_library.JSObjectInterfacesDom {
+  BarPropImpl.internal_() : super.internal_();
+  get runtimeType => BarProp;
+  toString() => super.toString();
+}
+patch class DeviceLightEvent {
+  static Type get instanceRuntimeType => DeviceLightEventImpl;
+
+}
+class DeviceLightEventImpl extends DeviceLightEvent implements js_library.JSObjectInterfacesDom {
+  DeviceLightEventImpl.internal_() : super.internal_();
+  get runtimeType => DeviceLightEvent;
+  toString() => super.toString();
+}
+patch class MediaDevices {
+  static Type get instanceRuntimeType => MediaDevicesImpl;
+
+}
+class MediaDevicesImpl extends MediaDevices implements js_library.JSObjectInterfacesDom {
+  MediaDevicesImpl.internal_() : super.internal_();
+  get runtimeType => MediaDevices;
+  toString() => super.toString();
+}
+patch class Url {
+  static Type get instanceRuntimeType => UrlImpl;
+
+}
+class UrlImpl extends Url implements js_library.JSObjectInterfacesDom {
+  UrlImpl.internal_() : super.internal_();
+  get runtimeType => Url;
+  toString() => super.toString();
+}
+patch class EmbedElement {
+  static Type get instanceRuntimeType => EmbedElementImpl;
+
+}
+class EmbedElementImpl extends EmbedElement implements js_library.JSObjectInterfacesDom {
+  EmbedElementImpl.internal_() : super.internal_();
+  get runtimeType => EmbedElement;
+  toString() => super.toString();
+}
+patch class Metadata {
+  static Type get instanceRuntimeType => MetadataImpl;
+
+}
+class MetadataImpl extends Metadata implements js_library.JSObjectInterfacesDom {
+  MetadataImpl.internal_() : super.internal_();
+  get runtimeType => Metadata;
+  toString() => super.toString();
+}
+patch class _FileEntrySync {
+  static Type get instanceRuntimeType => _FileEntrySyncImpl;
+
+}
+class _FileEntrySyncImpl extends _FileEntrySync implements js_library.JSObjectInterfacesDom {
+  _FileEntrySyncImpl.internal_() : super.internal_();
+  get runtimeType => _FileEntrySync;
+  toString() => super.toString();
+}
+patch class BaseElement {
+  static Type get instanceRuntimeType => BaseElementImpl;
+
+}
+class BaseElementImpl extends BaseElement implements js_library.JSObjectInterfacesDom {
+  BaseElementImpl.internal_() : super.internal_();
+  get runtimeType => BaseElement;
+  toString() => super.toString();
+}
+patch class BRElement {
+  static Type get instanceRuntimeType => BRElementImpl;
+
+}
+class BRElementImpl extends BRElement implements js_library.JSObjectInterfacesDom {
+  BRElementImpl.internal_() : super.internal_();
+  get runtimeType => BRElement;
+  toString() => super.toString();
+}
+patch class Presentation {
+  static Type get instanceRuntimeType => PresentationImpl;
+
+}
+class PresentationImpl extends Presentation implements js_library.JSObjectInterfacesDom {
+  PresentationImpl.internal_() : super.internal_();
+  get runtimeType => Presentation;
+  toString() => super.toString();
+}
+patch class CircularGeofencingRegion {
+  static Type get instanceRuntimeType => CircularGeofencingRegionImpl;
+
+}
+class CircularGeofencingRegionImpl extends CircularGeofencingRegion implements js_library.JSObjectInterfacesDom {
+  CircularGeofencingRegionImpl.internal_() : super.internal_();
+  get runtimeType => CircularGeofencingRegion;
+  toString() => super.toString();
+}
+patch class PushManager {
+  static Type get instanceRuntimeType => PushManagerImpl;
+
+}
+class PushManagerImpl extends PushManager implements js_library.JSObjectInterfacesDom {
+  PushManagerImpl.internal_() : super.internal_();
+  get runtimeType => PushManager;
+  toString() => super.toString();
+}
+patch class PasswordCredential {
+  static Type get instanceRuntimeType => PasswordCredentialImpl;
+
+}
+class PasswordCredentialImpl extends PasswordCredential implements js_library.JSObjectInterfacesDom {
+  PasswordCredentialImpl.internal_() : super.internal_();
+  get runtimeType => PasswordCredential;
+  toString() => super.toString();
+}
+patch class ObjectElement {
+  static Type get instanceRuntimeType => ObjectElementImpl;
+
+}
+class ObjectElementImpl extends ObjectElement implements js_library.JSObjectInterfacesDom {
+  ObjectElementImpl.internal_() : super.internal_();
+  get runtimeType => ObjectElement;
+  toString() => super.toString();
+}
+patch class DomMatrix {
+  static Type get instanceRuntimeType => DomMatrixImpl;
+
+}
+class DomMatrixImpl extends DomMatrix implements js_library.JSObjectInterfacesDom {
+  DomMatrixImpl.internal_() : super.internal_();
+  get runtimeType => DomMatrix;
+  toString() => super.toString();
+}
+patch class AbstractWorker {
+  static Type get instanceRuntimeType => AbstractWorkerImpl;
+
+}
+class AbstractWorkerImpl extends AbstractWorker implements js_library.JSObjectInterfacesDom {
+  AbstractWorkerImpl.internal_() : super.internal_();
+  get runtimeType => AbstractWorker;
+  toString() => super.toString();
+}
+patch class ResourceProgressEvent {
+  static Type get instanceRuntimeType => ResourceProgressEventImpl;
+
+}
+class ResourceProgressEventImpl extends ResourceProgressEvent implements js_library.JSObjectInterfacesDom {
+  ResourceProgressEventImpl.internal_() : super.internal_();
+  get runtimeType => ResourceProgressEvent;
+  toString() => super.toString();
+}
+patch class ValidityState {
+  static Type get instanceRuntimeType => ValidityStateImpl;
+
+}
+class ValidityStateImpl extends ValidityState implements js_library.JSObjectInterfacesDom {
+  ValidityStateImpl.internal_() : super.internal_();
+  get runtimeType => ValidityState;
+  toString() => super.toString();
+}
+patch class HRElement {
+  static Type get instanceRuntimeType => HRElementImpl;
+
+}
+class HRElementImpl extends HRElement implements js_library.JSObjectInterfacesDom {
+  HRElementImpl.internal_() : super.internal_();
+  get runtimeType => HRElement;
+  toString() => super.toString();
+}
+patch class OptGroupElement {
+  static Type get instanceRuntimeType => OptGroupElementImpl;
+
+}
+class OptGroupElementImpl extends OptGroupElement implements js_library.JSObjectInterfacesDom {
+  OptGroupElementImpl.internal_() : super.internal_();
+  get runtimeType => OptGroupElement;
+  toString() => super.toString();
+}
+patch class Crypto {
+  static Type get instanceRuntimeType => CryptoImpl;
+
+}
+class CryptoImpl extends Crypto implements js_library.JSObjectInterfacesDom {
+  CryptoImpl.internal_() : super.internal_();
+  get runtimeType => Crypto;
+  toString() => super.toString();
+}
+patch class PerformanceTiming {
+  static Type get instanceRuntimeType => PerformanceTimingImpl;
+
+}
+class PerformanceTimingImpl extends PerformanceTiming implements js_library.JSObjectInterfacesDom {
+  PerformanceTimingImpl.internal_() : super.internal_();
+  get runtimeType => PerformanceTiming;
+  toString() => super.toString();
+}
+patch class RtcDataChannel {
+  static Type get instanceRuntimeType => RtcDataChannelImpl;
+
+}
+class RtcDataChannelImpl extends RtcDataChannel implements js_library.JSObjectInterfacesDom {
+  RtcDataChannelImpl.internal_() : super.internal_();
+  get runtimeType => RtcDataChannel;
+  toString() => super.toString();
+}
+patch class NavigatorOnLine {
+  static Type get instanceRuntimeType => NavigatorOnLineImpl;
+
+}
+class NavigatorOnLineImpl extends NavigatorOnLine implements js_library.JSObjectInterfacesDom {
+  NavigatorOnLineImpl.internal_() : super.internal_();
+  get runtimeType => NavigatorOnLine;
+  toString() => super.toString();
+}
+patch class _HTMLAppletElement {
+  static Type get instanceRuntimeType => _HTMLAppletElementImpl;
+
+}
+class _HTMLAppletElementImpl extends _HTMLAppletElement implements js_library.JSObjectInterfacesDom {
+  _HTMLAppletElementImpl.internal_() : super.internal_();
+  get runtimeType => _HTMLAppletElement;
+  toString() => super.toString();
+}
+patch class SpeechSynthesisVoice {
+  static Type get instanceRuntimeType => SpeechSynthesisVoiceImpl;
+
+}
+class SpeechSynthesisVoiceImpl extends SpeechSynthesisVoice implements js_library.JSObjectInterfacesDom {
+  SpeechSynthesisVoiceImpl.internal_() : super.internal_();
+  get runtimeType => SpeechSynthesisVoice;
+  toString() => super.toString();
+}
+patch class FontFaceSetLoadEvent {
+  static Type get instanceRuntimeType => FontFaceSetLoadEventImpl;
+
+}
+class FontFaceSetLoadEventImpl extends FontFaceSetLoadEvent implements js_library.JSObjectInterfacesDom {
+  FontFaceSetLoadEventImpl.internal_() : super.internal_();
+  get runtimeType => FontFaceSetLoadEvent;
+  toString() => super.toString();
+}
+patch class NavigatorStorageUtils {
+  static Type get instanceRuntimeType => NavigatorStorageUtilsImpl;
+
+}
+class NavigatorStorageUtilsImpl extends NavigatorStorageUtils implements js_library.JSObjectInterfacesDom {
+  NavigatorStorageUtilsImpl.internal_() : super.internal_();
+  get runtimeType => NavigatorStorageUtils;
+  toString() => super.toString();
+}
+patch class SourceElement {
+  static Type get instanceRuntimeType => SourceElementImpl;
+
+}
+class SourceElementImpl extends SourceElement implements js_library.JSObjectInterfacesDom {
+  SourceElementImpl.internal_() : super.internal_();
+  get runtimeType => SourceElement;
+  toString() => super.toString();
+}
+patch class InjectedScriptHost {
+  static Type get instanceRuntimeType => InjectedScriptHostImpl;
+
+}
+class InjectedScriptHostImpl extends InjectedScriptHost implements js_library.JSObjectInterfacesDom {
+  InjectedScriptHostImpl.internal_() : super.internal_();
+  get runtimeType => InjectedScriptHost;
+  toString() => super.toString();
+}
+patch class UIEvent {
+  static Type get instanceRuntimeType => UIEventImpl;
+
+}
+class UIEventImpl extends UIEvent implements js_library.JSObjectInterfacesDom {
+  UIEventImpl.internal_() : super.internal_();
+  get runtimeType => UIEvent;
+  toString() => super.toString();
+}
+patch class HtmlHtmlElement {
+  static Type get instanceRuntimeType => HtmlHtmlElementImpl;
+
+}
+class HtmlHtmlElementImpl extends HtmlHtmlElement implements js_library.JSObjectInterfacesDom {
+  HtmlHtmlElementImpl.internal_() : super.internal_();
+  get runtimeType => HtmlHtmlElement;
+  toString() => super.toString();
+}
+patch class ClipboardEvent {
+  static Type get instanceRuntimeType => ClipboardEventImpl;
+
+}
+class ClipboardEventImpl extends ClipboardEvent implements js_library.JSObjectInterfacesDom {
+  ClipboardEventImpl.internal_() : super.internal_();
+  get runtimeType => ClipboardEvent;
+  toString() => super.toString();
+}
+patch class OptionElement {
+  static Type get instanceRuntimeType => OptionElementImpl;
+
+}
+class OptionElementImpl extends OptionElement implements js_library.JSObjectInterfacesDom {
+  OptionElementImpl.internal_() : super.internal_();
+  get runtimeType => OptionElement;
+  toString() => super.toString();
+}
+patch class MediaSource {
+  static Type get instanceRuntimeType => MediaSourceImpl;
+
+}
+class MediaSourceImpl extends MediaSource implements js_library.JSObjectInterfacesDom {
+  MediaSourceImpl.internal_() : super.internal_();
+  get runtimeType => MediaSource;
+  toString() => super.toString();
+}
+patch class MediaKeyMessageEvent {
+  static Type get instanceRuntimeType => MediaKeyMessageEventImpl;
+
+}
+class MediaKeyMessageEventImpl extends MediaKeyMessageEvent implements js_library.JSObjectInterfacesDom {
+  MediaKeyMessageEventImpl.internal_() : super.internal_();
+  get runtimeType => MediaKeyMessageEvent;
+  toString() => super.toString();
+}
+patch class CustomEvent {
+  static Type get instanceRuntimeType => CustomEventImpl;
+
+}
+class CustomEventImpl extends CustomEvent implements js_library.JSObjectInterfacesDom {
+  CustomEventImpl.internal_() : super.internal_();
+  get runtimeType => CustomEvent;
+  toString() => super.toString();
+}
+patch class VttRegion {
+  static Type get instanceRuntimeType => VttRegionImpl;
+
+}
+class VttRegionImpl extends VttRegion implements js_library.JSObjectInterfacesDom {
+  VttRegionImpl.internal_() : super.internal_();
+  get runtimeType => VttRegion;
+  toString() => super.toString();
+}
+patch class HeadingElement {
+  static Type get instanceRuntimeType => HeadingElementImpl;
+
+}
+class HeadingElementImpl extends HeadingElement implements js_library.JSObjectInterfacesDom {
+  HeadingElementImpl.internal_() : super.internal_();
+  get runtimeType => HeadingElement;
+  toString() => super.toString();
+}
+patch class History {
+  static Type get instanceRuntimeType => HistoryImpl;
+
+}
+class HistoryImpl extends History implements js_library.JSObjectInterfacesDom {
+  HistoryImpl.internal_() : super.internal_();
+  get runtimeType => History;
+  toString() => super.toString();
+}
+patch class ServiceWorkerRegistration {
+  static Type get instanceRuntimeType => ServiceWorkerRegistrationImpl;
+
+}
+class ServiceWorkerRegistrationImpl extends ServiceWorkerRegistration implements js_library.JSObjectInterfacesDom {
+  ServiceWorkerRegistrationImpl.internal_() : super.internal_();
+  get runtimeType => ServiceWorkerRegistration;
+  toString() => super.toString();
+}
+patch class _WorkerNavigator {
+  static Type get instanceRuntimeType => _WorkerNavigatorImpl;
+
+}
+class _WorkerNavigatorImpl extends _WorkerNavigator implements js_library.JSObjectInterfacesDom {
+  _WorkerNavigatorImpl.internal_() : super.internal_();
+  get runtimeType => _WorkerNavigator;
+  toString() => super.toString();
+}
+patch class RtcStatsResponse {
+  static Type get instanceRuntimeType => RtcStatsResponseImpl;
+
+}
+class RtcStatsResponseImpl extends RtcStatsResponse implements js_library.JSObjectInterfacesDom {
+  RtcStatsResponseImpl.internal_() : super.internal_();
+  get runtimeType => RtcStatsResponse;
+  toString() => super.toString();
+}
+patch class DirectoryReader {
+  static Type get instanceRuntimeType => DirectoryReaderImpl;
+
+}
+class DirectoryReaderImpl extends DirectoryReader implements js_library.JSObjectInterfacesDom {
+  DirectoryReaderImpl.internal_() : super.internal_();
+  get runtimeType => DirectoryReader;
+  toString() => super.toString();
+}
+patch class Headers {
+  static Type get instanceRuntimeType => HeadersImpl;
+
+}
+class HeadersImpl extends Headers implements js_library.JSObjectInterfacesDom {
+  HeadersImpl.internal_() : super.internal_();
+  get runtimeType => Headers;
+  toString() => super.toString();
+}
+patch class DataListElement {
+  static Type get instanceRuntimeType => DataListElementImpl;
+
+}
+class DataListElementImpl extends DataListElement implements js_library.JSObjectInterfacesDom {
+  DataListElementImpl.internal_() : super.internal_();
+  get runtimeType => DataListElement;
+  toString() => super.toString();
+}
+patch class MediaList {
+  static Type get instanceRuntimeType => MediaListImpl;
+
+}
+class MediaListImpl extends MediaList implements js_library.JSObjectInterfacesDom {
+  MediaListImpl.internal_() : super.internal_();
+  get runtimeType => MediaList;
+  toString() => super.toString();
+}
+patch class ParentNode {
+  static Type get instanceRuntimeType => ParentNodeImpl;
+
+}
+class ParentNodeImpl extends ParentNode implements js_library.JSObjectInterfacesDom {
+  ParentNodeImpl.internal_() : super.internal_();
+  get runtimeType => ParentNode;
+  toString() => super.toString();
+}
+patch class _FileReaderSync {
+  static Type get instanceRuntimeType => _FileReaderSyncImpl;
+
+}
+class _FileReaderSyncImpl extends _FileReaderSync implements js_library.JSObjectInterfacesDom {
+  _FileReaderSyncImpl.internal_() : super.internal_();
+  get runtimeType => _FileReaderSync;
+  toString() => super.toString();
+}
+patch class DataTransferItemList {
+  static Type get instanceRuntimeType => DataTransferItemListImpl;
+
+}
+class DataTransferItemListImpl extends DataTransferItemList implements js_library.JSObjectInterfacesDom {
+  DataTransferItemListImpl.internal_() : super.internal_();
+  get runtimeType => DataTransferItemList;
+  toString() => super.toString();
+}
+patch class GlobalEventHandlers {
+  static Type get instanceRuntimeType => GlobalEventHandlersImpl;
+
+}
+class GlobalEventHandlersImpl extends GlobalEventHandlers implements js_library.JSObjectInterfacesDom {
+  GlobalEventHandlersImpl.internal_() : super.internal_();
+  get runtimeType => GlobalEventHandlers;
+  toString() => super.toString();
+}
+patch class DocumentFragment {
+  static Type get instanceRuntimeType => DocumentFragmentImpl;
+
+}
+class DocumentFragmentImpl extends DocumentFragment implements js_library.JSObjectInterfacesDom {
+  DocumentFragmentImpl.internal_() : super.internal_();
+  get runtimeType => DocumentFragment;
+  toString() => super.toString();
+}
+patch class DomImplementation {
+  static Type get instanceRuntimeType => DomImplementationImpl;
+
+}
+class DomImplementationImpl extends DomImplementation implements js_library.JSObjectInterfacesDom {
+  DomImplementationImpl.internal_() : super.internal_();
+  get runtimeType => DomImplementation;
+  toString() => super.toString();
+}
+patch class PeriodicSyncEvent {
+  static Type get instanceRuntimeType => PeriodicSyncEventImpl;
+
+}
+class PeriodicSyncEventImpl extends PeriodicSyncEvent implements js_library.JSObjectInterfacesDom {
+  PeriodicSyncEventImpl.internal_() : super.internal_();
+  get runtimeType => PeriodicSyncEvent;
+  toString() => super.toString();
+}
+patch class DialogElement {
+  static Type get instanceRuntimeType => DialogElementImpl;
+
+}
+class DialogElementImpl extends DialogElement implements js_library.JSObjectInterfacesDom {
+  DialogElementImpl.internal_() : super.internal_();
+  get runtimeType => DialogElement;
+  toString() => super.toString();
+}
+patch class PeriodicSyncRegistration {
+  static Type get instanceRuntimeType => PeriodicSyncRegistrationImpl;
+
+}
+class PeriodicSyncRegistrationImpl extends PeriodicSyncRegistration implements js_library.JSObjectInterfacesDom {
+  PeriodicSyncRegistrationImpl.internal_() : super.internal_();
+  get runtimeType => PeriodicSyncRegistration;
+  toString() => super.toString();
+}
+patch class MessagePort {
+  static Type get instanceRuntimeType => MessagePortImpl;
+
+}
+class MessagePortImpl extends MessagePort implements js_library.JSObjectInterfacesDom {
+  MessagePortImpl.internal_() : super.internal_();
+  get runtimeType => MessagePort;
+  toString() => super.toString();
+}
+patch class FileReader {
+  static Type get instanceRuntimeType => FileReaderImpl;
+
+}
+class FileReaderImpl extends FileReader implements js_library.JSObjectInterfacesDom {
+  FileReaderImpl.internal_() : super.internal_();
+  get runtimeType => FileReader;
+  toString() => super.toString();
+}
+patch class HtmlOptionsCollection {
+  static Type get instanceRuntimeType => HtmlOptionsCollectionImpl;
+
+}
+class HtmlOptionsCollectionImpl extends HtmlOptionsCollection implements js_library.JSObjectInterfacesDom {
+  HtmlOptionsCollectionImpl.internal_() : super.internal_();
+  get runtimeType => HtmlOptionsCollection;
+  toString() => super.toString();
+}
+patch class _HTMLFrameSetElement {
+  static Type get instanceRuntimeType => _HTMLFrameSetElementImpl;
+
+}
+class _HTMLFrameSetElementImpl extends _HTMLFrameSetElement implements js_library.JSObjectInterfacesDom {
+  _HTMLFrameSetElementImpl.internal_() : super.internal_();
+  get runtimeType => _HTMLFrameSetElement;
+  toString() => super.toString();
+}
+patch class PerformanceMeasure {
+  static Type get instanceRuntimeType => PerformanceMeasureImpl;
+
+}
+class PerformanceMeasureImpl extends PerformanceMeasure implements js_library.JSObjectInterfacesDom {
+  PerformanceMeasureImpl.internal_() : super.internal_();
+  get runtimeType => PerformanceMeasure;
+  toString() => super.toString();
+}
+patch class ServiceWorkerContainer {
+  static Type get instanceRuntimeType => ServiceWorkerContainerImpl;
+
+}
+class ServiceWorkerContainerImpl extends ServiceWorkerContainer implements js_library.JSObjectInterfacesDom {
+  ServiceWorkerContainerImpl.internal_() : super.internal_();
+  get runtimeType => ServiceWorkerContainer;
+  toString() => super.toString();
+}
+patch class TrackDefaultList {
+  static Type get instanceRuntimeType => TrackDefaultListImpl;
+
+}
+class TrackDefaultListImpl extends TrackDefaultList implements js_library.JSObjectInterfacesDom {
+  TrackDefaultListImpl.internal_() : super.internal_();
+  get runtimeType => TrackDefaultList;
+  toString() => super.toString();
+}
+patch class RelatedEvent {
+  static Type get instanceRuntimeType => RelatedEventImpl;
+
+}
+class RelatedEventImpl extends RelatedEvent implements js_library.JSObjectInterfacesDom {
+  RelatedEventImpl.internal_() : super.internal_();
+  get runtimeType => RelatedEvent;
+  toString() => super.toString();
+}
+patch class TableCaptionElement {
+  static Type get instanceRuntimeType => TableCaptionElementImpl;
+
+}
+class TableCaptionElementImpl extends TableCaptionElement implements js_library.JSObjectInterfacesDom {
+  TableCaptionElementImpl.internal_() : super.internal_();
+  get runtimeType => TableCaptionElement;
+  toString() => super.toString();
+}
+patch class ScrollState {
+  static Type get instanceRuntimeType => ScrollStateImpl;
+
+}
+class ScrollStateImpl extends ScrollState implements js_library.JSObjectInterfacesDom {
+  ScrollStateImpl.internal_() : super.internal_();
+  get runtimeType => ScrollState;
+  toString() => super.toString();
+}
+patch class MenuItemElement {
+  static Type get instanceRuntimeType => MenuItemElementImpl;
+
+}
+class MenuItemElementImpl extends MenuItemElement implements js_library.JSObjectInterfacesDom {
+  MenuItemElementImpl.internal_() : super.internal_();
+  get runtimeType => MenuItemElement;
+  toString() => super.toString();
+}
+patch class MediaKeyStatusMap {
+  static Type get instanceRuntimeType => MediaKeyStatusMapImpl;
+
+}
+class MediaKeyStatusMapImpl extends MediaKeyStatusMap implements js_library.JSObjectInterfacesDom {
+  MediaKeyStatusMapImpl.internal_() : super.internal_();
+  get runtimeType => MediaKeyStatusMap;
+  toString() => super.toString();
+}
+patch class RtcDataChannelEvent {
+  static Type get instanceRuntimeType => RtcDataChannelEventImpl;
+
+}
+class RtcDataChannelEventImpl extends RtcDataChannelEvent implements js_library.JSObjectInterfacesDom {
+  RtcDataChannelEventImpl.internal_() : super.internal_();
+  get runtimeType => RtcDataChannelEvent;
+  toString() => super.toString();
+}
+patch class MediaElement {
+  static Type get instanceRuntimeType => MediaElementImpl;
+
+}
+class MediaElementImpl extends MediaElement implements js_library.JSObjectInterfacesDom {
+  MediaElementImpl.internal_() : super.internal_();
+  get runtimeType => MediaElement;
+  toString() => super.toString();
+}
+patch class MediaDeviceInfo {
+  static Type get instanceRuntimeType => MediaDeviceInfoImpl;
+
+}
+class MediaDeviceInfoImpl extends MediaDeviceInfo implements js_library.JSObjectInterfacesDom {
+  MediaDeviceInfoImpl.internal_() : super.internal_();
+  get runtimeType => MediaDeviceInfo;
+  toString() => super.toString();
+}
+patch class StorageEvent {
+  static Type get instanceRuntimeType => StorageEventImpl;
+
+}
+class StorageEventImpl extends StorageEvent implements js_library.JSObjectInterfacesDom {
+  StorageEventImpl.internal_() : super.internal_();
+  get runtimeType => StorageEvent;
+  toString() => super.toString();
+}
+patch class FormData {
+  static Type get instanceRuntimeType => FormDataImpl;
+
+}
+class FormDataImpl extends FormData implements js_library.JSObjectInterfacesDom {
+  FormDataImpl.internal_() : super.internal_();
+  get runtimeType => FormData;
+  toString() => super.toString();
+}
+patch class PushEvent {
+  static Type get instanceRuntimeType => PushEventImpl;
+
+}
+class PushEventImpl extends PushEvent implements js_library.JSObjectInterfacesDom {
+  PushEventImpl.internal_() : super.internal_();
+  get runtimeType => PushEvent;
+  toString() => super.toString();
+}
+patch class CssPageRule {
+  static Type get instanceRuntimeType => CssPageRuleImpl;
+
+}
+class CssPageRuleImpl extends CssPageRule implements js_library.JSObjectInterfacesDom {
+  CssPageRuleImpl.internal_() : super.internal_();
+  get runtimeType => CssPageRule;
+  toString() => super.toString();
+}
+patch class PageTransitionEvent {
+  static Type get instanceRuntimeType => PageTransitionEventImpl;
+
+}
+class PageTransitionEventImpl extends PageTransitionEvent implements js_library.JSObjectInterfacesDom {
+  PageTransitionEventImpl.internal_() : super.internal_();
+  get runtimeType => PageTransitionEvent;
+  toString() => super.toString();
+}
+patch class MemoryInfo {
+  static Type get instanceRuntimeType => MemoryInfoImpl;
+
+}
+class MemoryInfoImpl extends MemoryInfo implements js_library.JSObjectInterfacesDom {
+  MemoryInfoImpl.internal_() : super.internal_();
+  get runtimeType => MemoryInfo;
+  toString() => super.toString();
+}
+patch class ChromiumValuebuffer {
+  static Type get instanceRuntimeType => ChromiumValuebufferImpl;
+
+}
+class ChromiumValuebufferImpl extends ChromiumValuebuffer implements js_library.JSObjectInterfacesDom {
+  ChromiumValuebufferImpl.internal_() : super.internal_();
+  get runtimeType => ChromiumValuebuffer;
+  toString() => super.toString();
+}
+patch class KeyframeEffect {
+  static Type get instanceRuntimeType => KeyframeEffectImpl;
+
+}
+class KeyframeEffectImpl extends KeyframeEffect implements js_library.JSObjectInterfacesDom {
+  KeyframeEffectImpl.internal_() : super.internal_();
+  get runtimeType => KeyframeEffect;
+  toString() => super.toString();
+}
+patch class XPathEvaluator {
+  static Type get instanceRuntimeType => XPathEvaluatorImpl;
+
+}
+class XPathEvaluatorImpl extends XPathEvaluator implements js_library.JSObjectInterfacesDom {
+  XPathEvaluatorImpl.internal_() : super.internal_();
+  get runtimeType => XPathEvaluator;
+  toString() => super.toString();
+}
+patch class ContentElement {
+  static Type get instanceRuntimeType => ContentElementImpl;
+
+}
+class ContentElementImpl extends ContentElement implements js_library.JSObjectInterfacesDom {
+  ContentElementImpl.internal_() : super.internal_();
+  get runtimeType => ContentElement;
+  toString() => super.toString();
+}
+patch class CompositionEvent {
+  static Type get instanceRuntimeType => CompositionEventImpl;
+
+}
+class CompositionEventImpl extends CompositionEvent implements js_library.JSObjectInterfacesDom {
+  CompositionEventImpl.internal_() : super.internal_();
+  get runtimeType => CompositionEvent;
+  toString() => super.toString();
+}
+patch class FileWriter {
+  static Type get instanceRuntimeType => FileWriterImpl;
+
+}
+class FileWriterImpl extends FileWriter implements js_library.JSObjectInterfacesDom {
+  FileWriterImpl.internal_() : super.internal_();
+  get runtimeType => FileWriter;
+  toString() => super.toString();
+}
+patch class SpanElement {
+  static Type get instanceRuntimeType => SpanElementImpl;
+
+}
+class SpanElementImpl extends SpanElement implements js_library.JSObjectInterfacesDom {
+  SpanElementImpl.internal_() : super.internal_();
+  get runtimeType => SpanElement;
+  toString() => super.toString();
+}
+patch class _WebKitCSSMatrix {
+  static Type get instanceRuntimeType => _WebKitCSSMatrixImpl;
+
+}
+class _WebKitCSSMatrixImpl extends _WebKitCSSMatrix implements js_library.JSObjectInterfacesDom {
+  _WebKitCSSMatrixImpl.internal_() : super.internal_();
+  get runtimeType => _WebKitCSSMatrix;
+  toString() => super.toString();
+}
+patch class WorkerPerformance {
+  static Type get instanceRuntimeType => WorkerPerformanceImpl;
+
+}
+class WorkerPerformanceImpl extends WorkerPerformance implements js_library.JSObjectInterfacesDom {
+  WorkerPerformanceImpl.internal_() : super.internal_();
+  get runtimeType => WorkerPerformance;
+  toString() => super.toString();
+}
+patch class TransitionEvent {
+  static Type get instanceRuntimeType => TransitionEventImpl;
+
+}
+class TransitionEventImpl extends TransitionEvent implements js_library.JSObjectInterfacesDom {
+  TransitionEventImpl.internal_() : super.internal_();
+  get runtimeType => TransitionEvent;
+  toString() => super.toString();
+}
+patch class GamepadEvent {
+  static Type get instanceRuntimeType => GamepadEventImpl;
+
+}
+class GamepadEventImpl extends GamepadEvent implements js_library.JSObjectInterfacesDom {
+  GamepadEventImpl.internal_() : super.internal_();
+  get runtimeType => GamepadEvent;
+  toString() => super.toString();
+}
+patch class _HTMLFontElement {
+  static Type get instanceRuntimeType => _HTMLFontElementImpl;
+
+}
+class _HTMLFontElementImpl extends _HTMLFontElement implements js_library.JSObjectInterfacesDom {
+  _HTMLFontElementImpl.internal_() : super.internal_();
+  get runtimeType => _HTMLFontElement;
+  toString() => super.toString();
+}
+patch class _Response {
+  static Type get instanceRuntimeType => _ResponseImpl;
+
+}
+class _ResponseImpl extends _Response implements js_library.JSObjectInterfacesDom {
+  _ResponseImpl.internal_() : super.internal_();
+  get runtimeType => _Response;
+  toString() => super.toString();
+}
+patch class _PagePopupController {
+  static Type get instanceRuntimeType => _PagePopupControllerImpl;
+
+}
+class _PagePopupControllerImpl extends _PagePopupController implements js_library.JSObjectInterfacesDom {
+  _PagePopupControllerImpl.internal_() : super.internal_();
+  get runtimeType => _PagePopupController;
+  toString() => super.toString();
+}
+patch class AnimationPlayerEvent {
+  static Type get instanceRuntimeType => AnimationPlayerEventImpl;
+
+}
+class AnimationPlayerEventImpl extends AnimationPlayerEvent implements js_library.JSObjectInterfacesDom {
+  AnimationPlayerEventImpl.internal_() : super.internal_();
+  get runtimeType => AnimationPlayerEvent;
+  toString() => super.toString();
+}
+patch class DomTokenList {
+  static Type get instanceRuntimeType => DomTokenListImpl;
+
+}
+class DomTokenListImpl extends DomTokenList implements js_library.JSObjectInterfacesDom {
+  DomTokenListImpl.internal_() : super.internal_();
+  get runtimeType => DomTokenList;
+  toString() => super.toString();
+}
+patch class _GamepadList {
+  static Type get instanceRuntimeType => _GamepadListImpl;
+
+}
+class _GamepadListImpl extends _GamepadList implements js_library.JSObjectInterfacesDom {
+  _GamepadListImpl.internal_() : super.internal_();
+  get runtimeType => _GamepadList;
+  toString() => super.toString();
+}
+patch class PluginArray {
+  static Type get instanceRuntimeType => PluginArrayImpl;
+
+}
+class PluginArrayImpl extends PluginArray implements js_library.JSObjectInterfacesDom {
+  PluginArrayImpl.internal_() : super.internal_();
+  get runtimeType => PluginArray;
+  toString() => super.toString();
+}
+patch class DomPoint {
+  static Type get instanceRuntimeType => DomPointImpl;
+
+}
+class DomPointImpl extends DomPoint implements js_library.JSObjectInterfacesDom {
+  DomPointImpl.internal_() : super.internal_();
+  get runtimeType => DomPoint;
+  toString() => super.toString();
+}
+patch class FileSystem {
+  static Type get instanceRuntimeType => FileSystemImpl;
+
+}
+class FileSystemImpl extends FileSystem implements js_library.JSObjectInterfacesDom {
+  FileSystemImpl.internal_() : super.internal_();
+  get runtimeType => FileSystem;
+  toString() => super.toString();
+}
+patch class NavigatorCpu {
+  static Type get instanceRuntimeType => NavigatorCpuImpl;
+
+}
+class NavigatorCpuImpl extends NavigatorCpu implements js_library.JSObjectInterfacesDom {
+  NavigatorCpuImpl.internal_() : super.internal_();
+  get runtimeType => NavigatorCpu;
+  toString() => super.toString();
+}
+patch class VideoTrack {
+  static Type get instanceRuntimeType => VideoTrackImpl;
+
+}
+class VideoTrackImpl extends VideoTrack implements js_library.JSObjectInterfacesDom {
+  VideoTrackImpl.internal_() : super.internal_();
+  get runtimeType => VideoTrack;
+  toString() => super.toString();
+}
+patch class QuoteElement {
+  static Type get instanceRuntimeType => QuoteElementImpl;
+
+}
+class QuoteElementImpl extends QuoteElement implements js_library.JSObjectInterfacesDom {
+  QuoteElementImpl.internal_() : super.internal_();
+  get runtimeType => QuoteElement;
+  toString() => super.toString();
+}
+patch class LabelElement {
+  static Type get instanceRuntimeType => LabelElementImpl;
+
+}
+class LabelElementImpl extends LabelElement implements js_library.JSObjectInterfacesDom {
+  LabelElementImpl.internal_() : super.internal_();
+  get runtimeType => LabelElement;
+  toString() => super.toString();
+}
+patch class TextAreaElement {
+  static Type get instanceRuntimeType => TextAreaElementImpl;
+
+}
+class TextAreaElementImpl extends TextAreaElement implements js_library.JSObjectInterfacesDom {
+  TextAreaElementImpl.internal_() : super.internal_();
+  get runtimeType => TextAreaElement;
+  toString() => super.toString();
+}
+patch class TextMetrics {
+  static Type get instanceRuntimeType => TextMetricsImpl;
+
+}
+class TextMetricsImpl extends TextMetrics implements js_library.JSObjectInterfacesDom {
+  TextMetricsImpl.internal_() : super.internal_();
+  get runtimeType => TextMetrics;
+  toString() => super.toString();
+}
+patch class Selection {
+  static Type get instanceRuntimeType => SelectionImpl;
+
+}
+class SelectionImpl extends Selection implements js_library.JSObjectInterfacesDom {
+  SelectionImpl.internal_() : super.internal_();
+  get runtimeType => Selection;
+  toString() => super.toString();
+}
+patch class NodeIterator {
+  static Type get instanceRuntimeType => NodeIteratorImpl;
+
+}
+class NodeIteratorImpl extends NodeIterator implements js_library.JSObjectInterfacesDom {
+  NodeIteratorImpl.internal_() : super.internal_();
+  get runtimeType => NodeIterator;
+  toString() => super.toString();
+}
+patch class _HTMLDirectoryElement {
+  static Type get instanceRuntimeType => _HTMLDirectoryElementImpl;
+
+}
+class _HTMLDirectoryElementImpl extends _HTMLDirectoryElement implements js_library.JSObjectInterfacesDom {
+  _HTMLDirectoryElementImpl.internal_() : super.internal_();
+  get runtimeType => _HTMLDirectoryElement;
+  toString() => super.toString();
+}
+patch class AreaElement {
+  static Type get instanceRuntimeType => AreaElementImpl;
+
+}
+class AreaElementImpl extends AreaElement implements js_library.JSObjectInterfacesDom {
+  AreaElementImpl.internal_() : super.internal_();
+  get runtimeType => AreaElement;
+  toString() => super.toString();
+}
+patch class Notification {
+  static Type get instanceRuntimeType => NotificationImpl;
+
+}
+class NotificationImpl extends Notification implements js_library.JSObjectInterfacesDom {
+  NotificationImpl.internal_() : super.internal_();
+  get runtimeType => Notification;
+  toString() => super.toString();
+}
+patch class TableCellElement {
+  static Type get instanceRuntimeType => TableCellElementImpl;
+
+}
+class TableCellElementImpl extends TableCellElement implements js_library.JSObjectInterfacesDom {
+  TableCellElementImpl.internal_() : super.internal_();
+  get runtimeType => TableCellElement;
+  toString() => super.toString();
+}
+patch class DomStringMap {
+  static Type get instanceRuntimeType => DomStringMapImpl;
+
+}
+class DomStringMapImpl extends DomStringMap implements js_library.JSObjectInterfacesDom {
+  DomStringMapImpl.internal_() : super.internal_();
+  get runtimeType => DomStringMap;
+  toString() => super.toString();
+}
+patch class Entry {
+  static Type get instanceRuntimeType => EntryImpl;
+
+}
+class EntryImpl extends Entry implements js_library.JSObjectInterfacesDom {
+  EntryImpl.internal_() : super.internal_();
+  get runtimeType => Entry;
+  toString() => super.toString();
+}
+patch class PeriodicSyncManager {
+  static Type get instanceRuntimeType => PeriodicSyncManagerImpl;
+
+}
+class PeriodicSyncManagerImpl extends PeriodicSyncManager implements js_library.JSObjectInterfacesDom {
+  PeriodicSyncManagerImpl.internal_() : super.internal_();
+  get runtimeType => PeriodicSyncManager;
+  toString() => super.toString();
+}
+patch class RtcIceCandidate {
+  static Type get instanceRuntimeType => RtcIceCandidateImpl;
+
+}
+class RtcIceCandidateImpl extends RtcIceCandidate implements js_library.JSObjectInterfacesDom {
+  RtcIceCandidateImpl.internal_() : super.internal_();
+  get runtimeType => RtcIceCandidate;
+  toString() => super.toString();
+}
+patch class SpeechRecognitionResult {
+  static Type get instanceRuntimeType => SpeechRecognitionResultImpl;
+
+}
+class SpeechRecognitionResultImpl extends SpeechRecognitionResult implements js_library.JSObjectInterfacesDom {
+  SpeechRecognitionResultImpl.internal_() : super.internal_();
+  get runtimeType => SpeechRecognitionResult;
+  toString() => super.toString();
+}
+patch class TextTrackList {
+  static Type get instanceRuntimeType => TextTrackListImpl;
+
+}
+class TextTrackListImpl extends TextTrackList implements js_library.JSObjectInterfacesDom {
+  TextTrackListImpl.internal_() : super.internal_();
+  get runtimeType => TextTrackList;
+  toString() => super.toString();
+}
+patch class _ServiceWorker {
+  static Type get instanceRuntimeType => _ServiceWorkerImpl;
+
+}
+class _ServiceWorkerImpl extends _ServiceWorker implements js_library.JSObjectInterfacesDom {
+  _ServiceWorkerImpl.internal_() : super.internal_();
+  get runtimeType => _ServiceWorker;
+  toString() => super.toString();
+}
+patch class SharedWorker {
+  static Type get instanceRuntimeType => SharedWorkerImpl;
+
+}
+class SharedWorkerImpl extends SharedWorker implements js_library.JSObjectInterfacesDom {
+  SharedWorkerImpl.internal_() : super.internal_();
+  get runtimeType => SharedWorker;
+  toString() => super.toString();
+}
+patch class EventTarget {
+  static Type get instanceRuntimeType => EventTargetImpl;
+
+}
+class EventTargetImpl extends EventTarget implements js_library.JSObjectInterfacesDom {
+  EventTargetImpl.internal_() : super.internal_();
+  get runtimeType => EventTarget;
+  toString() => super.toString();
+}
+patch class HtmlFormControlsCollection {
+  static Type get instanceRuntimeType => HtmlFormControlsCollectionImpl;
+
+}
+class HtmlFormControlsCollectionImpl extends HtmlFormControlsCollection implements js_library.JSObjectInterfacesDom {
+  HtmlFormControlsCollectionImpl.internal_() : super.internal_();
+  get runtimeType => HtmlFormControlsCollection;
+  toString() => super.toString();
+}
+patch class KeyboardEvent {
+  static Type get instanceRuntimeType => KeyboardEventImpl;
+
+}
+class KeyboardEventImpl extends KeyboardEvent implements js_library.JSObjectInterfacesDom {
+  KeyboardEventImpl.internal_() : super.internal_();
+  get runtimeType => KeyboardEvent;
+  toString() => super.toString();
+}
+patch class MidiMessageEvent {
+  static Type get instanceRuntimeType => MidiMessageEventImpl;
+
+}
+class MidiMessageEventImpl extends MidiMessageEvent implements js_library.JSObjectInterfacesDom {
+  MidiMessageEventImpl.internal_() : super.internal_();
+  get runtimeType => MidiMessageEvent;
+  toString() => super.toString();
+}
+patch class CacheStorage {
+  static Type get instanceRuntimeType => CacheStorageImpl;
+
+}
+class CacheStorageImpl extends CacheStorage implements js_library.JSObjectInterfacesDom {
+  CacheStorageImpl.internal_() : super.internal_();
+  get runtimeType => CacheStorage;
+  toString() => super.toString();
+}
+patch class CanvasElement {
+  static Type get instanceRuntimeType => CanvasElementImpl;
+
+}
+class CanvasElementImpl extends CanvasElement implements js_library.JSObjectInterfacesDom {
+  CanvasElementImpl.internal_() : super.internal_();
+  get runtimeType => CanvasElement;
+  toString() => super.toString();
+}
+patch class BatteryManager {
+  static Type get instanceRuntimeType => BatteryManagerImpl;
+
+}
+class BatteryManagerImpl extends BatteryManager implements js_library.JSObjectInterfacesDom {
+  BatteryManagerImpl.internal_() : super.internal_();
+  get runtimeType => BatteryManager;
+  toString() => super.toString();
+}
+patch class _StyleSheetList {
+  static Type get instanceRuntimeType => _StyleSheetListImpl;
+
+}
+class _StyleSheetListImpl extends _StyleSheetList implements js_library.JSObjectInterfacesDom {
+  _StyleSheetListImpl.internal_() : super.internal_();
+  get runtimeType => _StyleSheetList;
+  toString() => super.toString();
+}
+patch class Path2D {
+  static Type get instanceRuntimeType => Path2DImpl;
+
+}
+class Path2DImpl extends Path2D implements js_library.JSObjectInterfacesDom {
+  Path2DImpl.internal_() : super.internal_();
+  get runtimeType => Path2D;
+  toString() => super.toString();
+}
+patch class DeviceRotationRate {
+  static Type get instanceRuntimeType => DeviceRotationRateImpl;
+
+}
+class DeviceRotationRateImpl extends DeviceRotationRate implements js_library.JSObjectInterfacesDom {
+  DeviceRotationRateImpl.internal_() : super.internal_();
+  get runtimeType => DeviceRotationRate;
+  toString() => super.toString();
+}
+patch class Screen {
+  static Type get instanceRuntimeType => ScreenImpl;
+
+}
+class ScreenImpl extends Screen implements js_library.JSObjectInterfacesDom {
+  ScreenImpl.internal_() : super.internal_();
+  get runtimeType => Screen;
+  toString() => super.toString();
+}
+patch class StorageInfo {
+  static Type get instanceRuntimeType => StorageInfoImpl;
+
+}
+class StorageInfoImpl extends StorageInfo implements js_library.JSObjectInterfacesDom {
+  StorageInfoImpl.internal_() : super.internal_();
+  get runtimeType => StorageInfo;
+  toString() => super.toString();
+}
+patch class TableColElement {
+  static Type get instanceRuntimeType => TableColElementImpl;
+
+}
+class TableColElementImpl extends TableColElement implements js_library.JSObjectInterfacesDom {
+  TableColElementImpl.internal_() : super.internal_();
+  get runtimeType => TableColElement;
+  toString() => super.toString();
+}
+patch class CssStyleDeclaration {
+  static Type get instanceRuntimeType => CssStyleDeclarationImpl;
+
+}
+class CssStyleDeclarationImpl extends CssStyleDeclaration implements js_library.JSObjectInterfacesDom {
+  CssStyleDeclarationImpl.internal_() : super.internal_();
+  get runtimeType => CssStyleDeclaration;
+  toString() => super.toString();
+}
+patch class DomStringList {
+  static Type get instanceRuntimeType => DomStringListImpl;
+
+}
+class DomStringListImpl extends DomStringList implements js_library.JSObjectInterfacesDom {
+  DomStringListImpl.internal_() : super.internal_();
+  get runtimeType => DomStringList;
+  toString() => super.toString();
+}
+patch class StashedPortCollection {
+  static Type get instanceRuntimeType => StashedPortCollectionImpl;
+
+}
+class StashedPortCollectionImpl extends StashedPortCollection implements js_library.JSObjectInterfacesDom {
+  StashedPortCollectionImpl.internal_() : super.internal_();
+  get runtimeType => StashedPortCollection;
+  toString() => super.toString();
+}
+patch class SyncManager {
+  static Type get instanceRuntimeType => SyncManagerImpl;
+
+}
+class SyncManagerImpl extends SyncManager implements js_library.JSObjectInterfacesDom {
+  SyncManagerImpl.internal_() : super.internal_();
+  get runtimeType => SyncManager;
+  toString() => super.toString();
+}
+patch class HttpRequestUpload {
+  static Type get instanceRuntimeType => HttpRequestUploadImpl;
+
+}
+class HttpRequestUploadImpl extends HttpRequestUpload implements js_library.JSObjectInterfacesDom {
+  HttpRequestUploadImpl.internal_() : super.internal_();
+  get runtimeType => HttpRequestUpload;
+  toString() => super.toString();
+}
+patch class ReadableStreamReader {
+  static Type get instanceRuntimeType => ReadableStreamReaderImpl;
+
+}
+class ReadableStreamReaderImpl extends ReadableStreamReader implements js_library.JSObjectInterfacesDom {
+  ReadableStreamReaderImpl.internal_() : super.internal_();
+  get runtimeType => ReadableStreamReader;
+  toString() => super.toString();
+}
+patch class MediaKeySession {
+  static Type get instanceRuntimeType => MediaKeySessionImpl;
+
+}
+class MediaKeySessionImpl extends MediaKeySession implements js_library.JSObjectInterfacesDom {
+  MediaKeySessionImpl.internal_() : super.internal_();
+  get runtimeType => MediaKeySession;
+  toString() => super.toString();
+}
+patch class Gamepad {
+  static Type get instanceRuntimeType => GamepadImpl;
+
+}
+class GamepadImpl extends Gamepad implements js_library.JSObjectInterfacesDom {
+  GamepadImpl.internal_() : super.internal_();
+  get runtimeType => Gamepad;
+  toString() => super.toString();
+}
+patch class Worker {
+  static Type get instanceRuntimeType => WorkerImpl;
+
+}
+class WorkerImpl extends Worker implements js_library.JSObjectInterfacesDom {
+  WorkerImpl.internal_() : super.internal_();
+  get runtimeType => Worker;
+  toString() => super.toString();
+}
+patch class DefaultSessionStartEvent {
+  static Type get instanceRuntimeType => DefaultSessionStartEventImpl;
+
+}
+class DefaultSessionStartEventImpl extends DefaultSessionStartEvent implements js_library.JSObjectInterfacesDom {
+  DefaultSessionStartEventImpl.internal_() : super.internal_();
+  get runtimeType => DefaultSessionStartEvent;
+  toString() => super.toString();
+}
+patch class DListElement {
+  static Type get instanceRuntimeType => DListElementImpl;
+
+}
+class DListElementImpl extends DListElement implements js_library.JSObjectInterfacesDom {
+  DListElementImpl.internal_() : super.internal_();
+  get runtimeType => DListElement;
+  toString() => super.toString();
+}
+patch class FileError {
+  static Type get instanceRuntimeType => FileErrorImpl;
+
+}
+class FileErrorImpl extends FileError implements js_library.JSObjectInterfacesDom {
+  FileErrorImpl.internal_() : super.internal_();
+  get runtimeType => FileError;
+  toString() => super.toString();
+}
+patch class HeadElement {
+  static Type get instanceRuntimeType => HeadElementImpl;
+
+}
+class HeadElementImpl extends HeadElement implements js_library.JSObjectInterfacesDom {
+  HeadElementImpl.internal_() : super.internal_();
+  get runtimeType => HeadElement;
+  toString() => super.toString();
+}
+patch class BluetoothGattCharacteristic {
+  static Type get instanceRuntimeType => BluetoothGattCharacteristicImpl;
+
+}
+class BluetoothGattCharacteristicImpl extends BluetoothGattCharacteristic implements js_library.JSObjectInterfacesDom {
+  BluetoothGattCharacteristicImpl.internal_() : super.internal_();
+  get runtimeType => BluetoothGattCharacteristic;
+  toString() => super.toString();
+}
+patch class DomSettableTokenList {
+  static Type get instanceRuntimeType => DomSettableTokenListImpl;
+
+}
+class DomSettableTokenListImpl extends DomSettableTokenList implements js_library.JSObjectInterfacesDom {
+  DomSettableTokenListImpl.internal_() : super.internal_();
+  get runtimeType => DomSettableTokenList;
+  toString() => super.toString();
+}
+patch class _WorkerLocation {
+  static Type get instanceRuntimeType => _WorkerLocationImpl;
+
+}
+class _WorkerLocationImpl extends _WorkerLocation implements js_library.JSObjectInterfacesDom {
+  _WorkerLocationImpl.internal_() : super.internal_();
+  get runtimeType => _WorkerLocation;
+  toString() => super.toString();
+}
+patch class TouchList {
+  static Type get instanceRuntimeType => TouchListImpl;
+
+}
+class TouchListImpl extends TouchList implements js_library.JSObjectInterfacesDom {
+  TouchListImpl.internal_() : super.internal_();
+  get runtimeType => TouchList;
+  toString() => super.toString();
+}
+patch class MetaElement {
+  static Type get instanceRuntimeType => MetaElementImpl;
+
+}
+class MetaElementImpl extends MetaElement implements js_library.JSObjectInterfacesDom {
+  MetaElementImpl.internal_() : super.internal_();
+  get runtimeType => MetaElement;
+  toString() => super.toString();
+}
+patch class TrackElement {
+  static Type get instanceRuntimeType => TrackElementImpl;
+
+}
+class TrackElementImpl extends TrackElement implements js_library.JSObjectInterfacesDom {
+  TrackElementImpl.internal_() : super.internal_();
+  get runtimeType => TrackElement;
+  toString() => super.toString();
+}
+patch class WheelEvent {
+  static Type get instanceRuntimeType => WheelEventImpl;
+
+}
+class WheelEventImpl extends WheelEvent implements js_library.JSObjectInterfacesDom {
+  WheelEventImpl.internal_() : super.internal_();
+  get runtimeType => WheelEvent;
+  toString() => super.toString();
+}
+patch class DomMatrixReadOnly {
+  static Type get instanceRuntimeType => DomMatrixReadOnlyImpl;
+
+}
+class DomMatrixReadOnlyImpl extends DomMatrixReadOnly implements js_library.JSObjectInterfacesDom {
+  DomMatrixReadOnlyImpl.internal_() : super.internal_();
+  get runtimeType => DomMatrixReadOnly;
+  toString() => super.toString();
+}
+patch class FormElement {
+  static Type get instanceRuntimeType => FormElementImpl;
+
+}
+class FormElementImpl extends FormElement implements js_library.JSObjectInterfacesDom {
+  FormElementImpl.internal_() : super.internal_();
+  get runtimeType => FormElement;
+  toString() => super.toString();
+}
+patch class _SpeechRecognitionResultList {
+  static Type get instanceRuntimeType => _SpeechRecognitionResultListImpl;
+
+}
+class _SpeechRecognitionResultListImpl extends _SpeechRecognitionResultList implements js_library.JSObjectInterfacesDom {
+  _SpeechRecognitionResultListImpl.internal_() : super.internal_();
+  get runtimeType => _SpeechRecognitionResultList;
+  toString() => super.toString();
+}
+patch class CompositorWorkerGlobalScope {
+  static Type get instanceRuntimeType => CompositorWorkerGlobalScopeImpl;
+
+}
+class CompositorWorkerGlobalScopeImpl extends CompositorWorkerGlobalScope implements js_library.JSObjectInterfacesDom {
+  CompositorWorkerGlobalScopeImpl.internal_() : super.internal_();
+  get runtimeType => CompositorWorkerGlobalScope;
+  toString() => super.toString();
+}
+patch class PresentationAvailability {
+  static Type get instanceRuntimeType => PresentationAvailabilityImpl;
+
+}
+class PresentationAvailabilityImpl extends PresentationAvailability implements js_library.JSObjectInterfacesDom {
+  PresentationAvailabilityImpl.internal_() : super.internal_();
+  get runtimeType => PresentationAvailability;
+  toString() => super.toString();
+}
+patch class FontFaceSet {
+  static Type get instanceRuntimeType => FontFaceSetImpl;
+
+}
+class FontFaceSetImpl extends FontFaceSet implements js_library.JSObjectInterfacesDom {
+  FontFaceSetImpl.internal_() : super.internal_();
+  get runtimeType => FontFaceSet;
+  toString() => super.toString();
+}
+patch class _SubtleCrypto {
+  static Type get instanceRuntimeType => _SubtleCryptoImpl;
+
+}
+class _SubtleCryptoImpl extends _SubtleCrypto implements js_library.JSObjectInterfacesDom {
+  _SubtleCryptoImpl.internal_() : super.internal_();
+  get runtimeType => _SubtleCrypto;
+  toString() => super.toString();
+}
+patch class ButtonElement {
+  static Type get instanceRuntimeType => ButtonElementImpl;
+
+}
+class ButtonElementImpl extends ButtonElement implements js_library.JSObjectInterfacesDom {
+  ButtonElementImpl.internal_() : super.internal_();
+  get runtimeType => ButtonElement;
+  toString() => super.toString();
+}
+patch class ProcessingInstruction {
+  static Type get instanceRuntimeType => ProcessingInstructionImpl;
+
+}
+class ProcessingInstructionImpl extends ProcessingInstruction implements js_library.JSObjectInterfacesDom {
+  ProcessingInstructionImpl.internal_() : super.internal_();
+  get runtimeType => ProcessingInstruction;
+  toString() => super.toString();
+}
+patch class StashedMessagePort {
+  static Type get instanceRuntimeType => StashedMessagePortImpl;
+
+}
+class StashedMessagePortImpl extends StashedMessagePort implements js_library.JSObjectInterfacesDom {
+  StashedMessagePortImpl.internal_() : super.internal_();
+  get runtimeType => StashedMessagePort;
+  toString() => super.toString();
+}
+patch class DeviceAcceleration {
+  static Type get instanceRuntimeType => DeviceAccelerationImpl;
+
+}
+class DeviceAccelerationImpl extends DeviceAcceleration implements js_library.JSObjectInterfacesDom {
+  DeviceAccelerationImpl.internal_() : super.internal_();
+  get runtimeType => DeviceAcceleration;
+  toString() => super.toString();
+}
+patch class MapElement {
+  static Type get instanceRuntimeType => MapElementImpl;
+
+}
+class MapElementImpl extends MapElement implements js_library.JSObjectInterfacesDom {
+  MapElementImpl.internal_() : super.internal_();
+  get runtimeType => MapElement;
+  toString() => super.toString();
+}
+patch class PresentationSession {
+  static Type get instanceRuntimeType => PresentationSessionImpl;
+
+}
+class PresentationSessionImpl extends PresentationSession implements js_library.JSObjectInterfacesDom {
+  PresentationSessionImpl.internal_() : super.internal_();
+  get runtimeType => PresentationSession;
+  toString() => super.toString();
+}
+patch class RtcDtmfToneChangeEvent {
+  static Type get instanceRuntimeType => RtcDtmfToneChangeEventImpl;
+
+}
+class RtcDtmfToneChangeEventImpl extends RtcDtmfToneChangeEvent implements js_library.JSObjectInterfacesDom {
+  RtcDtmfToneChangeEventImpl.internal_() : super.internal_();
+  get runtimeType => RtcDtmfToneChangeEvent;
+  toString() => super.toString();
+}
+patch class PerformanceCompositeTiming {
+  static Type get instanceRuntimeType => PerformanceCompositeTimingImpl;
+
+}
+class PerformanceCompositeTimingImpl extends PerformanceCompositeTiming implements js_library.JSObjectInterfacesDom {
+  PerformanceCompositeTimingImpl.internal_() : super.internal_();
+  get runtimeType => PerformanceCompositeTiming;
+  toString() => super.toString();
+}
+patch class NodeFilter {
+  static Type get instanceRuntimeType => NodeFilterImpl;
+
+}
+class NodeFilterImpl extends NodeFilter implements js_library.JSObjectInterfacesDom {
+  NodeFilterImpl.internal_() : super.internal_();
+  get runtimeType => NodeFilter;
+  toString() => super.toString();
+}
+patch class _DomRect {
+  static Type get instanceRuntimeType => _DomRectImpl;
+
+}
+class _DomRectImpl extends _DomRect implements js_library.JSObjectInterfacesDom {
+  _DomRectImpl.internal_() : super.internal_();
+  get runtimeType => _DomRect;
+  toString() => super.toString();
+}
+patch class PermissionStatus {
+  static Type get instanceRuntimeType => PermissionStatusImpl;
+
+}
+class PermissionStatusImpl extends PermissionStatus implements js_library.JSObjectInterfacesDom {
+  PermissionStatusImpl.internal_() : super.internal_();
+  get runtimeType => PermissionStatus;
+  toString() => super.toString();
+}
+patch class DeviceMotionEvent {
+  static Type get instanceRuntimeType => DeviceMotionEventImpl;
+
+}
+class DeviceMotionEventImpl extends DeviceMotionEvent implements js_library.JSObjectInterfacesDom {
+  DeviceMotionEventImpl.internal_() : super.internal_();
+  get runtimeType => DeviceMotionEvent;
+  toString() => super.toString();
+}
+patch class Comment {
+  static Type get instanceRuntimeType => CommentImpl;
+
+}
+class CommentImpl extends Comment implements js_library.JSObjectInterfacesDom {
+  CommentImpl.internal_() : super.internal_();
+  get runtimeType => Comment;
+  toString() => super.toString();
+}
+patch class CanvasPattern {
+  static Type get instanceRuntimeType => CanvasPatternImpl;
+
+}
+class CanvasPatternImpl extends CanvasPattern implements js_library.JSObjectInterfacesDom {
+  CanvasPatternImpl.internal_() : super.internal_();
+  get runtimeType => CanvasPattern;
+  toString() => super.toString();
+}
+patch class CompositorProxy {
+  static Type get instanceRuntimeType => CompositorProxyImpl;
+
+}
+class CompositorProxyImpl extends CompositorProxy implements js_library.JSObjectInterfacesDom {
+  CompositorProxyImpl.internal_() : super.internal_();
+  get runtimeType => CompositorProxy;
+  toString() => super.toString();
+}
+patch class MediaKeyError {
+  static Type get instanceRuntimeType => MediaKeyErrorImpl;
+
+}
+class MediaKeyErrorImpl extends MediaKeyError implements js_library.JSObjectInterfacesDom {
+  MediaKeyErrorImpl.internal_() : super.internal_();
+  get runtimeType => MediaKeyError;
+  toString() => super.toString();
+}
+patch class CssRule {
+  static Type get instanceRuntimeType => CssRuleImpl;
+
+}
+class CssRuleImpl extends CssRule implements js_library.JSObjectInterfacesDom {
+  CssRuleImpl.internal_() : super.internal_();
+  get runtimeType => CssRule;
+  toString() => super.toString();
+}
+patch class SpeechRecognitionAlternative {
+  static Type get instanceRuntimeType => SpeechRecognitionAlternativeImpl;
+
+}
+class SpeechRecognitionAlternativeImpl extends SpeechRecognitionAlternative implements js_library.JSObjectInterfacesDom {
+  SpeechRecognitionAlternativeImpl.internal_() : super.internal_();
+  get runtimeType => SpeechRecognitionAlternative;
+  toString() => super.toString();
+}
+patch class XPathExpression {
+  static Type get instanceRuntimeType => XPathExpressionImpl;
+
+}
+class XPathExpressionImpl extends XPathExpression implements js_library.JSObjectInterfacesDom {
+  XPathExpressionImpl.internal_() : super.internal_();
+  get runtimeType => XPathExpression;
+  toString() => super.toString();
+}
+patch class Permissions {
+  static Type get instanceRuntimeType => PermissionsImpl;
+
+}
+class PermissionsImpl extends Permissions implements js_library.JSObjectInterfacesDom {
+  PermissionsImpl.internal_() : super.internal_();
+  get runtimeType => Permissions;
+  toString() => super.toString();
+}
+patch class PerformanceNavigation {
+  static Type get instanceRuntimeType => PerformanceNavigationImpl;
+
+}
+class PerformanceNavigationImpl extends PerformanceNavigation implements js_library.JSObjectInterfacesDom {
+  PerformanceNavigationImpl.internal_() : super.internal_();
+  get runtimeType => PerformanceNavigation;
+  toString() => super.toString();
+}
+patch class SecurityPolicyViolationEvent {
+  static Type get instanceRuntimeType => SecurityPolicyViolationEventImpl;
+
+}
+class SecurityPolicyViolationEventImpl extends SecurityPolicyViolationEvent implements js_library.JSObjectInterfacesDom {
+  SecurityPolicyViolationEventImpl.internal_() : super.internal_();
+  get runtimeType => SecurityPolicyViolationEvent;
+  toString() => super.toString();
+}
+patch class TableElement {
+  static Type get instanceRuntimeType => TableElementImpl;
+
+}
+class TableElementImpl extends TableElement implements js_library.JSObjectInterfacesDom {
+  TableElementImpl.internal_() : super.internal_();
+  get runtimeType => TableElement;
+  toString() => super.toString();
+}
+patch class NavigatorID {
+  static Type get instanceRuntimeType => NavigatorIDImpl;
+
+}
+class NavigatorIDImpl extends NavigatorID implements js_library.JSObjectInterfacesDom {
+  NavigatorIDImpl.internal_() : super.internal_();
+  get runtimeType => NavigatorID;
+  toString() => super.toString();
+}
+patch class ServicePort {
+  static Type get instanceRuntimeType => ServicePortImpl;
+
+}
+class ServicePortImpl extends ServicePort implements js_library.JSObjectInterfacesDom {
+  ServicePortImpl.internal_() : super.internal_();
+  get runtimeType => ServicePort;
+  toString() => super.toString();
+}
+patch class TextTrackCue {
+  static Type get instanceRuntimeType => TextTrackCueImpl;
+
+}
+class TextTrackCueImpl extends TextTrackCue implements js_library.JSObjectInterfacesDom {
+  TextTrackCueImpl.internal_() : super.internal_();
+  get runtimeType => TextTrackCue;
+  toString() => super.toString();
+}
+patch class FileEntry {
+  static Type get instanceRuntimeType => FileEntryImpl;
+
+}
+class FileEntryImpl extends FileEntry implements js_library.JSObjectInterfacesDom {
+  FileEntryImpl.internal_() : super.internal_();
+  get runtimeType => FileEntry;
+  toString() => super.toString();
+}
+patch class _DOMFileSystemSync {
+  static Type get instanceRuntimeType => _DOMFileSystemSyncImpl;
+
+}
+class _DOMFileSystemSyncImpl extends _DOMFileSystemSync implements js_library.JSObjectInterfacesDom {
+  _DOMFileSystemSyncImpl.internal_() : super.internal_();
+  get runtimeType => _DOMFileSystemSync;
+  toString() => super.toString();
+}
+patch class Animation {
+  static Type get instanceRuntimeType => AnimationImpl;
+
+}
+class AnimationImpl extends Animation implements js_library.JSObjectInterfacesDom {
+  AnimationImpl.internal_() : super.internal_();
+  get runtimeType => Animation;
+  toString() => super.toString();
+}
+patch class Navigator {
+  static Type get instanceRuntimeType => NavigatorImpl;
+
+}
+class NavigatorImpl extends Navigator implements js_library.JSObjectInterfacesDom {
+  NavigatorImpl.internal_() : super.internal_();
+  get runtimeType => Navigator;
+  toString() => super.toString();
+}
+patch class MediaQueryList {
+  static Type get instanceRuntimeType => MediaQueryListImpl;
+
+}
+class MediaQueryListImpl extends MediaQueryList implements js_library.JSObjectInterfacesDom {
+  MediaQueryListImpl.internal_() : super.internal_();
+  get runtimeType => MediaQueryList;
+  toString() => super.toString();
+}
+patch class CssImportRule {
+  static Type get instanceRuntimeType => CssImportRuleImpl;
+
+}
+class CssImportRuleImpl extends CssImportRule implements js_library.JSObjectInterfacesDom {
+  CssImportRuleImpl.internal_() : super.internal_();
+  get runtimeType => CssImportRule;
+  toString() => super.toString();
+}
+patch class StorageQuota {
+  static Type get instanceRuntimeType => StorageQuotaImpl;
+
+}
+class StorageQuotaImpl extends StorageQuota implements js_library.JSObjectInterfacesDom {
+  StorageQuotaImpl.internal_() : super.internal_();
+  get runtimeType => StorageQuota;
+  toString() => super.toString();
+}
+patch class MediaQueryListEvent {
+  static Type get instanceRuntimeType => MediaQueryListEventImpl;
+
+}
+class MediaQueryListEventImpl extends MediaQueryListEvent implements js_library.JSObjectInterfacesDom {
+  MediaQueryListEventImpl.internal_() : super.internal_();
+  get runtimeType => MediaQueryListEvent;
+  toString() => super.toString();
+}
+patch class BluetoothGattRemoteServer {
+  static Type get instanceRuntimeType => BluetoothGattRemoteServerImpl;
+
+}
+class BluetoothGattRemoteServerImpl extends BluetoothGattRemoteServer implements js_library.JSObjectInterfacesDom {
+  BluetoothGattRemoteServerImpl.internal_() : super.internal_();
+  get runtimeType => BluetoothGattRemoteServer;
+  toString() => super.toString();
+}
+patch class FileList {
+  static Type get instanceRuntimeType => FileListImpl;
+
+}
+class FileListImpl extends FileList implements js_library.JSObjectInterfacesDom {
+  FileListImpl.internal_() : super.internal_();
+  get runtimeType => FileList;
+  toString() => super.toString();
+}
+patch class WindowClient {
+  static Type get instanceRuntimeType => WindowClientImpl;
+
+}
+class WindowClientImpl extends WindowClient implements js_library.JSObjectInterfacesDom {
+  WindowClientImpl.internal_() : super.internal_();
+  get runtimeType => WindowClient;
+  toString() => super.toString();
+}
+patch class ReadableStream {
+  static Type get instanceRuntimeType => ReadableStreamImpl;
+
+}
+class ReadableStreamImpl extends ReadableStream implements js_library.JSObjectInterfacesDom {
+  ReadableStreamImpl.internal_() : super.internal_();
+  get runtimeType => ReadableStream;
+  toString() => super.toString();
+}
+patch class Node {
+  static Type get instanceRuntimeType => NodeImpl;
+
+}
+class NodeImpl extends Node implements js_library.JSObjectInterfacesDom {
+  NodeImpl.internal_() : super.internal_();
+  get runtimeType => Node;
+  toString() => super.toString();
+}
+patch class DedicatedWorkerGlobalScope {
+  static Type get instanceRuntimeType => DedicatedWorkerGlobalScopeImpl;
+
+}
+class DedicatedWorkerGlobalScopeImpl extends DedicatedWorkerGlobalScope implements js_library.JSObjectInterfacesDom {
+  DedicatedWorkerGlobalScopeImpl.internal_() : super.internal_();
+  get runtimeType => DedicatedWorkerGlobalScope;
+  toString() => super.toString();
+}
+patch class AudioTrackList {
+  static Type get instanceRuntimeType => AudioTrackListImpl;
+
+}
+class AudioTrackListImpl extends AudioTrackList implements js_library.JSObjectInterfacesDom {
+  AudioTrackListImpl.internal_() : super.internal_();
+  get runtimeType => AudioTrackList;
+  toString() => super.toString();
+}
+patch class StyleMedia {
+  static Type get instanceRuntimeType => StyleMediaImpl;
+
+}
+class StyleMediaImpl extends StyleMedia implements js_library.JSObjectInterfacesDom {
+  StyleMediaImpl.internal_() : super.internal_();
+  get runtimeType => StyleMedia;
+  toString() => super.toString();
+}
+patch class WindowEventHandlers {
+  static Type get instanceRuntimeType => WindowEventHandlersImpl;
+
+}
+class WindowEventHandlersImpl extends WindowEventHandlers implements js_library.JSObjectInterfacesDom {
+  WindowEventHandlersImpl.internal_() : super.internal_();
+  get runtimeType => WindowEventHandlers;
+  toString() => super.toString();
+}
+patch class SourceInfo {
+  static Type get instanceRuntimeType => SourceInfoImpl;
+
+}
+class SourceInfoImpl extends SourceInfo implements js_library.JSObjectInterfacesDom {
+  SourceInfoImpl.internal_() : super.internal_();
+  get runtimeType => SourceInfo;
+  toString() => super.toString();
+}
+patch class _DirectoryEntrySync {
+  static Type get instanceRuntimeType => _DirectoryEntrySyncImpl;
+
+}
+class _DirectoryEntrySyncImpl extends _DirectoryEntrySync implements js_library.JSObjectInterfacesDom {
+  _DirectoryEntrySyncImpl.internal_() : super.internal_();
+  get runtimeType => _DirectoryEntrySync;
+  toString() => super.toString();
+}
+patch class AnimationEvent {
+  static Type get instanceRuntimeType => AnimationEventImpl;
+
+}
+class AnimationEventImpl extends AnimationEvent implements js_library.JSObjectInterfacesDom {
+  AnimationEventImpl.internal_() : super.internal_();
+  get runtimeType => AnimationEvent;
+  toString() => super.toString();
+}
+patch class PluginPlaceholderElement {
+  static Type get instanceRuntimeType => PluginPlaceholderElementImpl;
+
+}
+class PluginPlaceholderElementImpl extends PluginPlaceholderElement implements js_library.JSObjectInterfacesDom {
+  PluginPlaceholderElementImpl.internal_() : super.internal_();
+  get runtimeType => PluginPlaceholderElement;
+  toString() => super.toString();
+}
+patch class _MutationEvent {
+  static Type get instanceRuntimeType => _MutationEventImpl;
+
+}
+class _MutationEventImpl extends _MutationEvent implements js_library.JSObjectInterfacesDom {
+  _MutationEventImpl.internal_() : super.internal_();
+  get runtimeType => _MutationEvent;
+  toString() => super.toString();
+}
+patch class LinkElement {
+  static Type get instanceRuntimeType => LinkElementImpl;
+
+}
+class LinkElementImpl extends LinkElement implements js_library.JSObjectInterfacesDom {
+  LinkElementImpl.internal_() : super.internal_();
+  get runtimeType => LinkElement;
+  toString() => super.toString();
+}
+patch class TextTrackCueList {
+  static Type get instanceRuntimeType => TextTrackCueListImpl;
+
+}
+class TextTrackCueListImpl extends TextTrackCueList implements js_library.JSObjectInterfacesDom {
+  TextTrackCueListImpl.internal_() : super.internal_();
+  get runtimeType => TextTrackCueList;
+  toString() => super.toString();
+}
+patch class VideoPlaybackQuality {
+  static Type get instanceRuntimeType => VideoPlaybackQualityImpl;
+
+}
+class VideoPlaybackQualityImpl extends VideoPlaybackQuality implements js_library.JSObjectInterfacesDom {
+  VideoPlaybackQualityImpl.internal_() : super.internal_();
+  get runtimeType => VideoPlaybackQuality;
+  toString() => super.toString();
+}
+patch class IFrameElement {
+  static Type get instanceRuntimeType => IFrameElementImpl;
+
+}
+class IFrameElementImpl extends IFrameElement implements js_library.JSObjectInterfacesDom {
+  IFrameElementImpl.internal_() : super.internal_();
+  get runtimeType => IFrameElement;
+  toString() => super.toString();
+}
+patch class FontFace {
+  static Type get instanceRuntimeType => FontFaceImpl;
+
+}
+class FontFaceImpl extends FontFace implements js_library.JSObjectInterfacesDom {
+  FontFaceImpl.internal_() : super.internal_();
+  get runtimeType => FontFace;
+  toString() => super.toString();
+}
+patch class AnchorElement {
+  static Type get instanceRuntimeType => AnchorElementImpl;
+
+}
+class AnchorElementImpl extends AnchorElement implements js_library.JSObjectInterfacesDom {
+  AnchorElementImpl.internal_() : super.internal_();
+  get runtimeType => AnchorElement;
+  toString() => super.toString();
+}
+patch class XsltProcessor {
+  static Type get instanceRuntimeType => XsltProcessorImpl;
+
+}
+class XsltProcessorImpl extends XsltProcessor implements js_library.JSObjectInterfacesDom {
+  XsltProcessorImpl.internal_() : super.internal_();
+  get runtimeType => XsltProcessor;
+  toString() => super.toString();
+}
+patch class NavigatorLanguage {
+  static Type get instanceRuntimeType => NavigatorLanguageImpl;
+
+}
+class NavigatorLanguageImpl extends NavigatorLanguage implements js_library.JSObjectInterfacesDom {
+  NavigatorLanguageImpl.internal_() : super.internal_();
+  get runtimeType => NavigatorLanguage;
+  toString() => super.toString();
+}
+patch class ParagraphElement {
+  static Type get instanceRuntimeType => ParagraphElementImpl;
+
+}
+class ParagraphElementImpl extends ParagraphElement implements js_library.JSObjectInterfacesDom {
+  ParagraphElementImpl.internal_() : super.internal_();
+  get runtimeType => ParagraphElement;
+  toString() => super.toString();
+}
+patch class HmdvrDevice {
+  static Type get instanceRuntimeType => HmdvrDeviceImpl;
+
+}
+class HmdvrDeviceImpl extends HmdvrDevice implements js_library.JSObjectInterfacesDom {
+  HmdvrDeviceImpl.internal_() : super.internal_();
+  get runtimeType => HmdvrDevice;
+  toString() => super.toString();
+}
+patch class SourceBuffer {
+  static Type get instanceRuntimeType => SourceBufferImpl;
+
+}
+class SourceBufferImpl extends SourceBuffer implements js_library.JSObjectInterfacesDom {
+  SourceBufferImpl.internal_() : super.internal_();
+  get runtimeType => SourceBuffer;
+  toString() => super.toString();
+}
+patch class CssCharsetRule {
+  static Type get instanceRuntimeType => CssCharsetRuleImpl;
+
+}
+class CssCharsetRuleImpl extends CssCharsetRule implements js_library.JSObjectInterfacesDom {
+  CssCharsetRuleImpl.internal_() : super.internal_();
+  get runtimeType => CssCharsetRule;
+  toString() => super.toString();
+}
+patch class DeprecatedStorageQuota {
+  static Type get instanceRuntimeType => DeprecatedStorageQuotaImpl;
+
+}
+class DeprecatedStorageQuotaImpl extends DeprecatedStorageQuota implements js_library.JSObjectInterfacesDom {
+  DeprecatedStorageQuotaImpl.internal_() : super.internal_();
+  get runtimeType => DeprecatedStorageQuota;
+  toString() => super.toString();
+}
+patch class DataTransfer {
+  static Type get instanceRuntimeType => DataTransferImpl;
+
+}
+class DataTransferImpl extends DataTransfer implements js_library.JSObjectInterfacesDom {
+  DataTransferImpl.internal_() : super.internal_();
+  get runtimeType => DataTransfer;
+  toString() => super.toString();
+}
+patch class MutationObserver {
+  static Type get instanceRuntimeType => MutationObserverImpl;
+
+}
+class MutationObserverImpl extends MutationObserver implements js_library.JSObjectInterfacesDom {
+  MutationObserverImpl.internal_() : super.internal_();
+  get runtimeType => MutationObserver;
+  toString() => super.toString();
+}
+patch class XmlSerializer {
+  static Type get instanceRuntimeType => XmlSerializerImpl;
+
+}
+class XmlSerializerImpl extends XmlSerializer implements js_library.JSObjectInterfacesDom {
+  XmlSerializerImpl.internal_() : super.internal_();
+  get runtimeType => XmlSerializer;
+  toString() => super.toString();
+}
+patch class PictureElement {
+  static Type get instanceRuntimeType => PictureElementImpl;
+
+}
+class PictureElementImpl extends PictureElement implements js_library.JSObjectInterfacesDom {
+  PictureElementImpl.internal_() : super.internal_();
+  get runtimeType => PictureElement;
+  toString() => super.toString();
+}
+patch class MediaEncryptedEvent {
+  static Type get instanceRuntimeType => MediaEncryptedEventImpl;
+
+}
+class MediaEncryptedEventImpl extends MediaEncryptedEvent implements js_library.JSObjectInterfacesDom {
+  MediaEncryptedEventImpl.internal_() : super.internal_();
+  get runtimeType => MediaEncryptedEvent;
+  toString() => super.toString();
+}
+patch class TouchEvent {
+  static Type get instanceRuntimeType => TouchEventImpl;
+
+}
+class TouchEventImpl extends TouchEvent implements js_library.JSObjectInterfacesDom {
+  TouchEventImpl.internal_() : super.internal_();
+  get runtimeType => TouchEvent;
+  toString() => super.toString();
+}
+patch class ServiceWorkerMessageEvent {
+  static Type get instanceRuntimeType => ServiceWorkerMessageEventImpl;
+
+}
+class ServiceWorkerMessageEventImpl extends ServiceWorkerMessageEvent implements js_library.JSObjectInterfacesDom {
+  ServiceWorkerMessageEventImpl.internal_() : super.internal_();
+  get runtimeType => ServiceWorkerMessageEvent;
+  toString() => super.toString();
+}
+patch class MeterElement {
+  static Type get instanceRuntimeType => MeterElementImpl;
+
+}
+class MeterElementImpl extends MeterElement implements js_library.JSObjectInterfacesDom {
+  MeterElementImpl.internal_() : super.internal_();
+  get runtimeType => MeterElement;
+  toString() => super.toString();
+}
+patch class CssGroupingRule {
+  static Type get instanceRuntimeType => CssGroupingRuleImpl;
+
+}
+class CssGroupingRuleImpl extends CssGroupingRule implements js_library.JSObjectInterfacesDom {
+  CssGroupingRuleImpl.internal_() : super.internal_();
+  get runtimeType => CssGroupingRule;
+  toString() => super.toString();
+}
+patch class UListElement {
+  static Type get instanceRuntimeType => UListElementImpl;
+
+}
+class UListElementImpl extends UListElement implements js_library.JSObjectInterfacesDom {
+  UListElementImpl.internal_() : super.internal_();
+  get runtimeType => UListElement;
+  toString() => super.toString();
+}
+patch class Storage {
+  static Type get instanceRuntimeType => StorageImpl;
+
+}
+class StorageImpl extends Storage implements js_library.JSObjectInterfacesDom {
+  StorageImpl.internal_() : super.internal_();
+  get runtimeType => Storage;
+  toString() => super.toString();
+}
+patch class _DocumentType {
+  static Type get instanceRuntimeType => _DocumentTypeImpl;
+
+}
+class _DocumentTypeImpl extends _DocumentType implements js_library.JSObjectInterfacesDom {
+  _DocumentTypeImpl.internal_() : super.internal_();
+  get runtimeType => _DocumentType;
+  toString() => super.toString();
+}
+patch class ErrorEvent {
+  static Type get instanceRuntimeType => ErrorEventImpl;
+
+}
+class ErrorEventImpl extends ErrorEvent implements js_library.JSObjectInterfacesDom {
+  ErrorEventImpl.internal_() : super.internal_();
+  get runtimeType => ErrorEvent;
+  toString() => super.toString();
+}
+patch class BodyElement {
+  static Type get instanceRuntimeType => BodyElementImpl;
+
+}
+class BodyElementImpl extends BodyElement implements js_library.JSObjectInterfacesDom {
+  BodyElementImpl.internal_() : super.internal_();
+  get runtimeType => BodyElement;
+  toString() => super.toString();
+}
+patch class DeprecatedStorageInfo {
+  static Type get instanceRuntimeType => DeprecatedStorageInfoImpl;
+
+}
+class DeprecatedStorageInfoImpl extends DeprecatedStorageInfo implements js_library.JSObjectInterfacesDom {
+  DeprecatedStorageInfoImpl.internal_() : super.internal_();
+  get runtimeType => DeprecatedStorageInfo;
+  toString() => super.toString();
+}
+patch class Geoposition {
+  static Type get instanceRuntimeType => GeopositionImpl;
+
+}
+class GeopositionImpl extends Geoposition implements js_library.JSObjectInterfacesDom {
+  GeopositionImpl.internal_() : super.internal_();
+  get runtimeType => Geoposition;
+  toString() => super.toString();
+}
+patch class ApplicationCacheErrorEvent {
+  static Type get instanceRuntimeType => ApplicationCacheErrorEventImpl;
+
+}
+class ApplicationCacheErrorEventImpl extends ApplicationCacheErrorEvent implements js_library.JSObjectInterfacesDom {
+  ApplicationCacheErrorEventImpl.internal_() : super.internal_();
+  get runtimeType => ApplicationCacheErrorEvent;
+  toString() => super.toString();
+}
+patch class MutationRecord {
+  static Type get instanceRuntimeType => MutationRecordImpl;
+
+}
+class MutationRecordImpl extends MutationRecord implements js_library.JSObjectInterfacesDom {
+  MutationRecordImpl.internal_() : super.internal_();
+  get runtimeType => MutationRecord;
+  toString() => super.toString();
+}
+patch class FieldSetElement {
+  static Type get instanceRuntimeType => FieldSetElementImpl;
+
+}
+class FieldSetElementImpl extends FieldSetElement implements js_library.JSObjectInterfacesDom {
+  FieldSetElementImpl.internal_() : super.internal_();
+  get runtimeType => FieldSetElement;
+  toString() => super.toString();
+}
+patch class NonDocumentTypeChildNode {
+  static Type get instanceRuntimeType => NonDocumentTypeChildNodeImpl;
+
+}
+class NonDocumentTypeChildNodeImpl extends NonDocumentTypeChildNode implements js_library.JSObjectInterfacesDom {
+  NonDocumentTypeChildNodeImpl.internal_() : super.internal_();
+  get runtimeType => NonDocumentTypeChildNode;
+  toString() => super.toString();
+}
+patch class _DirectoryReaderSync {
+  static Type get instanceRuntimeType => _DirectoryReaderSyncImpl;
+
+}
+class _DirectoryReaderSyncImpl extends _DirectoryReaderSync implements js_library.JSObjectInterfacesDom {
+  _DirectoryReaderSyncImpl.internal_() : super.internal_();
+  get runtimeType => _DirectoryReaderSync;
+  toString() => super.toString();
+}
+patch class RtcSessionDescription {
+  static Type get instanceRuntimeType => RtcSessionDescriptionImpl;
+
+}
+class RtcSessionDescriptionImpl extends RtcSessionDescription implements js_library.JSObjectInterfacesDom {
+  RtcSessionDescriptionImpl.internal_() : super.internal_();
+  get runtimeType => RtcSessionDescription;
+  toString() => super.toString();
+}
+patch class PositionSensorVRDevice {
+  static Type get instanceRuntimeType => PositionSensorVRDeviceImpl;
+
+}
+class PositionSensorVRDeviceImpl extends PositionSensorVRDevice implements js_library.JSObjectInterfacesDom {
+  PositionSensorVRDeviceImpl.internal_() : super.internal_();
+  get runtimeType => PositionSensorVRDevice;
+  toString() => super.toString();
+}
+patch class Text {
+  static Type get instanceRuntimeType => TextImpl;
+
+}
+class TextImpl extends Text implements js_library.JSObjectInterfacesDom {
+  TextImpl.internal_() : super.internal_();
+  get runtimeType => Text;
+  toString() => super.toString();
+}
+patch class AnimationEffectTiming {
+  static Type get instanceRuntimeType => AnimationEffectTimingImpl;
+
+}
+class AnimationEffectTimingImpl extends AnimationEffectTiming implements js_library.JSObjectInterfacesDom {
+  AnimationEffectTimingImpl.internal_() : super.internal_();
+  get runtimeType => AnimationEffectTiming;
+  toString() => super.toString();
+}
+patch class PositionError {
+  static Type get instanceRuntimeType => PositionErrorImpl;
+
+}
+class PositionErrorImpl extends PositionError implements js_library.JSObjectInterfacesDom {
+  PositionErrorImpl.internal_() : super.internal_();
+  get runtimeType => PositionError;
+  toString() => super.toString();
+}
+patch class VideoTrackList {
+  static Type get instanceRuntimeType => VideoTrackListImpl;
+
+}
+class VideoTrackListImpl extends VideoTrackList implements js_library.JSObjectInterfacesDom {
+  VideoTrackListImpl.internal_() : super.internal_();
+  get runtimeType => VideoTrackList;
+  toString() => super.toString();
+}
+patch class GamepadButton {
+  static Type get instanceRuntimeType => GamepadButtonImpl;
+
+}
+class GamepadButtonImpl extends GamepadButton implements js_library.JSObjectInterfacesDom {
+  GamepadButtonImpl.internal_() : super.internal_();
+  get runtimeType => GamepadButton;
+  toString() => super.toString();
+}
+patch class WorkerConsole {
+  static Type get instanceRuntimeType => WorkerConsoleImpl;
+
+}
+class WorkerConsoleImpl extends WorkerConsole implements js_library.JSObjectInterfacesDom {
+  WorkerConsoleImpl.internal_() : super.internal_();
+  get runtimeType => WorkerConsole;
+  toString() => super.toString();
+}
+patch class TrackDefault {
+  static Type get instanceRuntimeType => TrackDefaultImpl;
+
+}
+class TrackDefaultImpl extends TrackDefault implements js_library.JSObjectInterfacesDom {
+  TrackDefaultImpl.internal_() : super.internal_();
+  get runtimeType => TrackDefault;
+  toString() => super.toString();
+}
+patch class FileStream {
+  static Type get instanceRuntimeType => FileStreamImpl;
+
+}
+class FileStreamImpl extends FileStream implements js_library.JSObjectInterfacesDom {
+  FileStreamImpl.internal_() : super.internal_();
+  get runtimeType => FileStream;
+  toString() => super.toString();
+}
+patch class _ClientRect {
+  static Type get instanceRuntimeType => _ClientRectImpl;
+
+}
+class _ClientRectImpl extends _ClientRect implements js_library.JSObjectInterfacesDom {
+  _ClientRectImpl.internal_() : super.internal_();
+  get runtimeType => _ClientRect;
+  toString() => super.toString();
+}
+patch class TemplateElement {
+  static Type get instanceRuntimeType => TemplateElementImpl;
+
+}
+class TemplateElementImpl extends TemplateElement implements js_library.JSObjectInterfacesDom {
+  TemplateElementImpl.internal_() : super.internal_();
+  get runtimeType => TemplateElement;
+  toString() => super.toString();
+}
+patch class RtcStatsReport {
+  static Type get instanceRuntimeType => RtcStatsReportImpl;
+
+}
+class RtcStatsReportImpl extends RtcStatsReport implements js_library.JSObjectInterfacesDom {
+  RtcStatsReportImpl.internal_() : super.internal_();
+  get runtimeType => RtcStatsReport;
+  toString() => super.toString();
+}
+patch class TimeRanges {
+  static Type get instanceRuntimeType => TimeRangesImpl;
+
+}
+class TimeRangesImpl extends TimeRanges implements js_library.JSObjectInterfacesDom {
+  TimeRangesImpl.internal_() : super.internal_();
+  get runtimeType => TimeRanges;
+  toString() => super.toString();
+}
+patch class _Request {
+  static Type get instanceRuntimeType => _RequestImpl;
+
+}
+class _RequestImpl extends _Request implements js_library.JSObjectInterfacesDom {
+  _RequestImpl.internal_() : super.internal_();
+  get runtimeType => _Request;
+  toString() => super.toString();
+}
+patch class _WindowTimers {
+  static Type get instanceRuntimeType => _WindowTimersImpl;
+
+}
+class _WindowTimersImpl extends _WindowTimers implements js_library.JSObjectInterfacesDom {
+  _WindowTimersImpl.internal_() : super.internal_();
+  get runtimeType => _WindowTimers;
+  toString() => super.toString();
+}
+patch class VttRegionList {
+  static Type get instanceRuntimeType => VttRegionListImpl;
+
+}
+class VttRegionListImpl extends VttRegionList implements js_library.JSObjectInterfacesDom {
+  VttRegionListImpl.internal_() : super.internal_();
+  get runtimeType => VttRegionList;
+  toString() => super.toString();
+}
+patch class AnimationTimeline {
+  static Type get instanceRuntimeType => AnimationTimelineImpl;
+
+}
+class AnimationTimelineImpl extends AnimationTimeline implements js_library.JSObjectInterfacesDom {
+  AnimationTimelineImpl.internal_() : super.internal_();
+  get runtimeType => AnimationTimeline;
+  toString() => super.toString();
+}
+patch class Event {
+  static Type get instanceRuntimeType => EventImpl;
+
+}
+class EventImpl extends Event implements js_library.JSObjectInterfacesDom {
+  EventImpl.internal_() : super.internal_();
+  get runtimeType => Event;
+  toString() => super.toString();
+}
+patch class DomIterator {
+  static Type get instanceRuntimeType => DomIteratorImpl;
+
+}
+class DomIteratorImpl extends DomIterator implements js_library.JSObjectInterfacesDom {
+  DomIteratorImpl.internal_() : super.internal_();
+  get runtimeType => DomIterator;
+  toString() => super.toString();
+}
+patch class ImageData {
+  static Type get instanceRuntimeType => ImageDataImpl;
+
+}
+class ImageDataImpl extends ImageData implements js_library.JSObjectInterfacesDom {
+  ImageDataImpl.internal_() : super.internal_();
+  get runtimeType => ImageData;
+  toString() => super.toString();
+}
+patch class MediaStreamTrackEvent {
+  static Type get instanceRuntimeType => MediaStreamTrackEventImpl;
+
+}
+class MediaStreamTrackEventImpl extends MediaStreamTrackEvent implements js_library.JSObjectInterfacesDom {
+  MediaStreamTrackEventImpl.internal_() : super.internal_();
+  get runtimeType => MediaStreamTrackEvent;
+  toString() => super.toString();
+}
+patch class PromiseRejectionEvent {
+  static Type get instanceRuntimeType => PromiseRejectionEventImpl;
+
+}
+class PromiseRejectionEventImpl extends PromiseRejectionEvent implements js_library.JSObjectInterfacesDom {
+  PromiseRejectionEventImpl.internal_() : super.internal_();
+  get runtimeType => PromiseRejectionEvent;
+  toString() => super.toString();
+}
+patch class HtmlElement {
+  static Type get instanceRuntimeType => HtmlElementImpl;
+
+}
+class HtmlElementImpl extends HtmlElement implements js_library.JSObjectInterfacesDom {
+  HtmlElementImpl.internal_() : super.internal_();
+  get runtimeType => HtmlElement;
+  toString() => super.toString();
+}
+patch class HtmlDocument {
+  static Type get instanceRuntimeType => HtmlDocumentImpl;
+
+}
+class HtmlDocumentImpl extends HtmlDocument implements js_library.JSObjectInterfacesDom {
+  HtmlDocumentImpl.internal_() : super.internal_();
+  get runtimeType => HtmlDocument;
+  toString() => super.toString();
+}
+patch class MidiPort {
+  static Type get instanceRuntimeType => MidiPortImpl;
+
+}
+class MidiPortImpl extends MidiPort implements js_library.JSObjectInterfacesDom {
+  MidiPortImpl.internal_() : super.internal_();
+  get runtimeType => MidiPort;
+  toString() => super.toString();
+}
+patch class CssMediaRule {
+  static Type get instanceRuntimeType => CssMediaRuleImpl;
+
+}
+class CssMediaRuleImpl extends CssMediaRule implements js_library.JSObjectInterfacesDom {
+  CssMediaRuleImpl.internal_() : super.internal_();
+  get runtimeType => CssMediaRule;
+  toString() => super.toString();
+}
+patch class CssViewportRule {
+  static Type get instanceRuntimeType => CssViewportRuleImpl;
+
+}
+class CssViewportRuleImpl extends CssViewportRule implements js_library.JSObjectInterfacesDom {
+  CssViewportRuleImpl.internal_() : super.internal_();
+  get runtimeType => CssViewportRule;
+  toString() => super.toString();
+}
+patch class FederatedCredential {
+  static Type get instanceRuntimeType => FederatedCredentialImpl;
+
+}
+class FederatedCredentialImpl extends FederatedCredential implements js_library.JSObjectInterfacesDom {
+  FederatedCredentialImpl.internal_() : super.internal_();
+  get runtimeType => FederatedCredential;
+  toString() => super.toString();
+}
+patch class RtcIceCandidateEvent {
+  static Type get instanceRuntimeType => RtcIceCandidateEventImpl;
+
+}
+class RtcIceCandidateEventImpl extends RtcIceCandidateEvent implements js_library.JSObjectInterfacesDom {
+  RtcIceCandidateEventImpl.internal_() : super.internal_();
+  get runtimeType => RtcIceCandidateEvent;
+  toString() => super.toString();
+}
+patch class PerformanceMark {
+  static Type get instanceRuntimeType => PerformanceMarkImpl;
+
+}
+class PerformanceMarkImpl extends PerformanceMark implements js_library.JSObjectInterfacesDom {
+  PerformanceMarkImpl.internal_() : super.internal_();
+  get runtimeType => PerformanceMark;
+  toString() => super.toString();
+}
+patch class SharedWorkerGlobalScope {
+  static Type get instanceRuntimeType => SharedWorkerGlobalScopeImpl;
+
+}
+class SharedWorkerGlobalScopeImpl extends SharedWorkerGlobalScope implements js_library.JSObjectInterfacesDom {
+  SharedWorkerGlobalScopeImpl.internal_() : super.internal_();
+  get runtimeType => SharedWorkerGlobalScope;
+  toString() => super.toString();
+}
+patch class MimeTypeArray {
+  static Type get instanceRuntimeType => MimeTypeArrayImpl;
+
+}
+class MimeTypeArrayImpl extends MimeTypeArray implements js_library.JSObjectInterfacesDom {
+  MimeTypeArrayImpl.internal_() : super.internal_();
+  get runtimeType => MimeTypeArray;
+  toString() => super.toString();
+}
+patch class PerformanceRenderTiming {
+  static Type get instanceRuntimeType => PerformanceRenderTimingImpl;
+
+}
+class PerformanceRenderTimingImpl extends PerformanceRenderTiming implements js_library.JSObjectInterfacesDom {
+  PerformanceRenderTimingImpl.internal_() : super.internal_();
+  get runtimeType => PerformanceRenderTiming;
+  toString() => super.toString();
+}
+patch class EffectModel {
+  static Type get instanceRuntimeType => EffectModelImpl;
+
+}
+class EffectModelImpl extends EffectModel implements js_library.JSObjectInterfacesDom {
+  EffectModelImpl.internal_() : super.internal_();
+  get runtimeType => EffectModel;
+  toString() => super.toString();
+}
+patch class StyleSheet {
+  static Type get instanceRuntimeType => StyleSheetImpl;
+
+}
+class StyleSheetImpl extends StyleSheet implements js_library.JSObjectInterfacesDom {
+  StyleSheetImpl.internal_() : super.internal_();
+  get runtimeType => StyleSheet;
+  toString() => super.toString();
+}
+patch class TableRowElement {
+  static Type get instanceRuntimeType => TableRowElementImpl;
+
+}
+class TableRowElementImpl extends TableRowElement implements js_library.JSObjectInterfacesDom {
+  TableRowElementImpl.internal_() : super.internal_();
+  get runtimeType => TableRowElement;
+  toString() => super.toString();
+}
+patch class Geofencing {
+  static Type get instanceRuntimeType => GeofencingImpl;
+
+}
+class GeofencingImpl extends Geofencing implements js_library.JSObjectInterfacesDom {
+  GeofencingImpl.internal_() : super.internal_();
+  get runtimeType => Geofencing;
+  toString() => super.toString();
+}
+patch class NodeList {
+  static Type get instanceRuntimeType => NodeListImpl;
+
+}
+class NodeListImpl extends NodeList implements js_library.JSObjectInterfacesDom {
+  NodeListImpl.internal_() : super.internal_();
+  get runtimeType => NodeList;
+  toString() => super.toString();
+}
+patch class MidiAccess {
+  static Type get instanceRuntimeType => MidiAccessImpl;
+
+}
+class MidiAccessImpl extends MidiAccess implements js_library.JSObjectInterfacesDom {
+  MidiAccessImpl.internal_() : super.internal_();
+  get runtimeType => MidiAccess;
+  toString() => super.toString();
+}
+patch class CssStyleRule {
+  static Type get instanceRuntimeType => CssStyleRuleImpl;
+
+}
+class CssStyleRuleImpl extends CssStyleRule implements js_library.JSObjectInterfacesDom {
+  CssStyleRuleImpl.internal_() : super.internal_();
+  get runtimeType => CssStyleRule;
+  toString() => super.toString();
+}
+patch class DomError {
+  static Type get instanceRuntimeType => DomErrorImpl;
+
+}
+class DomErrorImpl extends DomError implements js_library.JSObjectInterfacesDom {
+  DomErrorImpl.internal_() : super.internal_();
+  get runtimeType => DomError;
+  toString() => super.toString();
+}
+patch class BluetoothUuid {
+  static Type get instanceRuntimeType => BluetoothUuidImpl;
+
+}
+class BluetoothUuidImpl extends BluetoothUuid implements js_library.JSObjectInterfacesDom {
+  BluetoothUuidImpl.internal_() : super.internal_();
+  get runtimeType => BluetoothUuid;
+  toString() => super.toString();
+}
+patch class HashChangeEvent {
+  static Type get instanceRuntimeType => HashChangeEventImpl;
+
+}
+class HashChangeEventImpl extends HashChangeEvent implements js_library.JSObjectInterfacesDom {
+  HashChangeEventImpl.internal_() : super.internal_();
+  get runtimeType => HashChangeEvent;
+  toString() => super.toString();
+}
+patch class InputElement {
+  static Type get instanceRuntimeType => InputElementImpl;
+
+}
+class InputElementImpl extends InputElement implements js_library.JSObjectInterfacesDom {
+  InputElementImpl.internal_() : super.internal_();
+  get runtimeType => InputElement;
+  toString() => super.toString();
+}
+patch class CDataSection {
+  static Type get instanceRuntimeType => CDataSectionImpl;
+
+}
+class CDataSectionImpl extends CDataSection implements js_library.JSObjectInterfacesDom {
+  CDataSectionImpl.internal_() : super.internal_();
+  get runtimeType => CDataSection;
+  toString() => super.toString();
+}
+patch class CssStyleSheet {
+  static Type get instanceRuntimeType => CssStyleSheetImpl;
+
+}
+class CssStyleSheetImpl extends CssStyleSheet implements js_library.JSObjectInterfacesDom {
+  CssStyleSheetImpl.internal_() : super.internal_();
+  get runtimeType => CssStyleSheet;
+  toString() => super.toString();
+}
+patch class DomRectReadOnly {
+  static Type get instanceRuntimeType => DomRectReadOnlyImpl;
+
+}
+class DomRectReadOnlyImpl extends DomRectReadOnly implements js_library.JSObjectInterfacesDom {
+  DomRectReadOnlyImpl.internal_() : super.internal_();
+  get runtimeType => DomRectReadOnly;
+  toString() => super.toString();
+}
+patch class SyncEvent {
+  static Type get instanceRuntimeType => SyncEventImpl;
+
+}
+class SyncEventImpl extends SyncEvent implements js_library.JSObjectInterfacesDom {
+  SyncEventImpl.internal_() : super.internal_();
+  get runtimeType => SyncEvent;
+  toString() => super.toString();
+}
+patch class CssSupportsRule {
+  static Type get instanceRuntimeType => CssSupportsRuleImpl;
+
+}
+class CssSupportsRuleImpl extends CssSupportsRule implements js_library.JSObjectInterfacesDom {
+  CssSupportsRuleImpl.internal_() : super.internal_();
+  get runtimeType => CssSupportsRule;
+  toString() => super.toString();
+}
+patch class DomParser {
+  static Type get instanceRuntimeType => DomParserImpl;
+
+}
+class DomParserImpl extends DomParser implements js_library.JSObjectInterfacesDom {
+  DomParserImpl.internal_() : super.internal_();
+  get runtimeType => DomParser;
+  toString() => super.toString();
+}
+patch class LIElement {
+  static Type get instanceRuntimeType => LIElementImpl;
+
+}
+class LIElementImpl extends LIElement implements js_library.JSObjectInterfacesDom {
+  LIElementImpl.internal_() : super.internal_();
+  get runtimeType => LIElement;
+  toString() => super.toString();
+}
+patch class CrossOriginServiceWorkerClient {
+  static Type get instanceRuntimeType => CrossOriginServiceWorkerClientImpl;
+
+}
+class CrossOriginServiceWorkerClientImpl extends CrossOriginServiceWorkerClient implements js_library.JSObjectInterfacesDom {
+  CrossOriginServiceWorkerClientImpl.internal_() : super.internal_();
+  get runtimeType => CrossOriginServiceWorkerClient;
+  toString() => super.toString();
+}
+patch class ServiceWorkerGlobalScope {
+  static Type get instanceRuntimeType => ServiceWorkerGlobalScopeImpl;
+
+}
+class ServiceWorkerGlobalScopeImpl extends ServiceWorkerGlobalScope implements js_library.JSObjectInterfacesDom {
+  ServiceWorkerGlobalScopeImpl.internal_() : super.internal_();
+  get runtimeType => ServiceWorkerGlobalScope;
+  toString() => super.toString();
+}
+patch class InputDevice {
+  static Type get instanceRuntimeType => InputDeviceImpl;
+
+}
+class InputDeviceImpl extends InputDevice implements js_library.JSObjectInterfacesDom {
+  InputDeviceImpl.internal_() : super.internal_();
+  get runtimeType => InputDevice;
+  toString() => super.toString();
+}
+patch class MediaSession {
+  static Type get instanceRuntimeType => MediaSessionImpl;
+
+}
+class MediaSessionImpl extends MediaSession implements js_library.JSObjectInterfacesDom {
+  MediaSessionImpl.internal_() : super.internal_();
+  get runtimeType => MediaSession;
+  toString() => super.toString();
+}
+patch class PreElement {
+  static Type get instanceRuntimeType => PreElementImpl;
+
+}
+class PreElementImpl extends PreElement implements js_library.JSObjectInterfacesDom {
+  PreElementImpl.internal_() : super.internal_();
+  get runtimeType => PreElement;
+  toString() => super.toString();
+}
+patch class _NamedNodeMap {
+  static Type get instanceRuntimeType => _NamedNodeMapImpl;
+
+}
+class _NamedNodeMapImpl extends _NamedNodeMap implements js_library.JSObjectInterfacesDom {
+  _NamedNodeMapImpl.internal_() : super.internal_();
+  get runtimeType => _NamedNodeMap;
+  toString() => super.toString();
+}
+patch class StyleElement {
+  static Type get instanceRuntimeType => StyleElementImpl;
+
+}
+class StyleElementImpl extends StyleElement implements js_library.JSObjectInterfacesDom {
+  StyleElementImpl.internal_() : super.internal_();
+  get runtimeType => StyleElement;
+  toString() => super.toString();
+}
+patch class TrackEvent {
+  static Type get instanceRuntimeType => TrackEventImpl;
+
+}
+class TrackEventImpl extends TrackEvent implements js_library.JSObjectInterfacesDom {
+  TrackEventImpl.internal_() : super.internal_();
+  get runtimeType => TrackEvent;
+  toString() => super.toString();
+}
+patch class Performance {
+  static Type get instanceRuntimeType => PerformanceImpl;
+
+}
+class PerformanceImpl extends Performance implements js_library.JSObjectInterfacesDom {
+  PerformanceImpl.internal_() : super.internal_();
+  get runtimeType => Performance;
+  toString() => super.toString();
+}
+patch class CssKeyframeRule {
+  static Type get instanceRuntimeType => CssKeyframeRuleImpl;
+
+}
+class CssKeyframeRuleImpl extends CssKeyframeRule implements js_library.JSObjectInterfacesDom {
+  CssKeyframeRuleImpl.internal_() : super.internal_();
+  get runtimeType => CssKeyframeRule;
+  toString() => super.toString();
+}
+patch class MidiInputMap {
+  static Type get instanceRuntimeType => MidiInputMapImpl;
+
+}
+class MidiInputMapImpl extends MidiInputMap implements js_library.JSObjectInterfacesDom {
+  MidiInputMapImpl.internal_() : super.internal_();
+  get runtimeType => MidiInputMap;
+  toString() => super.toString();
+}
+patch class XmlDocument {
+  static Type get instanceRuntimeType => XmlDocumentImpl;
+
+}
+class XmlDocumentImpl extends XmlDocument implements js_library.JSObjectInterfacesDom {
+  XmlDocumentImpl.internal_() : super.internal_();
+  get runtimeType => XmlDocument;
+  toString() => super.toString();
+}
+patch class VREyeParameters {
+  static Type get instanceRuntimeType => VREyeParametersImpl;
+
+}
+class VREyeParametersImpl extends VREyeParameters implements js_library.JSObjectInterfacesDom {
+  VREyeParametersImpl.internal_() : super.internal_();
+  get runtimeType => VREyeParameters;
+  toString() => super.toString();
+}
+patch class Credential {
+  static Type get instanceRuntimeType => CredentialImpl;
+
+}
+class CredentialImpl extends Credential implements js_library.JSObjectInterfacesDom {
+  CredentialImpl.internal_() : super.internal_();
+  get runtimeType => Credential;
+  toString() => super.toString();
+}
+patch class DomException {
+  static Type get instanceRuntimeType => DomExceptionImpl;
+
+}
+class DomExceptionImpl extends DomException implements js_library.JSObjectInterfacesDom {
+  DomExceptionImpl.internal_() : super.internal_();
+  get runtimeType => DomException;
+  toString() => super.toString();
+}
+patch class LegendElement {
+  static Type get instanceRuntimeType => LegendElementImpl;
+
+}
+class LegendElementImpl extends LegendElement implements js_library.JSObjectInterfacesDom {
+  LegendElementImpl.internal_() : super.internal_();
+  get runtimeType => LegendElement;
+  toString() => super.toString();
+}
+patch class HttpRequestEventTarget {
+  static Type get instanceRuntimeType => HttpRequestEventTargetImpl;
+
+}
+class HttpRequestEventTargetImpl extends HttpRequestEventTarget implements js_library.JSObjectInterfacesDom {
+  HttpRequestEventTargetImpl.internal_() : super.internal_();
+  get runtimeType => HttpRequestEventTarget;
+  toString() => super.toString();
+}
+patch class UnknownElement {
+  static Type get instanceRuntimeType => UnknownElementImpl;
+
+}
+class UnknownElementImpl extends UnknownElement implements js_library.JSObjectInterfacesDom {
+  UnknownElementImpl.internal_() : super.internal_();
+  get runtimeType => UnknownElement;
+  toString() => super.toString();
+}
+patch class _RadioNodeList {
+  static Type get instanceRuntimeType => _RadioNodeListImpl;
+
+}
+class _RadioNodeListImpl extends _RadioNodeList implements js_library.JSObjectInterfacesDom {
+  _RadioNodeListImpl.internal_() : super.internal_();
+  get runtimeType => _RadioNodeList;
+  toString() => super.toString();
+}
+patch class NavigatorUserMediaError {
+  static Type get instanceRuntimeType => NavigatorUserMediaErrorImpl;
+
+}
+class NavigatorUserMediaErrorImpl extends NavigatorUserMediaError implements js_library.JSObjectInterfacesDom {
+  NavigatorUserMediaErrorImpl.internal_() : super.internal_();
+  get runtimeType => NavigatorUserMediaError;
+  toString() => super.toString();
+}
+patch class ImageBitmap {
+  static Type get instanceRuntimeType => ImageBitmapImpl;
+
+}
+class ImageBitmapImpl extends ImageBitmap implements js_library.JSObjectInterfacesDom {
+  ImageBitmapImpl.internal_() : super.internal_();
+  get runtimeType => ImageBitmap;
+  toString() => super.toString();
+}
+patch class AudioTrack {
+  static Type get instanceRuntimeType => AudioTrackImpl;
+
+}
+class AudioTrackImpl extends AudioTrack implements js_library.JSObjectInterfacesDom {
+  AudioTrackImpl.internal_() : super.internal_();
+  get runtimeType => AudioTrack;
+  toString() => super.toString();
+}
+patch class ReadableByteStream {
+  static Type get instanceRuntimeType => ReadableByteStreamImpl;
+
+}
+class ReadableByteStreamImpl extends ReadableByteStream implements js_library.JSObjectInterfacesDom {
+  ReadableByteStreamImpl.internal_() : super.internal_();
+  get runtimeType => ReadableByteStream;
+  toString() => super.toString();
+}
+patch class _HTMLFrameElement {
+  static Type get instanceRuntimeType => _HTMLFrameElementImpl;
+
+}
+class _HTMLFrameElementImpl extends _HTMLFrameElement implements js_library.JSObjectInterfacesDom {
+  _HTMLFrameElementImpl.internal_() : super.internal_();
+  get runtimeType => _HTMLFrameElement;
+  toString() => super.toString();
+}
+patch class Body {
+  static Type get instanceRuntimeType => BodyImpl;
+
+}
+class BodyImpl extends Body implements js_library.JSObjectInterfacesDom {
+  BodyImpl.internal_() : super.internal_();
+  get runtimeType => Body;
+  toString() => super.toString();
+}
+patch class MediaKeySystemAccess {
+  static Type get instanceRuntimeType => MediaKeySystemAccessImpl;
+
+}
+class MediaKeySystemAccessImpl extends MediaKeySystemAccess implements js_library.JSObjectInterfacesDom {
+  MediaKeySystemAccessImpl.internal_() : super.internal_();
+  get runtimeType => MediaKeySystemAccess;
+  toString() => super.toString();
+}
+patch class BluetoothGattService {
+  static Type get instanceRuntimeType => BluetoothGattServiceImpl;
+
+}
+class BluetoothGattServiceImpl extends BluetoothGattService implements js_library.JSObjectInterfacesDom {
+  BluetoothGattServiceImpl.internal_() : super.internal_();
+  get runtimeType => BluetoothGattService;
+  toString() => super.toString();
+}
+patch class _Attr {
+  static Type get instanceRuntimeType => _AttrImpl;
+
+}
+class _AttrImpl extends _Attr implements js_library.JSObjectInterfacesDom {
+  _AttrImpl.internal_() : super.internal_();
+  get runtimeType => _Attr;
+  toString() => super.toString();
+}
+patch class CanvasRenderingContext2D {
+  static Type get instanceRuntimeType => CanvasRenderingContext2DImpl;
+
+}
+class CanvasRenderingContext2DImpl extends CanvasRenderingContext2D implements js_library.JSObjectInterfacesDom {
+  CanvasRenderingContext2DImpl.internal_() : super.internal_();
+  get runtimeType => CanvasRenderingContext2D;
+  toString() => super.toString();
+}
+patch class OListElement {
+  static Type get instanceRuntimeType => OListElementImpl;
+
+}
+class OListElementImpl extends OListElement implements js_library.JSObjectInterfacesDom {
+  OListElementImpl.internal_() : super.internal_();
+  get runtimeType => OListElement;
+  toString() => super.toString();
+}
+patch class ApplicationCache {
+  static Type get instanceRuntimeType => ApplicationCacheImpl;
+
+}
+class ApplicationCacheImpl extends ApplicationCache implements js_library.JSObjectInterfacesDom {
+  ApplicationCacheImpl.internal_() : super.internal_();
+  get runtimeType => ApplicationCache;
+  toString() => super.toString();
+}
+patch class Clients {
+  static Type get instanceRuntimeType => ClientsImpl;
+
+}
+class ClientsImpl extends Clients implements js_library.JSObjectInterfacesDom {
+  ClientsImpl.internal_() : super.internal_();
+  get runtimeType => Clients;
+  toString() => super.toString();
+}
+patch class RtcPeerConnection {
+  static Type get instanceRuntimeType => RtcPeerConnectionImpl;
+
+}
+class RtcPeerConnectionImpl extends RtcPeerConnection implements js_library.JSObjectInterfacesDom {
+  RtcPeerConnectionImpl.internal_() : super.internal_();
+  get runtimeType => RtcPeerConnection;
+  toString() => super.toString();
+}
+patch class VideoElement {
+  static Type get instanceRuntimeType => VideoElementImpl;
+
+}
+class VideoElementImpl extends VideoElement implements js_library.JSObjectInterfacesDom {
+  VideoElementImpl.internal_() : super.internal_();
+  get runtimeType => VideoElement;
+  toString() => super.toString();
+}
+patch class OutputElement {
+  static Type get instanceRuntimeType => OutputElementImpl;
+
+}
+class OutputElementImpl extends OutputElement implements js_library.JSObjectInterfacesDom {
+  OutputElementImpl.internal_() : super.internal_();
+  get runtimeType => OutputElement;
+  toString() => super.toString();
+}
+patch class Coordinates {
+  static Type get instanceRuntimeType => CoordinatesImpl;
+
+}
+class CoordinatesImpl extends Coordinates implements js_library.JSObjectInterfacesDom {
+  CoordinatesImpl.internal_() : super.internal_();
+  get runtimeType => Coordinates;
+  toString() => super.toString();
+}
+patch class NetworkInformation {
+  static Type get instanceRuntimeType => NetworkInformationImpl;
+
+}
+class NetworkInformationImpl extends NetworkInformation implements js_library.JSObjectInterfacesDom {
+  NetworkInformationImpl.internal_() : super.internal_();
+  get runtimeType => NetworkInformation;
+  toString() => super.toString();
+}
+patch class FocusEvent {
+  static Type get instanceRuntimeType => FocusEventImpl;
+
+}
+class FocusEventImpl extends FocusEvent implements js_library.JSObjectInterfacesDom {
+  FocusEventImpl.internal_() : super.internal_();
+  get runtimeType => FocusEvent;
+  toString() => super.toString();
+}
+patch class SpeechGrammarList {
+  static Type get instanceRuntimeType => SpeechGrammarListImpl;
+
+}
+class SpeechGrammarListImpl extends SpeechGrammarList implements js_library.JSObjectInterfacesDom {
+  SpeechGrammarListImpl.internal_() : super.internal_();
+  get runtimeType => SpeechGrammarList;
+  toString() => super.toString();
+}
+patch class Range {
+  static Type get instanceRuntimeType => RangeImpl;
+
+}
+class RangeImpl extends Range implements js_library.JSObjectInterfacesDom {
+  RangeImpl.internal_() : super.internal_();
+  get runtimeType => Range;
+  toString() => super.toString();
+}
+patch class SpeechGrammar {
+  static Type get instanceRuntimeType => SpeechGrammarImpl;
+
+}
+class SpeechGrammarImpl extends SpeechGrammar implements js_library.JSObjectInterfacesDom {
+  SpeechGrammarImpl.internal_() : super.internal_();
+  get runtimeType => SpeechGrammar;
+  toString() => super.toString();
+}
+patch class WorkerGlobalScope {
+  static Type get instanceRuntimeType => WorkerGlobalScopeImpl;
+
+}
+class WorkerGlobalScopeImpl extends WorkerGlobalScope implements js_library.JSObjectInterfacesDom {
+  WorkerGlobalScopeImpl.internal_() : super.internal_();
+  get runtimeType => WorkerGlobalScope;
+  toString() => super.toString();
+}
+patch class ScreenOrientation {
+  static Type get instanceRuntimeType => ScreenOrientationImpl;
+
+}
+class ScreenOrientationImpl extends ScreenOrientation implements js_library.JSObjectInterfacesDom {
+  ScreenOrientationImpl.internal_() : super.internal_();
+  get runtimeType => ScreenOrientation;
+  toString() => super.toString();
+}
+patch class NonElementParentNode {
+  static Type get instanceRuntimeType => NonElementParentNodeImpl;
+
+}
+class NonElementParentNodeImpl extends NonElementParentNode implements js_library.JSObjectInterfacesDom {
+  NonElementParentNodeImpl.internal_() : super.internal_();
+  get runtimeType => NonElementParentNode;
+  toString() => super.toString();
+}
+patch class TitleElement {
+  static Type get instanceRuntimeType => TitleElementImpl;
+
+}
+class TitleElementImpl extends TitleElement implements js_library.JSObjectInterfacesDom {
+  TitleElementImpl.internal_() : super.internal_();
+  get runtimeType => TitleElement;
+  toString() => super.toString();
+}
+patch class MidiConnectionEvent {
+  static Type get instanceRuntimeType => MidiConnectionEventImpl;
+
+}
+class MidiConnectionEventImpl extends MidiConnectionEvent implements js_library.JSObjectInterfacesDom {
+  MidiConnectionEventImpl.internal_() : super.internal_();
+  get runtimeType => MidiConnectionEvent;
+  toString() => super.toString();
+}
+patch class NotificationEvent {
+  static Type get instanceRuntimeType => NotificationEventImpl;
+
+}
+class NotificationEventImpl extends NotificationEvent implements js_library.JSObjectInterfacesDom {
+  NotificationEventImpl.internal_() : super.internal_();
+  get runtimeType => NotificationEvent;
+  toString() => super.toString();
+}
+patch class BeforeInstallPromptEvent {
+  static Type get instanceRuntimeType => BeforeInstallPromptEventImpl;
+
+}
+class BeforeInstallPromptEventImpl extends BeforeInstallPromptEvent implements js_library.JSObjectInterfacesDom {
+  BeforeInstallPromptEventImpl.internal_() : super.internal_();
+  get runtimeType => BeforeInstallPromptEvent;
+  toString() => super.toString();
+}
+patch class _CanvasPathMethods {
+  static Type get instanceRuntimeType => _CanvasPathMethodsImpl;
+
+}
+class _CanvasPathMethodsImpl extends _CanvasPathMethods implements js_library.JSObjectInterfacesDom {
+  _CanvasPathMethodsImpl.internal_() : super.internal_();
+  get runtimeType => _CanvasPathMethods;
+  toString() => super.toString();
+}
+patch class UrlUtils {
+  static Type get instanceRuntimeType => UrlUtilsImpl;
+
+}
+class UrlUtilsImpl extends UrlUtils implements js_library.JSObjectInterfacesDom {
+  UrlUtilsImpl.internal_() : super.internal_();
+  get runtimeType => UrlUtils;
+  toString() => super.toString();
+}
+patch class SelectElement {
+  static Type get instanceRuntimeType => SelectElementImpl;
+
+}
+class SelectElementImpl extends SelectElement implements js_library.JSObjectInterfacesDom {
+  SelectElementImpl.internal_() : super.internal_();
+  get runtimeType => SelectElement;
+  toString() => super.toString();
+}
+patch class Bluetooth {
+  static Type get instanceRuntimeType => BluetoothImpl;
+
+}
+class BluetoothImpl extends Bluetooth implements js_library.JSObjectInterfacesDom {
+  BluetoothImpl.internal_() : super.internal_();
+  get runtimeType => Bluetooth;
+  toString() => super.toString();
+}
+patch class BluetoothDevice {
+  static Type get instanceRuntimeType => BluetoothDeviceImpl;
+
+}
+class BluetoothDeviceImpl extends BluetoothDevice implements js_library.JSObjectInterfacesDom {
+  BluetoothDeviceImpl.internal_() : super.internal_();
+  get runtimeType => BluetoothDevice;
+  toString() => super.toString();
+}
+patch class ConsoleBase {
+  static Type get instanceRuntimeType => ConsoleBaseImpl;
+
+}
+class ConsoleBaseImpl extends ConsoleBase implements js_library.JSObjectInterfacesDom {
+  ConsoleBaseImpl.internal_() : super.internal_();
+  get runtimeType => ConsoleBase;
+  toString() => super.toString();
+}
+patch class AudioElement {
+  static Type get instanceRuntimeType => AudioElementImpl;
+
+}
+class AudioElementImpl extends AudioElement implements js_library.JSObjectInterfacesDom {
+  AudioElementImpl.internal_() : super.internal_();
+  get runtimeType => AudioElement;
+  toString() => super.toString();
+}
+patch class PushMessageData {
+  static Type get instanceRuntimeType => PushMessageDataImpl;
+
+}
+class PushMessageDataImpl extends PushMessageData implements js_library.JSObjectInterfacesDom {
+  PushMessageDataImpl.internal_() : super.internal_();
+  get runtimeType => PushMessageData;
+  toString() => super.toString();
+}
+patch class SpeechRecognitionEvent {
+  static Type get instanceRuntimeType => SpeechRecognitionEventImpl;
+
+}
+class SpeechRecognitionEventImpl extends SpeechRecognitionEvent implements js_library.JSObjectInterfacesDom {
+  SpeechRecognitionEventImpl.internal_() : super.internal_();
+  get runtimeType => SpeechRecognitionEvent;
+  toString() => super.toString();
+}
+patch class WebSocket {
+  static Type get instanceRuntimeType => WebSocketImpl;
+
+}
+class WebSocketImpl extends WebSocket implements js_library.JSObjectInterfacesDom {
+  WebSocketImpl.internal_() : super.internal_();
+  get runtimeType => WebSocket;
+  toString() => super.toString();
+}
+patch class _XMLHttpRequestProgressEvent {
+  static Type get instanceRuntimeType => _XMLHttpRequestProgressEventImpl;
+
+}
+class _XMLHttpRequestProgressEventImpl extends _XMLHttpRequestProgressEvent implements js_library.JSObjectInterfacesDom {
+  _XMLHttpRequestProgressEventImpl.internal_() : super.internal_();
+  get runtimeType => _XMLHttpRequestProgressEvent;
+  toString() => super.toString();
+}
+patch class Location {
+  static Type get instanceRuntimeType => LocationImpl;
+
+}
+class LocationImpl extends Location implements js_library.JSObjectInterfacesDom {
+  LocationImpl.internal_() : super.internal_();
+  get runtimeType => Location;
+  toString() => super.toString();
+}
+patch class PerformanceEntry {
+  static Type get instanceRuntimeType => PerformanceEntryImpl;
+
+}
+class PerformanceEntryImpl extends PerformanceEntry implements js_library.JSObjectInterfacesDom {
+  PerformanceEntryImpl.internal_() : super.internal_();
+  get runtimeType => PerformanceEntry;
+  toString() => super.toString();
+}
+patch class Client {
+  static Type get instanceRuntimeType => ClientImpl;
+
+}
+class ClientImpl extends Client implements js_library.JSObjectInterfacesDom {
+  ClientImpl.internal_() : super.internal_();
+  get runtimeType => Client;
+  toString() => super.toString();
+}
+patch class _Cache {
+  static Type get instanceRuntimeType => _CacheImpl;
+
+}
+class _CacheImpl extends _Cache implements js_library.JSObjectInterfacesDom {
+  _CacheImpl.internal_() : super.internal_();
+  get runtimeType => _Cache;
+  toString() => super.toString();
+}
+patch class MimeType {
+  static Type get instanceRuntimeType => MimeTypeImpl;
+
+}
+class MimeTypeImpl extends MimeType implements js_library.JSObjectInterfacesDom {
+  MimeTypeImpl.internal_() : super.internal_();
+  get runtimeType => MimeType;
+  toString() => super.toString();
+}
+patch class MidiOutputMap {
+  static Type get instanceRuntimeType => MidiOutputMapImpl;
+
+}
+class MidiOutputMapImpl extends MidiOutputMap implements js_library.JSObjectInterfacesDom {
+  MidiOutputMapImpl.internal_() : super.internal_();
+  get runtimeType => MidiOutputMap;
+  toString() => super.toString();
+}
+patch class PointerEvent {
+  static Type get instanceRuntimeType => PointerEventImpl;
+
+}
+class PointerEventImpl extends PointerEvent implements js_library.JSObjectInterfacesDom {
+  PointerEventImpl.internal_() : super.internal_();
+  get runtimeType => PointerEvent;
+  toString() => super.toString();
+}
+patch class ChildNode {
+  static Type get instanceRuntimeType => ChildNodeImpl;
+
+}
+class ChildNodeImpl extends ChildNode implements js_library.JSObjectInterfacesDom {
+  ChildNodeImpl.internal_() : super.internal_();
+  get runtimeType => ChildNode;
+  toString() => super.toString();
+}
+patch class Geolocation {
+  static Type get instanceRuntimeType => GeolocationImpl;
+
+}
+class GeolocationImpl extends Geolocation implements js_library.JSObjectInterfacesDom {
+  GeolocationImpl.internal_() : super.internal_();
+  get runtimeType => Geolocation;
+  toString() => super.toString();
+}
+patch class _CssRuleList {
+  static Type get instanceRuntimeType => _CssRuleListImpl;
+
+}
+class _CssRuleListImpl extends _CssRuleList implements js_library.JSObjectInterfacesDom {
+  _CssRuleListImpl.internal_() : super.internal_();
+  get runtimeType => _CssRuleList;
+  toString() => super.toString();
+}
+patch class MediaKeyEvent {
+  static Type get instanceRuntimeType => MediaKeyEventImpl;
+
+}
+class MediaKeyEventImpl extends MediaKeyEvent implements js_library.JSObjectInterfacesDom {
+  MediaKeyEventImpl.internal_() : super.internal_();
+  get runtimeType => MediaKeyEvent;
+  toString() => super.toString();
+}
+patch class CompositorWorker {
+  static Type get instanceRuntimeType => CompositorWorkerImpl;
+
+}
+class CompositorWorkerImpl extends CompositorWorker implements js_library.JSObjectInterfacesDom {
+  CompositorWorkerImpl.internal_() : super.internal_();
+  get runtimeType => CompositorWorker;
+  toString() => super.toString();
+}
+patch class ProgressElement {
+  static Type get instanceRuntimeType => ProgressElementImpl;
+
+}
+class ProgressElementImpl extends ProgressElement implements js_library.JSObjectInterfacesDom {
+  ProgressElementImpl.internal_() : super.internal_();
+  get runtimeType => ProgressElement;
+  toString() => super.toString();
+}
+patch class SharedArrayBuffer {
+  static Type get instanceRuntimeType => SharedArrayBufferImpl;
+
+}
+class SharedArrayBufferImpl extends SharedArrayBuffer implements js_library.JSObjectInterfacesDom {
+  SharedArrayBufferImpl.internal_() : super.internal_();
+  get runtimeType => SharedArrayBuffer;
+  toString() => super.toString();
+}
+patch class CrossOriginConnectEvent {
+  static Type get instanceRuntimeType => CrossOriginConnectEventImpl;
+
+}
+class CrossOriginConnectEventImpl extends CrossOriginConnectEvent implements js_library.JSObjectInterfacesDom {
+  CrossOriginConnectEventImpl.internal_() : super.internal_();
+  get runtimeType => CrossOriginConnectEvent;
+  toString() => super.toString();
+}
+patch class BeforeUnloadEvent {
+  static Type get instanceRuntimeType => BeforeUnloadEventImpl;
+
+}
+class BeforeUnloadEventImpl extends BeforeUnloadEvent implements js_library.JSObjectInterfacesDom {
+  BeforeUnloadEventImpl.internal_() : super.internal_();
+  get runtimeType => BeforeUnloadEvent;
+  toString() => super.toString();
+}
+patch class DataTransferItem {
+  static Type get instanceRuntimeType => DataTransferItemImpl;
+
+}
+class DataTransferItemImpl extends DataTransferItem implements js_library.JSObjectInterfacesDom {
+  DataTransferItemImpl.internal_() : super.internal_();
+  get runtimeType => DataTransferItem;
+  toString() => super.toString();
+}
+patch class _HTMLAllCollection {
+  static Type get instanceRuntimeType => _HTMLAllCollectionImpl;
+
+}
+class _HTMLAllCollectionImpl extends _HTMLAllCollection implements js_library.JSObjectInterfacesDom {
+  _HTMLAllCollectionImpl.internal_() : super.internal_();
+  get runtimeType => _HTMLAllCollection;
+  toString() => super.toString();
+}
+patch class ServicePortCollection {
+  static Type get instanceRuntimeType => ServicePortCollectionImpl;
+
+}
+class ServicePortCollectionImpl extends ServicePortCollection implements js_library.JSObjectInterfacesDom {
+  ServicePortCollectionImpl.internal_() : super.internal_();
+  get runtimeType => ServicePortCollection;
+  toString() => super.toString();
+}
+patch class KeygenElement {
+  static Type get instanceRuntimeType => KeygenElementImpl;
+
+}
+class KeygenElementImpl extends KeygenElement implements js_library.JSObjectInterfacesDom {
+  KeygenElementImpl.internal_() : super.internal_();
+  get runtimeType => KeygenElement;
+  toString() => super.toString();
+}
+patch class CryptoKey {
+  static Type get instanceRuntimeType => CryptoKeyImpl;
+
+}
+class CryptoKeyImpl extends CryptoKey implements js_library.JSObjectInterfacesDom {
+  CryptoKeyImpl.internal_() : super.internal_();
+  get runtimeType => CryptoKey;
+  toString() => super.toString();
+}
+patch class CssKeyframesRule {
+  static Type get instanceRuntimeType => CssKeyframesRuleImpl;
+
+}
+class CssKeyframesRuleImpl extends CssKeyframesRule implements js_library.JSObjectInterfacesDom {
+  CssKeyframesRuleImpl.internal_() : super.internal_();
+  get runtimeType => CssKeyframesRule;
+  toString() => super.toString();
+}
+patch class _HTMLMarqueeElement {
+  static Type get instanceRuntimeType => _HTMLMarqueeElementImpl;
+
+}
+class _HTMLMarqueeElementImpl extends _HTMLMarqueeElement implements js_library.JSObjectInterfacesDom {
+  _HTMLMarqueeElementImpl.internal_() : super.internal_();
+  get runtimeType => _HTMLMarqueeElement;
+  toString() => super.toString();
+}
+patch class TextEvent {
+  static Type get instanceRuntimeType => TextEventImpl;
+
+}
+class TextEventImpl extends TextEvent implements js_library.JSObjectInterfacesDom {
+  TextEventImpl.internal_() : super.internal_();
+  get runtimeType => TextEvent;
+  toString() => super.toString();
+}
+patch class _EntrySync {
+  static Type get instanceRuntimeType => _EntrySyncImpl;
+
+}
+class _EntrySyncImpl extends _EntrySync implements js_library.JSObjectInterfacesDom {
+  _EntrySyncImpl.internal_() : super.internal_();
+  get runtimeType => _EntrySync;
+  toString() => super.toString();
+}
+patch class GeofencingEvent {
+  static Type get instanceRuntimeType => GeofencingEventImpl;
+
+}
+class GeofencingEventImpl extends GeofencingEvent implements js_library.JSObjectInterfacesDom {
+  GeofencingEventImpl.internal_() : super.internal_();
+  get runtimeType => GeofencingEvent;
+  toString() => super.toString();
+}
+patch class MediaKeys {
+  static Type get instanceRuntimeType => MediaKeysImpl;
+
+}
+class MediaKeysImpl extends MediaKeys implements js_library.JSObjectInterfacesDom {
+  MediaKeysImpl.internal_() : super.internal_();
+  get runtimeType => MediaKeys;
+  toString() => super.toString();
+}
+patch class DomPointReadOnly {
+  static Type get instanceRuntimeType => DomPointReadOnlyImpl;
+
+}
+class DomPointReadOnlyImpl extends DomPointReadOnly implements js_library.JSObjectInterfacesDom {
+  DomPointReadOnlyImpl.internal_() : super.internal_();
+  get runtimeType => DomPointReadOnly;
+  toString() => super.toString();
+}
+patch class WindowBase64 {
+  static Type get instanceRuntimeType => WindowBase64Impl;
+
+}
+class WindowBase64Impl extends WindowBase64 implements js_library.JSObjectInterfacesDom {
+  WindowBase64Impl.internal_() : super.internal_();
+  get runtimeType => WindowBase64;
+  toString() => super.toString();
+}
+patch class SpeechRecognitionError {
+  static Type get instanceRuntimeType => SpeechRecognitionErrorImpl;
+
+}
+class SpeechRecognitionErrorImpl extends SpeechRecognitionError implements js_library.JSObjectInterfacesDom {
+  SpeechRecognitionErrorImpl.internal_() : super.internal_();
+  get runtimeType => SpeechRecognitionError;
+  toString() => super.toString();
+}
+patch class MidiOutput {
+  static Type get instanceRuntimeType => MidiOutputImpl;
+
+}
+class MidiOutputImpl extends MidiOutput implements js_library.JSObjectInterfacesDom {
+  MidiOutputImpl.internal_() : super.internal_();
+  get runtimeType => MidiOutput;
+  toString() => super.toString();
+}
+patch class EventSource {
+  static Type get instanceRuntimeType => EventSourceImpl;
+
+}
+class EventSourceImpl extends EventSource implements js_library.JSObjectInterfacesDom {
+  EventSourceImpl.internal_() : super.internal_();
+  get runtimeType => EventSource;
+  toString() => super.toString();
+}
+patch class DeviceOrientationEvent {
+  static Type get instanceRuntimeType => DeviceOrientationEventImpl;
+
+}
+class DeviceOrientationEventImpl extends DeviceOrientationEvent implements js_library.JSObjectInterfacesDom {
+  DeviceOrientationEventImpl.internal_() : super.internal_();
+  get runtimeType => DeviceOrientationEvent;
+  toString() => super.toString();
+}
+patch class DirectoryEntry {
+  static Type get instanceRuntimeType => DirectoryEntryImpl;
+
+}
+class DirectoryEntryImpl extends DirectoryEntry implements js_library.JSObjectInterfacesDom {
+  DirectoryEntryImpl.internal_() : super.internal_();
+  get runtimeType => DirectoryEntry;
+  toString() => super.toString();
+}
+patch class ShadowElement {
+  static Type get instanceRuntimeType => ShadowElementImpl;
+
+}
+class ShadowElementImpl extends ShadowElement implements js_library.JSObjectInterfacesDom {
+  ShadowElementImpl.internal_() : super.internal_();
+  get runtimeType => ShadowElement;
+  toString() => super.toString();
+}
+patch class AppBannerPromptResult {
+  static Type get instanceRuntimeType => AppBannerPromptResultImpl;
+
+}
+class AppBannerPromptResultImpl extends AppBannerPromptResult implements js_library.JSObjectInterfacesDom {
+  AppBannerPromptResultImpl.internal_() : super.internal_();
+  get runtimeType => AppBannerPromptResult;
+  toString() => super.toString();
+}
+patch class Blob {
+  static Type get instanceRuntimeType => BlobImpl;
+
+}
+class BlobImpl extends Blob implements js_library.JSObjectInterfacesDom {
+  BlobImpl.internal_() : super.internal_();
+  get runtimeType => Blob;
+  toString() => super.toString();
+}
+patch class VttCue {
+  static Type get instanceRuntimeType => VttCueImpl;
+
+}
+class VttCueImpl extends VttCue implements js_library.JSObjectInterfacesDom {
+  VttCueImpl.internal_() : super.internal_();
+  get runtimeType => VttCue;
+  toString() => super.toString();
+}
+patch class PopStateEvent {
+  static Type get instanceRuntimeType => PopStateEventImpl;
+
+}
+class PopStateEventImpl extends PopStateEvent implements js_library.JSObjectInterfacesDom {
+  PopStateEventImpl.internal_() : super.internal_();
+  get runtimeType => PopStateEvent;
+  toString() => super.toString();
+}
+patch class PushSubscription {
+  static Type get instanceRuntimeType => PushSubscriptionImpl;
+
+}
+class PushSubscriptionImpl extends PushSubscription implements js_library.JSObjectInterfacesDom {
+  PushSubscriptionImpl.internal_() : super.internal_();
+  get runtimeType => PushSubscription;
+  toString() => super.toString();
+}
+patch class UrlUtilsReadOnly {
+  static Type get instanceRuntimeType => UrlUtilsReadOnlyImpl;
+
+}
+class UrlUtilsReadOnlyImpl extends UrlUtilsReadOnly implements js_library.JSObjectInterfacesDom {
+  UrlUtilsReadOnlyImpl.internal_() : super.internal_();
+  get runtimeType => UrlUtilsReadOnly;
+  toString() => super.toString();
+}
+patch class MediaError {
+  static Type get instanceRuntimeType => MediaErrorImpl;
+
+}
+class MediaErrorImpl extends MediaError implements js_library.JSObjectInterfacesDom {
+  MediaErrorImpl.internal_() : super.internal_();
+  get runtimeType => MediaError;
+  toString() => super.toString();
+}
+patch class SourceBufferList {
+  static Type get instanceRuntimeType => SourceBufferListImpl;
+
+}
+class SourceBufferListImpl extends SourceBufferList implements js_library.JSObjectInterfacesDom {
+  SourceBufferListImpl.internal_() : super.internal_();
+  get runtimeType => SourceBufferList;
+  toString() => super.toString();
+}
+patch class AnimationEffectReadOnly {
+  static Type get instanceRuntimeType => AnimationEffectReadOnlyImpl;
+
+}
+class AnimationEffectReadOnlyImpl extends AnimationEffectReadOnly implements js_library.JSObjectInterfacesDom {
+  AnimationEffectReadOnlyImpl.internal_() : super.internal_();
+  get runtimeType => AnimationEffectReadOnly;
+  toString() => super.toString();
+}
+patch class PerformanceResourceTiming {
+  static Type get instanceRuntimeType => PerformanceResourceTimingImpl;
+
+}
+class PerformanceResourceTimingImpl extends PerformanceResourceTiming implements js_library.JSObjectInterfacesDom {
+  PerformanceResourceTimingImpl.internal_() : super.internal_();
+  get runtimeType => PerformanceResourceTiming;
+  toString() => super.toString();
+}
+patch class GeofencingRegion {
+  static Type get instanceRuntimeType => GeofencingRegionImpl;
+
+}
+class GeofencingRegionImpl extends GeofencingRegion implements js_library.JSObjectInterfacesDom {
+  GeofencingRegionImpl.internal_() : super.internal_();
+  get runtimeType => GeofencingRegion;
+  toString() => super.toString();
+}
+patch class CharacterData {
+  static Type get instanceRuntimeType => CharacterDataImpl;
+
+}
+class CharacterDataImpl extends CharacterData implements js_library.JSObjectInterfacesDom {
+  CharacterDataImpl.internal_() : super.internal_();
+  get runtimeType => CharacterData;
+  toString() => super.toString();
+}
+patch class Css {
+  static Type get instanceRuntimeType => CssImpl;
+
+}
+class CssImpl extends Css implements js_library.JSObjectInterfacesDom {
+  CssImpl.internal_() : super.internal_();
+  get runtimeType => Css;
+  toString() => super.toString();
+}
+patch class MidiInput {
+  static Type get instanceRuntimeType => MidiInputImpl;
+
+}
+class MidiInputImpl extends MidiInput implements js_library.JSObjectInterfacesDom {
+  MidiInputImpl.internal_() : super.internal_();
+  get runtimeType => MidiInput;
+  toString() => super.toString();
+}
+patch class ServicePortConnectEvent {
+  static Type get instanceRuntimeType => ServicePortConnectEventImpl;
+
+}
+class ServicePortConnectEventImpl extends ServicePortConnectEvent implements js_library.JSObjectInterfacesDom {
+  ServicePortConnectEventImpl.internal_() : super.internal_();
+  get runtimeType => ServicePortConnectEvent;
+  toString() => super.toString();
+}
+patch class ExtendableEvent {
+  static Type get instanceRuntimeType => ExtendableEventImpl;
+
+}
+class ExtendableEventImpl extends ExtendableEvent implements js_library.JSObjectInterfacesDom {
+  ExtendableEventImpl.internal_() : super.internal_();
+  get runtimeType => ExtendableEvent;
+  toString() => super.toString();
+}
+patch class MediaStreamEvent {
+  static Type get instanceRuntimeType => MediaStreamEventImpl;
+
+}
+class MediaStreamEventImpl extends MediaStreamEvent implements js_library.JSObjectInterfacesDom {
+  MediaStreamEventImpl.internal_() : super.internal_();
+  get runtimeType => MediaStreamEvent;
+  toString() => super.toString();
+}
+patch class XPathNSResolver {
+  static Type get instanceRuntimeType => XPathNSResolverImpl;
+
+}
+class XPathNSResolverImpl extends XPathNSResolver implements js_library.JSObjectInterfacesDom {
+  XPathNSResolverImpl.internal_() : super.internal_();
+  get runtimeType => XPathNSResolver;
+  toString() => super.toString();
+}
+patch class _FileWriterSync {
+  static Type get instanceRuntimeType => _FileWriterSyncImpl;
+
+}
+class _FileWriterSyncImpl extends _FileWriterSync implements js_library.JSObjectInterfacesDom {
+  _FileWriterSyncImpl.internal_() : super.internal_();
+  get runtimeType => _FileWriterSync;
+  toString() => super.toString();
+}
+
+"""],"dart:indexed_db": ["dart:indexed_db", "dart:indexed_db_js_interop_patch.dart", """import 'dart:js' as js_library;
+
+/**
+ * Placeholder object for cases where we need to determine exactly how many
+ * args were passed to a function.
+ */
+const _UNDEFINED_JS_CONST = const Object();
+
+patch class IdbFactory {
+  static Type get instanceRuntimeType => IdbFactoryImpl;
+
+}
+class IdbFactoryImpl extends IdbFactory implements js_library.JSObjectInterfacesDom {
+  IdbFactoryImpl.internal_() : super.internal_();
+  get runtimeType => IdbFactory;
+  toString() => super.toString();
+}
+patch class Cursor {
+  static Type get instanceRuntimeType => CursorImpl;
+
+}
+class CursorImpl extends Cursor implements js_library.JSObjectInterfacesDom {
+  CursorImpl.internal_() : super.internal_();
+  get runtimeType => Cursor;
+  toString() => super.toString();
+}
+patch class Transaction {
+  static Type get instanceRuntimeType => TransactionImpl;
+
+}
+class TransactionImpl extends Transaction implements js_library.JSObjectInterfacesDom {
+  TransactionImpl.internal_() : super.internal_();
+  get runtimeType => Transaction;
+  toString() => super.toString();
+}
+patch class KeyRange {
+  static Type get instanceRuntimeType => KeyRangeImpl;
+
+}
+class KeyRangeImpl extends KeyRange implements js_library.JSObjectInterfacesDom {
+  KeyRangeImpl.internal_() : super.internal_();
+  get runtimeType => KeyRange;
+  toString() => super.toString();
+}
+patch class Request {
+  static Type get instanceRuntimeType => RequestImpl;
+
+}
+class RequestImpl extends Request implements js_library.JSObjectInterfacesDom {
+  RequestImpl.internal_() : super.internal_();
+  get runtimeType => Request;
+  toString() => super.toString();
+}
+patch class OpenDBRequest {
+  static Type get instanceRuntimeType => OpenDBRequestImpl;
+
+}
+class OpenDBRequestImpl extends OpenDBRequest implements js_library.JSObjectInterfacesDom {
+  OpenDBRequestImpl.internal_() : super.internal_();
+  get runtimeType => OpenDBRequest;
+  toString() => super.toString();
+}
+patch class Database {
+  static Type get instanceRuntimeType => DatabaseImpl;
+
+}
+class DatabaseImpl extends Database implements js_library.JSObjectInterfacesDom {
+  DatabaseImpl.internal_() : super.internal_();
+  get runtimeType => Database;
+  toString() => super.toString();
+}
+patch class Index {
+  static Type get instanceRuntimeType => IndexImpl;
+
+}
+class IndexImpl extends Index implements js_library.JSObjectInterfacesDom {
+  IndexImpl.internal_() : super.internal_();
+  get runtimeType => Index;
+  toString() => super.toString();
+}
+patch class ObjectStore {
+  static Type get instanceRuntimeType => ObjectStoreImpl;
+
+}
+class ObjectStoreImpl extends ObjectStore implements js_library.JSObjectInterfacesDom {
+  ObjectStoreImpl.internal_() : super.internal_();
+  get runtimeType => ObjectStore;
+  toString() => super.toString();
+}
+patch class VersionChangeEvent {
+  static Type get instanceRuntimeType => VersionChangeEventImpl;
+
+}
+class VersionChangeEventImpl extends VersionChangeEvent implements js_library.JSObjectInterfacesDom {
+  VersionChangeEventImpl.internal_() : super.internal_();
+  get runtimeType => VersionChangeEvent;
+  toString() => super.toString();
+}
+patch class CursorWithValue {
+  static Type get instanceRuntimeType => CursorWithValueImpl;
+
+}
+class CursorWithValueImpl extends CursorWithValue implements js_library.JSObjectInterfacesDom {
+  CursorWithValueImpl.internal_() : super.internal_();
+  get runtimeType => CursorWithValue;
+  toString() => super.toString();
+}
+
+"""],"dart:web_gl": ["dart:web_gl", "dart:web_gl_js_interop_patch.dart", """import 'dart:js' as js_library;
+
+/**
+ * Placeholder object for cases where we need to determine exactly how many
+ * args were passed to a function.
+ */
+const _UNDEFINED_JS_CONST = const Object();
+
+patch class Buffer {
+  static Type get instanceRuntimeType => BufferImpl;
+
+}
+class BufferImpl extends Buffer implements js_library.JSObjectInterfacesDom {
+  BufferImpl.internal_() : super.internal_();
+  get runtimeType => Buffer;
+  toString() => super.toString();
+}
+patch class Texture {
+  static Type get instanceRuntimeType => TextureImpl;
+
+}
+class TextureImpl extends Texture implements js_library.JSObjectInterfacesDom {
+  TextureImpl.internal_() : super.internal_();
+  get runtimeType => Texture;
+  toString() => super.toString();
+}
+patch class VertexArrayObjectOes {
+  static Type get instanceRuntimeType => VertexArrayObjectOesImpl;
+
+}
+class VertexArrayObjectOesImpl extends VertexArrayObjectOes implements js_library.JSObjectInterfacesDom {
+  VertexArrayObjectOesImpl.internal_() : super.internal_();
+  get runtimeType => VertexArrayObjectOes;
+  toString() => super.toString();
+}
+patch class DepthTexture {
+  static Type get instanceRuntimeType => DepthTextureImpl;
+
+}
+class DepthTextureImpl extends DepthTexture implements js_library.JSObjectInterfacesDom {
+  DepthTextureImpl.internal_() : super.internal_();
+  get runtimeType => DepthTexture;
+  toString() => super.toString();
+}
+patch class OesTextureHalfFloatLinear {
+  static Type get instanceRuntimeType => OesTextureHalfFloatLinearImpl;
+
+}
+class OesTextureHalfFloatLinearImpl extends OesTextureHalfFloatLinear implements js_library.JSObjectInterfacesDom {
+  OesTextureHalfFloatLinearImpl.internal_() : super.internal_();
+  get runtimeType => OesTextureHalfFloatLinear;
+  toString() => super.toString();
+}
+patch class Sampler {
+  static Type get instanceRuntimeType => SamplerImpl;
+
+}
+class SamplerImpl extends Sampler implements js_library.JSObjectInterfacesDom {
+  SamplerImpl.internal_() : super.internal_();
+  get runtimeType => Sampler;
+  toString() => super.toString();
+}
+patch class Sync {
+  static Type get instanceRuntimeType => SyncImpl;
+
+}
+class SyncImpl extends Sync implements js_library.JSObjectInterfacesDom {
+  SyncImpl.internal_() : super.internal_();
+  get runtimeType => Sync;
+  toString() => super.toString();
+}
+patch class OesVertexArrayObject {
+  static Type get instanceRuntimeType => OesVertexArrayObjectImpl;
+
+}
+class OesVertexArrayObjectImpl extends OesVertexArrayObject implements js_library.JSObjectInterfacesDom {
+  OesVertexArrayObjectImpl.internal_() : super.internal_();
+  get runtimeType => OesVertexArrayObject;
+  toString() => super.toString();
+}
+patch class CompressedTextureS3TC {
+  static Type get instanceRuntimeType => CompressedTextureS3TCImpl;
+
+}
+class CompressedTextureS3TCImpl extends CompressedTextureS3TC implements js_library.JSObjectInterfacesDom {
+  CompressedTextureS3TCImpl.internal_() : super.internal_();
+  get runtimeType => CompressedTextureS3TC;
+  toString() => super.toString();
+}
+patch class ExtFragDepth {
+  static Type get instanceRuntimeType => ExtFragDepthImpl;
+
+}
+class ExtFragDepthImpl extends ExtFragDepth implements js_library.JSObjectInterfacesDom {
+  ExtFragDepthImpl.internal_() : super.internal_();
+  get runtimeType => ExtFragDepth;
+  toString() => super.toString();
+}
+patch class Shader {
+  static Type get instanceRuntimeType => ShaderImpl;
+
+}
+class ShaderImpl extends Shader implements js_library.JSObjectInterfacesDom {
+  ShaderImpl.internal_() : super.internal_();
+  get runtimeType => Shader;
+  toString() => super.toString();
+}
+patch class _WebGL2RenderingContextBase {
+  static Type get instanceRuntimeType => _WebGL2RenderingContextBaseImpl;
+
+}
+class _WebGL2RenderingContextBaseImpl extends _WebGL2RenderingContextBase implements js_library.JSObjectInterfacesDom {
+  _WebGL2RenderingContextBaseImpl.internal_() : super.internal_();
+  get runtimeType => _WebGL2RenderingContextBase;
+  toString() => super.toString();
+}
+patch class Query {
+  static Type get instanceRuntimeType => QueryImpl;
+
+}
+class QueryImpl extends Query implements js_library.JSObjectInterfacesDom {
+  QueryImpl.internal_() : super.internal_();
+  get runtimeType => Query;
+  toString() => super.toString();
+}
+patch class RenderingContext {
+  static Type get instanceRuntimeType => RenderingContextImpl;
+
+}
+class RenderingContextImpl extends RenderingContext implements js_library.JSObjectInterfacesDom {
+  RenderingContextImpl.internal_() : super.internal_();
+  get runtimeType => RenderingContext;
+  toString() => super.toString();
+}
+patch class ShaderPrecisionFormat {
+  static Type get instanceRuntimeType => ShaderPrecisionFormatImpl;
+
+}
+class ShaderPrecisionFormatImpl extends ShaderPrecisionFormat implements js_library.JSObjectInterfacesDom {
+  ShaderPrecisionFormatImpl.internal_() : super.internal_();
+  get runtimeType => ShaderPrecisionFormat;
+  toString() => super.toString();
+}
+patch class OesTextureHalfFloat {
+  static Type get instanceRuntimeType => OesTextureHalfFloatImpl;
+
+}
+class OesTextureHalfFloatImpl extends OesTextureHalfFloat implements js_library.JSObjectInterfacesDom {
+  OesTextureHalfFloatImpl.internal_() : super.internal_();
+  get runtimeType => OesTextureHalfFloat;
+  toString() => super.toString();
+}
+patch class ExtTextureFilterAnisotropic {
+  static Type get instanceRuntimeType => ExtTextureFilterAnisotropicImpl;
+
+}
+class ExtTextureFilterAnisotropicImpl extends ExtTextureFilterAnisotropic implements js_library.JSObjectInterfacesDom {
+  ExtTextureFilterAnisotropicImpl.internal_() : super.internal_();
+  get runtimeType => ExtTextureFilterAnisotropic;
+  toString() => super.toString();
+}
+patch class OesTextureFloat {
+  static Type get instanceRuntimeType => OesTextureFloatImpl;
+
+}
+class OesTextureFloatImpl extends OesTextureFloat implements js_library.JSObjectInterfacesDom {
+  OesTextureFloatImpl.internal_() : super.internal_();
+  get runtimeType => OesTextureFloat;
+  toString() => super.toString();
+}
+patch class VertexArrayObject {
+  static Type get instanceRuntimeType => VertexArrayObjectImpl;
+
+}
+class VertexArrayObjectImpl extends VertexArrayObject implements js_library.JSObjectInterfacesDom {
+  VertexArrayObjectImpl.internal_() : super.internal_();
+  get runtimeType => VertexArrayObject;
+  toString() => super.toString();
+}
+patch class CompressedTexturePvrtc {
+  static Type get instanceRuntimeType => CompressedTexturePvrtcImpl;
+
+}
+class CompressedTexturePvrtcImpl extends CompressedTexturePvrtc implements js_library.JSObjectInterfacesDom {
+  CompressedTexturePvrtcImpl.internal_() : super.internal_();
+  get runtimeType => CompressedTexturePvrtc;
+  toString() => super.toString();
+}
+patch class ChromiumSubscribeUniform {
+  static Type get instanceRuntimeType => ChromiumSubscribeUniformImpl;
+
+}
+class ChromiumSubscribeUniformImpl extends ChromiumSubscribeUniform implements js_library.JSObjectInterfacesDom {
+  ChromiumSubscribeUniformImpl.internal_() : super.internal_();
+  get runtimeType => ChromiumSubscribeUniform;
+  toString() => super.toString();
+}
+patch class _WebGLRenderingContextBase {
+  static Type get instanceRuntimeType => _WebGLRenderingContextBaseImpl;
+
+}
+class _WebGLRenderingContextBaseImpl extends _WebGLRenderingContextBase implements js_library.JSObjectInterfacesDom {
+  _WebGLRenderingContextBaseImpl.internal_() : super.internal_();
+  get runtimeType => _WebGLRenderingContextBase;
+  toString() => super.toString();
+}
+patch class ActiveInfo {
+  static Type get instanceRuntimeType => ActiveInfoImpl;
+
+}
+class ActiveInfoImpl extends ActiveInfo implements js_library.JSObjectInterfacesDom {
+  ActiveInfoImpl.internal_() : super.internal_();
+  get runtimeType => ActiveInfo;
+  toString() => super.toString();
+}
+patch class TransformFeedback {
+  static Type get instanceRuntimeType => TransformFeedbackImpl;
+
+}
+class TransformFeedbackImpl extends TransformFeedback implements js_library.JSObjectInterfacesDom {
+  TransformFeedbackImpl.internal_() : super.internal_();
+  get runtimeType => TransformFeedback;
+  toString() => super.toString();
+}
+patch class ExtShaderTextureLod {
+  static Type get instanceRuntimeType => ExtShaderTextureLodImpl;
+
+}
+class ExtShaderTextureLodImpl extends ExtShaderTextureLod implements js_library.JSObjectInterfacesDom {
+  ExtShaderTextureLodImpl.internal_() : super.internal_();
+  get runtimeType => ExtShaderTextureLod;
+  toString() => super.toString();
+}
+patch class UniformLocation {
+  static Type get instanceRuntimeType => UniformLocationImpl;
+
+}
+class UniformLocationImpl extends UniformLocation implements js_library.JSObjectInterfacesDom {
+  UniformLocationImpl.internal_() : super.internal_();
+  get runtimeType => UniformLocation;
+  toString() => super.toString();
+}
+patch class ExtBlendMinMax {
+  static Type get instanceRuntimeType => ExtBlendMinMaxImpl;
+
+}
+class ExtBlendMinMaxImpl extends ExtBlendMinMax implements js_library.JSObjectInterfacesDom {
+  ExtBlendMinMaxImpl.internal_() : super.internal_();
+  get runtimeType => ExtBlendMinMax;
+  toString() => super.toString();
+}
+patch class Framebuffer {
+  static Type get instanceRuntimeType => FramebufferImpl;
+
+}
+class FramebufferImpl extends Framebuffer implements js_library.JSObjectInterfacesDom {
+  FramebufferImpl.internal_() : super.internal_();
+  get runtimeType => Framebuffer;
+  toString() => super.toString();
+}
+patch class OesStandardDerivatives {
+  static Type get instanceRuntimeType => OesStandardDerivativesImpl;
+
+}
+class OesStandardDerivativesImpl extends OesStandardDerivatives implements js_library.JSObjectInterfacesDom {
+  OesStandardDerivativesImpl.internal_() : super.internal_();
+  get runtimeType => OesStandardDerivatives;
+  toString() => super.toString();
+}
+patch class DrawBuffers {
+  static Type get instanceRuntimeType => DrawBuffersImpl;
+
+}
+class DrawBuffersImpl extends DrawBuffers implements js_library.JSObjectInterfacesDom {
+  DrawBuffersImpl.internal_() : super.internal_();
+  get runtimeType => DrawBuffers;
+  toString() => super.toString();
+}
+patch class OesTextureFloatLinear {
+  static Type get instanceRuntimeType => OesTextureFloatLinearImpl;
+
+}
+class OesTextureFloatLinearImpl extends OesTextureFloatLinear implements js_library.JSObjectInterfacesDom {
+  OesTextureFloatLinearImpl.internal_() : super.internal_();
+  get runtimeType => OesTextureFloatLinear;
+  toString() => super.toString();
+}
+patch class DebugShaders {
+  static Type get instanceRuntimeType => DebugShadersImpl;
+
+}
+class DebugShadersImpl extends DebugShaders implements js_library.JSObjectInterfacesDom {
+  DebugShadersImpl.internal_() : super.internal_();
+  get runtimeType => DebugShaders;
+  toString() => super.toString();
+}
+patch class Program {
+  static Type get instanceRuntimeType => ProgramImpl;
+
+}
+class ProgramImpl extends Program implements js_library.JSObjectInterfacesDom {
+  ProgramImpl.internal_() : super.internal_();
+  get runtimeType => Program;
+  toString() => super.toString();
+}
+patch class ContextEvent {
+  static Type get instanceRuntimeType => ContextEventImpl;
+
+}
+class ContextEventImpl extends ContextEvent implements js_library.JSObjectInterfacesDom {
+  ContextEventImpl.internal_() : super.internal_();
+  get runtimeType => ContextEvent;
+  toString() => super.toString();
+}
+patch class AngleInstancedArrays {
+  static Type get instanceRuntimeType => AngleInstancedArraysImpl;
+
+}
+class AngleInstancedArraysImpl extends AngleInstancedArrays implements js_library.JSObjectInterfacesDom {
+  AngleInstancedArraysImpl.internal_() : super.internal_();
+  get runtimeType => AngleInstancedArrays;
+  toString() => super.toString();
+}
+patch class DebugRendererInfo {
+  static Type get instanceRuntimeType => DebugRendererInfoImpl;
+
+}
+class DebugRendererInfoImpl extends DebugRendererInfo implements js_library.JSObjectInterfacesDom {
+  DebugRendererInfoImpl.internal_() : super.internal_();
+  get runtimeType => DebugRendererInfo;
+  toString() => super.toString();
+}
+patch class CompressedTextureAtc {
+  static Type get instanceRuntimeType => CompressedTextureAtcImpl;
+
+}
+class CompressedTextureAtcImpl extends CompressedTextureAtc implements js_library.JSObjectInterfacesDom {
+  CompressedTextureAtcImpl.internal_() : super.internal_();
+  get runtimeType => CompressedTextureAtc;
+  toString() => super.toString();
+}
+patch class OesElementIndexUint {
+  static Type get instanceRuntimeType => OesElementIndexUintImpl;
+
+}
+class OesElementIndexUintImpl extends OesElementIndexUint implements js_library.JSObjectInterfacesDom {
+  OesElementIndexUintImpl.internal_() : super.internal_();
+  get runtimeType => OesElementIndexUint;
+  toString() => super.toString();
+}
+patch class CompressedTextureETC1 {
+  static Type get instanceRuntimeType => CompressedTextureETC1Impl;
+
+}
+class CompressedTextureETC1Impl extends CompressedTextureETC1 implements js_library.JSObjectInterfacesDom {
+  CompressedTextureETC1Impl.internal_() : super.internal_();
+  get runtimeType => CompressedTextureETC1;
+  toString() => super.toString();
+}
+patch class LoseContext {
+  static Type get instanceRuntimeType => LoseContextImpl;
+
+}
+class LoseContextImpl extends LoseContext implements js_library.JSObjectInterfacesDom {
+  LoseContextImpl.internal_() : super.internal_();
+  get runtimeType => LoseContext;
+  toString() => super.toString();
+}
+patch class Renderbuffer {
+  static Type get instanceRuntimeType => RenderbufferImpl;
+
+}
+class RenderbufferImpl extends Renderbuffer implements js_library.JSObjectInterfacesDom {
+  RenderbufferImpl.internal_() : super.internal_();
+  get runtimeType => Renderbuffer;
+  toString() => super.toString();
+}
+patch class RenderingContext2 {
+  static Type get instanceRuntimeType => RenderingContext2Impl;
+
+}
+class RenderingContext2Impl extends RenderingContext2 implements js_library.JSObjectInterfacesDom {
+  RenderingContext2Impl.internal_() : super.internal_();
+  get runtimeType => RenderingContext2;
+  toString() => super.toString();
+}
+patch class EXTsRgb {
+  static Type get instanceRuntimeType => EXTsRgbImpl;
+
+}
+class EXTsRgbImpl extends EXTsRgb implements js_library.JSObjectInterfacesDom {
+  EXTsRgbImpl.internal_() : super.internal_();
+  get runtimeType => EXTsRgb;
+  toString() => super.toString();
+}
+
+"""],"dart:web_sql": ["dart:web_sql", "dart:web_sql_js_interop_patch.dart", """import 'dart:js' as js_library;
+
+/**
+ * Placeholder object for cases where we need to determine exactly how many
+ * args were passed to a function.
+ */
+const _UNDEFINED_JS_CONST = const Object();
+
+patch class SqlError {
+  static Type get instanceRuntimeType => SqlErrorImpl;
+
+}
+class SqlErrorImpl extends SqlError implements js_library.JSObjectInterfacesDom {
+  SqlErrorImpl.internal_() : super.internal_();
+  get runtimeType => SqlError;
+  toString() => super.toString();
+}
+patch class SqlResultSet {
+  static Type get instanceRuntimeType => SqlResultSetImpl;
+
+}
+class SqlResultSetImpl extends SqlResultSet implements js_library.JSObjectInterfacesDom {
+  SqlResultSetImpl.internal_() : super.internal_();
+  get runtimeType => SqlResultSet;
+  toString() => super.toString();
+}
+patch class SqlResultSetRowList {
+  static Type get instanceRuntimeType => SqlResultSetRowListImpl;
+
+}
+class SqlResultSetRowListImpl extends SqlResultSetRowList implements js_library.JSObjectInterfacesDom {
+  SqlResultSetRowListImpl.internal_() : super.internal_();
+  get runtimeType => SqlResultSetRowList;
+  toString() => super.toString();
+}
+patch class SqlDatabase {
+  static Type get instanceRuntimeType => SqlDatabaseImpl;
+
+}
+class SqlDatabaseImpl extends SqlDatabase implements js_library.JSObjectInterfacesDom {
+  SqlDatabaseImpl.internal_() : super.internal_();
+  get runtimeType => SqlDatabase;
+  toString() => super.toString();
+}
+patch class SqlTransaction {
+  static Type get instanceRuntimeType => SqlTransactionImpl;
+
+}
+class SqlTransactionImpl extends SqlTransaction implements js_library.JSObjectInterfacesDom {
+  SqlTransactionImpl.internal_() : super.internal_();
+  get runtimeType => SqlTransaction;
+  toString() => super.toString();
+}
+
+"""],"dart:svg": ["dart:svg", "dart:svg_js_interop_patch.dart", """import 'dart:js' as js_library;
+
+/**
+ * Placeholder object for cases where we need to determine exactly how many
+ * args were passed to a function.
+ */
+const _UNDEFINED_JS_CONST = const Object();
+
+patch class AnimatedString {
+  static Type get instanceRuntimeType => AnimatedStringImpl;
+
+}
+class AnimatedStringImpl extends AnimatedString implements js_library.JSObjectInterfacesDom {
+  AnimatedStringImpl.internal_() : super.internal_();
+  get runtimeType => AnimatedString;
+  toString() => super.toString();
+}
+patch class FilterElement {
+  static Type get instanceRuntimeType => FilterElementImpl;
+
+}
+class FilterElementImpl extends FilterElement implements js_library.JSObjectInterfacesDom {
+  FilterElementImpl.internal_() : super.internal_();
+  get runtimeType => FilterElement;
+  toString() => super.toString();
+}
+patch class FilterPrimitiveStandardAttributes {
+  static Type get instanceRuntimeType => FilterPrimitiveStandardAttributesImpl;
+
+}
+class FilterPrimitiveStandardAttributesImpl extends FilterPrimitiveStandardAttributes implements js_library.JSObjectInterfacesDom {
+  FilterPrimitiveStandardAttributesImpl.internal_() : super.internal_();
+  get runtimeType => FilterPrimitiveStandardAttributes;
+  toString() => super.toString();
+}
+patch class PathSegLinetoRel {
+  static Type get instanceRuntimeType => PathSegLinetoRelImpl;
+
+}
+class PathSegLinetoRelImpl extends PathSegLinetoRel implements js_library.JSObjectInterfacesDom {
+  PathSegLinetoRelImpl.internal_() : super.internal_();
+  get runtimeType => PathSegLinetoRel;
+  toString() => super.toString();
+}
+patch class UriReference {
+  static Type get instanceRuntimeType => UriReferenceImpl;
+
+}
+class UriReferenceImpl extends UriReference implements js_library.JSObjectInterfacesDom {
+  UriReferenceImpl.internal_() : super.internal_();
+  get runtimeType => UriReference;
+  toString() => super.toString();
+}
+patch class ImageElement {
+  static Type get instanceRuntimeType => ImageElementImpl;
+
+}
+class ImageElementImpl extends ImageElement implements js_library.JSObjectInterfacesDom {
+  ImageElementImpl.internal_() : super.internal_();
+  get runtimeType => ImageElement;
+  toString() => super.toString();
+}
+patch class StyleElement {
+  static Type get instanceRuntimeType => StyleElementImpl;
+
+}
+class StyleElementImpl extends StyleElement implements js_library.JSObjectInterfacesDom {
+  StyleElementImpl.internal_() : super.internal_();
+  get runtimeType => StyleElement;
+  toString() => super.toString();
+}
+patch class AnimatedPreserveAspectRatio {
+  static Type get instanceRuntimeType => AnimatedPreserveAspectRatioImpl;
+
+}
+class AnimatedPreserveAspectRatioImpl extends AnimatedPreserveAspectRatio implements js_library.JSObjectInterfacesDom {
+  AnimatedPreserveAspectRatioImpl.internal_() : super.internal_();
+  get runtimeType => AnimatedPreserveAspectRatio;
+  toString() => super.toString();
+}
+patch class TextElement {
+  static Type get instanceRuntimeType => TextElementImpl;
+
+}
+class TextElementImpl extends TextElement implements js_library.JSObjectInterfacesDom {
+  TextElementImpl.internal_() : super.internal_();
+  get runtimeType => TextElement;
+  toString() => super.toString();
+}
+patch class DefsElement {
+  static Type get instanceRuntimeType => DefsElementImpl;
+
+}
+class DefsElementImpl extends DefsElement implements js_library.JSObjectInterfacesDom {
+  DefsElementImpl.internal_() : super.internal_();
+  get runtimeType => DefsElement;
+  toString() => super.toString();
+}
+patch class FEDiffuseLightingElement {
+  static Type get instanceRuntimeType => FEDiffuseLightingElementImpl;
+
+}
+class FEDiffuseLightingElementImpl extends FEDiffuseLightingElement implements js_library.JSObjectInterfacesDom {
+  FEDiffuseLightingElementImpl.internal_() : super.internal_();
+  get runtimeType => FEDiffuseLightingElement;
+  toString() => super.toString();
+}
+patch class FETileElement {
+  static Type get instanceRuntimeType => FETileElementImpl;
+
+}
+class FETileElementImpl extends FETileElement implements js_library.JSObjectInterfacesDom {
+  FETileElementImpl.internal_() : super.internal_();
+  get runtimeType => FETileElement;
+  toString() => super.toString();
+}
+patch class PathSegLinetoHorizontalAbs {
+  static Type get instanceRuntimeType => PathSegLinetoHorizontalAbsImpl;
+
+}
+class PathSegLinetoHorizontalAbsImpl extends PathSegLinetoHorizontalAbs implements js_library.JSObjectInterfacesDom {
+  PathSegLinetoHorizontalAbsImpl.internal_() : super.internal_();
+  get runtimeType => PathSegLinetoHorizontalAbs;
+  toString() => super.toString();
+}
+patch class PathSegMovetoRel {
+  static Type get instanceRuntimeType => PathSegMovetoRelImpl;
+
+}
+class PathSegMovetoRelImpl extends PathSegMovetoRel implements js_library.JSObjectInterfacesDom {
+  PathSegMovetoRelImpl.internal_() : super.internal_();
+  get runtimeType => PathSegMovetoRel;
+  toString() => super.toString();
+}
+patch class _SVGFEDropShadowElement {
+  static Type get instanceRuntimeType => _SVGFEDropShadowElementImpl;
+
+}
+class _SVGFEDropShadowElementImpl extends _SVGFEDropShadowElement implements js_library.JSObjectInterfacesDom {
+  _SVGFEDropShadowElementImpl.internal_() : super.internal_();
+  get runtimeType => _SVGFEDropShadowElement;
+  toString() => super.toString();
+}
+patch class Transform {
+  static Type get instanceRuntimeType => TransformImpl;
+
+}
+class TransformImpl extends Transform implements js_library.JSObjectInterfacesDom {
+  TransformImpl.internal_() : super.internal_();
+  get runtimeType => Transform;
+  toString() => super.toString();
+}
+patch class PathSegArcRel {
+  static Type get instanceRuntimeType => PathSegArcRelImpl;
+
+}
+class PathSegArcRelImpl extends PathSegArcRel implements js_library.JSObjectInterfacesDom {
+  PathSegArcRelImpl.internal_() : super.internal_();
+  get runtimeType => PathSegArcRel;
+  toString() => super.toString();
+}
+patch class AnimateElement {
+  static Type get instanceRuntimeType => AnimateElementImpl;
+
+}
+class AnimateElementImpl extends AnimateElement implements js_library.JSObjectInterfacesDom {
+  AnimateElementImpl.internal_() : super.internal_();
+  get runtimeType => AnimateElement;
+  toString() => super.toString();
+}
+patch class PolylineElement {
+  static Type get instanceRuntimeType => PolylineElementImpl;
+
+}
+class PolylineElementImpl extends PolylineElement implements js_library.JSObjectInterfacesDom {
+  PolylineElementImpl.internal_() : super.internal_();
+  get runtimeType => PolylineElement;
+  toString() => super.toString();
+}
+patch class AnimatedRect {
+  static Type get instanceRuntimeType => AnimatedRectImpl;
+
+}
+class AnimatedRectImpl extends AnimatedRect implements js_library.JSObjectInterfacesDom {
+  AnimatedRectImpl.internal_() : super.internal_();
+  get runtimeType => AnimatedRect;
+  toString() => super.toString();
+}
+patch class GraphicsElement {
+  static Type get instanceRuntimeType => GraphicsElementImpl;
+
+}
+class GraphicsElementImpl extends GraphicsElement implements js_library.JSObjectInterfacesDom {
+  GraphicsElementImpl.internal_() : super.internal_();
+  get runtimeType => GraphicsElement;
+  toString() => super.toString();
+}
+patch class TransformList {
+  static Type get instanceRuntimeType => TransformListImpl;
+
+}
+class TransformListImpl extends TransformList implements js_library.JSObjectInterfacesDom {
+  TransformListImpl.internal_() : super.internal_();
+  get runtimeType => TransformList;
+  toString() => super.toString();
+}
+patch class EllipseElement {
+  static Type get instanceRuntimeType => EllipseElementImpl;
+
+}
+class EllipseElementImpl extends EllipseElement implements js_library.JSObjectInterfacesDom {
+  EllipseElementImpl.internal_() : super.internal_();
+  get runtimeType => EllipseElement;
+  toString() => super.toString();
+}
+patch class FEFuncGElement {
+  static Type get instanceRuntimeType => FEFuncGElementImpl;
+
+}
+class FEFuncGElementImpl extends FEFuncGElement implements js_library.JSObjectInterfacesDom {
+  FEFuncGElementImpl.internal_() : super.internal_();
+  get runtimeType => FEFuncGElement;
+  toString() => super.toString();
+}
+patch class PointList {
+  static Type get instanceRuntimeType => PointListImpl;
+
+}
+class PointListImpl extends PointList implements js_library.JSObjectInterfacesDom {
+  PointListImpl.internal_() : super.internal_();
+  get runtimeType => PointList;
+  toString() => super.toString();
+}
+patch class FEMergeElement {
+  static Type get instanceRuntimeType => FEMergeElementImpl;
+
+}
+class FEMergeElementImpl extends FEMergeElement implements js_library.JSObjectInterfacesDom {
+  FEMergeElementImpl.internal_() : super.internal_();
+  get runtimeType => FEMergeElement;
+  toString() => super.toString();
+}
+patch class CircleElement {
+  static Type get instanceRuntimeType => CircleElementImpl;
+
+}
+class CircleElementImpl extends CircleElement implements js_library.JSObjectInterfacesDom {
+  CircleElementImpl.internal_() : super.internal_();
+  get runtimeType => CircleElement;
+  toString() => super.toString();
+}
+patch class AnimatedNumberList {
+  static Type get instanceRuntimeType => AnimatedNumberListImpl;
+
+}
+class AnimatedNumberListImpl extends AnimatedNumberList implements js_library.JSObjectInterfacesDom {
+  AnimatedNumberListImpl.internal_() : super.internal_();
+  get runtimeType => AnimatedNumberList;
+  toString() => super.toString();
+}
+patch class SwitchElement {
+  static Type get instanceRuntimeType => SwitchElementImpl;
+
+}
+class SwitchElementImpl extends SwitchElement implements js_library.JSObjectInterfacesDom {
+  SwitchElementImpl.internal_() : super.internal_();
+  get runtimeType => SwitchElement;
+  toString() => super.toString();
+}
+patch class RadialGradientElement {
+  static Type get instanceRuntimeType => RadialGradientElementImpl;
+
+}
+class RadialGradientElementImpl extends RadialGradientElement implements js_library.JSObjectInterfacesDom {
+  RadialGradientElementImpl.internal_() : super.internal_();
+  get runtimeType => RadialGradientElement;
+  toString() => super.toString();
+}
+patch class FEDistantLightElement {
+  static Type get instanceRuntimeType => FEDistantLightElementImpl;
+
+}
+class FEDistantLightElementImpl extends FEDistantLightElement implements js_library.JSObjectInterfacesDom {
+  FEDistantLightElementImpl.internal_() : super.internal_();
+  get runtimeType => FEDistantLightElement;
+  toString() => super.toString();
+}
+patch class LinearGradientElement {
+  static Type get instanceRuntimeType => LinearGradientElementImpl;
+
+}
+class LinearGradientElementImpl extends LinearGradientElement implements js_library.JSObjectInterfacesDom {
+  LinearGradientElementImpl.internal_() : super.internal_();
+  get runtimeType => LinearGradientElement;
+  toString() => super.toString();
+}
+patch class TextPositioningElement {
+  static Type get instanceRuntimeType => TextPositioningElementImpl;
+
+}
+class TextPositioningElementImpl extends TextPositioningElement implements js_library.JSObjectInterfacesDom {
+  TextPositioningElementImpl.internal_() : super.internal_();
+  get runtimeType => TextPositioningElement;
+  toString() => super.toString();
+}
+patch class PathSegCurvetoQuadraticRel {
+  static Type get instanceRuntimeType => PathSegCurvetoQuadraticRelImpl;
+
+}
+class PathSegCurvetoQuadraticRelImpl extends PathSegCurvetoQuadraticRel implements js_library.JSObjectInterfacesDom {
+  PathSegCurvetoQuadraticRelImpl.internal_() : super.internal_();
+  get runtimeType => PathSegCurvetoQuadraticRel;
+  toString() => super.toString();
+}
+patch class PathSegLinetoHorizontalRel {
+  static Type get instanceRuntimeType => PathSegLinetoHorizontalRelImpl;
+
+}
+class PathSegLinetoHorizontalRelImpl extends PathSegLinetoHorizontalRel implements js_library.JSObjectInterfacesDom {
+  PathSegLinetoHorizontalRelImpl.internal_() : super.internal_();
+  get runtimeType => PathSegLinetoHorizontalRel;
+  toString() => super.toString();
+}
+patch class StringList {
+  static Type get instanceRuntimeType => StringListImpl;
+
+}
+class StringListImpl extends StringList implements js_library.JSObjectInterfacesDom {
+  StringListImpl.internal_() : super.internal_();
+  get runtimeType => StringList;
+  toString() => super.toString();
+}
+patch class TextContentElement {
+  static Type get instanceRuntimeType => TextContentElementImpl;
+
+}
+class TextContentElementImpl extends TextContentElement implements js_library.JSObjectInterfacesDom {
+  TextContentElementImpl.internal_() : super.internal_();
+  get runtimeType => TextContentElement;
+  toString() => super.toString();
+}
+patch class FEConvolveMatrixElement {
+  static Type get instanceRuntimeType => FEConvolveMatrixElementImpl;
+
+}
+class FEConvolveMatrixElementImpl extends FEConvolveMatrixElement implements js_library.JSObjectInterfacesDom {
+  FEConvolveMatrixElementImpl.internal_() : super.internal_();
+  get runtimeType => FEConvolveMatrixElement;
+  toString() => super.toString();
+}
+patch class PathSegLinetoAbs {
+  static Type get instanceRuntimeType => PathSegLinetoAbsImpl;
+
+}
+class PathSegLinetoAbsImpl extends PathSegLinetoAbs implements js_library.JSObjectInterfacesDom {
+  PathSegLinetoAbsImpl.internal_() : super.internal_();
+  get runtimeType => PathSegLinetoAbs;
+  toString() => super.toString();
+}
+patch class FESpecularLightingElement {
+  static Type get instanceRuntimeType => FESpecularLightingElementImpl;
+
+}
+class FESpecularLightingElementImpl extends FESpecularLightingElement implements js_library.JSObjectInterfacesDom {
+  FESpecularLightingElementImpl.internal_() : super.internal_();
+  get runtimeType => FESpecularLightingElement;
+  toString() => super.toString();
+}
+patch class AnimatedTransformList {
+  static Type get instanceRuntimeType => AnimatedTransformListImpl;
+
+}
+class AnimatedTransformListImpl extends AnimatedTransformList implements js_library.JSObjectInterfacesDom {
+  AnimatedTransformListImpl.internal_() : super.internal_();
+  get runtimeType => AnimatedTransformList;
+  toString() => super.toString();
+}
+patch class FEGaussianBlurElement {
+  static Type get instanceRuntimeType => FEGaussianBlurElementImpl;
+
+}
+class FEGaussianBlurElementImpl extends FEGaussianBlurElement implements js_library.JSObjectInterfacesDom {
+  FEGaussianBlurElementImpl.internal_() : super.internal_();
+  get runtimeType => FEGaussianBlurElement;
+  toString() => super.toString();
+}
+patch class Number {
+  static Type get instanceRuntimeType => NumberImpl;
+
+}
+class NumberImpl extends Number implements js_library.JSObjectInterfacesDom {
+  NumberImpl.internal_() : super.internal_();
+  get runtimeType => Number;
+  toString() => super.toString();
+}
+patch class ZoomEvent {
+  static Type get instanceRuntimeType => ZoomEventImpl;
+
+}
+class ZoomEventImpl extends ZoomEvent implements js_library.JSObjectInterfacesDom {
+  ZoomEventImpl.internal_() : super.internal_();
+  get runtimeType => ZoomEvent;
+  toString() => super.toString();
+}
+patch class PathSegCurvetoCubicSmoothAbs {
+  static Type get instanceRuntimeType => PathSegCurvetoCubicSmoothAbsImpl;
+
+}
+class PathSegCurvetoCubicSmoothAbsImpl extends PathSegCurvetoCubicSmoothAbs implements js_library.JSObjectInterfacesDom {
+  PathSegCurvetoCubicSmoothAbsImpl.internal_() : super.internal_();
+  get runtimeType => PathSegCurvetoCubicSmoothAbs;
+  toString() => super.toString();
+}
+patch class AnimatedNumber {
+  static Type get instanceRuntimeType => AnimatedNumberImpl;
+
+}
+class AnimatedNumberImpl extends AnimatedNumber implements js_library.JSObjectInterfacesDom {
+  AnimatedNumberImpl.internal_() : super.internal_();
+  get runtimeType => AnimatedNumber;
+  toString() => super.toString();
+}
+patch class MaskElement {
+  static Type get instanceRuntimeType => MaskElementImpl;
+
+}
+class MaskElementImpl extends MaskElement implements js_library.JSObjectInterfacesDom {
+  MaskElementImpl.internal_() : super.internal_();
+  get runtimeType => MaskElement;
+  toString() => super.toString();
+}
+patch class Angle {
+  static Type get instanceRuntimeType => AngleImpl;
+
+}
+class AngleImpl extends Angle implements js_library.JSObjectInterfacesDom {
+  AngleImpl.internal_() : super.internal_();
+  get runtimeType => Angle;
+  toString() => super.toString();
+}
+patch class SymbolElement {
+  static Type get instanceRuntimeType => SymbolElementImpl;
+
+}
+class SymbolElementImpl extends SymbolElement implements js_library.JSObjectInterfacesDom {
+  SymbolElementImpl.internal_() : super.internal_();
+  get runtimeType => SymbolElement;
+  toString() => super.toString();
+}
+patch class PathSegArcAbs {
+  static Type get instanceRuntimeType => PathSegArcAbsImpl;
+
+}
+class PathSegArcAbsImpl extends PathSegArcAbs implements js_library.JSObjectInterfacesDom {
+  PathSegArcAbsImpl.internal_() : super.internal_();
+  get runtimeType => PathSegArcAbs;
+  toString() => super.toString();
+}
+patch class RectElement {
+  static Type get instanceRuntimeType => RectElementImpl;
+
+}
+class RectElementImpl extends RectElement implements js_library.JSObjectInterfacesDom {
+  RectElementImpl.internal_() : super.internal_();
+  get runtimeType => RectElement;
+  toString() => super.toString();
+}
+patch class FEFloodElement {
+  static Type get instanceRuntimeType => FEFloodElementImpl;
+
+}
+class FEFloodElementImpl extends FEFloodElement implements js_library.JSObjectInterfacesDom {
+  FEFloodElementImpl.internal_() : super.internal_();
+  get runtimeType => FEFloodElement;
+  toString() => super.toString();
+}
+patch class PathSegCurvetoQuadraticAbs {
+  static Type get instanceRuntimeType => PathSegCurvetoQuadraticAbsImpl;
+
+}
+class PathSegCurvetoQuadraticAbsImpl extends PathSegCurvetoQuadraticAbs implements js_library.JSObjectInterfacesDom {
+  PathSegCurvetoQuadraticAbsImpl.internal_() : super.internal_();
+  get runtimeType => PathSegCurvetoQuadraticAbs;
+  toString() => super.toString();
+}
+patch class ScriptElement {
+  static Type get instanceRuntimeType => ScriptElementImpl;
+
+}
+class ScriptElementImpl extends ScriptElement implements js_library.JSObjectInterfacesDom {
+  ScriptElementImpl.internal_() : super.internal_();
+  get runtimeType => ScriptElement;
+  toString() => super.toString();
+}
+patch class AnimatedInteger {
+  static Type get instanceRuntimeType => AnimatedIntegerImpl;
+
+}
+class AnimatedIntegerImpl extends AnimatedInteger implements js_library.JSObjectInterfacesDom {
+  AnimatedIntegerImpl.internal_() : super.internal_();
+  get runtimeType => AnimatedInteger;
+  toString() => super.toString();
+}
+patch class Tests {
+  static Type get instanceRuntimeType => TestsImpl;
+
+}
+class TestsImpl extends Tests implements js_library.JSObjectInterfacesDom {
+  TestsImpl.internal_() : super.internal_();
+  get runtimeType => Tests;
+  toString() => super.toString();
+}
+patch class PathSegCurvetoCubicSmoothRel {
+  static Type get instanceRuntimeType => PathSegCurvetoCubicSmoothRelImpl;
+
+}
+class PathSegCurvetoCubicSmoothRelImpl extends PathSegCurvetoCubicSmoothRel implements js_library.JSObjectInterfacesDom {
+  PathSegCurvetoCubicSmoothRelImpl.internal_() : super.internal_();
+  get runtimeType => PathSegCurvetoCubicSmoothRel;
+  toString() => super.toString();
+}
+patch class PathSeg {
+  static Type get instanceRuntimeType => PathSegImpl;
+
+}
+class PathSegImpl extends PathSeg implements js_library.JSObjectInterfacesDom {
+  PathSegImpl.internal_() : super.internal_();
+  get runtimeType => PathSeg;
+  toString() => super.toString();
+}
+patch class GElement {
+  static Type get instanceRuntimeType => GElementImpl;
+
+}
+class GElementImpl extends GElement implements js_library.JSObjectInterfacesDom {
+  GElementImpl.internal_() : super.internal_();
+  get runtimeType => GElement;
+  toString() => super.toString();
+}
+patch class PathSegMovetoAbs {
+  static Type get instanceRuntimeType => PathSegMovetoAbsImpl;
+
+}
+class PathSegMovetoAbsImpl extends PathSegMovetoAbs implements js_library.JSObjectInterfacesDom {
+  PathSegMovetoAbsImpl.internal_() : super.internal_();
+  get runtimeType => PathSegMovetoAbs;
+  toString() => super.toString();
+}
+patch class PathSegCurvetoCubicAbs {
+  static Type get instanceRuntimeType => PathSegCurvetoCubicAbsImpl;
+
+}
+class PathSegCurvetoCubicAbsImpl extends PathSegCurvetoCubicAbs implements js_library.JSObjectInterfacesDom {
+  PathSegCurvetoCubicAbsImpl.internal_() : super.internal_();
+  get runtimeType => PathSegCurvetoCubicAbs;
+  toString() => super.toString();
+}
+patch class AnimatedEnumeration {
+  static Type get instanceRuntimeType => AnimatedEnumerationImpl;
+
+}
+class AnimatedEnumerationImpl extends AnimatedEnumeration implements js_library.JSObjectInterfacesDom {
+  AnimatedEnumerationImpl.internal_() : super.internal_();
+  get runtimeType => AnimatedEnumeration;
+  toString() => super.toString();
+}
+patch class TitleElement {
+  static Type get instanceRuntimeType => TitleElementImpl;
+
+}
+class TitleElementImpl extends TitleElement implements js_library.JSObjectInterfacesDom {
+  TitleElementImpl.internal_() : super.internal_();
+  get runtimeType => TitleElement;
+  toString() => super.toString();
+}
+patch class MetadataElement {
+  static Type get instanceRuntimeType => MetadataElementImpl;
+
+}
+class MetadataElementImpl extends MetadataElement implements js_library.JSObjectInterfacesDom {
+  MetadataElementImpl.internal_() : super.internal_();
+  get runtimeType => MetadataElement;
+  toString() => super.toString();
+}
+patch class AElement {
+  static Type get instanceRuntimeType => AElementImpl;
+
+}
+class AElementImpl extends AElement implements js_library.JSObjectInterfacesDom {
+  AElementImpl.internal_() : super.internal_();
+  get runtimeType => AElement;
+  toString() => super.toString();
+}
+patch class _GradientElement {
+  static Type get instanceRuntimeType => _GradientElementImpl;
+
+}
+class _GradientElementImpl extends _GradientElement implements js_library.JSObjectInterfacesDom {
+  _GradientElementImpl.internal_() : super.internal_();
+  get runtimeType => _GradientElement;
+  toString() => super.toString();
+}
+patch class FEImageElement {
+  static Type get instanceRuntimeType => FEImageElementImpl;
+
+}
+class FEImageElementImpl extends FEImageElement implements js_library.JSObjectInterfacesDom {
+  FEImageElementImpl.internal_() : super.internal_();
+  get runtimeType => FEImageElement;
+  toString() => super.toString();
+}
+patch class _SVGComponentTransferFunctionElement {
+  static Type get instanceRuntimeType => _SVGComponentTransferFunctionElementImpl;
+
+}
+class _SVGComponentTransferFunctionElementImpl extends _SVGComponentTransferFunctionElement implements js_library.JSObjectInterfacesDom {
+  _SVGComponentTransferFunctionElementImpl.internal_() : super.internal_();
+  get runtimeType => _SVGComponentTransferFunctionElement;
+  toString() => super.toString();
+}
+patch class PathSegLinetoVerticalRel {
+  static Type get instanceRuntimeType => PathSegLinetoVerticalRelImpl;
+
+}
+class PathSegLinetoVerticalRelImpl extends PathSegLinetoVerticalRel implements js_library.JSObjectInterfacesDom {
+  PathSegLinetoVerticalRelImpl.internal_() : super.internal_();
+  get runtimeType => PathSegLinetoVerticalRel;
+  toString() => super.toString();
+}
+patch class AnimatedLengthList {
+  static Type get instanceRuntimeType => AnimatedLengthListImpl;
+
+}
+class AnimatedLengthListImpl extends AnimatedLengthList implements js_library.JSObjectInterfacesDom {
+  AnimatedLengthListImpl.internal_() : super.internal_();
+  get runtimeType => AnimatedLengthList;
+  toString() => super.toString();
+}
+patch class FEMorphologyElement {
+  static Type get instanceRuntimeType => FEMorphologyElementImpl;
+
+}
+class FEMorphologyElementImpl extends FEMorphologyElement implements js_library.JSObjectInterfacesDom {
+  FEMorphologyElementImpl.internal_() : super.internal_();
+  get runtimeType => FEMorphologyElement;
+  toString() => super.toString();
+}
+patch class PolygonElement {
+  static Type get instanceRuntimeType => PolygonElementImpl;
+
+}
+class PolygonElementImpl extends PolygonElement implements js_library.JSObjectInterfacesDom {
+  PolygonElementImpl.internal_() : super.internal_();
+  get runtimeType => PolygonElement;
+  toString() => super.toString();
+}
+patch class UseElement {
+  static Type get instanceRuntimeType => UseElementImpl;
+
+}
+class UseElementImpl extends UseElement implements js_library.JSObjectInterfacesDom {
+  UseElementImpl.internal_() : super.internal_();
+  get runtimeType => UseElement;
+  toString() => super.toString();
+}
+patch class Point {
+  static Type get instanceRuntimeType => PointImpl;
+
+}
+class PointImpl extends Point implements js_library.JSObjectInterfacesDom {
+  PointImpl.internal_() : super.internal_();
+  get runtimeType => Point;
+  toString() => super.toString();
+}
+patch class Rect {
+  static Type get instanceRuntimeType => RectImpl;
+
+}
+class RectImpl extends Rect implements js_library.JSObjectInterfacesDom {
+  RectImpl.internal_() : super.internal_();
+  get runtimeType => Rect;
+  toString() => super.toString();
+}
+patch class AnimatedBoolean {
+  static Type get instanceRuntimeType => AnimatedBooleanImpl;
+
+}
+class AnimatedBooleanImpl extends AnimatedBoolean implements js_library.JSObjectInterfacesDom {
+  AnimatedBooleanImpl.internal_() : super.internal_();
+  get runtimeType => AnimatedBoolean;
+  toString() => super.toString();
+}
+patch class FETurbulenceElement {
+  static Type get instanceRuntimeType => FETurbulenceElementImpl;
+
+}
+class FETurbulenceElementImpl extends FETurbulenceElement implements js_library.JSObjectInterfacesDom {
+  FETurbulenceElementImpl.internal_() : super.internal_();
+  get runtimeType => FETurbulenceElement;
+  toString() => super.toString();
+}
+patch class NumberList {
+  static Type get instanceRuntimeType => NumberListImpl;
+
+}
+class NumberListImpl extends NumberList implements js_library.JSObjectInterfacesDom {
+  NumberListImpl.internal_() : super.internal_();
+  get runtimeType => NumberList;
+  toString() => super.toString();
+}
+patch class AnimationElement {
+  static Type get instanceRuntimeType => AnimationElementImpl;
+
+}
+class AnimationElementImpl extends AnimationElement implements js_library.JSObjectInterfacesDom {
+  AnimationElementImpl.internal_() : super.internal_();
+  get runtimeType => AnimationElement;
+  toString() => super.toString();
+}
+patch class MarkerElement {
+  static Type get instanceRuntimeType => MarkerElementImpl;
+
+}
+class MarkerElementImpl extends MarkerElement implements js_library.JSObjectInterfacesDom {
+  MarkerElementImpl.internal_() : super.internal_();
+  get runtimeType => MarkerElement;
+  toString() => super.toString();
+}
+patch class FECompositeElement {
+  static Type get instanceRuntimeType => FECompositeElementImpl;
+
+}
+class FECompositeElementImpl extends FECompositeElement implements js_library.JSObjectInterfacesDom {
+  FECompositeElementImpl.internal_() : super.internal_();
+  get runtimeType => FECompositeElement;
+  toString() => super.toString();
+}
+patch class PathSegList {
+  static Type get instanceRuntimeType => PathSegListImpl;
+
+}
+class PathSegListImpl extends PathSegList implements js_library.JSObjectInterfacesDom {
+  PathSegListImpl.internal_() : super.internal_();
+  get runtimeType => PathSegList;
+  toString() => super.toString();
+}
+patch class PathSegCurvetoQuadraticSmoothRel {
+  static Type get instanceRuntimeType => PathSegCurvetoQuadraticSmoothRelImpl;
+
+}
+class PathSegCurvetoQuadraticSmoothRelImpl extends PathSegCurvetoQuadraticSmoothRel implements js_library.JSObjectInterfacesDom {
+  PathSegCurvetoQuadraticSmoothRelImpl.internal_() : super.internal_();
+  get runtimeType => PathSegCurvetoQuadraticSmoothRel;
+  toString() => super.toString();
+}
+patch class FEFuncRElement {
+  static Type get instanceRuntimeType => FEFuncRElementImpl;
+
+}
+class FEFuncRElementImpl extends FEFuncRElement implements js_library.JSObjectInterfacesDom {
+  FEFuncRElementImpl.internal_() : super.internal_();
+  get runtimeType => FEFuncRElement;
+  toString() => super.toString();
+}
+patch class FEFuncBElement {
+  static Type get instanceRuntimeType => FEFuncBElementImpl;
+
+}
+class FEFuncBElementImpl extends FEFuncBElement implements js_library.JSObjectInterfacesDom {
+  FEFuncBElementImpl.internal_() : super.internal_();
+  get runtimeType => FEFuncBElement;
+  toString() => super.toString();
+}
+patch class FEBlendElement {
+  static Type get instanceRuntimeType => FEBlendElementImpl;
+
+}
+class FEBlendElementImpl extends FEBlendElement implements js_library.JSObjectInterfacesDom {
+  FEBlendElementImpl.internal_() : super.internal_();
+  get runtimeType => FEBlendElement;
+  toString() => super.toString();
+}
+patch class AnimatedAngle {
+  static Type get instanceRuntimeType => AnimatedAngleImpl;
+
+}
+class AnimatedAngleImpl extends AnimatedAngle implements js_library.JSObjectInterfacesDom {
+  AnimatedAngleImpl.internal_() : super.internal_();
+  get runtimeType => AnimatedAngle;
+  toString() => super.toString();
+}
+patch class TSpanElement {
+  static Type get instanceRuntimeType => TSpanElementImpl;
+
+}
+class TSpanElementImpl extends TSpanElement implements js_library.JSObjectInterfacesDom {
+  TSpanElementImpl.internal_() : super.internal_();
+  get runtimeType => TSpanElement;
+  toString() => super.toString();
+}
+patch class PathSegCurvetoCubicRel {
+  static Type get instanceRuntimeType => PathSegCurvetoCubicRelImpl;
+
+}
+class PathSegCurvetoCubicRelImpl extends PathSegCurvetoCubicRel implements js_library.JSObjectInterfacesDom {
+  PathSegCurvetoCubicRelImpl.internal_() : super.internal_();
+  get runtimeType => PathSegCurvetoCubicRel;
+  toString() => super.toString();
+}
+patch class AnimateMotionElement {
+  static Type get instanceRuntimeType => AnimateMotionElementImpl;
+
+}
+class AnimateMotionElementImpl extends AnimateMotionElement implements js_library.JSObjectInterfacesDom {
+  AnimateMotionElementImpl.internal_() : super.internal_();
+  get runtimeType => AnimateMotionElement;
+  toString() => super.toString();
+}
+patch class GeometryElement {
+  static Type get instanceRuntimeType => GeometryElementImpl;
+
+}
+class GeometryElementImpl extends GeometryElement implements js_library.JSObjectInterfacesDom {
+  GeometryElementImpl.internal_() : super.internal_();
+  get runtimeType => GeometryElement;
+  toString() => super.toString();
+}
+patch class AnimateTransformElement {
+  static Type get instanceRuntimeType => AnimateTransformElementImpl;
+
+}
+class AnimateTransformElementImpl extends AnimateTransformElement implements js_library.JSObjectInterfacesDom {
+  AnimateTransformElementImpl.internal_() : super.internal_();
+  get runtimeType => AnimateTransformElement;
+  toString() => super.toString();
+}
+patch class PreserveAspectRatio {
+  static Type get instanceRuntimeType => PreserveAspectRatioImpl;
+
+}
+class PreserveAspectRatioImpl extends PreserveAspectRatio implements js_library.JSObjectInterfacesDom {
+  PreserveAspectRatioImpl.internal_() : super.internal_();
+  get runtimeType => PreserveAspectRatio;
+  toString() => super.toString();
+}
+patch class PathElement {
+  static Type get instanceRuntimeType => PathElementImpl;
+
+}
+class PathElementImpl extends PathElement implements js_library.JSObjectInterfacesDom {
+  PathElementImpl.internal_() : super.internal_();
+  get runtimeType => PathElement;
+  toString() => super.toString();
+}
+patch class FEColorMatrixElement {
+  static Type get instanceRuntimeType => FEColorMatrixElementImpl;
+
+}
+class FEColorMatrixElementImpl extends FEColorMatrixElement implements js_library.JSObjectInterfacesDom {
+  FEColorMatrixElementImpl.internal_() : super.internal_();
+  get runtimeType => FEColorMatrixElement;
+  toString() => super.toString();
+}
+patch class PatternElement {
+  static Type get instanceRuntimeType => PatternElementImpl;
+
+}
+class PatternElementImpl extends PatternElement implements js_library.JSObjectInterfacesDom {
+  PatternElementImpl.internal_() : super.internal_();
+  get runtimeType => PatternElement;
+  toString() => super.toString();
+}
+patch class Length {
+  static Type get instanceRuntimeType => LengthImpl;
+
+}
+class LengthImpl extends Length implements js_library.JSObjectInterfacesDom {
+  LengthImpl.internal_() : super.internal_();
+  get runtimeType => Length;
+  toString() => super.toString();
+}
+patch class FESpotLightElement {
+  static Type get instanceRuntimeType => FESpotLightElementImpl;
+
+}
+class FESpotLightElementImpl extends FESpotLightElement implements js_library.JSObjectInterfacesDom {
+  FESpotLightElementImpl.internal_() : super.internal_();
+  get runtimeType => FESpotLightElement;
+  toString() => super.toString();
+}
+patch class LineElement {
+  static Type get instanceRuntimeType => LineElementImpl;
+
+}
+class LineElementImpl extends LineElement implements js_library.JSObjectInterfacesDom {
+  LineElementImpl.internal_() : super.internal_();
+  get runtimeType => LineElement;
+  toString() => super.toString();
+}
+patch class Matrix {
+  static Type get instanceRuntimeType => MatrixImpl;
+
+}
+class MatrixImpl extends Matrix implements js_library.JSObjectInterfacesDom {
+  MatrixImpl.internal_() : super.internal_();
+  get runtimeType => Matrix;
+  toString() => super.toString();
+}
+patch class SvgSvgElement {
+  static Type get instanceRuntimeType => SvgSvgElementImpl;
+
+}
+class SvgSvgElementImpl extends SvgSvgElement implements js_library.JSObjectInterfacesDom {
+  SvgSvgElementImpl.internal_() : super.internal_();
+  get runtimeType => SvgSvgElement;
+  toString() => super.toString();
+}
+patch class FitToViewBox {
+  static Type get instanceRuntimeType => FitToViewBoxImpl;
+
+}
+class FitToViewBoxImpl extends FitToViewBox implements js_library.JSObjectInterfacesDom {
+  FitToViewBoxImpl.internal_() : super.internal_();
+  get runtimeType => FitToViewBox;
+  toString() => super.toString();
+}
+patch class _SVGMPathElement {
+  static Type get instanceRuntimeType => _SVGMPathElementImpl;
+
+}
+class _SVGMPathElementImpl extends _SVGMPathElement implements js_library.JSObjectInterfacesDom {
+  _SVGMPathElementImpl.internal_() : super.internal_();
+  get runtimeType => _SVGMPathElement;
+  toString() => super.toString();
+}
+patch class FEDisplacementMapElement {
+  static Type get instanceRuntimeType => FEDisplacementMapElementImpl;
+
+}
+class FEDisplacementMapElementImpl extends FEDisplacementMapElement implements js_library.JSObjectInterfacesDom {
+  FEDisplacementMapElementImpl.internal_() : super.internal_();
+  get runtimeType => FEDisplacementMapElement;
+  toString() => super.toString();
+}
+patch class PathSegCurvetoQuadraticSmoothAbs {
+  static Type get instanceRuntimeType => PathSegCurvetoQuadraticSmoothAbsImpl;
+
+}
+class PathSegCurvetoQuadraticSmoothAbsImpl extends PathSegCurvetoQuadraticSmoothAbs implements js_library.JSObjectInterfacesDom {
+  PathSegCurvetoQuadraticSmoothAbsImpl.internal_() : super.internal_();
+  get runtimeType => PathSegCurvetoQuadraticSmoothAbs;
+  toString() => super.toString();
+}
+patch class PathSegClosePath {
+  static Type get instanceRuntimeType => PathSegClosePathImpl;
+
+}
+class PathSegClosePathImpl extends PathSegClosePath implements js_library.JSObjectInterfacesDom {
+  PathSegClosePathImpl.internal_() : super.internal_();
+  get runtimeType => PathSegClosePath;
+  toString() => super.toString();
+}
+patch class AnimatedLength {
+  static Type get instanceRuntimeType => AnimatedLengthImpl;
+
+}
+class AnimatedLengthImpl extends AnimatedLength implements js_library.JSObjectInterfacesDom {
+  AnimatedLengthImpl.internal_() : super.internal_();
+  get runtimeType => AnimatedLength;
+  toString() => super.toString();
+}
+patch class ClipPathElement {
+  static Type get instanceRuntimeType => ClipPathElementImpl;
+
+}
+class ClipPathElementImpl extends ClipPathElement implements js_library.JSObjectInterfacesDom {
+  ClipPathElementImpl.internal_() : super.internal_();
+  get runtimeType => ClipPathElement;
+  toString() => super.toString();
+}
+patch class StopElement {
+  static Type get instanceRuntimeType => StopElementImpl;
+
+}
+class StopElementImpl extends StopElement implements js_library.JSObjectInterfacesDom {
+  StopElementImpl.internal_() : super.internal_();
+  get runtimeType => StopElement;
+  toString() => super.toString();
+}
+patch class ViewSpec {
+  static Type get instanceRuntimeType => ViewSpecImpl;
+
+}
+class ViewSpecImpl extends ViewSpec implements js_library.JSObjectInterfacesDom {
+  ViewSpecImpl.internal_() : super.internal_();
+  get runtimeType => ViewSpec;
+  toString() => super.toString();
+}
+patch class LengthList {
+  static Type get instanceRuntimeType => LengthListImpl;
+
+}
+class LengthListImpl extends LengthList implements js_library.JSObjectInterfacesDom {
+  LengthListImpl.internal_() : super.internal_();
+  get runtimeType => LengthList;
+  toString() => super.toString();
+}
+patch class _SVGCursorElement {
+  static Type get instanceRuntimeType => _SVGCursorElementImpl;
+
+}
+class _SVGCursorElementImpl extends _SVGCursorElement implements js_library.JSObjectInterfacesDom {
+  _SVGCursorElementImpl.internal_() : super.internal_();
+  get runtimeType => _SVGCursorElement;
+  toString() => super.toString();
+}
+patch class ForeignObjectElement {
+  static Type get instanceRuntimeType => ForeignObjectElementImpl;
+
+}
+class ForeignObjectElementImpl extends ForeignObjectElement implements js_library.JSObjectInterfacesDom {
+  ForeignObjectElementImpl.internal_() : super.internal_();
+  get runtimeType => ForeignObjectElement;
+  toString() => super.toString();
+}
+patch class SetElement {
+  static Type get instanceRuntimeType => SetElementImpl;
+
+}
+class SetElementImpl extends SetElement implements js_library.JSObjectInterfacesDom {
+  SetElementImpl.internal_() : super.internal_();
+  get runtimeType => SetElement;
+  toString() => super.toString();
+}
+patch class SvgElement {
+  static Type get instanceRuntimeType => SvgElementImpl;
+
+}
+class SvgElementImpl extends SvgElement implements js_library.JSObjectInterfacesDom {
+  SvgElementImpl.internal_() : super.internal_();
+  get runtimeType => SvgElement;
+  toString() => super.toString();
+}
+patch class UnitTypes {
+  static Type get instanceRuntimeType => UnitTypesImpl;
+
+}
+class UnitTypesImpl extends UnitTypes implements js_library.JSObjectInterfacesDom {
+  UnitTypesImpl.internal_() : super.internal_();
+  get runtimeType => UnitTypes;
+  toString() => super.toString();
+}
+patch class FEComponentTransferElement {
+  static Type get instanceRuntimeType => FEComponentTransferElementImpl;
+
+}
+class FEComponentTransferElementImpl extends FEComponentTransferElement implements js_library.JSObjectInterfacesDom {
+  FEComponentTransferElementImpl.internal_() : super.internal_();
+  get runtimeType => FEComponentTransferElement;
+  toString() => super.toString();
+}
+patch class PathSegLinetoVerticalAbs {
+  static Type get instanceRuntimeType => PathSegLinetoVerticalAbsImpl;
+
+}
+class PathSegLinetoVerticalAbsImpl extends PathSegLinetoVerticalAbs implements js_library.JSObjectInterfacesDom {
+  PathSegLinetoVerticalAbsImpl.internal_() : super.internal_();
+  get runtimeType => PathSegLinetoVerticalAbs;
+  toString() => super.toString();
+}
+patch class DescElement {
+  static Type get instanceRuntimeType => DescElementImpl;
+
+}
+class DescElementImpl extends DescElement implements js_library.JSObjectInterfacesDom {
+  DescElementImpl.internal_() : super.internal_();
+  get runtimeType => DescElement;
+  toString() => super.toString();
+}
+patch class DiscardElement {
+  static Type get instanceRuntimeType => DiscardElementImpl;
+
+}
+class DiscardElementImpl extends DiscardElement implements js_library.JSObjectInterfacesDom {
+  DiscardElementImpl.internal_() : super.internal_();
+  get runtimeType => DiscardElement;
+  toString() => super.toString();
+}
+patch class FEMergeNodeElement {
+  static Type get instanceRuntimeType => FEMergeNodeElementImpl;
+
+}
+class FEMergeNodeElementImpl extends FEMergeNodeElement implements js_library.JSObjectInterfacesDom {
+  FEMergeNodeElementImpl.internal_() : super.internal_();
+  get runtimeType => FEMergeNodeElement;
+  toString() => super.toString();
+}
+patch class TextPathElement {
+  static Type get instanceRuntimeType => TextPathElementImpl;
+
+}
+class TextPathElementImpl extends TextPathElement implements js_library.JSObjectInterfacesDom {
+  TextPathElementImpl.internal_() : super.internal_();
+  get runtimeType => TextPathElement;
+  toString() => super.toString();
+}
+patch class FEOffsetElement {
+  static Type get instanceRuntimeType => FEOffsetElementImpl;
+
+}
+class FEOffsetElementImpl extends FEOffsetElement implements js_library.JSObjectInterfacesDom {
+  FEOffsetElementImpl.internal_() : super.internal_();
+  get runtimeType => FEOffsetElement;
+  toString() => super.toString();
+}
+patch class ZoomAndPan {
+  static Type get instanceRuntimeType => ZoomAndPanImpl;
+
+}
+class ZoomAndPanImpl extends ZoomAndPan implements js_library.JSObjectInterfacesDom {
+  ZoomAndPanImpl.internal_() : super.internal_();
+  get runtimeType => ZoomAndPan;
+  toString() => super.toString();
+}
+patch class ViewElement {
+  static Type get instanceRuntimeType => ViewElementImpl;
+
+}
+class ViewElementImpl extends ViewElement implements js_library.JSObjectInterfacesDom {
+  ViewElementImpl.internal_() : super.internal_();
+  get runtimeType => ViewElement;
+  toString() => super.toString();
+}
+patch class FEPointLightElement {
+  static Type get instanceRuntimeType => FEPointLightElementImpl;
+
+}
+class FEPointLightElementImpl extends FEPointLightElement implements js_library.JSObjectInterfacesDom {
+  FEPointLightElementImpl.internal_() : super.internal_();
+  get runtimeType => FEPointLightElement;
+  toString() => super.toString();
+}
+patch class FEFuncAElement {
+  static Type get instanceRuntimeType => FEFuncAElementImpl;
+
+}
+class FEFuncAElementImpl extends FEFuncAElement implements js_library.JSObjectInterfacesDom {
+  FEFuncAElementImpl.internal_() : super.internal_();
+  get runtimeType => FEFuncAElement;
+  toString() => super.toString();
+}
+
+"""],"dart:web_audio": ["dart:web_audio", "dart:web_audio_js_interop_patch.dart", """import 'dart:js' as js_library;
+
+/**
+ * Placeholder object for cases where we need to determine exactly how many
+ * args were passed to a function.
+ */
+const _UNDEFINED_JS_CONST = const Object();
+
+patch class GainNode {
+  static Type get instanceRuntimeType => GainNodeImpl;
+
+}
+class GainNodeImpl extends GainNode implements js_library.JSObjectInterfacesDom {
+  GainNodeImpl.internal_() : super.internal_();
+  get runtimeType => GainNode;
+  toString() => super.toString();
+}
+patch class MediaStreamAudioDestinationNode {
+  static Type get instanceRuntimeType => MediaStreamAudioDestinationNodeImpl;
+
+}
+class MediaStreamAudioDestinationNodeImpl extends MediaStreamAudioDestinationNode implements js_library.JSObjectInterfacesDom {
+  MediaStreamAudioDestinationNodeImpl.internal_() : super.internal_();
+  get runtimeType => MediaStreamAudioDestinationNode;
+  toString() => super.toString();
+}
+patch class AudioProcessingEvent {
+  static Type get instanceRuntimeType => AudioProcessingEventImpl;
+
+}
+class AudioProcessingEventImpl extends AudioProcessingEvent implements js_library.JSObjectInterfacesDom {
+  AudioProcessingEventImpl.internal_() : super.internal_();
+  get runtimeType => AudioProcessingEvent;
+  toString() => super.toString();
+}
+patch class StereoPannerNode {
+  static Type get instanceRuntimeType => StereoPannerNodeImpl;
+
+}
+class StereoPannerNodeImpl extends StereoPannerNode implements js_library.JSObjectInterfacesDom {
+  StereoPannerNodeImpl.internal_() : super.internal_();
+  get runtimeType => StereoPannerNode;
+  toString() => super.toString();
+}
+patch class DynamicsCompressorNode {
+  static Type get instanceRuntimeType => DynamicsCompressorNodeImpl;
+
+}
+class DynamicsCompressorNodeImpl extends DynamicsCompressorNode implements js_library.JSObjectInterfacesDom {
+  DynamicsCompressorNodeImpl.internal_() : super.internal_();
+  get runtimeType => DynamicsCompressorNode;
+  toString() => super.toString();
+}
+patch class PeriodicWave {
+  static Type get instanceRuntimeType => PeriodicWaveImpl;
+
+}
+class PeriodicWaveImpl extends PeriodicWave implements js_library.JSObjectInterfacesDom {
+  PeriodicWaveImpl.internal_() : super.internal_();
+  get runtimeType => PeriodicWave;
+  toString() => super.toString();
+}
+patch class MediaStreamAudioSourceNode {
+  static Type get instanceRuntimeType => MediaStreamAudioSourceNodeImpl;
+
+}
+class MediaStreamAudioSourceNodeImpl extends MediaStreamAudioSourceNode implements js_library.JSObjectInterfacesDom {
+  MediaStreamAudioSourceNodeImpl.internal_() : super.internal_();
+  get runtimeType => MediaStreamAudioSourceNode;
+  toString() => super.toString();
+}
+patch class PannerNode {
+  static Type get instanceRuntimeType => PannerNodeImpl;
+
+}
+class PannerNodeImpl extends PannerNode implements js_library.JSObjectInterfacesDom {
+  PannerNodeImpl.internal_() : super.internal_();
+  get runtimeType => PannerNode;
+  toString() => super.toString();
+}
+patch class OfflineAudioContext {
+  static Type get instanceRuntimeType => OfflineAudioContextImpl;
+
+}
+class OfflineAudioContextImpl extends OfflineAudioContext implements js_library.JSObjectInterfacesDom {
+  OfflineAudioContextImpl.internal_() : super.internal_();
+  get runtimeType => OfflineAudioContext;
+  toString() => super.toString();
+}
+patch class AudioParam {
+  static Type get instanceRuntimeType => AudioParamImpl;
+
+}
+class AudioParamImpl extends AudioParam implements js_library.JSObjectInterfacesDom {
+  AudioParamImpl.internal_() : super.internal_();
+  get runtimeType => AudioParam;
+  toString() => super.toString();
+}
+patch class AnalyserNode {
+  static Type get instanceRuntimeType => AnalyserNodeImpl;
+
+}
+class AnalyserNodeImpl extends AnalyserNode implements js_library.JSObjectInterfacesDom {
+  AnalyserNodeImpl.internal_() : super.internal_();
+  get runtimeType => AnalyserNode;
+  toString() => super.toString();
+}
+patch class ConvolverNode {
+  static Type get instanceRuntimeType => ConvolverNodeImpl;
+
+}
+class ConvolverNodeImpl extends ConvolverNode implements js_library.JSObjectInterfacesDom {
+  ConvolverNodeImpl.internal_() : super.internal_();
+  get runtimeType => ConvolverNode;
+  toString() => super.toString();
+}
+patch class AudioNode {
+  static Type get instanceRuntimeType => AudioNodeImpl;
+
+}
+class AudioNodeImpl extends AudioNode implements js_library.JSObjectInterfacesDom {
+  AudioNodeImpl.internal_() : super.internal_();
+  get runtimeType => AudioNode;
+  toString() => super.toString();
+}
+patch class AudioDestinationNode {
+  static Type get instanceRuntimeType => AudioDestinationNodeImpl;
+
+}
+class AudioDestinationNodeImpl extends AudioDestinationNode implements js_library.JSObjectInterfacesDom {
+  AudioDestinationNodeImpl.internal_() : super.internal_();
+  get runtimeType => AudioDestinationNode;
+  toString() => super.toString();
+}
+patch class WaveShaperNode {
+  static Type get instanceRuntimeType => WaveShaperNodeImpl;
+
+}
+class WaveShaperNodeImpl extends WaveShaperNode implements js_library.JSObjectInterfacesDom {
+  WaveShaperNodeImpl.internal_() : super.internal_();
+  get runtimeType => WaveShaperNode;
+  toString() => super.toString();
+}
+patch class ScriptProcessorNode {
+  static Type get instanceRuntimeType => ScriptProcessorNodeImpl;
+
+}
+class ScriptProcessorNodeImpl extends ScriptProcessorNode implements js_library.JSObjectInterfacesDom {
+  ScriptProcessorNodeImpl.internal_() : super.internal_();
+  get runtimeType => ScriptProcessorNode;
+  toString() => super.toString();
+}
+patch class MediaElementAudioSourceNode {
+  static Type get instanceRuntimeType => MediaElementAudioSourceNodeImpl;
+
+}
+class MediaElementAudioSourceNodeImpl extends MediaElementAudioSourceNode implements js_library.JSObjectInterfacesDom {
+  MediaElementAudioSourceNodeImpl.internal_() : super.internal_();
+  get runtimeType => MediaElementAudioSourceNode;
+  toString() => super.toString();
+}
+patch class AudioBufferSourceNode {
+  static Type get instanceRuntimeType => AudioBufferSourceNodeImpl;
+
+}
+class AudioBufferSourceNodeImpl extends AudioBufferSourceNode implements js_library.JSObjectInterfacesDom {
+  AudioBufferSourceNodeImpl.internal_() : super.internal_();
+  get runtimeType => AudioBufferSourceNode;
+  toString() => super.toString();
+}
+patch class AudioContext {
+  static Type get instanceRuntimeType => AudioContextImpl;
+
+}
+class AudioContextImpl extends AudioContext implements js_library.JSObjectInterfacesDom {
+  AudioContextImpl.internal_() : super.internal_();
+  get runtimeType => AudioContext;
+  toString() => super.toString();
+}
+patch class ChannelSplitterNode {
+  static Type get instanceRuntimeType => ChannelSplitterNodeImpl;
+
+}
+class ChannelSplitterNodeImpl extends ChannelSplitterNode implements js_library.JSObjectInterfacesDom {
+  ChannelSplitterNodeImpl.internal_() : super.internal_();
+  get runtimeType => ChannelSplitterNode;
+  toString() => super.toString();
+}
+patch class DelayNode {
+  static Type get instanceRuntimeType => DelayNodeImpl;
+
+}
+class DelayNodeImpl extends DelayNode implements js_library.JSObjectInterfacesDom {
+  DelayNodeImpl.internal_() : super.internal_();
+  get runtimeType => DelayNode;
+  toString() => super.toString();
+}
+patch class OfflineAudioCompletionEvent {
+  static Type get instanceRuntimeType => OfflineAudioCompletionEventImpl;
+
+}
+class OfflineAudioCompletionEventImpl extends OfflineAudioCompletionEvent implements js_library.JSObjectInterfacesDom {
+  OfflineAudioCompletionEventImpl.internal_() : super.internal_();
+  get runtimeType => OfflineAudioCompletionEvent;
+  toString() => super.toString();
+}
+patch class OscillatorNode {
+  static Type get instanceRuntimeType => OscillatorNodeImpl;
+
+}
+class OscillatorNodeImpl extends OscillatorNode implements js_library.JSObjectInterfacesDom {
+  OscillatorNodeImpl.internal_() : super.internal_();
+  get runtimeType => OscillatorNode;
+  toString() => super.toString();
+}
+patch class BiquadFilterNode {
+  static Type get instanceRuntimeType => BiquadFilterNodeImpl;
+
+}
+class BiquadFilterNodeImpl extends BiquadFilterNode implements js_library.JSObjectInterfacesDom {
+  BiquadFilterNodeImpl.internal_() : super.internal_();
+  get runtimeType => BiquadFilterNode;
+  toString() => super.toString();
+}
+patch class AudioBuffer {
+  static Type get instanceRuntimeType => AudioBufferImpl;
+
+}
+class AudioBufferImpl extends AudioBuffer implements js_library.JSObjectInterfacesDom {
+  AudioBufferImpl.internal_() : super.internal_();
+  get runtimeType => AudioBuffer;
+  toString() => super.toString();
+}
+patch class ChannelMergerNode {
+  static Type get instanceRuntimeType => ChannelMergerNodeImpl;
+
+}
+class ChannelMergerNodeImpl extends ChannelMergerNode implements js_library.JSObjectInterfacesDom {
+  ChannelMergerNodeImpl.internal_() : super.internal_();
+  get runtimeType => ChannelMergerNode;
+  toString() => super.toString();
+}
+patch class AudioSourceNode {
+  static Type get instanceRuntimeType => AudioSourceNodeImpl;
+
+}
+class AudioSourceNodeImpl extends AudioSourceNode implements js_library.JSObjectInterfacesDom {
+  AudioSourceNodeImpl.internal_() : super.internal_();
+  get runtimeType => AudioSourceNode;
+  toString() => super.toString();
+}
+patch class AudioListener {
+  static Type get instanceRuntimeType => AudioListenerImpl;
+
+}
+class AudioListenerImpl extends AudioListener implements js_library.JSObjectInterfacesDom {
+  AudioListenerImpl.internal_() : super.internal_();
+  get runtimeType => AudioListener;
+  toString() => super.toString();
+}
+
+"""],};
+// END_OF_CACHED_PATCHES
diff --git a/sdk/lib/js/dartium/js_dartium.dart b/sdk/lib/js/dartium/js_dartium.dart
index 070baf7..610ec22 100644
--- a/sdk/lib/js/dartium/js_dartium.dart
+++ b/sdk/lib/js/dartium/js_dartium.dart
@@ -92,9 +92,13 @@
 import 'dart:math' as math;
 import 'dart:mirrors' as mirrors;
 import 'dart:html' as html;
+import 'dart:_blink' as _blink;
 import 'dart:html_common' as html_common;
 import 'dart:indexed_db' as indexed_db;
 import 'dart:typed_data';
+import 'dart:core';
+
+import 'cached_patches.dart';
 
 // Pretend we are always in checked mode as we aren't interested in users
 // running Dartium code outside of checked mode.
@@ -117,7 +121,7 @@
       varArgs[mirrors.MirrorSystem.getName(symbol)] = val;
     });
     return invocation.positionalArguments.toList()
-      ..add(maybeWrapTypedInterop(new JsObject.jsify(varArgs)));
+      ..add(JsNative.jsify(varArgs));
   }
 }
 
@@ -278,13 +282,52 @@
 
 _finalizeJsInterfaces() native "Js_finalizeJsInterfaces";
 
+// Create the files for the generated Dart files from IDLs.  These only change
+// when browser's Dart files change (dart:*).
+@Deprecated("Internal Use Only")
+String createCachedPatchesFile() {
+  var patches = _generateInteropPatchFiles(['dart:html',
+                                            'dart:indexed_db',
+                                            'dart:web_gl',
+                                            'dart:web_sql',
+                                            'dart:svg',
+                                            'dart:web_audio']);
+  var sb = new StringBuffer();
+
+  sb.write("""
+
+// START_OF_CACHED_PATCHES
+// 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.
+
+// DO NOT EDIT GENERATED FILE.
+
+library cached_patches;
+
+var cached_patches = {""");
+
+  for (var baseIndex = 0; baseIndex < patches.length; baseIndex += 3) {
+    var uri = patches[baseIndex + 0];
+    var uri_js_interop = patches[baseIndex + 1];
+    var source = patches[baseIndex + 2];
+
+    if (uri != 'dart:js') {
+      sb.write('"$uri": ["$uri", "$uri_js_interop", """$source"""],');
+    }
+  }
+
+  sb.write("""};
+// END_OF_CACHED_PATCHES
+  """);
+
+  return "$sb";
+}
+
 String _getJsName(mirrors.DeclarationMirror mirror) {
-  for (var annotation in mirror.metadata) {
-    if (mirrors.MirrorSystem.getName(annotation.type.simpleName) == "JS") {
-      mirrors.LibraryMirror library = annotation.type.owner;
-      var uri = library.uri;
-      // make sure the annotation is from package://js
-      if (uri.scheme == 'package' && uri.path == 'js/js.dart') {
+  if (_atJsType != null) {
+    for (var annotation in mirror.metadata) {
+      if (annotation.type.reflectedType == _atJsType) {
         try {
           var name = annotation.reflectee.name;
           return name != null ? name : "";
@@ -312,6 +355,8 @@
 
 bool _hasJsName(mirrors.DeclarationMirror mirror) => _getJsName(mirror) != null;
 
+var _domNameType;
+
 bool hasDomName(mirrors.DeclarationMirror mirror) {
   var location = mirror.location;
   if (location == null || location.sourceUri.scheme != 'dart') return false;
@@ -357,12 +402,21 @@
   return sb.toString();
 }
 
+// TODO(jacobr): remove these helpers and add JsNative.setPropertyDotted,
+// getPropertyDotted, and callMethodDotted helpers that would be simpler
+// and more efficient.
 String _accessJsPathSetter(String path) {
   var parts = path.split(".");
   return "${_JS_LIBRARY_PREFIX}.JsNative.setProperty(${_accessJsPathHelper(parts.getRange(0, parts.length - 1))
       }, '${parts.last}', v)";
 }
 
+String _accessJsPathCallMethodHelper(String path) {
+  var parts = path.split(".");
+  return "${_JS_LIBRARY_PREFIX}.JsNative.callMethod(${_accessJsPathHelper(parts.getRange(0, parts.length - 1))
+      }, '${parts.last}',";
+}
+
 @Deprecated("Internal Use Only")
 void addMemberHelper(
     mirrors.MethodMirror declaration, String path, StringBuffer sb,
@@ -382,11 +436,11 @@
   sb.write(" ");
   if (declaration.isGetter) {
     sb.write(
-        "get $name => ${_JS_LIBRARY_PREFIX}.maybeWrapTypedInterop(${_accessJsPath(path)});");
+        "get $name => ${_accessJsPath(path)};");
   } else if (declaration.isSetter) {
     sb.write("set $name(v) {\n"
         "  ${_JS_LIBRARY_PREFIX}.safeForTypedInterop(v);\n"
-        "  return ${_JS_LIBRARY_PREFIX}.maybeWrapTypedInterop(${_accessJsPathSetter(path)});\n"
+        "  return ${_accessJsPathSetter(path)};\n"
         "}\n");
   } else {
     sb.write("$name(");
@@ -419,19 +473,19 @@
     for (var arg in args) {
       sb.write("  ${_JS_LIBRARY_PREFIX}.safeForTypedInterop($arg);\n");
     }
-    sb.write("  return ${_JS_LIBRARY_PREFIX}.maybeWrapTypedInterop(");
+    sb.write("  return ");
     if (declaration.isConstructor) {
-      sb.write("new ${_JS_LIBRARY_PREFIX}.JsObject(");
+      sb.write("${_JS_LIBRARY_PREFIX}.JsNative.callConstructor(");
+      sb..write(_accessJsPath(path))..write(",");
+    } else {
+      sb.write(_accessJsPathCallMethodHelper(path));
     }
-    sb
-      ..write(_accessJsPath(path))
-      ..write(declaration.isConstructor ? "," : ".apply(")
-      ..write("[${args.join(",")}]");
+    sb.write("[${args.join(",")}]");
 
     if (hasOptional) {
       sb.write(".takeWhile((i) => i != ${_UNDEFINED_VAR}).toList()");
     }
-    sb.write("));");
+    sb.write(");");
     sb.write("}\n");
   }
   sb.write("\n");
@@ -445,9 +499,37 @@
   return false;
 }
 
-List<String> _generateExternalMethods() {
+List<String> _generateExternalMethods(List<String> libraryPaths) {
   var staticCodegen = <String>[];
-  mirrors.currentMirrorSystem().libraries.forEach((uri, library) {
+
+  if (libraryPaths.length == 0) {
+    mirrors.currentMirrorSystem().libraries.forEach((uri, library) {
+      var library_name = "${uri.scheme}:${uri.path}";
+      if (cached_patches.containsKey(library_name)) {
+        var patch = cached_patches[library_name];
+        staticCodegen.addAll(patch);
+      } else {
+        _generateLibraryCodegen(uri, library, staticCodegen);
+      }
+    });    // End of library foreach
+  } else {
+    // Used to generate cached_patches.dart file for all IDL generated dart:
+    // files to the WebKit DOM.
+    for (var library_name in libraryPaths) {
+      var parts = library_name.split(':');
+      var uri = new Uri(scheme: parts[0], path: parts[1]);
+      var library = mirrors.currentMirrorSystem().libraries[uri];
+      _generateLibraryCodegen(uri, library, staticCodegen);
+    }
+  }
+
+  return staticCodegen;
+}
+
+_generateLibraryCodegen(uri, library, staticCodegen) {
+    // Is it a dart generated library?
+    var dartLibrary = uri.scheme == 'dart';  
+
     var sb = new StringBuffer();
     String jsLibraryName = _getJsName(library);
     library.declarations.forEach((name, declaration) {
@@ -458,7 +540,7 @@
         }
       } else if (declaration is mirrors.ClassMirror) {
         mirrors.ClassMirror clazz = declaration;
-        var isDom = hasDomName(clazz);
+        var isDom = dartLibrary ? hasDomName(clazz) : false;
         var isJsInterop = _hasJsName(clazz);
         if (isDom || isJsInterop) {
           // TODO(jacobr): verify class implements JavaScriptObject.
@@ -490,7 +572,7 @@
                     ..write('}');
                 }
                 sbPatch.write(") {\n"
-                    "    var ret = new ${_JS_LIBRARY_PREFIX}.JsObject.jsify({});\n");
+                    "    var ret = ${_JS_LIBRARY_PREFIX}.JsNative.newObject();\n");
                 i = 0;
                 for (var p in declaration.parameters) {
                   assert(p.isNamed); // TODO(jacobr): throw.
@@ -499,14 +581,14 @@
                       mirrors.MirrorSystem.getName(p.simpleName));
                   sbPatch.write("    if($name != ${_UNDEFINED_VAR}) {\n"
                       "      ${_JS_LIBRARY_PREFIX}.safeForTypedInterop($name);\n"
-                      "      ret['$jsName'] = $name;\n"
+                      "      ${_JS_LIBRARY_PREFIX}.JsNative.setProperty(ret, '$jsName', $name);\n"
                       "    }\n");
                   i++;
                 }
 
                 sbPatch.write(
-                    "    return new ${_JS_LIBRARY_PREFIX}.JSObject.create(ret);\n"
-                    "  }\n");
+                  "  return ret;"
+                  "}\n");
               } else if (declaration.isConstructor ||
                   declaration.isFactoryConstructor) {
                 sbPatch.write("  ");
@@ -519,7 +601,7 @@
                     isStatic: true,
                     memberName: className);
               }
-            });
+            });   // End of clazz.declarations.forEach 
 
             clazz.staticMembers.forEach((memberName, member) {
               if (_isExternal(member)) {
@@ -535,8 +617,7 @@
             });
           }
           if (isDom) {
-            sbPatch.write("  factory ${className}._internalWrap() => "
-                "new ${classNameImpl}.internal_();\n");
+            sbPatch.write("  static Type get instanceRuntimeType => ${classNameImpl};\n");
           }
           if (sbPatch.isNotEmpty) {
             var typeVariablesClause = '';
@@ -578,18 +659,32 @@
 ${sb}
 """);
     }
-  });
-
-  return staticCodegen;
 }
 
+// Remember the @JS type to compare annotation type.
+var _atJsType = -1;
+
 /**
  * Generates part files defining source code for JSObjectImpl, all DOM classes
  * classes. This codegen  is needed so that type checks for all registered
  * JavaScript interop classes pass.
  */
-List<String> _generateInteropPatchFiles() {
-  var ret = _generateExternalMethods();
+List<String> _generateInteropPatchFiles(List<String> libraryPaths) {
+  // Cache the @JS Type.
+  if (_atJsType == -1) {
+    var uri = new Uri(scheme: "package", path: "js/js.dart");
+    var jsLibrary = mirrors.currentMirrorSystem().libraries[uri];
+    if (jsLibrary != null) {
+      // @ JS used somewhere.
+      var jsDeclaration = jsLibrary.declarations[new Symbol("JS")];
+      _atJsType = jsDeclaration.reflectedType;
+    } else {
+      // @ JS not used in any library.
+      _atJsType = null;
+    }
+  }
+
+  var ret = _generateExternalMethods(libraryPaths);
   var libraryPrefixes = new Map<mirrors.LibraryMirror, String>();
   var prefixNames = new Set<String>();
   var sb = new StringBuffer();
@@ -671,27 +766,15 @@
 }
 
 patch class JSObject {
-  factory JSObject.create(JsObject jsObject) {
-    var ret = new JSObjectImpl.internal()..blink_jsObject = jsObject;
-    jsObject._dartHtmlWrapper = ret;
-    return ret;
-  }
+  static Type get instanceRuntimeType => JSObjectImpl;
 }
 
 patch class JSFunction {
-  factory JSFunction.create(JsObject jsObject) {
-    var ret = new JSFunctionImpl.internal()..blink_jsObject = jsObject;
-    jsObject._dartHtmlWrapper = ret;
-    return ret;
-  }
+  static Type get instanceRuntimeType => JSFunctionImpl;
 }
 
 patch class JSArray {
-  factory JSArray.create(JsObject jsObject) {
-    var ret = new JSArrayImpl.internal()..blink_jsObject = jsObject;
-    jsObject._dartHtmlWrapper = ret;
-    return ret;
-  }
+  static Type get instanceRuntimeType => JSArrayImpl;
 }
 
 _registerAllJsInterfaces() {
@@ -873,49 +956,44 @@
   return _cachedContext;
 }
 
-@Deprecated("Internal Use Only")
-maybeWrapTypedInterop(o) => html_common.wrap_jso_no_SerializedScriptvalue(o);
-
-_maybeWrap(o) {
-  var wrapped = html_common.wrap_jso_no_SerializedScriptvalue(o);
-  if (identical(wrapped, o)) return o;
-  return (wrapped is html.Blob ||
-      wrapped is html.Event ||
-      wrapped is indexed_db.KeyRange ||
-      wrapped is html.ImageData ||
-      wrapped is html.Node ||
-      wrapped is TypedData ||
-      wrapped is html.Window) ? wrapped : o;
+_lookupType(o, bool isCrossFrame, bool isElement) {
+  try {
+   var type = html_common.lookupType(o, isElement);
+   var typeMirror = mirrors.reflectType(type);
+   var legacyInteropConvertToNative = typeMirror.isSubtypeOf(mirrors.reflectType(html.Blob)) ||
+        typeMirror.isSubtypeOf(mirrors.reflectType(html.Event)) ||
+        typeMirror.isSubtypeOf(mirrors.reflectType(indexed_db.KeyRange)) ||
+        typeMirror.isSubtypeOf(mirrors.reflectType(html.ImageData)) ||
+        typeMirror.isSubtypeOf(mirrors.reflectType(html.Node)) ||
+//        TypedData is removed from this list as it is converted directly
+//        rather than flowing through the interceptor code path.
+//        typeMirror.isSubtypeOf(mirrors.reflectType(typed_data.TypedData)) ||
+        typeMirror.isSubtypeOf(mirrors.reflectType(html.Window));
+    if (isCrossFrame && !typeMirror.isSubtypeOf(mirrors.reflectType(html.Window))) {
+      // TODO(jacobr): evaluate using the true cross frame Window class, etc.
+      // as well as triggering that legacy JS Interop returns raw JsObject
+      // instances.
+      legacyInteropConvertToNative = false;
+    }
+    return [type, legacyInteropConvertToNative];
+  } catch (e) { }
+  return [JSObject.instanceRuntimeType, false];
 }
 
 /**
- * Get the dart wrapper object for object. Top-level so we
- * we can access it from other libraries without it being
- * a public instance field on JsObject.
+ * Base class for both the legacy JsObject class and the modern JSObject class.
+ * This allows the JsNative utility class tobehave identically whether it is
+ * called on a JsObject or a JSObject.
  */
-@Deprecated("Internal Use Only")
-getDartHtmlWrapperFor(JsObject object) => object._dartHtmlWrapper;
+class _JSObjectBase extends NativeFieldWrapperClass2 {
+  String _toString() native "JSObject_toString";
+  _callMethod(String name, List args) native "JSObject_callMethod";
+  _operator_getter(String property) native "JSObject_[]";
+  _operator_setter(String property, value) native "JSObject_[]=";
+  bool _hasProperty(String property) native "JsObject_hasProperty";
+  bool _instanceof(/*JsFunction|JSFunction*/ type) native "JsObject_instanceof";
 
-/**
- * Set the dart wrapper object for object. Top-level so we
- * we can access it from other libraries without it being
- * a public instance field on JsObject.
- */
-@Deprecated("Internal Use Only")
-void setDartHtmlWrapperFor(JsObject object, wrapper) {
-  object._dartHtmlWrapper = wrapper;
-}
-
-/**
- * Used by callMethod to get the JS object for each argument passed if the
- * argument is a Dart class instance that delegates to a DOM object.  See
- * wrap_jso defined in dart:html.
- */
-@Deprecated("Internal Use Only")
-unwrap_jso(dartClass_instance) {
-  if (dartClass_instance is JSObject &&
-      dartClass_instance is! JsObject) return dartClass_instance.blink_jsObject;
-  else return dartClass_instance;
+  int get hashCode native "JSObject_hashCode";
 }
 
 /**
@@ -924,22 +1002,16 @@
  * The properties of the JavaScript object are accessible via the `[]` and
  * `[]=` operators. Methods are callable via [callMethod].
  */
-class JsObject extends NativeFieldWrapperClass2 {
+class JsObject extends _JSObjectBase {
   JsObject.internal();
 
   /**
-   * If this JsObject is wrapped, e.g. DOM objects, then we can save the
-   * wrapper here and preserve its identity.
-   */
-  var _dartHtmlWrapper;
-
-  /**
    * Constructs a new JavaScript object from [constructor] and returns a proxy
    * to it.
    */
   factory JsObject(JsFunction constructor, [List arguments]) {
     try {
-      return html_common.unwrap_jso(_create(constructor, arguments));
+      return _create(constructor, arguments);
     } catch (e) {
       // Re-throw any errors (returned as a string) as a DomException.
       throw new html.DomException.jsInterop(e);
@@ -964,6 +1036,7 @@
     if (object is num || object is String || object is bool || object == null) {
       throw new ArgumentError("object cannot be a num, string, bool, or null");
     }
+    if (object is JsObject) return object;
     return _fromBrowserObject(object);
   }
 
@@ -985,7 +1058,7 @@
 
   static JsObject _jsify(object) native "JsObject_jsify";
 
-  static JsObject _fromBrowserObject(object) => html_common.unwrap_jso(object);
+  static JsObject _fromBrowserObject(object) native "JsObject_fromBrowserObject";
 
   /**
    * Returns the value associated with [property] from the proxied JavaScript
@@ -995,14 +1068,14 @@
    */
   operator [](property) {
     try {
-      return _maybeWrap(_operator_getter(property));
+      return _operator_getterLegacy(property);
     } catch (e) {
       // Re-throw any errors (returned as a string) as a DomException.
       throw new html.DomException.jsInterop(e);
     }
   }
 
-  _operator_getter(property) native "JsObject_[]";
+  _operator_getterLegacy(property) native "JsObject_[]Legacy";
 
   /**
    * Sets the value associated with [property] on the proxied JavaScript
@@ -1012,27 +1085,23 @@
    */
   operator []=(property, value) {
     try {
-      _operator_setter(property, value);
+      _operator_setterLegacy(property, value);
     } catch (e) {
       // Re-throw any errors (returned as a string) as a DomException.
       throw new html.DomException.jsInterop(e);
     }
   }
 
-  _operator_setter(property, value) native "JsObject_[]=";
+  _operator_setterLegacy(property, value) native "JsObject_[]=Legacy";
 
   int get hashCode native "JsObject_hashCode";
 
   operator ==(other) {
-    var is_JsObject = other is JsObject;
-    if (!is_JsObject) {
-      other = html_common.unwrap_jso(other);
-      is_JsObject = other is JsObject;
-    }
-    return is_JsObject && _identityEquality(this, other);
+    if (other is! JsObject && other is! JSObject) return false;
+    return _identityEquality(this, other);
   }
 
-  static bool _identityEquality(JsObject a, JsObject b)
+  static bool _identityEquality(a, b)
       native "JsObject_identityEquality";
 
   /**
@@ -1041,7 +1110,7 @@
    *
    * This is the equivalent of the `in` operator in JavaScript.
    */
-  bool hasProperty(String property) native "JsObject_hasProperty";
+  bool hasProperty(String property) => _hasProperty(property);
 
   /**
    * Removes [property] from the JavaScript object.
@@ -1055,7 +1124,7 @@
    *
    * This is the equivalent of the `instanceof` operator in JavaScript.
    */
-  bool instanceof(JsFunction type) native "JsObject_instanceof";
+  bool instanceof(JsFunction type) => _instanceof(type);
 
   /**
    * Returns the result of the JavaScript objects `toString` method.
@@ -1078,7 +1147,7 @@
    */
   callMethod(String method, [List args]) {
     try {
-      return _maybeWrap(_callMethod(method, args));
+      return _callMethodLegacy(method, args);
     } catch (e) {
       if (hasProperty(method)) {
         // Return a DomException if DOM call returned an error.
@@ -1089,19 +1158,26 @@
     }
   }
 
-  _callMethod(String name, List args) native "JsObject_callMethod";
+  _callMethodLegacy(String name, List args) native "JsObject_callMethodLegacy";
 }
 
+
 /// Base class for all JS objects used through dart:html and typed JS interop.
 @Deprecated("Internal Use Only")
-class JSObject {
+class JSObject extends _JSObjectBase {
   JSObject.internal() {}
-  external factory JSObject.create(JsObject jsObject);
+  external static Type get instanceRuntimeType;
 
-  @Deprecated("Internal Use Only")
-  JsObject blink_jsObject;
-
-  String toString() => blink_jsObject.toString();
+  /**
+   * Returns the result of the JavaScript objects `toString` method.
+   */
+  String toString() {
+    try {
+      return _toString();
+    } catch (e) {
+      return super.toString();
+    }
+  }
 
   noSuchMethod(Invocation invocation) {
     throwError() {
@@ -1118,7 +1194,7 @@
             !_allowedMethods.containsKey(invocation.memberName)) {
           throwError();
         }
-        var ret = maybeWrapTypedInterop(blink_jsObject._operator_getter(name));
+        var ret = _operator_getter(name);
         if (matches != null) return ret;
         if (ret is Function ||
             (ret is JsFunction /* shouldn't be needed in the future*/) &&
@@ -1127,7 +1203,7 @@
         throwError();
       } else {
         // TODO(jacobr): should we throw if the JavaScript object doesn't have the property?
-        return maybeWrapTypedInterop(blink_jsObject._operator_getter(name));
+        return _operator_getter(name);
       }
     } else if (invocation.isSetter) {
       if (CHECK_JS_INVOCATIONS) {
@@ -1137,8 +1213,7 @@
       }
       assert(name.endsWith("="));
       name = name.substring(0, name.length - 1);
-      return maybeWrapTypedInterop(blink_jsObject._operator_setter(
-          name, invocation.positionalArguments.first));
+      return _operator_setter(name, invocation.positionalArguments.first);
     } else {
       // TODO(jacobr): also allow calling getters that look like functions.
       var matches;
@@ -1147,8 +1222,7 @@
         if (matches == null ||
             !matches.checkInvocation(invocation)) throwError();
       }
-      var ret = maybeWrapTypedInterop(
-          blink_jsObject._callMethod(name, _buildArgs(invocation)));
+      var ret = _callMethod(name, _buildArgs(invocation));
       if (CHECK_JS_INVOCATIONS) {
         if (!matches._checkReturnType(ret)) {
           html.window.console.error("Return value for method: ${name} is "
@@ -1164,21 +1238,56 @@
 @Deprecated("Internal Use Only")
 class JSArray extends JSObject with ListMixin {
   JSArray.internal() : super.internal();
-  external factory JSArray.create(JsObject jsObject);
-  operator [](int index) =>
-      maybeWrapTypedInterop(JsNative.getArrayIndex(blink_jsObject, index));
+  external static Type get instanceRuntimeType;
 
-  operator []=(int index, value) => blink_jsObject[index] = value;
+  // Reuse JsArray_length as length behavior is unchanged.
+  int get length native "JsArray_length";
 
-  int get length => blink_jsObject.length;
-  set length(int newLength) => blink_jsObject.length = newLength;
+  set length(int length) {
+    _operator_setter('length', length);
+  }
+
+  _checkIndex(int index, {bool insert: false}) {
+    int length = insert ? this.length + 1 : this.length;
+    if (index is int && (index < 0 || index >= length)) {
+      throw new RangeError.range(index, 0, length);
+    }
+  }
+
+  _checkRange(int start, int end) {
+    int cachedLength = this.length;
+    if (start < 0 || start > cachedLength) {
+      throw new RangeError.range(start, 0, cachedLength);
+    }
+    if (end < start || end > cachedLength) {
+      throw new RangeError.range(end, start, cachedLength);
+    }
+  }
+
+  _indexed_getter(int index) native "JSArray_indexed_getter";
+  _indexed_setter(int index, o) native "JSArray_indexed_setter";
+
+  // Methods required by ListMixin
+
+  operator [](index) {
+    if (index is int) {
+      _checkIndex(index);
+    }
+
+    return _indexed_getter(index);
+  }
+
+  void operator []=(int index, value) {
+    _checkIndex(index);
+    _indexed_setter(index, value);
+  }
 }
 
 @Deprecated("Internal Use Only")
 class JSFunction extends JSObject implements Function {
   JSFunction.internal() : super.internal();
 
-  external factory JSFunction.create(JsObject jsObject);
+  external static Type get instanceRuntimeType;
 
   call(
       [a1 = _UNDEFINED,
@@ -1191,48 +1300,49 @@
       a8 = _UNDEFINED,
       a9 = _UNDEFINED,
       a10 = _UNDEFINED]) {
-    return maybeWrapTypedInterop(blink_jsObject
-        .apply(_stripUndefinedArgs([a1, a2, a3, a4, a5, a6, a7, a8, a9, a10])));
+    return _apply(_stripUndefinedArgs([a1, a2, a3, a4, a5, a6, a7, a8, a9, a10]));
   }
 
   noSuchMethod(Invocation invocation) {
     if (invocation.isMethod && invocation.memberName == #call) {
-      return maybeWrapTypedInterop(
-          blink_jsObject.apply(_buildArgs(invocation)));
+      return _apply(_buildArgs(invocation));
     }
     return super.noSuchMethod(invocation);
   }
+
+  dynamic _apply(List args, {thisArg}) native "JSFunction_apply";
+
+  static JSFunction _createWithThis(Function f) native "JSFunction_createWithThis";
+  static JSFunction _create(Function f) native "JSFunction_create";
 }
 
 // JavaScript interop methods that do not automatically wrap to dart:html types.
 // Warning: this API is not exposed to dart:js.
+// TODO(jacobr): rename to JSNative and make at least part of this API public.
 @Deprecated("Internal Use Only")
 class JsNative {
-  static getProperty(o, name) {
-    o = unwrap_jso(o);
-    return o != null ? o._operator_getter(name) : null;
-  }
+  static JSObject jsify(object) native "JSObject_jsify";
+  static JSObject newObject() native "JSObject_newObject";
+  static JSArray newArray() native "JSObject_newArray";
 
-  static setProperty(o, name, value) {
-    return unwrap_jso(o)._operator_setter(name, value);
-  }
+  static hasProperty(_JSObjectBase o, name) => o._hasProperty(name);
+  static getProperty(_JSObjectBase o, name) => o._operator_getter(name);
+  static setProperty(_JSObjectBase o, name, value) => o._operator_setter(name, value);
+  static callMethod(_JSObjectBase o, String method, List args) => o._callMethod(method, args);
+  static instanceof(_JSObjectBase o, /*JsFunction|JSFunction*/ type) => o._instanceof(type);
+  static callConstructor0(_JSObjectBase constructor) native "JSNative_callConstructor0";
+  static callConstructor(_JSObjectBase constructor, List args) native "JSNative_callConstructor";
 
-  static callMethod(o, String method, List args) {
-    return unwrap_jso(o)._callMethod(method, args);
-  }
-
-  static getArrayIndex(JsArray array, int index) {
-    array._checkIndex(index);
-    return getProperty(array, index);
-  }
+  static toTypedObject(JsObject o) native "JSNative_toTypedObject";
 
   /**
    * Same behavior as new JsFunction.withThis except that JavaScript "this" is not
    * wrapped.
    */
-  static JsFunction withThis(Function f) native "JsFunction_withThisNoWrap";
+  static JSFunction withThis(Function f) native "JsFunction_withThisNoWrap";
 }
 
+
 /**
  * Proxies a JavaScript Function object.
  */
@@ -1250,7 +1360,7 @@
    * supplied it is the value of `this` for the invocation.
    */
   dynamic apply(List args, {thisArg}) =>
-      _maybeWrap(_apply(args, thisArg: thisArg));
+      _apply(args, thisArg: thisArg);
 
   dynamic _apply(List args, {thisArg}) native "JsFunction_apply";
 
@@ -1402,15 +1512,6 @@
   }
 }
 
-List _stripAndWrapArgs(Iterable args) {
-  var ret = [];
-  for (var arg in args) {
-    if (arg == _UNDEFINED) break;
-    ret.add(maybeWrapTypedInterop(arg));
-  }
-  return ret;
-}
-
 /**
  * Returns a method that can be called with an arbitrary number (for n less
  * than 11) of arguments without violating Dart type checks.
@@ -1429,90 +1530,6 @@
     jsFunction._applyDebuggerOnly(
         _stripUndefinedArgs([a1, a2, a3, a4, a5, a6, a7, a8, a9, a10]));
 
-/// This helper is purely a hack so we can reuse JsFunction.withThis even when
-/// we don't care about passing JS "this". In an ideal world we would implement
-/// helpers in C++ that directly implement allowInterop and
-/// allowInteropCaptureThis.
-class _CreateDartFunctionForInteropIgnoreThis implements Function {
-  Function _fn;
-
-  _CreateDartFunctionForInteropIgnoreThis(this._fn);
-
-  call(
-      [ignoredThis = _UNDEFINED,
-      a1 = _UNDEFINED,
-      a2 = _UNDEFINED,
-      a3 = _UNDEFINED,
-      a4 = _UNDEFINED,
-      a5 = _UNDEFINED,
-      a6 = _UNDEFINED,
-      a7 = _UNDEFINED,
-      a8 = _UNDEFINED,
-      a9 = _UNDEFINED,
-      a10 = _UNDEFINED]) {
-    var ret = Function.apply(
-        _fn, _stripAndWrapArgs([a1, a2, a3, a4, a5, a6, a7, a8, a9, a10]));
-    safeForTypedInterop(ret);
-    return ret;
-  }
-
-  noSuchMethod(Invocation invocation) {
-    if (invocation.isMethod && invocation.memberName == #call) {
-      // Named arguments not yet supported.
-      if (invocation.namedArguments.isNotEmpty) return;
-      var ret = Function.apply(
-          _fn, _stripAndWrapArgs(invocation.positionalArguments.skip(1)));
-      // TODO(jacobr): it would be nice to check that the return value is safe
-      // for interop but we don't want to break existing addEventListener users.
-      // safeForTypedInterop(ret);
-      safeForTypedInterop(ret);
-      return ret;
-    }
-    return super.noSuchMethod(invocation);
-  }
-}
-
-/// See comment for [_CreateDartFunctionForInteropIgnoreThis].
-/// This Function exists purely because JsObject doesn't have the DOM type
-/// conversion semantics we want for JS typed interop.
-class _CreateDartFunctionForInterop implements Function {
-  Function _fn;
-
-  _CreateDartFunctionForInterop(this._fn);
-
-  call(
-      [a1 = _UNDEFINED,
-      a2 = _UNDEFINED,
-      a3 = _UNDEFINED,
-      a4 = _UNDEFINED,
-      a5 = _UNDEFINED,
-      a6 = _UNDEFINED,
-      a7 = _UNDEFINED,
-      a8 = _UNDEFINED,
-      a9 = _UNDEFINED,
-      a10 = _UNDEFINED]) {
-    var ret = Function.apply(
-        _fn, _stripAndWrapArgs([a1, a2, a3, a4, a5, a6, a7, a8, a9, a10]));
-    safeForTypedInterop(ret);
-    return ret;
-  }
-
-  noSuchMethod(Invocation invocation) {
-    if (invocation.isMethod && invocation.memberName == #call) {
-      // Named arguments not yet supported.
-      if (invocation.namedArguments.isNotEmpty) return;
-      var ret = Function.apply(
-          _fn, _stripAndWrapArgs(invocation.positionalArguments));
-      safeForTypedInterop(ret);
-      return ret;
-    }
-    return super.noSuchMethod(invocation);
-  }
-}
-
-/// Cached JSFunction associated with the Dart Function.
-Expando<JSFunction> _interopExpando = new Expando<JSFunction>();
-
 /// Returns a wrapper around function [f] that can be called from JavaScript
 /// using the package:js Dart-JavaScript interop.
 ///
@@ -1529,14 +1546,7 @@
     // The function is already a JSFunction... no need to do anything.
     return f;
   } else {
-    var ret = _interopExpando[f];
-    if (ret == null) {
-      // TODO(jacobr): we could optimize this.
-      ret = new JSFunction.create(new JsFunction.withThis(
-          new _CreateDartFunctionForInteropIgnoreThis(f)));
-      _interopExpando[f] = ret;
-    }
-    return ret;
+    return JSFunction._create(f);
   }
 }
 
@@ -1560,10 +1570,11 @@
     var ret = _interopCaptureThisExpando[f];
     if (ret == null) {
       // TODO(jacobr): we could optimize this.
-      ret = new JSFunction.create(
-          new JsFunction.withThis(new _CreateDartFunctionForInterop(f)));
+      ret = JSFunction._createWithThis(f);
       _interopCaptureThisExpando[f] = ret;
     }
     return ret;
   }
 }
+
+debugPrint(_) {}
\ No newline at end of file
diff --git a/sdk/lib/svg/dartium/svg_dartium.dart b/sdk/lib/svg/dartium/svg_dartium.dart
index 1e7f276..72bce94 100644
--- a/sdk/lib/svg/dartium/svg_dartium.dart
+++ b/sdk/lib/svg/dartium/svg_dartium.dart
@@ -26,261 +26,133 @@
 // FIXME: Can we make this private?
 @Deprecated("Internal Use Only")
 final svgBlinkMap = {
-  'SVGAElement': () => AElement,
-  'SVGAngle': () => Angle,
-  'SVGAnimateElement': () => AnimateElement,
-  'SVGAnimateMotionElement': () => AnimateMotionElement,
-  'SVGAnimateTransformElement': () => AnimateTransformElement,
-  'SVGAnimatedAngle': () => AnimatedAngle,
-  'SVGAnimatedBoolean': () => AnimatedBoolean,
-  'SVGAnimatedEnumeration': () => AnimatedEnumeration,
-  'SVGAnimatedInteger': () => AnimatedInteger,
-  'SVGAnimatedLength': () => AnimatedLength,
-  'SVGAnimatedLengthList': () => AnimatedLengthList,
-  'SVGAnimatedNumber': () => AnimatedNumber,
-  'SVGAnimatedNumberList': () => AnimatedNumberList,
-  'SVGAnimatedPreserveAspectRatio': () => AnimatedPreserveAspectRatio,
-  'SVGAnimatedRect': () => AnimatedRect,
-  'SVGAnimatedString': () => AnimatedString,
-  'SVGAnimatedTransformList': () => AnimatedTransformList,
-  'SVGAnimationElement': () => AnimationElement,
-  'SVGCircleElement': () => CircleElement,
-  'SVGClipPathElement': () => ClipPathElement,
-  'SVGComponentTransferFunctionElement': () => _SVGComponentTransferFunctionElement,
-  'SVGCursorElement': () => _SVGCursorElement,
-  'SVGDefsElement': () => DefsElement,
-  'SVGDescElement': () => DescElement,
-  'SVGDiscardElement': () => DiscardElement,
-  'SVGElement': () => SvgElement,
-  'SVGEllipseElement': () => EllipseElement,
-  'SVGFEBlendElement': () => FEBlendElement,
-  'SVGFEColorMatrixElement': () => FEColorMatrixElement,
-  'SVGFEComponentTransferElement': () => FEComponentTransferElement,
-  'SVGFECompositeElement': () => FECompositeElement,
-  'SVGFEConvolveMatrixElement': () => FEConvolveMatrixElement,
-  'SVGFEDiffuseLightingElement': () => FEDiffuseLightingElement,
-  'SVGFEDisplacementMapElement': () => FEDisplacementMapElement,
-  'SVGFEDistantLightElement': () => FEDistantLightElement,
-  'SVGFEDropShadowElement': () => _SVGFEDropShadowElement,
-  'SVGFEFloodElement': () => FEFloodElement,
-  'SVGFEFuncAElement': () => FEFuncAElement,
-  'SVGFEFuncBElement': () => FEFuncBElement,
-  'SVGFEFuncGElement': () => FEFuncGElement,
-  'SVGFEFuncRElement': () => FEFuncRElement,
-  'SVGFEGaussianBlurElement': () => FEGaussianBlurElement,
-  'SVGFEImageElement': () => FEImageElement,
-  'SVGFEMergeElement': () => FEMergeElement,
-  'SVGFEMergeNodeElement': () => FEMergeNodeElement,
-  'SVGFEMorphologyElement': () => FEMorphologyElement,
-  'SVGFEOffsetElement': () => FEOffsetElement,
-  'SVGFEPointLightElement': () => FEPointLightElement,
-  'SVGFESpecularLightingElement': () => FESpecularLightingElement,
-  'SVGFESpotLightElement': () => FESpotLightElement,
-  'SVGFETileElement': () => FETileElement,
-  'SVGFETurbulenceElement': () => FETurbulenceElement,
-  'SVGFilterElement': () => FilterElement,
-  'SVGFilterPrimitiveStandardAttributes': () => FilterPrimitiveStandardAttributes,
-  'SVGFitToViewBox': () => FitToViewBox,
-  'SVGForeignObjectElement': () => ForeignObjectElement,
-  'SVGGElement': () => GElement,
-  'SVGGeometryElement': () => GeometryElement,
-  'SVGGradientElement': () => _GradientElement,
-  'SVGGraphicsElement': () => GraphicsElement,
-  'SVGImageElement': () => ImageElement,
-  'SVGLength': () => Length,
-  'SVGLengthList': () => LengthList,
-  'SVGLineElement': () => LineElement,
-  'SVGLinearGradientElement': () => LinearGradientElement,
-  'SVGMPathElement': () => _SVGMPathElement,
-  'SVGMarkerElement': () => MarkerElement,
-  'SVGMaskElement': () => MaskElement,
-  'SVGMatrix': () => Matrix,
-  'SVGMetadataElement': () => MetadataElement,
-  'SVGNumber': () => Number,
-  'SVGNumberList': () => NumberList,
-  'SVGPathElement': () => PathElement,
-  'SVGPathSeg': () => PathSeg,
-  'SVGPathSegArcAbs': () => PathSegArcAbs,
-  'SVGPathSegArcRel': () => PathSegArcRel,
-  'SVGPathSegClosePath': () => PathSegClosePath,
-  'SVGPathSegCurvetoCubicAbs': () => PathSegCurvetoCubicAbs,
-  'SVGPathSegCurvetoCubicRel': () => PathSegCurvetoCubicRel,
-  'SVGPathSegCurvetoCubicSmoothAbs': () => PathSegCurvetoCubicSmoothAbs,
-  'SVGPathSegCurvetoCubicSmoothRel': () => PathSegCurvetoCubicSmoothRel,
-  'SVGPathSegCurvetoQuadraticAbs': () => PathSegCurvetoQuadraticAbs,
-  'SVGPathSegCurvetoQuadraticRel': () => PathSegCurvetoQuadraticRel,
-  'SVGPathSegCurvetoQuadraticSmoothAbs': () => PathSegCurvetoQuadraticSmoothAbs,
-  'SVGPathSegCurvetoQuadraticSmoothRel': () => PathSegCurvetoQuadraticSmoothRel,
-  'SVGPathSegLinetoAbs': () => PathSegLinetoAbs,
-  'SVGPathSegLinetoHorizontalAbs': () => PathSegLinetoHorizontalAbs,
-  'SVGPathSegLinetoHorizontalRel': () => PathSegLinetoHorizontalRel,
-  'SVGPathSegLinetoRel': () => PathSegLinetoRel,
-  'SVGPathSegLinetoVerticalAbs': () => PathSegLinetoVerticalAbs,
-  'SVGPathSegLinetoVerticalRel': () => PathSegLinetoVerticalRel,
-  'SVGPathSegList': () => PathSegList,
-  'SVGPathSegMovetoAbs': () => PathSegMovetoAbs,
-  'SVGPathSegMovetoRel': () => PathSegMovetoRel,
-  'SVGPatternElement': () => PatternElement,
-  'SVGPoint': () => Point,
-  'SVGPointList': () => PointList,
-  'SVGPolygonElement': () => PolygonElement,
-  'SVGPolylineElement': () => PolylineElement,
-  'SVGPreserveAspectRatio': () => PreserveAspectRatio,
-  'SVGRadialGradientElement': () => RadialGradientElement,
-  'SVGRect': () => Rect,
-  'SVGRectElement': () => RectElement,
-  'SVGSVGElement': () => SvgSvgElement,
-  'SVGScriptElement': () => ScriptElement,
-  'SVGSetElement': () => SetElement,
-  'SVGStopElement': () => StopElement,
-  'SVGStringList': () => StringList,
-  'SVGStyleElement': () => StyleElement,
-  'SVGSwitchElement': () => SwitchElement,
-  'SVGSymbolElement': () => SymbolElement,
-  'SVGTSpanElement': () => TSpanElement,
-  'SVGTests': () => Tests,
-  'SVGTextContentElement': () => TextContentElement,
-  'SVGTextElement': () => TextElement,
-  'SVGTextPathElement': () => TextPathElement,
-  'SVGTextPositioningElement': () => TextPositioningElement,
-  'SVGTitleElement': () => TitleElement,
-  'SVGTransform': () => Transform,
-  'SVGTransformList': () => TransformList,
-  'SVGURIReference': () => UriReference,
-  'SVGUnitTypes': () => UnitTypes,
-  'SVGUseElement': () => UseElement,
-  'SVGViewElement': () => ViewElement,
-  'SVGViewSpec': () => ViewSpec,
-  'SVGZoomAndPan': () => ZoomAndPan,
-  'SVGZoomEvent': () => ZoomEvent,
-
-};
-
-// FIXME: Can we make this private?
-@Deprecated("Internal Use Only")
-final svgBlinkFunctionMap = {
-  'SVGAElement': () => AElement.internalCreateAElement,
-  'SVGAngle': () => Angle.internalCreateAngle,
-  'SVGAnimateElement': () => AnimateElement.internalCreateAnimateElement,
-  'SVGAnimateMotionElement': () => AnimateMotionElement.internalCreateAnimateMotionElement,
-  'SVGAnimateTransformElement': () => AnimateTransformElement.internalCreateAnimateTransformElement,
-  'SVGAnimatedAngle': () => AnimatedAngle.internalCreateAnimatedAngle,
-  'SVGAnimatedBoolean': () => AnimatedBoolean.internalCreateAnimatedBoolean,
-  'SVGAnimatedEnumeration': () => AnimatedEnumeration.internalCreateAnimatedEnumeration,
-  'SVGAnimatedInteger': () => AnimatedInteger.internalCreateAnimatedInteger,
-  'SVGAnimatedLength': () => AnimatedLength.internalCreateAnimatedLength,
-  'SVGAnimatedLengthList': () => AnimatedLengthList.internalCreateAnimatedLengthList,
-  'SVGAnimatedNumber': () => AnimatedNumber.internalCreateAnimatedNumber,
-  'SVGAnimatedNumberList': () => AnimatedNumberList.internalCreateAnimatedNumberList,
-  'SVGAnimatedPreserveAspectRatio': () => AnimatedPreserveAspectRatio.internalCreateAnimatedPreserveAspectRatio,
-  'SVGAnimatedRect': () => AnimatedRect.internalCreateAnimatedRect,
-  'SVGAnimatedString': () => AnimatedString.internalCreateAnimatedString,
-  'SVGAnimatedTransformList': () => AnimatedTransformList.internalCreateAnimatedTransformList,
-  'SVGAnimationElement': () => AnimationElement.internalCreateAnimationElement,
-  'SVGCircleElement': () => CircleElement.internalCreateCircleElement,
-  'SVGClipPathElement': () => ClipPathElement.internalCreateClipPathElement,
-  'SVGComponentTransferFunctionElement': () => _SVGComponentTransferFunctionElement.internalCreate_SVGComponentTransferFunctionElement,
-  'SVGCursorElement': () => _SVGCursorElement.internalCreate_SVGCursorElement,
-  'SVGDefsElement': () => DefsElement.internalCreateDefsElement,
-  'SVGDescElement': () => DescElement.internalCreateDescElement,
-  'SVGDiscardElement': () => DiscardElement.internalCreateDiscardElement,
-  'SVGElement': () => SvgElement.internalCreateSvgElement,
-  'SVGEllipseElement': () => EllipseElement.internalCreateEllipseElement,
-  'SVGFEBlendElement': () => FEBlendElement.internalCreateFEBlendElement,
-  'SVGFEColorMatrixElement': () => FEColorMatrixElement.internalCreateFEColorMatrixElement,
-  'SVGFEComponentTransferElement': () => FEComponentTransferElement.internalCreateFEComponentTransferElement,
-  'SVGFECompositeElement': () => FECompositeElement.internalCreateFECompositeElement,
-  'SVGFEConvolveMatrixElement': () => FEConvolveMatrixElement.internalCreateFEConvolveMatrixElement,
-  'SVGFEDiffuseLightingElement': () => FEDiffuseLightingElement.internalCreateFEDiffuseLightingElement,
-  'SVGFEDisplacementMapElement': () => FEDisplacementMapElement.internalCreateFEDisplacementMapElement,
-  'SVGFEDistantLightElement': () => FEDistantLightElement.internalCreateFEDistantLightElement,
-  'SVGFEDropShadowElement': () => _SVGFEDropShadowElement.internalCreate_SVGFEDropShadowElement,
-  'SVGFEFloodElement': () => FEFloodElement.internalCreateFEFloodElement,
-  'SVGFEFuncAElement': () => FEFuncAElement.internalCreateFEFuncAElement,
-  'SVGFEFuncBElement': () => FEFuncBElement.internalCreateFEFuncBElement,
-  'SVGFEFuncGElement': () => FEFuncGElement.internalCreateFEFuncGElement,
-  'SVGFEFuncRElement': () => FEFuncRElement.internalCreateFEFuncRElement,
-  'SVGFEGaussianBlurElement': () => FEGaussianBlurElement.internalCreateFEGaussianBlurElement,
-  'SVGFEImageElement': () => FEImageElement.internalCreateFEImageElement,
-  'SVGFEMergeElement': () => FEMergeElement.internalCreateFEMergeElement,
-  'SVGFEMergeNodeElement': () => FEMergeNodeElement.internalCreateFEMergeNodeElement,
-  'SVGFEMorphologyElement': () => FEMorphologyElement.internalCreateFEMorphologyElement,
-  'SVGFEOffsetElement': () => FEOffsetElement.internalCreateFEOffsetElement,
-  'SVGFEPointLightElement': () => FEPointLightElement.internalCreateFEPointLightElement,
-  'SVGFESpecularLightingElement': () => FESpecularLightingElement.internalCreateFESpecularLightingElement,
-  'SVGFESpotLightElement': () => FESpotLightElement.internalCreateFESpotLightElement,
-  'SVGFETileElement': () => FETileElement.internalCreateFETileElement,
-  'SVGFETurbulenceElement': () => FETurbulenceElement.internalCreateFETurbulenceElement,
-  'SVGFilterElement': () => FilterElement.internalCreateFilterElement,
-  'SVGForeignObjectElement': () => ForeignObjectElement.internalCreateForeignObjectElement,
-  'SVGGElement': () => GElement.internalCreateGElement,
-  'SVGGeometryElement': () => GeometryElement.internalCreateGeometryElement,
-  'SVGGradientElement': () => _GradientElement.internalCreate_GradientElement,
-  'SVGGraphicsElement': () => GraphicsElement.internalCreateGraphicsElement,
-  'SVGImageElement': () => ImageElement.internalCreateImageElement,
-  'SVGLength': () => Length.internalCreateLength,
-  'SVGLengthList': () => LengthList.internalCreateLengthList,
-  'SVGLineElement': () => LineElement.internalCreateLineElement,
-  'SVGLinearGradientElement': () => LinearGradientElement.internalCreateLinearGradientElement,
-  'SVGMPathElement': () => _SVGMPathElement.internalCreate_SVGMPathElement,
-  'SVGMarkerElement': () => MarkerElement.internalCreateMarkerElement,
-  'SVGMaskElement': () => MaskElement.internalCreateMaskElement,
-  'SVGMatrix': () => Matrix.internalCreateMatrix,
-  'SVGMetadataElement': () => MetadataElement.internalCreateMetadataElement,
-  'SVGNumber': () => Number.internalCreateNumber,
-  'SVGNumberList': () => NumberList.internalCreateNumberList,
-  'SVGPathElement': () => PathElement.internalCreatePathElement,
-  'SVGPathSeg': () => PathSeg.internalCreatePathSeg,
-  'SVGPathSegArcAbs': () => PathSegArcAbs.internalCreatePathSegArcAbs,
-  'SVGPathSegArcRel': () => PathSegArcRel.internalCreatePathSegArcRel,
-  'SVGPathSegClosePath': () => PathSegClosePath.internalCreatePathSegClosePath,
-  'SVGPathSegCurvetoCubicAbs': () => PathSegCurvetoCubicAbs.internalCreatePathSegCurvetoCubicAbs,
-  'SVGPathSegCurvetoCubicRel': () => PathSegCurvetoCubicRel.internalCreatePathSegCurvetoCubicRel,
-  'SVGPathSegCurvetoCubicSmoothAbs': () => PathSegCurvetoCubicSmoothAbs.internalCreatePathSegCurvetoCubicSmoothAbs,
-  'SVGPathSegCurvetoCubicSmoothRel': () => PathSegCurvetoCubicSmoothRel.internalCreatePathSegCurvetoCubicSmoothRel,
-  'SVGPathSegCurvetoQuadraticAbs': () => PathSegCurvetoQuadraticAbs.internalCreatePathSegCurvetoQuadraticAbs,
-  'SVGPathSegCurvetoQuadraticRel': () => PathSegCurvetoQuadraticRel.internalCreatePathSegCurvetoQuadraticRel,
-  'SVGPathSegCurvetoQuadraticSmoothAbs': () => PathSegCurvetoQuadraticSmoothAbs.internalCreatePathSegCurvetoQuadraticSmoothAbs,
-  'SVGPathSegCurvetoQuadraticSmoothRel': () => PathSegCurvetoQuadraticSmoothRel.internalCreatePathSegCurvetoQuadraticSmoothRel,
-  'SVGPathSegLinetoAbs': () => PathSegLinetoAbs.internalCreatePathSegLinetoAbs,
-  'SVGPathSegLinetoHorizontalAbs': () => PathSegLinetoHorizontalAbs.internalCreatePathSegLinetoHorizontalAbs,
-  'SVGPathSegLinetoHorizontalRel': () => PathSegLinetoHorizontalRel.internalCreatePathSegLinetoHorizontalRel,
-  'SVGPathSegLinetoRel': () => PathSegLinetoRel.internalCreatePathSegLinetoRel,
-  'SVGPathSegLinetoVerticalAbs': () => PathSegLinetoVerticalAbs.internalCreatePathSegLinetoVerticalAbs,
-  'SVGPathSegLinetoVerticalRel': () => PathSegLinetoVerticalRel.internalCreatePathSegLinetoVerticalRel,
-  'SVGPathSegList': () => PathSegList.internalCreatePathSegList,
-  'SVGPathSegMovetoAbs': () => PathSegMovetoAbs.internalCreatePathSegMovetoAbs,
-  'SVGPathSegMovetoRel': () => PathSegMovetoRel.internalCreatePathSegMovetoRel,
-  'SVGPatternElement': () => PatternElement.internalCreatePatternElement,
-  'SVGPoint': () => Point.internalCreatePoint,
-  'SVGPointList': () => PointList.internalCreatePointList,
-  'SVGPolygonElement': () => PolygonElement.internalCreatePolygonElement,
-  'SVGPolylineElement': () => PolylineElement.internalCreatePolylineElement,
-  'SVGPreserveAspectRatio': () => PreserveAspectRatio.internalCreatePreserveAspectRatio,
-  'SVGRadialGradientElement': () => RadialGradientElement.internalCreateRadialGradientElement,
-  'SVGRect': () => Rect.internalCreateRect,
-  'SVGRectElement': () => RectElement.internalCreateRectElement,
-  'SVGSVGElement': () => SvgSvgElement.internalCreateSvgSvgElement,
-  'SVGScriptElement': () => ScriptElement.internalCreateScriptElement,
-  'SVGSetElement': () => SetElement.internalCreateSetElement,
-  'SVGStopElement': () => StopElement.internalCreateStopElement,
-  'SVGStringList': () => StringList.internalCreateStringList,
-  'SVGStyleElement': () => StyleElement.internalCreateStyleElement,
-  'SVGSwitchElement': () => SwitchElement.internalCreateSwitchElement,
-  'SVGSymbolElement': () => SymbolElement.internalCreateSymbolElement,
-  'SVGTSpanElement': () => TSpanElement.internalCreateTSpanElement,
-  'SVGTextContentElement': () => TextContentElement.internalCreateTextContentElement,
-  'SVGTextElement': () => TextElement.internalCreateTextElement,
-  'SVGTextPathElement': () => TextPathElement.internalCreateTextPathElement,
-  'SVGTextPositioningElement': () => TextPositioningElement.internalCreateTextPositioningElement,
-  'SVGTitleElement': () => TitleElement.internalCreateTitleElement,
-  'SVGTransform': () => Transform.internalCreateTransform,
-  'SVGTransformList': () => TransformList.internalCreateTransformList,
-  'SVGUnitTypes': () => UnitTypes.internalCreateUnitTypes,
-  'SVGUseElement': () => UseElement.internalCreateUseElement,
-  'SVGViewElement': () => ViewElement.internalCreateViewElement,
-  'SVGViewSpec': () => ViewSpec.internalCreateViewSpec,
-  'SVGZoomEvent': () => ZoomEvent.internalCreateZoomEvent,
+  'SVGAElement': () => AElement.instanceRuntimeType,
+  'SVGAngle': () => Angle.instanceRuntimeType,
+  'SVGAnimateElement': () => AnimateElement.instanceRuntimeType,
+  'SVGAnimateMotionElement': () => AnimateMotionElement.instanceRuntimeType,
+  'SVGAnimateTransformElement': () => AnimateTransformElement.instanceRuntimeType,
+  'SVGAnimatedAngle': () => AnimatedAngle.instanceRuntimeType,
+  'SVGAnimatedBoolean': () => AnimatedBoolean.instanceRuntimeType,
+  'SVGAnimatedEnumeration': () => AnimatedEnumeration.instanceRuntimeType,
+  'SVGAnimatedInteger': () => AnimatedInteger.instanceRuntimeType,
+  'SVGAnimatedLength': () => AnimatedLength.instanceRuntimeType,
+  'SVGAnimatedLengthList': () => AnimatedLengthList.instanceRuntimeType,
+  'SVGAnimatedNumber': () => AnimatedNumber.instanceRuntimeType,
+  'SVGAnimatedNumberList': () => AnimatedNumberList.instanceRuntimeType,
+  'SVGAnimatedPreserveAspectRatio': () => AnimatedPreserveAspectRatio.instanceRuntimeType,
+  'SVGAnimatedRect': () => AnimatedRect.instanceRuntimeType,
+  'SVGAnimatedString': () => AnimatedString.instanceRuntimeType,
+  'SVGAnimatedTransformList': () => AnimatedTransformList.instanceRuntimeType,
+  'SVGAnimationElement': () => AnimationElement.instanceRuntimeType,
+  'SVGCircleElement': () => CircleElement.instanceRuntimeType,
+  'SVGClipPathElement': () => ClipPathElement.instanceRuntimeType,
+  'SVGComponentTransferFunctionElement': () => _SVGComponentTransferFunctionElement.instanceRuntimeType,
+  'SVGCursorElement': () => _SVGCursorElement.instanceRuntimeType,
+  'SVGDefsElement': () => DefsElement.instanceRuntimeType,
+  'SVGDescElement': () => DescElement.instanceRuntimeType,
+  'SVGDiscardElement': () => DiscardElement.instanceRuntimeType,
+  'SVGElement': () => SvgElement.instanceRuntimeType,
+  'SVGEllipseElement': () => EllipseElement.instanceRuntimeType,
+  'SVGFEBlendElement': () => FEBlendElement.instanceRuntimeType,
+  'SVGFEColorMatrixElement': () => FEColorMatrixElement.instanceRuntimeType,
+  'SVGFEComponentTransferElement': () => FEComponentTransferElement.instanceRuntimeType,
+  'SVGFECompositeElement': () => FECompositeElement.instanceRuntimeType,
+  'SVGFEConvolveMatrixElement': () => FEConvolveMatrixElement.instanceRuntimeType,
+  'SVGFEDiffuseLightingElement': () => FEDiffuseLightingElement.instanceRuntimeType,
+  'SVGFEDisplacementMapElement': () => FEDisplacementMapElement.instanceRuntimeType,
+  'SVGFEDistantLightElement': () => FEDistantLightElement.instanceRuntimeType,
+  'SVGFEDropShadowElement': () => _SVGFEDropShadowElement.instanceRuntimeType,
+  'SVGFEFloodElement': () => FEFloodElement.instanceRuntimeType,
+  'SVGFEFuncAElement': () => FEFuncAElement.instanceRuntimeType,
+  'SVGFEFuncBElement': () => FEFuncBElement.instanceRuntimeType,
+  'SVGFEFuncGElement': () => FEFuncGElement.instanceRuntimeType,
+  'SVGFEFuncRElement': () => FEFuncRElement.instanceRuntimeType,
+  'SVGFEGaussianBlurElement': () => FEGaussianBlurElement.instanceRuntimeType,
+  'SVGFEImageElement': () => FEImageElement.instanceRuntimeType,
+  'SVGFEMergeElement': () => FEMergeElement.instanceRuntimeType,
+  'SVGFEMergeNodeElement': () => FEMergeNodeElement.instanceRuntimeType,
+  'SVGFEMorphologyElement': () => FEMorphologyElement.instanceRuntimeType,
+  'SVGFEOffsetElement': () => FEOffsetElement.instanceRuntimeType,
+  'SVGFEPointLightElement': () => FEPointLightElement.instanceRuntimeType,
+  'SVGFESpecularLightingElement': () => FESpecularLightingElement.instanceRuntimeType,
+  'SVGFESpotLightElement': () => FESpotLightElement.instanceRuntimeType,
+  'SVGFETileElement': () => FETileElement.instanceRuntimeType,
+  'SVGFETurbulenceElement': () => FETurbulenceElement.instanceRuntimeType,
+  'SVGFilterElement': () => FilterElement.instanceRuntimeType,
+  'SVGFilterPrimitiveStandardAttributes': () => FilterPrimitiveStandardAttributes.instanceRuntimeType,
+  'SVGFitToViewBox': () => FitToViewBox.instanceRuntimeType,
+  'SVGForeignObjectElement': () => ForeignObjectElement.instanceRuntimeType,
+  'SVGGElement': () => GElement.instanceRuntimeType,
+  'SVGGeometryElement': () => GeometryElement.instanceRuntimeType,
+  'SVGGradientElement': () => _GradientElement.instanceRuntimeType,
+  'SVGGraphicsElement': () => GraphicsElement.instanceRuntimeType,
+  'SVGImageElement': () => ImageElement.instanceRuntimeType,
+  'SVGLength': () => Length.instanceRuntimeType,
+  'SVGLengthList': () => LengthList.instanceRuntimeType,
+  'SVGLineElement': () => LineElement.instanceRuntimeType,
+  'SVGLinearGradientElement': () => LinearGradientElement.instanceRuntimeType,
+  'SVGMPathElement': () => _SVGMPathElement.instanceRuntimeType,
+  'SVGMarkerElement': () => MarkerElement.instanceRuntimeType,
+  'SVGMaskElement': () => MaskElement.instanceRuntimeType,
+  'SVGMatrix': () => Matrix.instanceRuntimeType,
+  'SVGMetadataElement': () => MetadataElement.instanceRuntimeType,
+  'SVGNumber': () => Number.instanceRuntimeType,
+  'SVGNumberList': () => NumberList.instanceRuntimeType,
+  'SVGPathElement': () => PathElement.instanceRuntimeType,
+  'SVGPathSeg': () => PathSeg.instanceRuntimeType,
+  'SVGPathSegArcAbs': () => PathSegArcAbs.instanceRuntimeType,
+  'SVGPathSegArcRel': () => PathSegArcRel.instanceRuntimeType,
+  'SVGPathSegClosePath': () => PathSegClosePath.instanceRuntimeType,
+  'SVGPathSegCurvetoCubicAbs': () => PathSegCurvetoCubicAbs.instanceRuntimeType,
+  'SVGPathSegCurvetoCubicRel': () => PathSegCurvetoCubicRel.instanceRuntimeType,
+  'SVGPathSegCurvetoCubicSmoothAbs': () => PathSegCurvetoCubicSmoothAbs.instanceRuntimeType,
+  'SVGPathSegCurvetoCubicSmoothRel': () => PathSegCurvetoCubicSmoothRel.instanceRuntimeType,
+  'SVGPathSegCurvetoQuadraticAbs': () => PathSegCurvetoQuadraticAbs.instanceRuntimeType,
+  'SVGPathSegCurvetoQuadraticRel': () => PathSegCurvetoQuadraticRel.instanceRuntimeType,
+  'SVGPathSegCurvetoQuadraticSmoothAbs': () => PathSegCurvetoQuadraticSmoothAbs.instanceRuntimeType,
+  'SVGPathSegCurvetoQuadraticSmoothRel': () => PathSegCurvetoQuadraticSmoothRel.instanceRuntimeType,
+  'SVGPathSegLinetoAbs': () => PathSegLinetoAbs.instanceRuntimeType,
+  'SVGPathSegLinetoHorizontalAbs': () => PathSegLinetoHorizontalAbs.instanceRuntimeType,
+  'SVGPathSegLinetoHorizontalRel': () => PathSegLinetoHorizontalRel.instanceRuntimeType,
+  'SVGPathSegLinetoRel': () => PathSegLinetoRel.instanceRuntimeType,
+  'SVGPathSegLinetoVerticalAbs': () => PathSegLinetoVerticalAbs.instanceRuntimeType,
+  'SVGPathSegLinetoVerticalRel': () => PathSegLinetoVerticalRel.instanceRuntimeType,
+  'SVGPathSegList': () => PathSegList.instanceRuntimeType,
+  'SVGPathSegMovetoAbs': () => PathSegMovetoAbs.instanceRuntimeType,
+  'SVGPathSegMovetoRel': () => PathSegMovetoRel.instanceRuntimeType,
+  'SVGPatternElement': () => PatternElement.instanceRuntimeType,
+  'SVGPoint': () => Point.instanceRuntimeType,
+  'SVGPointList': () => PointList.instanceRuntimeType,
+  'SVGPolygonElement': () => PolygonElement.instanceRuntimeType,
+  'SVGPolylineElement': () => PolylineElement.instanceRuntimeType,
+  'SVGPreserveAspectRatio': () => PreserveAspectRatio.instanceRuntimeType,
+  'SVGRadialGradientElement': () => RadialGradientElement.instanceRuntimeType,
+  'SVGRect': () => Rect.instanceRuntimeType,
+  'SVGRectElement': () => RectElement.instanceRuntimeType,
+  'SVGSVGElement': () => SvgSvgElement.instanceRuntimeType,
+  'SVGScriptElement': () => ScriptElement.instanceRuntimeType,
+  'SVGSetElement': () => SetElement.instanceRuntimeType,
+  'SVGStopElement': () => StopElement.instanceRuntimeType,
+  'SVGStringList': () => StringList.instanceRuntimeType,
+  'SVGStyleElement': () => StyleElement.instanceRuntimeType,
+  'SVGSwitchElement': () => SwitchElement.instanceRuntimeType,
+  'SVGSymbolElement': () => SymbolElement.instanceRuntimeType,
+  'SVGTSpanElement': () => TSpanElement.instanceRuntimeType,
+  'SVGTests': () => Tests.instanceRuntimeType,
+  'SVGTextContentElement': () => TextContentElement.instanceRuntimeType,
+  'SVGTextElement': () => TextElement.instanceRuntimeType,
+  'SVGTextPathElement': () => TextPathElement.instanceRuntimeType,
+  'SVGTextPositioningElement': () => TextPositioningElement.instanceRuntimeType,
+  'SVGTitleElement': () => TitleElement.instanceRuntimeType,
+  'SVGTransform': () => Transform.instanceRuntimeType,
+  'SVGTransformList': () => TransformList.instanceRuntimeType,
+  'SVGURIReference': () => UriReference.instanceRuntimeType,
+  'SVGUnitTypes': () => UnitTypes.instanceRuntimeType,
+  'SVGUseElement': () => UseElement.instanceRuntimeType,
+  'SVGViewElement': () => ViewElement.instanceRuntimeType,
+  'SVGViewSpec': () => ViewSpec.instanceRuntimeType,
+  'SVGZoomAndPan': () => ZoomAndPan.instanceRuntimeType,
+  'SVGZoomEvent': () => ZoomEvent.instanceRuntimeType,
 
 };
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -315,11 +187,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static AElement internalCreateAElement() {
-    return new AElement._internalWrap();
-  }
-
-  external factory AElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AElement.internal_() : super.internal_();
@@ -333,11 +201,11 @@
 
   @DomName('SVGAElement.target')
   @DocsEditable()
-  AnimatedString get target => wrap_jso(_blink.BlinkSVGAElement.instance.target_Getter_(unwrap_jso(this)));
+  AnimatedString get target => _blink.BlinkSVGAElement.instance.target_Getter_(this);
   
   @DomName('SVGAElement.href')
   @DocsEditable()
-  AnimatedString get href => wrap_jso(_blink.BlinkSVGAElement.instance.href_Getter_(unwrap_jso(this)));
+  AnimatedString get href => _blink.BlinkSVGAElement.instance.href_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -354,21 +222,13 @@
   // To suppress missing implicit constructor warnings.
   factory Angle._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Angle internalCreateAngle() {
-    return new Angle._internalWrap();
-  }
 
-  factory Angle._internalWrap() {
-    return new Angle.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Angle.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGAngle.SVG_ANGLETYPE_DEG')
   @DocsEditable()
   static const int SVG_ANGLETYPE_DEG = 2;
@@ -391,39 +251,39 @@
 
   @DomName('SVGAngle.unitType')
   @DocsEditable()
-  int get unitType => _blink.BlinkSVGAngle.instance.unitType_Getter_(unwrap_jso(this));
+  int get unitType => _blink.BlinkSVGAngle.instance.unitType_Getter_(this);
   
   @DomName('SVGAngle.value')
   @DocsEditable()
-  num get value => _blink.BlinkSVGAngle.instance.value_Getter_(unwrap_jso(this));
+  num get value => _blink.BlinkSVGAngle.instance.value_Getter_(this);
   
   @DomName('SVGAngle.value')
   @DocsEditable()
-  set value(num value) => _blink.BlinkSVGAngle.instance.value_Setter_(unwrap_jso(this), value);
+  set value(num value) => _blink.BlinkSVGAngle.instance.value_Setter_(this, value);
   
   @DomName('SVGAngle.valueAsString')
   @DocsEditable()
-  String get valueAsString => _blink.BlinkSVGAngle.instance.valueAsString_Getter_(unwrap_jso(this));
+  String get valueAsString => _blink.BlinkSVGAngle.instance.valueAsString_Getter_(this);
   
   @DomName('SVGAngle.valueAsString')
   @DocsEditable()
-  set valueAsString(String value) => _blink.BlinkSVGAngle.instance.valueAsString_Setter_(unwrap_jso(this), value);
+  set valueAsString(String value) => _blink.BlinkSVGAngle.instance.valueAsString_Setter_(this, value);
   
   @DomName('SVGAngle.valueInSpecifiedUnits')
   @DocsEditable()
-  num get valueInSpecifiedUnits => _blink.BlinkSVGAngle.instance.valueInSpecifiedUnits_Getter_(unwrap_jso(this));
+  num get valueInSpecifiedUnits => _blink.BlinkSVGAngle.instance.valueInSpecifiedUnits_Getter_(this);
   
   @DomName('SVGAngle.valueInSpecifiedUnits')
   @DocsEditable()
-  set valueInSpecifiedUnits(num value) => _blink.BlinkSVGAngle.instance.valueInSpecifiedUnits_Setter_(unwrap_jso(this), value);
+  set valueInSpecifiedUnits(num value) => _blink.BlinkSVGAngle.instance.valueInSpecifiedUnits_Setter_(this, value);
   
   @DomName('SVGAngle.convertToSpecifiedUnits')
   @DocsEditable()
-  void convertToSpecifiedUnits(int unitType) => _blink.BlinkSVGAngle.instance.convertToSpecifiedUnits_Callback_1_(unwrap_jso(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.instance.newValueSpecifiedUnits_Callback_2_(unwrap_jso(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
@@ -449,11 +309,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static AnimateElement internalCreateAnimateElement() {
-    return new AnimateElement._internalWrap();
-  }
-
-  external factory AnimateElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimateElement.internal_() : super.internal_();
@@ -492,11 +348,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static AnimateMotionElement internalCreateAnimateMotionElement() {
-    return new AnimateMotionElement._internalWrap();
-  }
-
-  external factory AnimateMotionElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimateMotionElement.internal_() : super.internal_();
@@ -535,11 +387,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static AnimateTransformElement internalCreateAnimateTransformElement() {
-    return new AnimateTransformElement._internalWrap();
-  }
-
-  external factory AnimateTransformElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimateTransformElement.internal_() : super.internal_();
@@ -569,28 +417,20 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedAngle._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AnimatedAngle internalCreateAnimatedAngle() {
-    return new AnimatedAngle._internalWrap();
-  }
 
-  factory AnimatedAngle._internalWrap() {
-    return new AnimatedAngle.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimatedAngle.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGAnimatedAngle.animVal')
   @DocsEditable()
-  Angle get animVal => wrap_jso(_blink.BlinkSVGAnimatedAngle.instance.animVal_Getter_(unwrap_jso(this)));
+  Angle get animVal => _blink.BlinkSVGAnimatedAngle.instance.animVal_Getter_(this);
   
   @DomName('SVGAnimatedAngle.baseVal')
   @DocsEditable()
-  Angle get baseVal => wrap_jso(_blink.BlinkSVGAnimatedAngle.instance.baseVal_Getter_(unwrap_jso(this)));
+  Angle get baseVal => _blink.BlinkSVGAnimatedAngle.instance.baseVal_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -607,32 +447,24 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedBoolean._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AnimatedBoolean internalCreateAnimatedBoolean() {
-    return new AnimatedBoolean._internalWrap();
-  }
 
-  factory AnimatedBoolean._internalWrap() {
-    return new AnimatedBoolean.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimatedBoolean.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGAnimatedBoolean.animVal')
   @DocsEditable()
-  bool get animVal => _blink.BlinkSVGAnimatedBoolean.instance.animVal_Getter_(unwrap_jso(this));
+  bool get animVal => _blink.BlinkSVGAnimatedBoolean.instance.animVal_Getter_(this);
   
   @DomName('SVGAnimatedBoolean.baseVal')
   @DocsEditable()
-  bool get baseVal => _blink.BlinkSVGAnimatedBoolean.instance.baseVal_Getter_(unwrap_jso(this));
+  bool get baseVal => _blink.BlinkSVGAnimatedBoolean.instance.baseVal_Getter_(this);
   
   @DomName('SVGAnimatedBoolean.baseVal')
   @DocsEditable()
-  set baseVal(bool value) => _blink.BlinkSVGAnimatedBoolean.instance.baseVal_Setter_(unwrap_jso(this), value);
+  set baseVal(bool value) => _blink.BlinkSVGAnimatedBoolean.instance.baseVal_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -649,32 +481,24 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedEnumeration._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AnimatedEnumeration internalCreateAnimatedEnumeration() {
-    return new AnimatedEnumeration._internalWrap();
-  }
 
-  factory AnimatedEnumeration._internalWrap() {
-    return new AnimatedEnumeration.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimatedEnumeration.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGAnimatedEnumeration.animVal')
   @DocsEditable()
-  int get animVal => _blink.BlinkSVGAnimatedEnumeration.instance.animVal_Getter_(unwrap_jso(this));
+  int get animVal => _blink.BlinkSVGAnimatedEnumeration.instance.animVal_Getter_(this);
   
   @DomName('SVGAnimatedEnumeration.baseVal')
   @DocsEditable()
-  int get baseVal => _blink.BlinkSVGAnimatedEnumeration.instance.baseVal_Getter_(unwrap_jso(this));
+  int get baseVal => _blink.BlinkSVGAnimatedEnumeration.instance.baseVal_Getter_(this);
   
   @DomName('SVGAnimatedEnumeration.baseVal')
   @DocsEditable()
-  set baseVal(int value) => _blink.BlinkSVGAnimatedEnumeration.instance.baseVal_Setter_(unwrap_jso(this), value);
+  set baseVal(int value) => _blink.BlinkSVGAnimatedEnumeration.instance.baseVal_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -691,32 +515,24 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedInteger._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AnimatedInteger internalCreateAnimatedInteger() {
-    return new AnimatedInteger._internalWrap();
-  }
 
-  factory AnimatedInteger._internalWrap() {
-    return new AnimatedInteger.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimatedInteger.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGAnimatedInteger.animVal')
   @DocsEditable()
-  int get animVal => _blink.BlinkSVGAnimatedInteger.instance.animVal_Getter_(unwrap_jso(this));
+  int get animVal => _blink.BlinkSVGAnimatedInteger.instance.animVal_Getter_(this);
   
   @DomName('SVGAnimatedInteger.baseVal')
   @DocsEditable()
-  int get baseVal => _blink.BlinkSVGAnimatedInteger.instance.baseVal_Getter_(unwrap_jso(this));
+  int get baseVal => _blink.BlinkSVGAnimatedInteger.instance.baseVal_Getter_(this);
   
   @DomName('SVGAnimatedInteger.baseVal')
   @DocsEditable()
-  set baseVal(int value) => _blink.BlinkSVGAnimatedInteger.instance.baseVal_Setter_(unwrap_jso(this), value);
+  set baseVal(int value) => _blink.BlinkSVGAnimatedInteger.instance.baseVal_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -733,28 +549,20 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedLength._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AnimatedLength internalCreateAnimatedLength() {
-    return new AnimatedLength._internalWrap();
-  }
 
-  factory AnimatedLength._internalWrap() {
-    return new AnimatedLength.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimatedLength.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGAnimatedLength.animVal')
   @DocsEditable()
-  Length get animVal => wrap_jso(_blink.BlinkSVGAnimatedLength.instance.animVal_Getter_(unwrap_jso(this)));
+  Length get animVal => _blink.BlinkSVGAnimatedLength.instance.animVal_Getter_(this);
   
   @DomName('SVGAnimatedLength.baseVal')
   @DocsEditable()
-  Length get baseVal => wrap_jso(_blink.BlinkSVGAnimatedLength.instance.baseVal_Getter_(unwrap_jso(this)));
+  Length get baseVal => _blink.BlinkSVGAnimatedLength.instance.baseVal_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -771,28 +579,20 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedLengthList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AnimatedLengthList internalCreateAnimatedLengthList() {
-    return new AnimatedLengthList._internalWrap();
-  }
 
-  factory AnimatedLengthList._internalWrap() {
-    return new AnimatedLengthList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimatedLengthList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGAnimatedLengthList.animVal')
   @DocsEditable()
-  LengthList get animVal => wrap_jso(_blink.BlinkSVGAnimatedLengthList.instance.animVal_Getter_(unwrap_jso(this)));
+  LengthList get animVal => _blink.BlinkSVGAnimatedLengthList.instance.animVal_Getter_(this);
   
   @DomName('SVGAnimatedLengthList.baseVal')
   @DocsEditable()
-  LengthList get baseVal => wrap_jso(_blink.BlinkSVGAnimatedLengthList.instance.baseVal_Getter_(unwrap_jso(this)));
+  LengthList get baseVal => _blink.BlinkSVGAnimatedLengthList.instance.baseVal_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -809,32 +609,24 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedNumber._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AnimatedNumber internalCreateAnimatedNumber() {
-    return new AnimatedNumber._internalWrap();
-  }
 
-  factory AnimatedNumber._internalWrap() {
-    return new AnimatedNumber.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimatedNumber.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGAnimatedNumber.animVal')
   @DocsEditable()
-  num get animVal => _blink.BlinkSVGAnimatedNumber.instance.animVal_Getter_(unwrap_jso(this));
+  num get animVal => _blink.BlinkSVGAnimatedNumber.instance.animVal_Getter_(this);
   
   @DomName('SVGAnimatedNumber.baseVal')
   @DocsEditable()
-  num get baseVal => _blink.BlinkSVGAnimatedNumber.instance.baseVal_Getter_(unwrap_jso(this));
+  num get baseVal => _blink.BlinkSVGAnimatedNumber.instance.baseVal_Getter_(this);
   
   @DomName('SVGAnimatedNumber.baseVal')
   @DocsEditable()
-  set baseVal(num value) => _blink.BlinkSVGAnimatedNumber.instance.baseVal_Setter_(unwrap_jso(this), value);
+  set baseVal(num value) => _blink.BlinkSVGAnimatedNumber.instance.baseVal_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -851,28 +643,20 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedNumberList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AnimatedNumberList internalCreateAnimatedNumberList() {
-    return new AnimatedNumberList._internalWrap();
-  }
 
-  factory AnimatedNumberList._internalWrap() {
-    return new AnimatedNumberList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimatedNumberList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGAnimatedNumberList.animVal')
   @DocsEditable()
-  NumberList get animVal => wrap_jso(_blink.BlinkSVGAnimatedNumberList.instance.animVal_Getter_(unwrap_jso(this)));
+  NumberList get animVal => _blink.BlinkSVGAnimatedNumberList.instance.animVal_Getter_(this);
   
   @DomName('SVGAnimatedNumberList.baseVal')
   @DocsEditable()
-  NumberList get baseVal => wrap_jso(_blink.BlinkSVGAnimatedNumberList.instance.baseVal_Getter_(unwrap_jso(this)));
+  NumberList get baseVal => _blink.BlinkSVGAnimatedNumberList.instance.baseVal_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -889,28 +673,20 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedPreserveAspectRatio._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AnimatedPreserveAspectRatio internalCreateAnimatedPreserveAspectRatio() {
-    return new AnimatedPreserveAspectRatio._internalWrap();
-  }
 
-  factory AnimatedPreserveAspectRatio._internalWrap() {
-    return new AnimatedPreserveAspectRatio.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimatedPreserveAspectRatio.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGAnimatedPreserveAspectRatio.animVal')
   @DocsEditable()
-  PreserveAspectRatio get animVal => wrap_jso(_blink.BlinkSVGAnimatedPreserveAspectRatio.instance.animVal_Getter_(unwrap_jso(this)));
+  PreserveAspectRatio get animVal => _blink.BlinkSVGAnimatedPreserveAspectRatio.instance.animVal_Getter_(this);
   
   @DomName('SVGAnimatedPreserveAspectRatio.baseVal')
   @DocsEditable()
-  PreserveAspectRatio get baseVal => wrap_jso(_blink.BlinkSVGAnimatedPreserveAspectRatio.instance.baseVal_Getter_(unwrap_jso(this)));
+  PreserveAspectRatio get baseVal => _blink.BlinkSVGAnimatedPreserveAspectRatio.instance.baseVal_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -927,28 +703,20 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedRect._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AnimatedRect internalCreateAnimatedRect() {
-    return new AnimatedRect._internalWrap();
-  }
 
-  factory AnimatedRect._internalWrap() {
-    return new AnimatedRect.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimatedRect.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGAnimatedRect.animVal')
   @DocsEditable()
-  Rect get animVal => wrap_jso(_blink.BlinkSVGAnimatedRect.instance.animVal_Getter_(unwrap_jso(this)));
+  Rect get animVal => _blink.BlinkSVGAnimatedRect.instance.animVal_Getter_(this);
   
   @DomName('SVGAnimatedRect.baseVal')
   @DocsEditable()
-  Rect get baseVal => wrap_jso(_blink.BlinkSVGAnimatedRect.instance.baseVal_Getter_(unwrap_jso(this)));
+  Rect get baseVal => _blink.BlinkSVGAnimatedRect.instance.baseVal_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -965,32 +733,24 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedString._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AnimatedString internalCreateAnimatedString() {
-    return new AnimatedString._internalWrap();
-  }
 
-  factory AnimatedString._internalWrap() {
-    return new AnimatedString.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimatedString.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGAnimatedString.animVal')
   @DocsEditable()
-  String get animVal => _blink.BlinkSVGAnimatedString.instance.animVal_Getter_(unwrap_jso(this));
+  String get animVal => _blink.BlinkSVGAnimatedString.instance.animVal_Getter_(this);
   
   @DomName('SVGAnimatedString.baseVal')
   @DocsEditable()
-  String get baseVal => _blink.BlinkSVGAnimatedString.instance.baseVal_Getter_(unwrap_jso(this));
+  String get baseVal => _blink.BlinkSVGAnimatedString.instance.baseVal_Getter_(this);
   
   @DomName('SVGAnimatedString.baseVal')
   @DocsEditable()
-  set baseVal(String value) => _blink.BlinkSVGAnimatedString.instance.baseVal_Setter_(unwrap_jso(this), value);
+  set baseVal(String value) => _blink.BlinkSVGAnimatedString.instance.baseVal_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1007,28 +767,20 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedTransformList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AnimatedTransformList internalCreateAnimatedTransformList() {
-    return new AnimatedTransformList._internalWrap();
-  }
 
-  factory AnimatedTransformList._internalWrap() {
-    return new AnimatedTransformList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimatedTransformList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGAnimatedTransformList.animVal')
   @DocsEditable()
-  TransformList get animVal => wrap_jso(_blink.BlinkSVGAnimatedTransformList.instance.animVal_Getter_(unwrap_jso(this)));
+  TransformList get animVal => _blink.BlinkSVGAnimatedTransformList.instance.animVal_Getter_(this);
   
   @DomName('SVGAnimatedTransformList.baseVal')
   @DocsEditable()
-  TransformList get baseVal => wrap_jso(_blink.BlinkSVGAnimatedTransformList.instance.baseVal_Getter_(unwrap_jso(this)));
+  TransformList get baseVal => _blink.BlinkSVGAnimatedTransformList.instance.baseVal_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1051,11 +803,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static AnimationElement internalCreateAnimationElement() {
-    return new AnimationElement._internalWrap();
-  }
-
-  external factory AnimationElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnimationElement.internal_() : super.internal_();
@@ -1069,51 +817,51 @@
 
   @DomName('SVGAnimationElement.targetElement')
   @DocsEditable()
-  SvgElement get targetElement => wrap_jso(_blink.BlinkSVGAnimationElement.instance.targetElement_Getter_(unwrap_jso(this)));
+  SvgElement get targetElement => _blink.BlinkSVGAnimationElement.instance.targetElement_Getter_(this);
   
   @DomName('SVGAnimationElement.beginElement')
   @DocsEditable()
-  void beginElement() => _blink.BlinkSVGAnimationElement.instance.beginElement_Callback_0_(unwrap_jso(this));
+  void beginElement() => _blink.BlinkSVGAnimationElement.instance.beginElement_Callback_0_(this);
   
   @DomName('SVGAnimationElement.beginElementAt')
   @DocsEditable()
-  void beginElementAt(num offset) => _blink.BlinkSVGAnimationElement.instance.beginElementAt_Callback_1_(unwrap_jso(this), offset);
+  void beginElementAt(num offset) => _blink.BlinkSVGAnimationElement.instance.beginElementAt_Callback_1_(this, offset);
   
   @DomName('SVGAnimationElement.endElement')
   @DocsEditable()
-  void endElement() => _blink.BlinkSVGAnimationElement.instance.endElement_Callback_0_(unwrap_jso(this));
+  void endElement() => _blink.BlinkSVGAnimationElement.instance.endElement_Callback_0_(this);
   
   @DomName('SVGAnimationElement.endElementAt')
   @DocsEditable()
-  void endElementAt(num offset) => _blink.BlinkSVGAnimationElement.instance.endElementAt_Callback_1_(unwrap_jso(this), offset);
+  void endElementAt(num offset) => _blink.BlinkSVGAnimationElement.instance.endElementAt_Callback_1_(this, offset);
   
   @DomName('SVGAnimationElement.getCurrentTime')
   @DocsEditable()
-  num getCurrentTime() => _blink.BlinkSVGAnimationElement.instance.getCurrentTime_Callback_0_(unwrap_jso(this));
+  num getCurrentTime() => _blink.BlinkSVGAnimationElement.instance.getCurrentTime_Callback_0_(this);
   
   @DomName('SVGAnimationElement.getSimpleDuration')
   @DocsEditable()
-  num getSimpleDuration() => _blink.BlinkSVGAnimationElement.instance.getSimpleDuration_Callback_0_(unwrap_jso(this));
+  num getSimpleDuration() => _blink.BlinkSVGAnimationElement.instance.getSimpleDuration_Callback_0_(this);
   
   @DomName('SVGAnimationElement.getStartTime')
   @DocsEditable()
-  num getStartTime() => _blink.BlinkSVGAnimationElement.instance.getStartTime_Callback_0_(unwrap_jso(this));
+  num getStartTime() => _blink.BlinkSVGAnimationElement.instance.getStartTime_Callback_0_(this);
   
   @DomName('SVGAnimationElement.requiredExtensions')
   @DocsEditable()
-  StringList get requiredExtensions => wrap_jso(_blink.BlinkSVGAnimationElement.instance.requiredExtensions_Getter_(unwrap_jso(this)));
+  StringList get requiredExtensions => _blink.BlinkSVGAnimationElement.instance.requiredExtensions_Getter_(this);
   
   @DomName('SVGAnimationElement.requiredFeatures')
   @DocsEditable()
-  StringList get requiredFeatures => wrap_jso(_blink.BlinkSVGAnimationElement.instance.requiredFeatures_Getter_(unwrap_jso(this)));
+  StringList get requiredFeatures => _blink.BlinkSVGAnimationElement.instance.requiredFeatures_Getter_(this);
   
   @DomName('SVGAnimationElement.systemLanguage')
   @DocsEditable()
-  StringList get systemLanguage => wrap_jso(_blink.BlinkSVGAnimationElement.instance.systemLanguage_Getter_(unwrap_jso(this)));
+  StringList get systemLanguage => _blink.BlinkSVGAnimationElement.instance.systemLanguage_Getter_(this);
   
   @DomName('SVGAnimationElement.hasExtension')
   @DocsEditable()
-  bool hasExtension(String extension) => _blink.BlinkSVGAnimationElement.instance.hasExtension_Callback_1_(unwrap_jso(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
@@ -1136,11 +884,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static CircleElement internalCreateCircleElement() {
-    return new CircleElement._internalWrap();
-  }
-
-  external factory CircleElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CircleElement.internal_() : super.internal_();
@@ -1154,15 +898,15 @@
 
   @DomName('SVGCircleElement.cx')
   @DocsEditable()
-  AnimatedLength get cx => wrap_jso(_blink.BlinkSVGCircleElement.instance.cx_Getter_(unwrap_jso(this)));
+  AnimatedLength get cx => _blink.BlinkSVGCircleElement.instance.cx_Getter_(this);
   
   @DomName('SVGCircleElement.cy')
   @DocsEditable()
-  AnimatedLength get cy => wrap_jso(_blink.BlinkSVGCircleElement.instance.cy_Getter_(unwrap_jso(this)));
+  AnimatedLength get cy => _blink.BlinkSVGCircleElement.instance.cy_Getter_(this);
   
   @DomName('SVGCircleElement.r')
   @DocsEditable()
-  AnimatedLength get r => wrap_jso(_blink.BlinkSVGCircleElement.instance.r_Getter_(unwrap_jso(this)));
+  AnimatedLength get r => _blink.BlinkSVGCircleElement.instance.r_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1185,11 +929,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ClipPathElement internalCreateClipPathElement() {
-    return new ClipPathElement._internalWrap();
-  }
-
-  external factory ClipPathElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ClipPathElement.internal_() : super.internal_();
@@ -1203,7 +943,7 @@
 
   @DomName('SVGClipPathElement.clipPathUnits')
   @DocsEditable()
-  AnimatedEnumeration get clipPathUnits => wrap_jso(_blink.BlinkSVGClipPathElement.instance.clipPathUnits_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get clipPathUnits => _blink.BlinkSVGClipPathElement.instance.clipPathUnits_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1226,11 +966,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static DefsElement internalCreateDefsElement() {
-    return new DefsElement._internalWrap();
-  }
-
-  external factory DefsElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DefsElement.internal_() : super.internal_();
@@ -1263,11 +999,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static DescElement internalCreateDescElement() {
-    return new DescElement._internalWrap();
-  }
-
-  external factory DescElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DescElement.internal_() : super.internal_();
@@ -1296,11 +1028,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static DiscardElement internalCreateDiscardElement() {
-    return new DiscardElement._internalWrap();
-  }
-
-  external factory DiscardElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DiscardElement.internal_() : super.internal_();
@@ -1333,11 +1061,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static EllipseElement internalCreateEllipseElement() {
-    return new EllipseElement._internalWrap();
-  }
-
-  external factory EllipseElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   EllipseElement.internal_() : super.internal_();
@@ -1351,19 +1075,19 @@
 
   @DomName('SVGEllipseElement.cx')
   @DocsEditable()
-  AnimatedLength get cx => wrap_jso(_blink.BlinkSVGEllipseElement.instance.cx_Getter_(unwrap_jso(this)));
+  AnimatedLength get cx => _blink.BlinkSVGEllipseElement.instance.cx_Getter_(this);
   
   @DomName('SVGEllipseElement.cy')
   @DocsEditable()
-  AnimatedLength get cy => wrap_jso(_blink.BlinkSVGEllipseElement.instance.cy_Getter_(unwrap_jso(this)));
+  AnimatedLength get cy => _blink.BlinkSVGEllipseElement.instance.cy_Getter_(this);
   
   @DomName('SVGEllipseElement.rx')
   @DocsEditable()
-  AnimatedLength get rx => wrap_jso(_blink.BlinkSVGEllipseElement.instance.rx_Getter_(unwrap_jso(this)));
+  AnimatedLength get rx => _blink.BlinkSVGEllipseElement.instance.rx_Getter_(this);
   
   @DomName('SVGEllipseElement.ry')
   @DocsEditable()
-  AnimatedLength get ry => wrap_jso(_blink.BlinkSVGEllipseElement.instance.ry_Getter_(unwrap_jso(this)));
+  AnimatedLength get ry => _blink.BlinkSVGEllipseElement.instance.ry_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1390,11 +1114,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEBlendElement internalCreateFEBlendElement() {
-    return new FEBlendElement._internalWrap();
-  }
-
-  external factory FEBlendElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEBlendElement.internal_() : super.internal_();
@@ -1435,35 +1155,35 @@
 
   @DomName('SVGFEBlendElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => wrap_jso(_blink.BlinkSVGFEBlendElement.instance.in1_Getter_(unwrap_jso(this)));
+  AnimatedString get in1 => _blink.BlinkSVGFEBlendElement.instance.in1_Getter_(this);
   
   @DomName('SVGFEBlendElement.in2')
   @DocsEditable()
-  AnimatedString get in2 => wrap_jso(_blink.BlinkSVGFEBlendElement.instance.in2_Getter_(unwrap_jso(this)));
+  AnimatedString get in2 => _blink.BlinkSVGFEBlendElement.instance.in2_Getter_(this);
   
   @DomName('SVGFEBlendElement.mode')
   @DocsEditable()
-  AnimatedEnumeration get mode => wrap_jso(_blink.BlinkSVGFEBlendElement.instance.mode_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get mode => _blink.BlinkSVGFEBlendElement.instance.mode_Getter_(this);
   
   @DomName('SVGFEBlendElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFEBlendElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFEBlendElement.instance.height_Getter_(this);
   
   @DomName('SVGFEBlendElement.result')
   @DocsEditable()
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFEBlendElement.instance.result_Getter_(unwrap_jso(this)));
+  AnimatedString get result => _blink.BlinkSVGFEBlendElement.instance.result_Getter_(this);
   
   @DomName('SVGFEBlendElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFEBlendElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFEBlendElement.instance.width_Getter_(this);
   
   @DomName('SVGFEBlendElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFEBlendElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFEBlendElement.instance.x_Getter_(this);
   
   @DomName('SVGFEBlendElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFEBlendElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFEBlendElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1490,11 +1210,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEColorMatrixElement internalCreateFEColorMatrixElement() {
-    return new FEColorMatrixElement._internalWrap();
-  }
-
-  external factory FEColorMatrixElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEColorMatrixElement.internal_() : super.internal_();
@@ -1531,35 +1247,35 @@
 
   @DomName('SVGFEColorMatrixElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => wrap_jso(_blink.BlinkSVGFEColorMatrixElement.instance.in1_Getter_(unwrap_jso(this)));
+  AnimatedString get in1 => _blink.BlinkSVGFEColorMatrixElement.instance.in1_Getter_(this);
   
   @DomName('SVGFEColorMatrixElement.type')
   @DocsEditable()
-  AnimatedEnumeration get type => wrap_jso(_blink.BlinkSVGFEColorMatrixElement.instance.type_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get type => _blink.BlinkSVGFEColorMatrixElement.instance.type_Getter_(this);
   
   @DomName('SVGFEColorMatrixElement.values')
   @DocsEditable()
-  AnimatedNumberList get values => wrap_jso(_blink.BlinkSVGFEColorMatrixElement.instance.values_Getter_(unwrap_jso(this)));
+  AnimatedNumberList get values => _blink.BlinkSVGFEColorMatrixElement.instance.values_Getter_(this);
   
   @DomName('SVGFEColorMatrixElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFEColorMatrixElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFEColorMatrixElement.instance.height_Getter_(this);
   
   @DomName('SVGFEColorMatrixElement.result')
   @DocsEditable()
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFEColorMatrixElement.instance.result_Getter_(unwrap_jso(this)));
+  AnimatedString get result => _blink.BlinkSVGFEColorMatrixElement.instance.result_Getter_(this);
   
   @DomName('SVGFEColorMatrixElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFEColorMatrixElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFEColorMatrixElement.instance.width_Getter_(this);
   
   @DomName('SVGFEColorMatrixElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFEColorMatrixElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFEColorMatrixElement.instance.x_Getter_(this);
   
   @DomName('SVGFEColorMatrixElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFEColorMatrixElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFEColorMatrixElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1586,11 +1302,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEComponentTransferElement internalCreateFEComponentTransferElement() {
-    return new FEComponentTransferElement._internalWrap();
-  }
-
-  external factory FEComponentTransferElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEComponentTransferElement.internal_() : super.internal_();
@@ -1607,27 +1319,27 @@
 
   @DomName('SVGFEComponentTransferElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => wrap_jso(_blink.BlinkSVGFEComponentTransferElement.instance.in1_Getter_(unwrap_jso(this)));
+  AnimatedString get in1 => _blink.BlinkSVGFEComponentTransferElement.instance.in1_Getter_(this);
   
   @DomName('SVGFEComponentTransferElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFEComponentTransferElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFEComponentTransferElement.instance.height_Getter_(this);
   
   @DomName('SVGFEComponentTransferElement.result')
   @DocsEditable()
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFEComponentTransferElement.instance.result_Getter_(unwrap_jso(this)));
+  AnimatedString get result => _blink.BlinkSVGFEComponentTransferElement.instance.result_Getter_(this);
   
   @DomName('SVGFEComponentTransferElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFEComponentTransferElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFEComponentTransferElement.instance.width_Getter_(this);
   
   @DomName('SVGFEComponentTransferElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFEComponentTransferElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFEComponentTransferElement.instance.x_Getter_(this);
   
   @DomName('SVGFEComponentTransferElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFEComponentTransferElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFEComponentTransferElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1646,11 +1358,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FECompositeElement internalCreateFECompositeElement() {
-    return new FECompositeElement._internalWrap();
-  }
-
-  external factory FECompositeElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FECompositeElement.internal_() : super.internal_();
@@ -1692,51 +1400,51 @@
 
   @DomName('SVGFECompositeElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => wrap_jso(_blink.BlinkSVGFECompositeElement.instance.in1_Getter_(unwrap_jso(this)));
+  AnimatedString get in1 => _blink.BlinkSVGFECompositeElement.instance.in1_Getter_(this);
   
   @DomName('SVGFECompositeElement.in2')
   @DocsEditable()
-  AnimatedString get in2 => wrap_jso(_blink.BlinkSVGFECompositeElement.instance.in2_Getter_(unwrap_jso(this)));
+  AnimatedString get in2 => _blink.BlinkSVGFECompositeElement.instance.in2_Getter_(this);
   
   @DomName('SVGFECompositeElement.k1')
   @DocsEditable()
-  AnimatedNumber get k1 => wrap_jso(_blink.BlinkSVGFECompositeElement.instance.k1_Getter_(unwrap_jso(this)));
+  AnimatedNumber get k1 => _blink.BlinkSVGFECompositeElement.instance.k1_Getter_(this);
   
   @DomName('SVGFECompositeElement.k2')
   @DocsEditable()
-  AnimatedNumber get k2 => wrap_jso(_blink.BlinkSVGFECompositeElement.instance.k2_Getter_(unwrap_jso(this)));
+  AnimatedNumber get k2 => _blink.BlinkSVGFECompositeElement.instance.k2_Getter_(this);
   
   @DomName('SVGFECompositeElement.k3')
   @DocsEditable()
-  AnimatedNumber get k3 => wrap_jso(_blink.BlinkSVGFECompositeElement.instance.k3_Getter_(unwrap_jso(this)));
+  AnimatedNumber get k3 => _blink.BlinkSVGFECompositeElement.instance.k3_Getter_(this);
   
   @DomName('SVGFECompositeElement.k4')
   @DocsEditable()
-  AnimatedNumber get k4 => wrap_jso(_blink.BlinkSVGFECompositeElement.instance.k4_Getter_(unwrap_jso(this)));
+  AnimatedNumber get k4 => _blink.BlinkSVGFECompositeElement.instance.k4_Getter_(this);
   
   @DomName('SVGFECompositeElement.operator')
   @DocsEditable()
-  AnimatedEnumeration get operator => wrap_jso(_blink.BlinkSVGFECompositeElement.instance.operator_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get operator => _blink.BlinkSVGFECompositeElement.instance.operator_Getter_(this);
   
   @DomName('SVGFECompositeElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFECompositeElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFECompositeElement.instance.height_Getter_(this);
   
   @DomName('SVGFECompositeElement.result')
   @DocsEditable()
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFECompositeElement.instance.result_Getter_(unwrap_jso(this)));
+  AnimatedString get result => _blink.BlinkSVGFECompositeElement.instance.result_Getter_(this);
   
   @DomName('SVGFECompositeElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFECompositeElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFECompositeElement.instance.width_Getter_(this);
   
   @DomName('SVGFECompositeElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFECompositeElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFECompositeElement.instance.x_Getter_(this);
   
   @DomName('SVGFECompositeElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFECompositeElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFECompositeElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1763,11 +1471,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEConvolveMatrixElement internalCreateFEConvolveMatrixElement() {
-    return new FEConvolveMatrixElement._internalWrap();
-  }
-
-  external factory FEConvolveMatrixElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEConvolveMatrixElement.internal_() : super.internal_();
@@ -1800,71 +1504,71 @@
 
   @DomName('SVGFEConvolveMatrixElement.bias')
   @DocsEditable()
-  AnimatedNumber get bias => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.bias_Getter_(unwrap_jso(this)));
+  AnimatedNumber get bias => _blink.BlinkSVGFEConvolveMatrixElement.instance.bias_Getter_(this);
   
   @DomName('SVGFEConvolveMatrixElement.divisor')
   @DocsEditable()
-  AnimatedNumber get divisor => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.divisor_Getter_(unwrap_jso(this)));
+  AnimatedNumber get divisor => _blink.BlinkSVGFEConvolveMatrixElement.instance.divisor_Getter_(this);
   
   @DomName('SVGFEConvolveMatrixElement.edgeMode')
   @DocsEditable()
-  AnimatedEnumeration get edgeMode => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.edgeMode_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get edgeMode => _blink.BlinkSVGFEConvolveMatrixElement.instance.edgeMode_Getter_(this);
   
   @DomName('SVGFEConvolveMatrixElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.in1_Getter_(unwrap_jso(this)));
+  AnimatedString get in1 => _blink.BlinkSVGFEConvolveMatrixElement.instance.in1_Getter_(this);
   
   @DomName('SVGFEConvolveMatrixElement.kernelMatrix')
   @DocsEditable()
-  AnimatedNumberList get kernelMatrix => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.kernelMatrix_Getter_(unwrap_jso(this)));
+  AnimatedNumberList get kernelMatrix => _blink.BlinkSVGFEConvolveMatrixElement.instance.kernelMatrix_Getter_(this);
   
   @DomName('SVGFEConvolveMatrixElement.kernelUnitLengthX')
   @DocsEditable()
-  AnimatedNumber get kernelUnitLengthX => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.kernelUnitLengthX_Getter_(unwrap_jso(this)));
+  AnimatedNumber get kernelUnitLengthX => _blink.BlinkSVGFEConvolveMatrixElement.instance.kernelUnitLengthX_Getter_(this);
   
   @DomName('SVGFEConvolveMatrixElement.kernelUnitLengthY')
   @DocsEditable()
-  AnimatedNumber get kernelUnitLengthY => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.kernelUnitLengthY_Getter_(unwrap_jso(this)));
+  AnimatedNumber get kernelUnitLengthY => _blink.BlinkSVGFEConvolveMatrixElement.instance.kernelUnitLengthY_Getter_(this);
   
   @DomName('SVGFEConvolveMatrixElement.orderX')
   @DocsEditable()
-  AnimatedInteger get orderX => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.orderX_Getter_(unwrap_jso(this)));
+  AnimatedInteger get orderX => _blink.BlinkSVGFEConvolveMatrixElement.instance.orderX_Getter_(this);
   
   @DomName('SVGFEConvolveMatrixElement.orderY')
   @DocsEditable()
-  AnimatedInteger get orderY => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.orderY_Getter_(unwrap_jso(this)));
+  AnimatedInteger get orderY => _blink.BlinkSVGFEConvolveMatrixElement.instance.orderY_Getter_(this);
   
   @DomName('SVGFEConvolveMatrixElement.preserveAlpha')
   @DocsEditable()
-  AnimatedBoolean get preserveAlpha => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.preserveAlpha_Getter_(unwrap_jso(this)));
+  AnimatedBoolean get preserveAlpha => _blink.BlinkSVGFEConvolveMatrixElement.instance.preserveAlpha_Getter_(this);
   
   @DomName('SVGFEConvolveMatrixElement.targetX')
   @DocsEditable()
-  AnimatedInteger get targetX => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.targetX_Getter_(unwrap_jso(this)));
+  AnimatedInteger get targetX => _blink.BlinkSVGFEConvolveMatrixElement.instance.targetX_Getter_(this);
   
   @DomName('SVGFEConvolveMatrixElement.targetY')
   @DocsEditable()
-  AnimatedInteger get targetY => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.targetY_Getter_(unwrap_jso(this)));
+  AnimatedInteger get targetY => _blink.BlinkSVGFEConvolveMatrixElement.instance.targetY_Getter_(this);
   
   @DomName('SVGFEConvolveMatrixElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFEConvolveMatrixElement.instance.height_Getter_(this);
   
   @DomName('SVGFEConvolveMatrixElement.result')
   @DocsEditable()
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.result_Getter_(unwrap_jso(this)));
+  AnimatedString get result => _blink.BlinkSVGFEConvolveMatrixElement.instance.result_Getter_(this);
   
   @DomName('SVGFEConvolveMatrixElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFEConvolveMatrixElement.instance.width_Getter_(this);
   
   @DomName('SVGFEConvolveMatrixElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFEConvolveMatrixElement.instance.x_Getter_(this);
   
   @DomName('SVGFEConvolveMatrixElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFEConvolveMatrixElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFEConvolveMatrixElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1891,11 +1595,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEDiffuseLightingElement internalCreateFEDiffuseLightingElement() {
-    return new FEDiffuseLightingElement._internalWrap();
-  }
-
-  external factory FEDiffuseLightingElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEDiffuseLightingElement.internal_() : super.internal_();
@@ -1912,43 +1612,43 @@
 
   @DomName('SVGFEDiffuseLightingElement.diffuseConstant')
   @DocsEditable()
-  AnimatedNumber get diffuseConstant => wrap_jso(_blink.BlinkSVGFEDiffuseLightingElement.instance.diffuseConstant_Getter_(unwrap_jso(this)));
+  AnimatedNumber get diffuseConstant => _blink.BlinkSVGFEDiffuseLightingElement.instance.diffuseConstant_Getter_(this);
   
   @DomName('SVGFEDiffuseLightingElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => wrap_jso(_blink.BlinkSVGFEDiffuseLightingElement.instance.in1_Getter_(unwrap_jso(this)));
+  AnimatedString get in1 => _blink.BlinkSVGFEDiffuseLightingElement.instance.in1_Getter_(this);
   
   @DomName('SVGFEDiffuseLightingElement.kernelUnitLengthX')
   @DocsEditable()
-  AnimatedNumber get kernelUnitLengthX => wrap_jso(_blink.BlinkSVGFEDiffuseLightingElement.instance.kernelUnitLengthX_Getter_(unwrap_jso(this)));
+  AnimatedNumber get kernelUnitLengthX => _blink.BlinkSVGFEDiffuseLightingElement.instance.kernelUnitLengthX_Getter_(this);
   
   @DomName('SVGFEDiffuseLightingElement.kernelUnitLengthY')
   @DocsEditable()
-  AnimatedNumber get kernelUnitLengthY => wrap_jso(_blink.BlinkSVGFEDiffuseLightingElement.instance.kernelUnitLengthY_Getter_(unwrap_jso(this)));
+  AnimatedNumber get kernelUnitLengthY => _blink.BlinkSVGFEDiffuseLightingElement.instance.kernelUnitLengthY_Getter_(this);
   
   @DomName('SVGFEDiffuseLightingElement.surfaceScale')
   @DocsEditable()
-  AnimatedNumber get surfaceScale => wrap_jso(_blink.BlinkSVGFEDiffuseLightingElement.instance.surfaceScale_Getter_(unwrap_jso(this)));
+  AnimatedNumber get surfaceScale => _blink.BlinkSVGFEDiffuseLightingElement.instance.surfaceScale_Getter_(this);
   
   @DomName('SVGFEDiffuseLightingElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFEDiffuseLightingElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFEDiffuseLightingElement.instance.height_Getter_(this);
   
   @DomName('SVGFEDiffuseLightingElement.result')
   @DocsEditable()
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFEDiffuseLightingElement.instance.result_Getter_(unwrap_jso(this)));
+  AnimatedString get result => _blink.BlinkSVGFEDiffuseLightingElement.instance.result_Getter_(this);
   
   @DomName('SVGFEDiffuseLightingElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFEDiffuseLightingElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFEDiffuseLightingElement.instance.width_Getter_(this);
   
   @DomName('SVGFEDiffuseLightingElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFEDiffuseLightingElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFEDiffuseLightingElement.instance.x_Getter_(this);
   
   @DomName('SVGFEDiffuseLightingElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFEDiffuseLightingElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFEDiffuseLightingElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1975,11 +1675,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEDisplacementMapElement internalCreateFEDisplacementMapElement() {
-    return new FEDisplacementMapElement._internalWrap();
-  }
-
-  external factory FEDisplacementMapElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEDisplacementMapElement.internal_() : super.internal_();
@@ -2016,43 +1712,43 @@
 
   @DomName('SVGFEDisplacementMapElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => wrap_jso(_blink.BlinkSVGFEDisplacementMapElement.instance.in1_Getter_(unwrap_jso(this)));
+  AnimatedString get in1 => _blink.BlinkSVGFEDisplacementMapElement.instance.in1_Getter_(this);
   
   @DomName('SVGFEDisplacementMapElement.in2')
   @DocsEditable()
-  AnimatedString get in2 => wrap_jso(_blink.BlinkSVGFEDisplacementMapElement.instance.in2_Getter_(unwrap_jso(this)));
+  AnimatedString get in2 => _blink.BlinkSVGFEDisplacementMapElement.instance.in2_Getter_(this);
   
   @DomName('SVGFEDisplacementMapElement.scale')
   @DocsEditable()
-  AnimatedNumber get scale => wrap_jso(_blink.BlinkSVGFEDisplacementMapElement.instance.scale_Getter_(unwrap_jso(this)));
+  AnimatedNumber get scale => _blink.BlinkSVGFEDisplacementMapElement.instance.scale_Getter_(this);
   
   @DomName('SVGFEDisplacementMapElement.xChannelSelector')
   @DocsEditable()
-  AnimatedEnumeration get xChannelSelector => wrap_jso(_blink.BlinkSVGFEDisplacementMapElement.instance.xChannelSelector_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get xChannelSelector => _blink.BlinkSVGFEDisplacementMapElement.instance.xChannelSelector_Getter_(this);
   
   @DomName('SVGFEDisplacementMapElement.yChannelSelector')
   @DocsEditable()
-  AnimatedEnumeration get yChannelSelector => wrap_jso(_blink.BlinkSVGFEDisplacementMapElement.instance.yChannelSelector_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get yChannelSelector => _blink.BlinkSVGFEDisplacementMapElement.instance.yChannelSelector_Getter_(this);
   
   @DomName('SVGFEDisplacementMapElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFEDisplacementMapElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFEDisplacementMapElement.instance.height_Getter_(this);
   
   @DomName('SVGFEDisplacementMapElement.result')
   @DocsEditable()
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFEDisplacementMapElement.instance.result_Getter_(unwrap_jso(this)));
+  AnimatedString get result => _blink.BlinkSVGFEDisplacementMapElement.instance.result_Getter_(this);
   
   @DomName('SVGFEDisplacementMapElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFEDisplacementMapElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFEDisplacementMapElement.instance.width_Getter_(this);
   
   @DomName('SVGFEDisplacementMapElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFEDisplacementMapElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFEDisplacementMapElement.instance.x_Getter_(this);
   
   @DomName('SVGFEDisplacementMapElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFEDisplacementMapElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFEDisplacementMapElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2079,11 +1775,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEDistantLightElement internalCreateFEDistantLightElement() {
-    return new FEDistantLightElement._internalWrap();
-  }
-
-  external factory FEDistantLightElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEDistantLightElement.internal_() : super.internal_();
@@ -2100,11 +1792,11 @@
 
   @DomName('SVGFEDistantLightElement.azimuth')
   @DocsEditable()
-  AnimatedNumber get azimuth => wrap_jso(_blink.BlinkSVGFEDistantLightElement.instance.azimuth_Getter_(unwrap_jso(this)));
+  AnimatedNumber get azimuth => _blink.BlinkSVGFEDistantLightElement.instance.azimuth_Getter_(this);
   
   @DomName('SVGFEDistantLightElement.elevation')
   @DocsEditable()
-  AnimatedNumber get elevation => wrap_jso(_blink.BlinkSVGFEDistantLightElement.instance.elevation_Getter_(unwrap_jso(this)));
+  AnimatedNumber get elevation => _blink.BlinkSVGFEDistantLightElement.instance.elevation_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2131,11 +1823,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEFloodElement internalCreateFEFloodElement() {
-    return new FEFloodElement._internalWrap();
-  }
-
-  external factory FEFloodElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEFloodElement.internal_() : super.internal_();
@@ -2152,23 +1840,23 @@
 
   @DomName('SVGFEFloodElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFEFloodElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFEFloodElement.instance.height_Getter_(this);
   
   @DomName('SVGFEFloodElement.result')
   @DocsEditable()
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFEFloodElement.instance.result_Getter_(unwrap_jso(this)));
+  AnimatedString get result => _blink.BlinkSVGFEFloodElement.instance.result_Getter_(this);
   
   @DomName('SVGFEFloodElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFEFloodElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFEFloodElement.instance.width_Getter_(this);
   
   @DomName('SVGFEFloodElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFEFloodElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFEFloodElement.instance.x_Getter_(this);
   
   @DomName('SVGFEFloodElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFEFloodElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFEFloodElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2195,11 +1883,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEFuncAElement internalCreateFEFuncAElement() {
-    return new FEFuncAElement._internalWrap();
-  }
-
-  external factory FEFuncAElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEFuncAElement.internal_() : super.internal_();
@@ -2239,11 +1923,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEFuncBElement internalCreateFEFuncBElement() {
-    return new FEFuncBElement._internalWrap();
-  }
-
-  external factory FEFuncBElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEFuncBElement.internal_() : super.internal_();
@@ -2283,11 +1963,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEFuncGElement internalCreateFEFuncGElement() {
-    return new FEFuncGElement._internalWrap();
-  }
-
-  external factory FEFuncGElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEFuncGElement.internal_() : super.internal_();
@@ -2327,11 +2003,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEFuncRElement internalCreateFEFuncRElement() {
-    return new FEFuncRElement._internalWrap();
-  }
-
-  external factory FEFuncRElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEFuncRElement.internal_() : super.internal_();
@@ -2371,11 +2043,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEGaussianBlurElement internalCreateFEGaussianBlurElement() {
-    return new FEGaussianBlurElement._internalWrap();
-  }
-
-  external factory FEGaussianBlurElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEGaussianBlurElement.internal_() : super.internal_();
@@ -2392,39 +2060,39 @@
 
   @DomName('SVGFEGaussianBlurElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => wrap_jso(_blink.BlinkSVGFEGaussianBlurElement.instance.in1_Getter_(unwrap_jso(this)));
+  AnimatedString get in1 => _blink.BlinkSVGFEGaussianBlurElement.instance.in1_Getter_(this);
   
   @DomName('SVGFEGaussianBlurElement.stdDeviationX')
   @DocsEditable()
-  AnimatedNumber get stdDeviationX => wrap_jso(_blink.BlinkSVGFEGaussianBlurElement.instance.stdDeviationX_Getter_(unwrap_jso(this)));
+  AnimatedNumber get stdDeviationX => _blink.BlinkSVGFEGaussianBlurElement.instance.stdDeviationX_Getter_(this);
   
   @DomName('SVGFEGaussianBlurElement.stdDeviationY')
   @DocsEditable()
-  AnimatedNumber get stdDeviationY => wrap_jso(_blink.BlinkSVGFEGaussianBlurElement.instance.stdDeviationY_Getter_(unwrap_jso(this)));
+  AnimatedNumber get stdDeviationY => _blink.BlinkSVGFEGaussianBlurElement.instance.stdDeviationY_Getter_(this);
   
   @DomName('SVGFEGaussianBlurElement.setStdDeviation')
   @DocsEditable()
-  void setStdDeviation(num stdDeviationX, num stdDeviationY) => _blink.BlinkSVGFEGaussianBlurElement.instance.setStdDeviation_Callback_2_(unwrap_jso(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 => wrap_jso(_blink.BlinkSVGFEGaussianBlurElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFEGaussianBlurElement.instance.height_Getter_(this);
   
   @DomName('SVGFEGaussianBlurElement.result')
   @DocsEditable()
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFEGaussianBlurElement.instance.result_Getter_(unwrap_jso(this)));
+  AnimatedString get result => _blink.BlinkSVGFEGaussianBlurElement.instance.result_Getter_(this);
   
   @DomName('SVGFEGaussianBlurElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFEGaussianBlurElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFEGaussianBlurElement.instance.width_Getter_(this);
   
   @DomName('SVGFEGaussianBlurElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFEGaussianBlurElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFEGaussianBlurElement.instance.x_Getter_(this);
   
   @DomName('SVGFEGaussianBlurElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFEGaussianBlurElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFEGaussianBlurElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2451,11 +2119,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEImageElement internalCreateFEImageElement() {
-    return new FEImageElement._internalWrap();
-  }
-
-  external factory FEImageElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEImageElement.internal_() : super.internal_();
@@ -2472,31 +2136,31 @@
 
   @DomName('SVGFEImageElement.preserveAspectRatio')
   @DocsEditable()
-  AnimatedPreserveAspectRatio get preserveAspectRatio => wrap_jso(_blink.BlinkSVGFEImageElement.instance.preserveAspectRatio_Getter_(unwrap_jso(this)));
+  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGFEImageElement.instance.preserveAspectRatio_Getter_(this);
   
   @DomName('SVGFEImageElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFEImageElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFEImageElement.instance.height_Getter_(this);
   
   @DomName('SVGFEImageElement.result')
   @DocsEditable()
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFEImageElement.instance.result_Getter_(unwrap_jso(this)));
+  AnimatedString get result => _blink.BlinkSVGFEImageElement.instance.result_Getter_(this);
   
   @DomName('SVGFEImageElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFEImageElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFEImageElement.instance.width_Getter_(this);
   
   @DomName('SVGFEImageElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFEImageElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFEImageElement.instance.x_Getter_(this);
   
   @DomName('SVGFEImageElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFEImageElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFEImageElement.instance.y_Getter_(this);
   
   @DomName('SVGFEImageElement.href')
   @DocsEditable()
-  AnimatedString get href => wrap_jso(_blink.BlinkSVGFEImageElement.instance.href_Getter_(unwrap_jso(this)));
+  AnimatedString get href => _blink.BlinkSVGFEImageElement.instance.href_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2523,11 +2187,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEMergeElement internalCreateFEMergeElement() {
-    return new FEMergeElement._internalWrap();
-  }
-
-  external factory FEMergeElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEMergeElement.internal_() : super.internal_();
@@ -2544,23 +2204,23 @@
 
   @DomName('SVGFEMergeElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFEMergeElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFEMergeElement.instance.height_Getter_(this);
   
   @DomName('SVGFEMergeElement.result')
   @DocsEditable()
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFEMergeElement.instance.result_Getter_(unwrap_jso(this)));
+  AnimatedString get result => _blink.BlinkSVGFEMergeElement.instance.result_Getter_(this);
   
   @DomName('SVGFEMergeElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFEMergeElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFEMergeElement.instance.width_Getter_(this);
   
   @DomName('SVGFEMergeElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFEMergeElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFEMergeElement.instance.x_Getter_(this);
   
   @DomName('SVGFEMergeElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFEMergeElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFEMergeElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2587,11 +2247,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEMergeNodeElement internalCreateFEMergeNodeElement() {
-    return new FEMergeNodeElement._internalWrap();
-  }
-
-  external factory FEMergeNodeElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEMergeNodeElement.internal_() : super.internal_();
@@ -2608,7 +2264,7 @@
 
   @DomName('SVGFEMergeNodeElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => wrap_jso(_blink.BlinkSVGFEMergeNodeElement.instance.in1_Getter_(unwrap_jso(this)));
+  AnimatedString get in1 => _blink.BlinkSVGFEMergeNodeElement.instance.in1_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2631,11 +2287,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEMorphologyElement internalCreateFEMorphologyElement() {
-    return new FEMorphologyElement._internalWrap();
-  }
-
-  external factory FEMorphologyElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEMorphologyElement.internal_() : super.internal_();
@@ -2661,39 +2313,39 @@
 
   @DomName('SVGFEMorphologyElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => wrap_jso(_blink.BlinkSVGFEMorphologyElement.instance.in1_Getter_(unwrap_jso(this)));
+  AnimatedString get in1 => _blink.BlinkSVGFEMorphologyElement.instance.in1_Getter_(this);
   
   @DomName('SVGFEMorphologyElement.operator')
   @DocsEditable()
-  AnimatedEnumeration get operator => wrap_jso(_blink.BlinkSVGFEMorphologyElement.instance.operator_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get operator => _blink.BlinkSVGFEMorphologyElement.instance.operator_Getter_(this);
   
   @DomName('SVGFEMorphologyElement.radiusX')
   @DocsEditable()
-  AnimatedNumber get radiusX => wrap_jso(_blink.BlinkSVGFEMorphologyElement.instance.radiusX_Getter_(unwrap_jso(this)));
+  AnimatedNumber get radiusX => _blink.BlinkSVGFEMorphologyElement.instance.radiusX_Getter_(this);
   
   @DomName('SVGFEMorphologyElement.radiusY')
   @DocsEditable()
-  AnimatedNumber get radiusY => wrap_jso(_blink.BlinkSVGFEMorphologyElement.instance.radiusY_Getter_(unwrap_jso(this)));
+  AnimatedNumber get radiusY => _blink.BlinkSVGFEMorphologyElement.instance.radiusY_Getter_(this);
   
   @DomName('SVGFEMorphologyElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFEMorphologyElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFEMorphologyElement.instance.height_Getter_(this);
   
   @DomName('SVGFEMorphologyElement.result')
   @DocsEditable()
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFEMorphologyElement.instance.result_Getter_(unwrap_jso(this)));
+  AnimatedString get result => _blink.BlinkSVGFEMorphologyElement.instance.result_Getter_(this);
   
   @DomName('SVGFEMorphologyElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFEMorphologyElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFEMorphologyElement.instance.width_Getter_(this);
   
   @DomName('SVGFEMorphologyElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFEMorphologyElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFEMorphologyElement.instance.x_Getter_(this);
   
   @DomName('SVGFEMorphologyElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFEMorphologyElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFEMorphologyElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2720,11 +2372,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEOffsetElement internalCreateFEOffsetElement() {
-    return new FEOffsetElement._internalWrap();
-  }
-
-  external factory FEOffsetElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEOffsetElement.internal_() : super.internal_();
@@ -2741,35 +2389,35 @@
 
   @DomName('SVGFEOffsetElement.dx')
   @DocsEditable()
-  AnimatedNumber get dx => wrap_jso(_blink.BlinkSVGFEOffsetElement.instance.dx_Getter_(unwrap_jso(this)));
+  AnimatedNumber get dx => _blink.BlinkSVGFEOffsetElement.instance.dx_Getter_(this);
   
   @DomName('SVGFEOffsetElement.dy')
   @DocsEditable()
-  AnimatedNumber get dy => wrap_jso(_blink.BlinkSVGFEOffsetElement.instance.dy_Getter_(unwrap_jso(this)));
+  AnimatedNumber get dy => _blink.BlinkSVGFEOffsetElement.instance.dy_Getter_(this);
   
   @DomName('SVGFEOffsetElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => wrap_jso(_blink.BlinkSVGFEOffsetElement.instance.in1_Getter_(unwrap_jso(this)));
+  AnimatedString get in1 => _blink.BlinkSVGFEOffsetElement.instance.in1_Getter_(this);
   
   @DomName('SVGFEOffsetElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFEOffsetElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFEOffsetElement.instance.height_Getter_(this);
   
   @DomName('SVGFEOffsetElement.result')
   @DocsEditable()
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFEOffsetElement.instance.result_Getter_(unwrap_jso(this)));
+  AnimatedString get result => _blink.BlinkSVGFEOffsetElement.instance.result_Getter_(this);
   
   @DomName('SVGFEOffsetElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFEOffsetElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFEOffsetElement.instance.width_Getter_(this);
   
   @DomName('SVGFEOffsetElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFEOffsetElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFEOffsetElement.instance.x_Getter_(this);
   
   @DomName('SVGFEOffsetElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFEOffsetElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFEOffsetElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2796,11 +2444,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FEPointLightElement internalCreateFEPointLightElement() {
-    return new FEPointLightElement._internalWrap();
-  }
-
-  external factory FEPointLightElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FEPointLightElement.internal_() : super.internal_();
@@ -2817,15 +2461,15 @@
 
   @DomName('SVGFEPointLightElement.x')
   @DocsEditable()
-  AnimatedNumber get x => wrap_jso(_blink.BlinkSVGFEPointLightElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedNumber get x => _blink.BlinkSVGFEPointLightElement.instance.x_Getter_(this);
   
   @DomName('SVGFEPointLightElement.y')
   @DocsEditable()
-  AnimatedNumber get y => wrap_jso(_blink.BlinkSVGFEPointLightElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedNumber get y => _blink.BlinkSVGFEPointLightElement.instance.y_Getter_(this);
   
   @DomName('SVGFEPointLightElement.z')
   @DocsEditable()
-  AnimatedNumber get z => wrap_jso(_blink.BlinkSVGFEPointLightElement.instance.z_Getter_(unwrap_jso(this)));
+  AnimatedNumber get z => _blink.BlinkSVGFEPointLightElement.instance.z_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2852,11 +2496,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FESpecularLightingElement internalCreateFESpecularLightingElement() {
-    return new FESpecularLightingElement._internalWrap();
-  }
-
-  external factory FESpecularLightingElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FESpecularLightingElement.internal_() : super.internal_();
@@ -2873,49 +2513,49 @@
 
   @DomName('SVGFESpecularLightingElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => wrap_jso(_blink.BlinkSVGFESpecularLightingElement.instance.in1_Getter_(unwrap_jso(this)));
+  AnimatedString get in1 => _blink.BlinkSVGFESpecularLightingElement.instance.in1_Getter_(this);
   
   @DomName('SVGFESpecularLightingElement.kernelUnitLengthX')
   @DocsEditable()
   @Experimental() // untriaged
-  AnimatedNumber get kernelUnitLengthX => wrap_jso(_blink.BlinkSVGFESpecularLightingElement.instance.kernelUnitLengthX_Getter_(unwrap_jso(this)));
+  AnimatedNumber get kernelUnitLengthX => _blink.BlinkSVGFESpecularLightingElement.instance.kernelUnitLengthX_Getter_(this);
   
   @DomName('SVGFESpecularLightingElement.kernelUnitLengthY')
   @DocsEditable()
   @Experimental() // untriaged
-  AnimatedNumber get kernelUnitLengthY => wrap_jso(_blink.BlinkSVGFESpecularLightingElement.instance.kernelUnitLengthY_Getter_(unwrap_jso(this)));
+  AnimatedNumber get kernelUnitLengthY => _blink.BlinkSVGFESpecularLightingElement.instance.kernelUnitLengthY_Getter_(this);
   
   @DomName('SVGFESpecularLightingElement.specularConstant')
   @DocsEditable()
-  AnimatedNumber get specularConstant => wrap_jso(_blink.BlinkSVGFESpecularLightingElement.instance.specularConstant_Getter_(unwrap_jso(this)));
+  AnimatedNumber get specularConstant => _blink.BlinkSVGFESpecularLightingElement.instance.specularConstant_Getter_(this);
   
   @DomName('SVGFESpecularLightingElement.specularExponent')
   @DocsEditable()
-  AnimatedNumber get specularExponent => wrap_jso(_blink.BlinkSVGFESpecularLightingElement.instance.specularExponent_Getter_(unwrap_jso(this)));
+  AnimatedNumber get specularExponent => _blink.BlinkSVGFESpecularLightingElement.instance.specularExponent_Getter_(this);
   
   @DomName('SVGFESpecularLightingElement.surfaceScale')
   @DocsEditable()
-  AnimatedNumber get surfaceScale => wrap_jso(_blink.BlinkSVGFESpecularLightingElement.instance.surfaceScale_Getter_(unwrap_jso(this)));
+  AnimatedNumber get surfaceScale => _blink.BlinkSVGFESpecularLightingElement.instance.surfaceScale_Getter_(this);
   
   @DomName('SVGFESpecularLightingElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFESpecularLightingElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFESpecularLightingElement.instance.height_Getter_(this);
   
   @DomName('SVGFESpecularLightingElement.result')
   @DocsEditable()
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFESpecularLightingElement.instance.result_Getter_(unwrap_jso(this)));
+  AnimatedString get result => _blink.BlinkSVGFESpecularLightingElement.instance.result_Getter_(this);
   
   @DomName('SVGFESpecularLightingElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFESpecularLightingElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFESpecularLightingElement.instance.width_Getter_(this);
   
   @DomName('SVGFESpecularLightingElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFESpecularLightingElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFESpecularLightingElement.instance.x_Getter_(this);
   
   @DomName('SVGFESpecularLightingElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFESpecularLightingElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFESpecularLightingElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2942,11 +2582,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FESpotLightElement internalCreateFESpotLightElement() {
-    return new FESpotLightElement._internalWrap();
-  }
-
-  external factory FESpotLightElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FESpotLightElement.internal_() : super.internal_();
@@ -2963,35 +2599,35 @@
 
   @DomName('SVGFESpotLightElement.limitingConeAngle')
   @DocsEditable()
-  AnimatedNumber get limitingConeAngle => wrap_jso(_blink.BlinkSVGFESpotLightElement.instance.limitingConeAngle_Getter_(unwrap_jso(this)));
+  AnimatedNumber get limitingConeAngle => _blink.BlinkSVGFESpotLightElement.instance.limitingConeAngle_Getter_(this);
   
   @DomName('SVGFESpotLightElement.pointsAtX')
   @DocsEditable()
-  AnimatedNumber get pointsAtX => wrap_jso(_blink.BlinkSVGFESpotLightElement.instance.pointsAtX_Getter_(unwrap_jso(this)));
+  AnimatedNumber get pointsAtX => _blink.BlinkSVGFESpotLightElement.instance.pointsAtX_Getter_(this);
   
   @DomName('SVGFESpotLightElement.pointsAtY')
   @DocsEditable()
-  AnimatedNumber get pointsAtY => wrap_jso(_blink.BlinkSVGFESpotLightElement.instance.pointsAtY_Getter_(unwrap_jso(this)));
+  AnimatedNumber get pointsAtY => _blink.BlinkSVGFESpotLightElement.instance.pointsAtY_Getter_(this);
   
   @DomName('SVGFESpotLightElement.pointsAtZ')
   @DocsEditable()
-  AnimatedNumber get pointsAtZ => wrap_jso(_blink.BlinkSVGFESpotLightElement.instance.pointsAtZ_Getter_(unwrap_jso(this)));
+  AnimatedNumber get pointsAtZ => _blink.BlinkSVGFESpotLightElement.instance.pointsAtZ_Getter_(this);
   
   @DomName('SVGFESpotLightElement.specularExponent')
   @DocsEditable()
-  AnimatedNumber get specularExponent => wrap_jso(_blink.BlinkSVGFESpotLightElement.instance.specularExponent_Getter_(unwrap_jso(this)));
+  AnimatedNumber get specularExponent => _blink.BlinkSVGFESpotLightElement.instance.specularExponent_Getter_(this);
   
   @DomName('SVGFESpotLightElement.x')
   @DocsEditable()
-  AnimatedNumber get x => wrap_jso(_blink.BlinkSVGFESpotLightElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedNumber get x => _blink.BlinkSVGFESpotLightElement.instance.x_Getter_(this);
   
   @DomName('SVGFESpotLightElement.y')
   @DocsEditable()
-  AnimatedNumber get y => wrap_jso(_blink.BlinkSVGFESpotLightElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedNumber get y => _blink.BlinkSVGFESpotLightElement.instance.y_Getter_(this);
   
   @DomName('SVGFESpotLightElement.z')
   @DocsEditable()
-  AnimatedNumber get z => wrap_jso(_blink.BlinkSVGFESpotLightElement.instance.z_Getter_(unwrap_jso(this)));
+  AnimatedNumber get z => _blink.BlinkSVGFESpotLightElement.instance.z_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3018,11 +2654,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FETileElement internalCreateFETileElement() {
-    return new FETileElement._internalWrap();
-  }
-
-  external factory FETileElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FETileElement.internal_() : super.internal_();
@@ -3039,27 +2671,27 @@
 
   @DomName('SVGFETileElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => wrap_jso(_blink.BlinkSVGFETileElement.instance.in1_Getter_(unwrap_jso(this)));
+  AnimatedString get in1 => _blink.BlinkSVGFETileElement.instance.in1_Getter_(this);
   
   @DomName('SVGFETileElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFETileElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFETileElement.instance.height_Getter_(this);
   
   @DomName('SVGFETileElement.result')
   @DocsEditable()
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFETileElement.instance.result_Getter_(unwrap_jso(this)));
+  AnimatedString get result => _blink.BlinkSVGFETileElement.instance.result_Getter_(this);
   
   @DomName('SVGFETileElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFETileElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFETileElement.instance.width_Getter_(this);
   
   @DomName('SVGFETileElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFETileElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFETileElement.instance.x_Getter_(this);
   
   @DomName('SVGFETileElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFETileElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFETileElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3086,11 +2718,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FETurbulenceElement internalCreateFETurbulenceElement() {
-    return new FETurbulenceElement._internalWrap();
-  }
-
-  external factory FETurbulenceElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FETurbulenceElement.internal_() : super.internal_();
@@ -3131,47 +2759,47 @@
 
   @DomName('SVGFETurbulenceElement.baseFrequencyX')
   @DocsEditable()
-  AnimatedNumber get baseFrequencyX => wrap_jso(_blink.BlinkSVGFETurbulenceElement.instance.baseFrequencyX_Getter_(unwrap_jso(this)));
+  AnimatedNumber get baseFrequencyX => _blink.BlinkSVGFETurbulenceElement.instance.baseFrequencyX_Getter_(this);
   
   @DomName('SVGFETurbulenceElement.baseFrequencyY')
   @DocsEditable()
-  AnimatedNumber get baseFrequencyY => wrap_jso(_blink.BlinkSVGFETurbulenceElement.instance.baseFrequencyY_Getter_(unwrap_jso(this)));
+  AnimatedNumber get baseFrequencyY => _blink.BlinkSVGFETurbulenceElement.instance.baseFrequencyY_Getter_(this);
   
   @DomName('SVGFETurbulenceElement.numOctaves')
   @DocsEditable()
-  AnimatedInteger get numOctaves => wrap_jso(_blink.BlinkSVGFETurbulenceElement.instance.numOctaves_Getter_(unwrap_jso(this)));
+  AnimatedInteger get numOctaves => _blink.BlinkSVGFETurbulenceElement.instance.numOctaves_Getter_(this);
   
   @DomName('SVGFETurbulenceElement.seed')
   @DocsEditable()
-  AnimatedNumber get seed => wrap_jso(_blink.BlinkSVGFETurbulenceElement.instance.seed_Getter_(unwrap_jso(this)));
+  AnimatedNumber get seed => _blink.BlinkSVGFETurbulenceElement.instance.seed_Getter_(this);
   
   @DomName('SVGFETurbulenceElement.stitchTiles')
   @DocsEditable()
-  AnimatedEnumeration get stitchTiles => wrap_jso(_blink.BlinkSVGFETurbulenceElement.instance.stitchTiles_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get stitchTiles => _blink.BlinkSVGFETurbulenceElement.instance.stitchTiles_Getter_(this);
   
   @DomName('SVGFETurbulenceElement.type')
   @DocsEditable()
-  AnimatedEnumeration get type => wrap_jso(_blink.BlinkSVGFETurbulenceElement.instance.type_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get type => _blink.BlinkSVGFETurbulenceElement.instance.type_Getter_(this);
   
   @DomName('SVGFETurbulenceElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFETurbulenceElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFETurbulenceElement.instance.height_Getter_(this);
   
   @DomName('SVGFETurbulenceElement.result')
   @DocsEditable()
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFETurbulenceElement.instance.result_Getter_(unwrap_jso(this)));
+  AnimatedString get result => _blink.BlinkSVGFETurbulenceElement.instance.result_Getter_(this);
   
   @DomName('SVGFETurbulenceElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFETurbulenceElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFETurbulenceElement.instance.width_Getter_(this);
   
   @DomName('SVGFETurbulenceElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFETurbulenceElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFETurbulenceElement.instance.x_Getter_(this);
   
   @DomName('SVGFETurbulenceElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFETurbulenceElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFETurbulenceElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3198,11 +2826,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static FilterElement internalCreateFilterElement() {
-    return new FilterElement._internalWrap();
-  }
-
-  external factory FilterElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   FilterElement.internal_() : super.internal_();
@@ -3219,31 +2843,31 @@
 
   @DomName('SVGFilterElement.filterUnits')
   @DocsEditable()
-  AnimatedEnumeration get filterUnits => wrap_jso(_blink.BlinkSVGFilterElement.instance.filterUnits_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get filterUnits => _blink.BlinkSVGFilterElement.instance.filterUnits_Getter_(this);
   
   @DomName('SVGFilterElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFilterElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFilterElement.instance.height_Getter_(this);
   
   @DomName('SVGFilterElement.primitiveUnits')
   @DocsEditable()
-  AnimatedEnumeration get primitiveUnits => wrap_jso(_blink.BlinkSVGFilterElement.instance.primitiveUnits_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get primitiveUnits => _blink.BlinkSVGFilterElement.instance.primitiveUnits_Getter_(this);
   
   @DomName('SVGFilterElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFilterElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGFilterElement.instance.width_Getter_(this);
   
   @DomName('SVGFilterElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFilterElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGFilterElement.instance.x_Getter_(this);
   
   @DomName('SVGFilterElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFilterElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGFilterElement.instance.y_Getter_(this);
   
   @DomName('SVGFilterElement.href')
   @DocsEditable()
-  AnimatedString get href => wrap_jso(_blink.BlinkSVGFilterElement.instance.href_Getter_(unwrap_jso(this)));
+  AnimatedString get href => _blink.BlinkSVGFilterElement.instance.href_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3327,11 +2951,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ForeignObjectElement internalCreateForeignObjectElement() {
-    return new ForeignObjectElement._internalWrap();
-  }
-
-  external factory ForeignObjectElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ForeignObjectElement.internal_() : super.internal_();
@@ -3348,19 +2968,19 @@
 
   @DomName('SVGForeignObjectElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGForeignObjectElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGForeignObjectElement.instance.height_Getter_(this);
   
   @DomName('SVGForeignObjectElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGForeignObjectElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGForeignObjectElement.instance.width_Getter_(this);
   
   @DomName('SVGForeignObjectElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGForeignObjectElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGForeignObjectElement.instance.x_Getter_(this);
   
   @DomName('SVGForeignObjectElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGForeignObjectElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGForeignObjectElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3383,11 +3003,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static GElement internalCreateGElement() {
-    return new GElement._internalWrap();
-  }
-
-  external factory GElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   GElement.internal_() : super.internal_();
@@ -3416,11 +3032,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static GeometryElement internalCreateGeometryElement() {
-    return new GeometryElement._internalWrap();
-  }
-
-  external factory GeometryElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   GeometryElement.internal_() : super.internal_();
@@ -3435,12 +3047,12 @@
   @DomName('SVGGeometryElement.isPointInFill')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isPointInFill(Point point) => _blink.BlinkSVGGeometryElement.instance.isPointInFill_Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.isPointInStroke_Callback_1_(unwrap_jso(this), unwrap_jso(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
@@ -3459,11 +3071,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static GraphicsElement internalCreateGraphicsElement() {
-    return new GraphicsElement._internalWrap();
-  }
-
-  external factory GraphicsElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   GraphicsElement.internal_() : super.internal_();
@@ -3478,57 +3086,57 @@
   @DomName('SVGGraphicsElement.farthestViewportElement')
   @DocsEditable()
   @Experimental() // untriaged
-  SvgElement get farthestViewportElement => wrap_jso(_blink.BlinkSVGGraphicsElement.instance.farthestViewportElement_Getter_(unwrap_jso(this)));
+  SvgElement get farthestViewportElement => _blink.BlinkSVGGraphicsElement.instance.farthestViewportElement_Getter_(this);
   
   @DomName('SVGGraphicsElement.nearestViewportElement')
   @DocsEditable()
   @Experimental() // untriaged
-  SvgElement get nearestViewportElement => wrap_jso(_blink.BlinkSVGGraphicsElement.instance.nearestViewportElement_Getter_(unwrap_jso(this)));
+  SvgElement get nearestViewportElement => _blink.BlinkSVGGraphicsElement.instance.nearestViewportElement_Getter_(this);
   
   @DomName('SVGGraphicsElement.transform')
   @DocsEditable()
   @Experimental() // untriaged
-  AnimatedTransformList get transform => wrap_jso(_blink.BlinkSVGGraphicsElement.instance.transform_Getter_(unwrap_jso(this)));
+  AnimatedTransformList get transform => _blink.BlinkSVGGraphicsElement.instance.transform_Getter_(this);
   
   @DomName('SVGGraphicsElement.getBBox')
   @DocsEditable()
   @Experimental() // untriaged
-  Rect getBBox() => wrap_jso(_blink.BlinkSVGGraphicsElement.instance.getBBox_Callback_0_(unwrap_jso(this)));
+  Rect getBBox() => _blink.BlinkSVGGraphicsElement.instance.getBBox_Callback_0_(this);
   
   @DomName('SVGGraphicsElement.getCTM')
   @DocsEditable()
   @Experimental() // untriaged
-  Matrix getCtm() => wrap_jso(_blink.BlinkSVGGraphicsElement.instance.getCTM_Callback_0_(unwrap_jso(this)));
+  Matrix getCtm() => _blink.BlinkSVGGraphicsElement.instance.getCTM_Callback_0_(this);
   
   @DomName('SVGGraphicsElement.getScreenCTM')
   @DocsEditable()
   @Experimental() // untriaged
-  Matrix getScreenCtm() => wrap_jso(_blink.BlinkSVGGraphicsElement.instance.getScreenCTM_Callback_0_(unwrap_jso(this)));
+  Matrix getScreenCtm() => _blink.BlinkSVGGraphicsElement.instance.getScreenCTM_Callback_0_(this);
   
   @DomName('SVGGraphicsElement.getTransformToElement')
   @DocsEditable()
   @Experimental() // untriaged
-  Matrix getTransformToElement(SvgElement element) => wrap_jso(_blink.BlinkSVGGraphicsElement.instance.getTransformToElement_Callback_1_(unwrap_jso(this), unwrap_jso(element)));
+  Matrix getTransformToElement(SvgElement element) => _blink.BlinkSVGGraphicsElement.instance.getTransformToElement_Callback_1_(this, element);
   
   @DomName('SVGGraphicsElement.requiredExtensions')
   @DocsEditable()
   @Experimental() // untriaged
-  StringList get requiredExtensions => wrap_jso(_blink.BlinkSVGGraphicsElement.instance.requiredExtensions_Getter_(unwrap_jso(this)));
+  StringList get requiredExtensions => _blink.BlinkSVGGraphicsElement.instance.requiredExtensions_Getter_(this);
   
   @DomName('SVGGraphicsElement.requiredFeatures')
   @DocsEditable()
   @Experimental() // untriaged
-  StringList get requiredFeatures => wrap_jso(_blink.BlinkSVGGraphicsElement.instance.requiredFeatures_Getter_(unwrap_jso(this)));
+  StringList get requiredFeatures => _blink.BlinkSVGGraphicsElement.instance.requiredFeatures_Getter_(this);
   
   @DomName('SVGGraphicsElement.systemLanguage')
   @DocsEditable()
   @Experimental() // untriaged
-  StringList get systemLanguage => wrap_jso(_blink.BlinkSVGGraphicsElement.instance.systemLanguage_Getter_(unwrap_jso(this)));
+  StringList get systemLanguage => _blink.BlinkSVGGraphicsElement.instance.systemLanguage_Getter_(this);
   
   @DomName('SVGGraphicsElement.hasExtension')
   @DocsEditable()
   @Experimental() // untriaged
-  bool hasExtension(String extension) => _blink.BlinkSVGGraphicsElement.instance.hasExtension_Callback_1_(unwrap_jso(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
@@ -3551,11 +3159,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ImageElement internalCreateImageElement() {
-    return new ImageElement._internalWrap();
-  }
-
-  external factory ImageElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ImageElement.internal_() : super.internal_();
@@ -3569,27 +3173,27 @@
 
   @DomName('SVGImageElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGImageElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGImageElement.instance.height_Getter_(this);
   
   @DomName('SVGImageElement.preserveAspectRatio')
   @DocsEditable()
-  AnimatedPreserveAspectRatio get preserveAspectRatio => wrap_jso(_blink.BlinkSVGImageElement.instance.preserveAspectRatio_Getter_(unwrap_jso(this)));
+  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGImageElement.instance.preserveAspectRatio_Getter_(this);
   
   @DomName('SVGImageElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGImageElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGImageElement.instance.width_Getter_(this);
   
   @DomName('SVGImageElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGImageElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGImageElement.instance.x_Getter_(this);
   
   @DomName('SVGImageElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGImageElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGImageElement.instance.y_Getter_(this);
   
   @DomName('SVGImageElement.href')
   @DocsEditable()
-  AnimatedString get href => wrap_jso(_blink.BlinkSVGImageElement.instance.href_Getter_(unwrap_jso(this)));
+  AnimatedString get href => _blink.BlinkSVGImageElement.instance.href_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3606,21 +3210,13 @@
   // To suppress missing implicit constructor warnings.
   factory Length._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Length internalCreateLength() {
-    return new Length._internalWrap();
-  }
 
-  factory Length._internalWrap() {
-    return new Length.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Length.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGLength.SVG_LENGTHTYPE_CM')
   @DocsEditable()
   static const int SVG_LENGTHTYPE_CM = 6;
@@ -3667,39 +3263,39 @@
 
   @DomName('SVGLength.unitType')
   @DocsEditable()
-  int get unitType => _blink.BlinkSVGLength.instance.unitType_Getter_(unwrap_jso(this));
+  int get unitType => _blink.BlinkSVGLength.instance.unitType_Getter_(this);
   
   @DomName('SVGLength.value')
   @DocsEditable()
-  num get value => _blink.BlinkSVGLength.instance.value_Getter_(unwrap_jso(this));
+  num get value => _blink.BlinkSVGLength.instance.value_Getter_(this);
   
   @DomName('SVGLength.value')
   @DocsEditable()
-  set value(num value) => _blink.BlinkSVGLength.instance.value_Setter_(unwrap_jso(this), value);
+  set value(num value) => _blink.BlinkSVGLength.instance.value_Setter_(this, value);
   
   @DomName('SVGLength.valueAsString')
   @DocsEditable()
-  String get valueAsString => _blink.BlinkSVGLength.instance.valueAsString_Getter_(unwrap_jso(this));
+  String get valueAsString => _blink.BlinkSVGLength.instance.valueAsString_Getter_(this);
   
   @DomName('SVGLength.valueAsString')
   @DocsEditable()
-  set valueAsString(String value) => _blink.BlinkSVGLength.instance.valueAsString_Setter_(unwrap_jso(this), value);
+  set valueAsString(String value) => _blink.BlinkSVGLength.instance.valueAsString_Setter_(this, value);
   
   @DomName('SVGLength.valueInSpecifiedUnits')
   @DocsEditable()
-  num get valueInSpecifiedUnits => _blink.BlinkSVGLength.instance.valueInSpecifiedUnits_Getter_(unwrap_jso(this));
+  num get valueInSpecifiedUnits => _blink.BlinkSVGLength.instance.valueInSpecifiedUnits_Getter_(this);
   
   @DomName('SVGLength.valueInSpecifiedUnits')
   @DocsEditable()
-  set valueInSpecifiedUnits(num value) => _blink.BlinkSVGLength.instance.valueInSpecifiedUnits_Setter_(unwrap_jso(this), value);
+  set valueInSpecifiedUnits(num value) => _blink.BlinkSVGLength.instance.valueInSpecifiedUnits_Setter_(this, value);
   
   @DomName('SVGLength.convertToSpecifiedUnits')
   @DocsEditable()
-  void convertToSpecifiedUnits(int unitType) => _blink.BlinkSVGLength.instance.convertToSpecifiedUnits_Callback_1_(unwrap_jso(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.instance.newValueSpecifiedUnits_Callback_2_(unwrap_jso(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
@@ -3716,29 +3312,21 @@
   // To suppress missing implicit constructor warnings.
   factory LengthList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static LengthList internalCreateLengthList() {
-    return new LengthList._internalWrap();
-  }
 
-  factory LengthList._internalWrap() {
-    return new LengthList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   LengthList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGLengthList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkSVGLengthList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkSVGLengthList.instance.length_Getter_(this);
   
   @DomName('SVGLengthList.numberOfItems')
   @DocsEditable()
-  int get numberOfItems => _blink.BlinkSVGLengthList.instance.numberOfItems_Getter_(unwrap_jso(this));
+  int get numberOfItems => _blink.BlinkSVGLengthList.instance.numberOfItems_Getter_(this);
   
   Length operator[](int index) {
     if (index < 0 || index >= length)
@@ -3787,35 +3375,35 @@
   @DomName('SVGLengthList.__setter__')
   @DocsEditable()
   @Experimental() // untriaged
-  void __setter__(int index, Length newItem) => _blink.BlinkSVGLengthList.instance.$__setter___Callback_2_(unwrap_jso(this), index, unwrap_jso(newItem));
+  void __setter__(int index, Length newItem) => _blink.BlinkSVGLengthList.instance.$__setter___Callback_2_(this, index, newItem);
   
   @DomName('SVGLengthList.appendItem')
   @DocsEditable()
-  Length appendItem(Length newItem) => wrap_jso(_blink.BlinkSVGLengthList.instance.appendItem_Callback_1_(unwrap_jso(this), unwrap_jso(newItem)));
+  Length appendItem(Length newItem) => _blink.BlinkSVGLengthList.instance.appendItem_Callback_1_(this, newItem);
   
   @DomName('SVGLengthList.clear')
   @DocsEditable()
-  void clear() => _blink.BlinkSVGLengthList.instance.clear_Callback_0_(unwrap_jso(this));
+  void clear() => _blink.BlinkSVGLengthList.instance.clear_Callback_0_(this);
   
   @DomName('SVGLengthList.getItem')
   @DocsEditable()
-  Length getItem(int index) => wrap_jso(_blink.BlinkSVGLengthList.instance.getItem_Callback_1_(unwrap_jso(this), index));
+  Length getItem(int index) => _blink.BlinkSVGLengthList.instance.getItem_Callback_1_(this, index);
   
   @DomName('SVGLengthList.initialize')
   @DocsEditable()
-  Length initialize(Length newItem) => wrap_jso(_blink.BlinkSVGLengthList.instance.initialize_Callback_1_(unwrap_jso(this), unwrap_jso(newItem)));
+  Length initialize(Length newItem) => _blink.BlinkSVGLengthList.instance.initialize_Callback_1_(this, newItem);
   
   @DomName('SVGLengthList.insertItemBefore')
   @DocsEditable()
-  Length insertItemBefore(Length newItem, int index) => wrap_jso(_blink.BlinkSVGLengthList.instance.insertItemBefore_Callback_2_(unwrap_jso(this), unwrap_jso(newItem), index));
+  Length insertItemBefore(Length newItem, int index) => _blink.BlinkSVGLengthList.instance.insertItemBefore_Callback_2_(this, newItem, index);
   
   @DomName('SVGLengthList.removeItem')
   @DocsEditable()
-  Length removeItem(int index) => wrap_jso(_blink.BlinkSVGLengthList.instance.removeItem_Callback_1_(unwrap_jso(this), index));
+  Length removeItem(int index) => _blink.BlinkSVGLengthList.instance.removeItem_Callback_1_(this, index);
   
   @DomName('SVGLengthList.replaceItem')
   @DocsEditable()
-  Length replaceItem(Length newItem, int index) => wrap_jso(_blink.BlinkSVGLengthList.instance.replaceItem_Callback_2_(unwrap_jso(this), unwrap_jso(newItem), index));
+  Length replaceItem(Length newItem, int index) => _blink.BlinkSVGLengthList.instance.replaceItem_Callback_2_(this, newItem, index);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3838,11 +3426,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static LineElement internalCreateLineElement() {
-    return new LineElement._internalWrap();
-  }
-
-  external factory LineElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   LineElement.internal_() : super.internal_();
@@ -3856,19 +3440,19 @@
 
   @DomName('SVGLineElement.x1')
   @DocsEditable()
-  AnimatedLength get x1 => wrap_jso(_blink.BlinkSVGLineElement.instance.x1_Getter_(unwrap_jso(this)));
+  AnimatedLength get x1 => _blink.BlinkSVGLineElement.instance.x1_Getter_(this);
   
   @DomName('SVGLineElement.x2')
   @DocsEditable()
-  AnimatedLength get x2 => wrap_jso(_blink.BlinkSVGLineElement.instance.x2_Getter_(unwrap_jso(this)));
+  AnimatedLength get x2 => _blink.BlinkSVGLineElement.instance.x2_Getter_(this);
   
   @DomName('SVGLineElement.y1')
   @DocsEditable()
-  AnimatedLength get y1 => wrap_jso(_blink.BlinkSVGLineElement.instance.y1_Getter_(unwrap_jso(this)));
+  AnimatedLength get y1 => _blink.BlinkSVGLineElement.instance.y1_Getter_(this);
   
   @DomName('SVGLineElement.y2')
   @DocsEditable()
-  AnimatedLength get y2 => wrap_jso(_blink.BlinkSVGLineElement.instance.y2_Getter_(unwrap_jso(this)));
+  AnimatedLength get y2 => _blink.BlinkSVGLineElement.instance.y2_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3891,11 +3475,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static LinearGradientElement internalCreateLinearGradientElement() {
-    return new LinearGradientElement._internalWrap();
-  }
-
-  external factory LinearGradientElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   LinearGradientElement.internal_() : super.internal_();
@@ -3909,19 +3489,19 @@
 
   @DomName('SVGLinearGradientElement.x1')
   @DocsEditable()
-  AnimatedLength get x1 => wrap_jso(_blink.BlinkSVGLinearGradientElement.instance.x1_Getter_(unwrap_jso(this)));
+  AnimatedLength get x1 => _blink.BlinkSVGLinearGradientElement.instance.x1_Getter_(this);
   
   @DomName('SVGLinearGradientElement.x2')
   @DocsEditable()
-  AnimatedLength get x2 => wrap_jso(_blink.BlinkSVGLinearGradientElement.instance.x2_Getter_(unwrap_jso(this)));
+  AnimatedLength get x2 => _blink.BlinkSVGLinearGradientElement.instance.x2_Getter_(this);
   
   @DomName('SVGLinearGradientElement.y1')
   @DocsEditable()
-  AnimatedLength get y1 => wrap_jso(_blink.BlinkSVGLinearGradientElement.instance.y1_Getter_(unwrap_jso(this)));
+  AnimatedLength get y1 => _blink.BlinkSVGLinearGradientElement.instance.y1_Getter_(this);
   
   @DomName('SVGLinearGradientElement.y2')
   @DocsEditable()
-  AnimatedLength get y2 => wrap_jso(_blink.BlinkSVGLinearGradientElement.instance.y2_Getter_(unwrap_jso(this)));
+  AnimatedLength get y2 => _blink.BlinkSVGLinearGradientElement.instance.y2_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3944,11 +3524,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MarkerElement internalCreateMarkerElement() {
-    return new MarkerElement._internalWrap();
-  }
-
-  external factory MarkerElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MarkerElement.internal_() : super.internal_();
@@ -3986,47 +3562,47 @@
 
   @DomName('SVGMarkerElement.markerHeight')
   @DocsEditable()
-  AnimatedLength get markerHeight => wrap_jso(_blink.BlinkSVGMarkerElement.instance.markerHeight_Getter_(unwrap_jso(this)));
+  AnimatedLength get markerHeight => _blink.BlinkSVGMarkerElement.instance.markerHeight_Getter_(this);
   
   @DomName('SVGMarkerElement.markerUnits')
   @DocsEditable()
-  AnimatedEnumeration get markerUnits => wrap_jso(_blink.BlinkSVGMarkerElement.instance.markerUnits_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get markerUnits => _blink.BlinkSVGMarkerElement.instance.markerUnits_Getter_(this);
   
   @DomName('SVGMarkerElement.markerWidth')
   @DocsEditable()
-  AnimatedLength get markerWidth => wrap_jso(_blink.BlinkSVGMarkerElement.instance.markerWidth_Getter_(unwrap_jso(this)));
+  AnimatedLength get markerWidth => _blink.BlinkSVGMarkerElement.instance.markerWidth_Getter_(this);
   
   @DomName('SVGMarkerElement.orientAngle')
   @DocsEditable()
-  AnimatedAngle get orientAngle => wrap_jso(_blink.BlinkSVGMarkerElement.instance.orientAngle_Getter_(unwrap_jso(this)));
+  AnimatedAngle get orientAngle => _blink.BlinkSVGMarkerElement.instance.orientAngle_Getter_(this);
   
   @DomName('SVGMarkerElement.orientType')
   @DocsEditable()
-  AnimatedEnumeration get orientType => wrap_jso(_blink.BlinkSVGMarkerElement.instance.orientType_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get orientType => _blink.BlinkSVGMarkerElement.instance.orientType_Getter_(this);
   
   @DomName('SVGMarkerElement.refX')
   @DocsEditable()
-  AnimatedLength get refX => wrap_jso(_blink.BlinkSVGMarkerElement.instance.refX_Getter_(unwrap_jso(this)));
+  AnimatedLength get refX => _blink.BlinkSVGMarkerElement.instance.refX_Getter_(this);
   
   @DomName('SVGMarkerElement.refY')
   @DocsEditable()
-  AnimatedLength get refY => wrap_jso(_blink.BlinkSVGMarkerElement.instance.refY_Getter_(unwrap_jso(this)));
+  AnimatedLength get refY => _blink.BlinkSVGMarkerElement.instance.refY_Getter_(this);
   
   @DomName('SVGMarkerElement.setOrientToAngle')
   @DocsEditable()
-  void setOrientToAngle(Angle angle) => _blink.BlinkSVGMarkerElement.instance.setOrientToAngle_Callback_1_(unwrap_jso(this), unwrap_jso(angle));
+  void setOrientToAngle(Angle angle) => _blink.BlinkSVGMarkerElement.instance.setOrientToAngle_Callback_1_(this, angle);
   
   @DomName('SVGMarkerElement.setOrientToAuto')
   @DocsEditable()
-  void setOrientToAuto() => _blink.BlinkSVGMarkerElement.instance.setOrientToAuto_Callback_0_(unwrap_jso(this));
+  void setOrientToAuto() => _blink.BlinkSVGMarkerElement.instance.setOrientToAuto_Callback_0_(this);
   
   @DomName('SVGMarkerElement.preserveAspectRatio')
   @DocsEditable()
-  AnimatedPreserveAspectRatio get preserveAspectRatio => wrap_jso(_blink.BlinkSVGMarkerElement.instance.preserveAspectRatio_Getter_(unwrap_jso(this)));
+  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGMarkerElement.instance.preserveAspectRatio_Getter_(this);
   
   @DomName('SVGMarkerElement.viewBox')
   @DocsEditable()
-  AnimatedRect get viewBox => wrap_jso(_blink.BlinkSVGMarkerElement.instance.viewBox_Getter_(unwrap_jso(this)));
+  AnimatedRect get viewBox => _blink.BlinkSVGMarkerElement.instance.viewBox_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4049,11 +3625,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MaskElement internalCreateMaskElement() {
-    return new MaskElement._internalWrap();
-  }
-
-  external factory MaskElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MaskElement.internal_() : super.internal_();
@@ -4067,43 +3639,43 @@
 
   @DomName('SVGMaskElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGMaskElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGMaskElement.instance.height_Getter_(this);
   
   @DomName('SVGMaskElement.maskContentUnits')
   @DocsEditable()
-  AnimatedEnumeration get maskContentUnits => wrap_jso(_blink.BlinkSVGMaskElement.instance.maskContentUnits_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get maskContentUnits => _blink.BlinkSVGMaskElement.instance.maskContentUnits_Getter_(this);
   
   @DomName('SVGMaskElement.maskUnits')
   @DocsEditable()
-  AnimatedEnumeration get maskUnits => wrap_jso(_blink.BlinkSVGMaskElement.instance.maskUnits_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get maskUnits => _blink.BlinkSVGMaskElement.instance.maskUnits_Getter_(this);
   
   @DomName('SVGMaskElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGMaskElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGMaskElement.instance.width_Getter_(this);
   
   @DomName('SVGMaskElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGMaskElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGMaskElement.instance.x_Getter_(this);
   
   @DomName('SVGMaskElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGMaskElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGMaskElement.instance.y_Getter_(this);
   
   @DomName('SVGMaskElement.requiredExtensions')
   @DocsEditable()
-  StringList get requiredExtensions => wrap_jso(_blink.BlinkSVGMaskElement.instance.requiredExtensions_Getter_(unwrap_jso(this)));
+  StringList get requiredExtensions => _blink.BlinkSVGMaskElement.instance.requiredExtensions_Getter_(this);
   
   @DomName('SVGMaskElement.requiredFeatures')
   @DocsEditable()
-  StringList get requiredFeatures => wrap_jso(_blink.BlinkSVGMaskElement.instance.requiredFeatures_Getter_(unwrap_jso(this)));
+  StringList get requiredFeatures => _blink.BlinkSVGMaskElement.instance.requiredFeatures_Getter_(this);
   
   @DomName('SVGMaskElement.systemLanguage')
   @DocsEditable()
-  StringList get systemLanguage => wrap_jso(_blink.BlinkSVGMaskElement.instance.systemLanguage_Getter_(unwrap_jso(this)));
+  StringList get systemLanguage => _blink.BlinkSVGMaskElement.instance.systemLanguage_Getter_(this);
   
   @DomName('SVGMaskElement.hasExtension')
   @DocsEditable()
-  bool hasExtension(String extension) => _blink.BlinkSVGMaskElement.instance.hasExtension_Callback_1_(unwrap_jso(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
@@ -4120,112 +3692,104 @@
   // To suppress missing implicit constructor warnings.
   factory Matrix._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Matrix internalCreateMatrix() {
-    return new Matrix._internalWrap();
-  }
 
-  factory Matrix._internalWrap() {
-    return new Matrix.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Matrix.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGMatrix.a')
   @DocsEditable()
-  num get a => _blink.BlinkSVGMatrix.instance.a_Getter_(unwrap_jso(this));
+  num get a => _blink.BlinkSVGMatrix.instance.a_Getter_(this);
   
   @DomName('SVGMatrix.a')
   @DocsEditable()
-  set a(num value) => _blink.BlinkSVGMatrix.instance.a_Setter_(unwrap_jso(this), value);
+  set a(num value) => _blink.BlinkSVGMatrix.instance.a_Setter_(this, value);
   
   @DomName('SVGMatrix.b')
   @DocsEditable()
-  num get b => _blink.BlinkSVGMatrix.instance.b_Getter_(unwrap_jso(this));
+  num get b => _blink.BlinkSVGMatrix.instance.b_Getter_(this);
   
   @DomName('SVGMatrix.b')
   @DocsEditable()
-  set b(num value) => _blink.BlinkSVGMatrix.instance.b_Setter_(unwrap_jso(this), value);
+  set b(num value) => _blink.BlinkSVGMatrix.instance.b_Setter_(this, value);
   
   @DomName('SVGMatrix.c')
   @DocsEditable()
-  num get c => _blink.BlinkSVGMatrix.instance.c_Getter_(unwrap_jso(this));
+  num get c => _blink.BlinkSVGMatrix.instance.c_Getter_(this);
   
   @DomName('SVGMatrix.c')
   @DocsEditable()
-  set c(num value) => _blink.BlinkSVGMatrix.instance.c_Setter_(unwrap_jso(this), value);
+  set c(num value) => _blink.BlinkSVGMatrix.instance.c_Setter_(this, value);
   
   @DomName('SVGMatrix.d')
   @DocsEditable()
-  num get d => _blink.BlinkSVGMatrix.instance.d_Getter_(unwrap_jso(this));
+  num get d => _blink.BlinkSVGMatrix.instance.d_Getter_(this);
   
   @DomName('SVGMatrix.d')
   @DocsEditable()
-  set d(num value) => _blink.BlinkSVGMatrix.instance.d_Setter_(unwrap_jso(this), value);
+  set d(num value) => _blink.BlinkSVGMatrix.instance.d_Setter_(this, value);
   
   @DomName('SVGMatrix.e')
   @DocsEditable()
-  num get e => _blink.BlinkSVGMatrix.instance.e_Getter_(unwrap_jso(this));
+  num get e => _blink.BlinkSVGMatrix.instance.e_Getter_(this);
   
   @DomName('SVGMatrix.e')
   @DocsEditable()
-  set e(num value) => _blink.BlinkSVGMatrix.instance.e_Setter_(unwrap_jso(this), value);
+  set e(num value) => _blink.BlinkSVGMatrix.instance.e_Setter_(this, value);
   
   @DomName('SVGMatrix.f')
   @DocsEditable()
-  num get f => _blink.BlinkSVGMatrix.instance.f_Getter_(unwrap_jso(this));
+  num get f => _blink.BlinkSVGMatrix.instance.f_Getter_(this);
   
   @DomName('SVGMatrix.f')
   @DocsEditable()
-  set f(num value) => _blink.BlinkSVGMatrix.instance.f_Setter_(unwrap_jso(this), value);
+  set f(num value) => _blink.BlinkSVGMatrix.instance.f_Setter_(this, value);
   
   @DomName('SVGMatrix.flipX')
   @DocsEditable()
-  Matrix flipX() => wrap_jso(_blink.BlinkSVGMatrix.instance.flipX_Callback_0_(unwrap_jso(this)));
+  Matrix flipX() => _blink.BlinkSVGMatrix.instance.flipX_Callback_0_(this);
   
   @DomName('SVGMatrix.flipY')
   @DocsEditable()
-  Matrix flipY() => wrap_jso(_blink.BlinkSVGMatrix.instance.flipY_Callback_0_(unwrap_jso(this)));
+  Matrix flipY() => _blink.BlinkSVGMatrix.instance.flipY_Callback_0_(this);
   
   @DomName('SVGMatrix.inverse')
   @DocsEditable()
-  Matrix inverse() => wrap_jso(_blink.BlinkSVGMatrix.instance.inverse_Callback_0_(unwrap_jso(this)));
+  Matrix inverse() => _blink.BlinkSVGMatrix.instance.inverse_Callback_0_(this);
   
   @DomName('SVGMatrix.multiply')
   @DocsEditable()
-  Matrix multiply(Matrix secondMatrix) => wrap_jso(_blink.BlinkSVGMatrix.instance.multiply_Callback_1_(unwrap_jso(this), unwrap_jso(secondMatrix)));
+  Matrix multiply(Matrix secondMatrix) => _blink.BlinkSVGMatrix.instance.multiply_Callback_1_(this, secondMatrix);
   
   @DomName('SVGMatrix.rotate')
   @DocsEditable()
-  Matrix rotate(num angle) => wrap_jso(_blink.BlinkSVGMatrix.instance.rotate_Callback_1_(unwrap_jso(this), angle));
+  Matrix rotate(num angle) => _blink.BlinkSVGMatrix.instance.rotate_Callback_1_(this, angle);
   
   @DomName('SVGMatrix.rotateFromVector')
   @DocsEditable()
-  Matrix rotateFromVector(num x, num y) => wrap_jso(_blink.BlinkSVGMatrix.instance.rotateFromVector_Callback_2_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGMatrix.instance.scale_Callback_1_(unwrap_jso(this), scaleFactor));
+  Matrix scale(num scaleFactor) => _blink.BlinkSVGMatrix.instance.scale_Callback_1_(this, scaleFactor);
   
   @DomName('SVGMatrix.scaleNonUniform')
   @DocsEditable()
-  Matrix scaleNonUniform(num scaleFactorX, num scaleFactorY) => wrap_jso(_blink.BlinkSVGMatrix.instance.scaleNonUniform_Callback_2_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGMatrix.instance.skewX_Callback_1_(unwrap_jso(this), angle));
+  Matrix skewX(num angle) => _blink.BlinkSVGMatrix.instance.skewX_Callback_1_(this, angle);
   
   @DomName('SVGMatrix.skewY')
   @DocsEditable()
-  Matrix skewY(num angle) => wrap_jso(_blink.BlinkSVGMatrix.instance.skewY_Callback_1_(unwrap_jso(this), angle));
+  Matrix skewY(num angle) => _blink.BlinkSVGMatrix.instance.skewY_Callback_1_(this, angle);
   
   @DomName('SVGMatrix.translate')
   @DocsEditable()
-  Matrix translate(num x, num y) => wrap_jso(_blink.BlinkSVGMatrix.instance.translate_Callback_2_(unwrap_jso(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
@@ -4244,11 +3808,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MetadataElement internalCreateMetadataElement() {
-    return new MetadataElement._internalWrap();
-  }
-
-  external factory MetadataElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MetadataElement.internal_() : super.internal_();
@@ -4275,28 +3835,20 @@
   // To suppress missing implicit constructor warnings.
   factory Number._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Number internalCreateNumber() {
-    return new Number._internalWrap();
-  }
 
-  factory Number._internalWrap() {
-    return new Number.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Number.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGNumber.value')
   @DocsEditable()
-  num get value => _blink.BlinkSVGNumber.instance.value_Getter_(unwrap_jso(this));
+  num get value => _blink.BlinkSVGNumber.instance.value_Getter_(this);
   
   @DomName('SVGNumber.value')
   @DocsEditable()
-  set value(num value) => _blink.BlinkSVGNumber.instance.value_Setter_(unwrap_jso(this), value);
+  set value(num value) => _blink.BlinkSVGNumber.instance.value_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4313,29 +3865,21 @@
   // To suppress missing implicit constructor warnings.
   factory NumberList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static NumberList internalCreateNumberList() {
-    return new NumberList._internalWrap();
-  }
 
-  factory NumberList._internalWrap() {
-    return new NumberList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   NumberList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGNumberList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkSVGNumberList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkSVGNumberList.instance.length_Getter_(this);
   
   @DomName('SVGNumberList.numberOfItems')
   @DocsEditable()
-  int get numberOfItems => _blink.BlinkSVGNumberList.instance.numberOfItems_Getter_(unwrap_jso(this));
+  int get numberOfItems => _blink.BlinkSVGNumberList.instance.numberOfItems_Getter_(this);
   
   Number operator[](int index) {
     if (index < 0 || index >= length)
@@ -4384,35 +3928,35 @@
   @DomName('SVGNumberList.__setter__')
   @DocsEditable()
   @Experimental() // untriaged
-  void __setter__(int index, Number newItem) => _blink.BlinkSVGNumberList.instance.$__setter___Callback_2_(unwrap_jso(this), index, unwrap_jso(newItem));
+  void __setter__(int index, Number newItem) => _blink.BlinkSVGNumberList.instance.$__setter___Callback_2_(this, index, newItem);
   
   @DomName('SVGNumberList.appendItem')
   @DocsEditable()
-  Number appendItem(Number newItem) => wrap_jso(_blink.BlinkSVGNumberList.instance.appendItem_Callback_1_(unwrap_jso(this), unwrap_jso(newItem)));
+  Number appendItem(Number newItem) => _blink.BlinkSVGNumberList.instance.appendItem_Callback_1_(this, newItem);
   
   @DomName('SVGNumberList.clear')
   @DocsEditable()
-  void clear() => _blink.BlinkSVGNumberList.instance.clear_Callback_0_(unwrap_jso(this));
+  void clear() => _blink.BlinkSVGNumberList.instance.clear_Callback_0_(this);
   
   @DomName('SVGNumberList.getItem')
   @DocsEditable()
-  Number getItem(int index) => wrap_jso(_blink.BlinkSVGNumberList.instance.getItem_Callback_1_(unwrap_jso(this), index));
+  Number getItem(int index) => _blink.BlinkSVGNumberList.instance.getItem_Callback_1_(this, index);
   
   @DomName('SVGNumberList.initialize')
   @DocsEditable()
-  Number initialize(Number newItem) => wrap_jso(_blink.BlinkSVGNumberList.instance.initialize_Callback_1_(unwrap_jso(this), unwrap_jso(newItem)));
+  Number initialize(Number newItem) => _blink.BlinkSVGNumberList.instance.initialize_Callback_1_(this, newItem);
   
   @DomName('SVGNumberList.insertItemBefore')
   @DocsEditable()
-  Number insertItemBefore(Number newItem, int index) => wrap_jso(_blink.BlinkSVGNumberList.instance.insertItemBefore_Callback_2_(unwrap_jso(this), unwrap_jso(newItem), index));
+  Number insertItemBefore(Number newItem, int index) => _blink.BlinkSVGNumberList.instance.insertItemBefore_Callback_2_(this, newItem, index);
   
   @DomName('SVGNumberList.removeItem')
   @DocsEditable()
-  Number removeItem(int index) => wrap_jso(_blink.BlinkSVGNumberList.instance.removeItem_Callback_1_(unwrap_jso(this), index));
+  Number removeItem(int index) => _blink.BlinkSVGNumberList.instance.removeItem_Callback_1_(this, index);
   
   @DomName('SVGNumberList.replaceItem')
   @DocsEditable()
-  Number replaceItem(Number newItem, int index) => wrap_jso(_blink.BlinkSVGNumberList.instance.replaceItem_Callback_2_(unwrap_jso(this), unwrap_jso(newItem), index));
+  Number replaceItem(Number newItem, int index) => _blink.BlinkSVGNumberList.instance.replaceItem_Callback_2_(this, newItem, index);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4435,11 +3979,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathElement internalCreatePathElement() {
-    return new PathElement._internalWrap();
-  }
-
-  external factory PathElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathElement.internal_() : super.internal_();
@@ -4453,111 +3993,111 @@
 
   @DomName('SVGPathElement.animatedNormalizedPathSegList')
   @DocsEditable()
-  PathSegList get animatedNormalizedPathSegList => wrap_jso(_blink.BlinkSVGPathElement.instance.animatedNormalizedPathSegList_Getter_(unwrap_jso(this)));
+  PathSegList get animatedNormalizedPathSegList => _blink.BlinkSVGPathElement.instance.animatedNormalizedPathSegList_Getter_(this);
   
   @DomName('SVGPathElement.animatedPathSegList')
   @DocsEditable()
-  PathSegList get animatedPathSegList => wrap_jso(_blink.BlinkSVGPathElement.instance.animatedPathSegList_Getter_(unwrap_jso(this)));
+  PathSegList get animatedPathSegList => _blink.BlinkSVGPathElement.instance.animatedPathSegList_Getter_(this);
   
   @DomName('SVGPathElement.normalizedPathSegList')
   @DocsEditable()
-  PathSegList get normalizedPathSegList => wrap_jso(_blink.BlinkSVGPathElement.instance.normalizedPathSegList_Getter_(unwrap_jso(this)));
+  PathSegList get normalizedPathSegList => _blink.BlinkSVGPathElement.instance.normalizedPathSegList_Getter_(this);
   
   @DomName('SVGPathElement.pathLength')
   @DocsEditable()
-  AnimatedNumber get pathLength => wrap_jso(_blink.BlinkSVGPathElement.instance.pathLength_Getter_(unwrap_jso(this)));
+  AnimatedNumber get pathLength => _blink.BlinkSVGPathElement.instance.pathLength_Getter_(this);
   
   @DomName('SVGPathElement.pathSegList')
   @DocsEditable()
-  PathSegList get pathSegList => wrap_jso(_blink.BlinkSVGPathElement.instance.pathSegList_Getter_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegArcAbs_Callback_7_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegArcRel_Callback_7_(unwrap_jso(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() => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegClosePath_Callback_0_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoCubicAbs_Callback_6_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoCubicRel_Callback_6_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoCubicSmoothAbs_Callback_4_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoCubicSmoothRel_Callback_4_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoQuadraticAbs_Callback_4_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoQuadraticRel_Callback_4_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoAbs_Callback_2_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoHorizontalAbs_Callback_1_(unwrap_jso(this), x));
+  PathSegLinetoHorizontalAbs createSvgPathSegLinetoHorizontalAbs(num x) => _blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoHorizontalAbs_Callback_1_(this, x);
   
   @DomName('SVGPathElement.createSVGPathSegLinetoHorizontalRel')
   @DocsEditable()
-  PathSegLinetoHorizontalRel createSvgPathSegLinetoHorizontalRel(num x) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoHorizontalRel_Callback_1_(unwrap_jso(this), x));
+  PathSegLinetoHorizontalRel createSvgPathSegLinetoHorizontalRel(num x) => _blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoHorizontalRel_Callback_1_(this, x);
   
   @DomName('SVGPathElement.createSVGPathSegLinetoRel')
   @DocsEditable()
-  PathSegLinetoRel createSvgPathSegLinetoRel(num x, num y) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoRel_Callback_2_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoVerticalAbs_Callback_1_(unwrap_jso(this), y));
+  PathSegLinetoVerticalAbs createSvgPathSegLinetoVerticalAbs(num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoVerticalAbs_Callback_1_(this, y);
   
   @DomName('SVGPathElement.createSVGPathSegLinetoVerticalRel')
   @DocsEditable()
-  PathSegLinetoVerticalRel createSvgPathSegLinetoVerticalRel(num y) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoVerticalRel_Callback_1_(unwrap_jso(this), y));
+  PathSegLinetoVerticalRel createSvgPathSegLinetoVerticalRel(num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoVerticalRel_Callback_1_(this, y);
   
   @DomName('SVGPathElement.createSVGPathSegMovetoAbs')
   @DocsEditable()
-  PathSegMovetoAbs createSvgPathSegMovetoAbs(num x, num y) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegMovetoAbs_Callback_2_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegMovetoRel_Callback_2_(unwrap_jso(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.instance.getPathSegAtLength_Callback_1_(unwrap_jso(this), distance);
+  int getPathSegAtLength(num distance) => _blink.BlinkSVGPathElement.instance.getPathSegAtLength_Callback_1_(this, distance);
   
   @DomName('SVGPathElement.getPointAtLength')
   @DocsEditable()
-  Point getPointAtLength(num distance) => wrap_jso(_blink.BlinkSVGPathElement.instance.getPointAtLength_Callback_1_(unwrap_jso(this), distance));
+  Point getPointAtLength(num distance) => _blink.BlinkSVGPathElement.instance.getPointAtLength_Callback_1_(this, distance);
   
   @DomName('SVGPathElement.getTotalLength')
   @DocsEditable()
-  num getTotalLength() => _blink.BlinkSVGPathElement.instance.getTotalLength_Callback_0_(unwrap_jso(this));
+  num getTotalLength() => _blink.BlinkSVGPathElement.instance.getTotalLength_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4574,21 +4114,13 @@
   // To suppress missing implicit constructor warnings.
   factory PathSeg._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static PathSeg internalCreatePathSeg() {
-    return new PathSeg._internalWrap();
-  }
 
-  factory PathSeg._internalWrap() {
-    return new PathSeg.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSeg.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGPathSeg.PATHSEG_ARC_ABS')
   @DocsEditable()
   static const int PATHSEG_ARC_ABS = 10;
@@ -4671,11 +4203,11 @@
 
   @DomName('SVGPathSeg.pathSegType')
   @DocsEditable()
-  int get pathSegType => _blink.BlinkSVGPathSeg.instance.pathSegType_Getter_(unwrap_jso(this));
+  int get pathSegType => _blink.BlinkSVGPathSeg.instance.pathSegType_Getter_(this);
   
   @DomName('SVGPathSeg.pathSegTypeAsLetter')
   @DocsEditable()
-  String get pathSegTypeAsLetter => _blink.BlinkSVGPathSeg.instance.pathSegTypeAsLetter_Getter_(unwrap_jso(this));
+  String get pathSegTypeAsLetter => _blink.BlinkSVGPathSeg.instance.pathSegTypeAsLetter_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4694,11 +4226,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegArcAbs internalCreatePathSegArcAbs() {
-    return new PathSegArcAbs._internalWrap();
-  }
-
-  external factory PathSegArcAbs._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegArcAbs.internal_() : super.internal_();
@@ -4706,59 +4234,59 @@
 
   @DomName('SVGPathSegArcAbs.angle')
   @DocsEditable()
-  num get angle => _blink.BlinkSVGPathSegArcAbs.instance.angle_Getter_(unwrap_jso(this));
+  num get angle => _blink.BlinkSVGPathSegArcAbs.instance.angle_Getter_(this);
   
   @DomName('SVGPathSegArcAbs.angle')
   @DocsEditable()
-  set angle(num value) => _blink.BlinkSVGPathSegArcAbs.instance.angle_Setter_(unwrap_jso(this), value);
+  set angle(num value) => _blink.BlinkSVGPathSegArcAbs.instance.angle_Setter_(this, value);
   
   @DomName('SVGPathSegArcAbs.largeArcFlag')
   @DocsEditable()
-  bool get largeArcFlag => _blink.BlinkSVGPathSegArcAbs.instance.largeArcFlag_Getter_(unwrap_jso(this));
+  bool get largeArcFlag => _blink.BlinkSVGPathSegArcAbs.instance.largeArcFlag_Getter_(this);
   
   @DomName('SVGPathSegArcAbs.largeArcFlag')
   @DocsEditable()
-  set largeArcFlag(bool value) => _blink.BlinkSVGPathSegArcAbs.instance.largeArcFlag_Setter_(unwrap_jso(this), value);
+  set largeArcFlag(bool value) => _blink.BlinkSVGPathSegArcAbs.instance.largeArcFlag_Setter_(this, value);
   
   @DomName('SVGPathSegArcAbs.r1')
   @DocsEditable()
-  num get r1 => _blink.BlinkSVGPathSegArcAbs.instance.r1_Getter_(unwrap_jso(this));
+  num get r1 => _blink.BlinkSVGPathSegArcAbs.instance.r1_Getter_(this);
   
   @DomName('SVGPathSegArcAbs.r1')
   @DocsEditable()
-  set r1(num value) => _blink.BlinkSVGPathSegArcAbs.instance.r1_Setter_(unwrap_jso(this), value);
+  set r1(num value) => _blink.BlinkSVGPathSegArcAbs.instance.r1_Setter_(this, value);
   
   @DomName('SVGPathSegArcAbs.r2')
   @DocsEditable()
-  num get r2 => _blink.BlinkSVGPathSegArcAbs.instance.r2_Getter_(unwrap_jso(this));
+  num get r2 => _blink.BlinkSVGPathSegArcAbs.instance.r2_Getter_(this);
   
   @DomName('SVGPathSegArcAbs.r2')
   @DocsEditable()
-  set r2(num value) => _blink.BlinkSVGPathSegArcAbs.instance.r2_Setter_(unwrap_jso(this), value);
+  set r2(num value) => _blink.BlinkSVGPathSegArcAbs.instance.r2_Setter_(this, value);
   
   @DomName('SVGPathSegArcAbs.sweepFlag')
   @DocsEditable()
-  bool get sweepFlag => _blink.BlinkSVGPathSegArcAbs.instance.sweepFlag_Getter_(unwrap_jso(this));
+  bool get sweepFlag => _blink.BlinkSVGPathSegArcAbs.instance.sweepFlag_Getter_(this);
   
   @DomName('SVGPathSegArcAbs.sweepFlag')
   @DocsEditable()
-  set sweepFlag(bool value) => _blink.BlinkSVGPathSegArcAbs.instance.sweepFlag_Setter_(unwrap_jso(this), value);
+  set sweepFlag(bool value) => _blink.BlinkSVGPathSegArcAbs.instance.sweepFlag_Setter_(this, value);
   
   @DomName('SVGPathSegArcAbs.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegArcAbs.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPathSegArcAbs.instance.x_Getter_(this);
   
   @DomName('SVGPathSegArcAbs.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPathSegArcAbs.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegArcAbs.instance.x_Setter_(this, value);
   
   @DomName('SVGPathSegArcAbs.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegArcAbs.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPathSegArcAbs.instance.y_Getter_(this);
   
   @DomName('SVGPathSegArcAbs.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPathSegArcAbs.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegArcAbs.instance.y_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4777,11 +4305,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegArcRel internalCreatePathSegArcRel() {
-    return new PathSegArcRel._internalWrap();
-  }
-
-  external factory PathSegArcRel._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegArcRel.internal_() : super.internal_();
@@ -4789,59 +4313,59 @@
 
   @DomName('SVGPathSegArcRel.angle')
   @DocsEditable()
-  num get angle => _blink.BlinkSVGPathSegArcRel.instance.angle_Getter_(unwrap_jso(this));
+  num get angle => _blink.BlinkSVGPathSegArcRel.instance.angle_Getter_(this);
   
   @DomName('SVGPathSegArcRel.angle')
   @DocsEditable()
-  set angle(num value) => _blink.BlinkSVGPathSegArcRel.instance.angle_Setter_(unwrap_jso(this), value);
+  set angle(num value) => _blink.BlinkSVGPathSegArcRel.instance.angle_Setter_(this, value);
   
   @DomName('SVGPathSegArcRel.largeArcFlag')
   @DocsEditable()
-  bool get largeArcFlag => _blink.BlinkSVGPathSegArcRel.instance.largeArcFlag_Getter_(unwrap_jso(this));
+  bool get largeArcFlag => _blink.BlinkSVGPathSegArcRel.instance.largeArcFlag_Getter_(this);
   
   @DomName('SVGPathSegArcRel.largeArcFlag')
   @DocsEditable()
-  set largeArcFlag(bool value) => _blink.BlinkSVGPathSegArcRel.instance.largeArcFlag_Setter_(unwrap_jso(this), value);
+  set largeArcFlag(bool value) => _blink.BlinkSVGPathSegArcRel.instance.largeArcFlag_Setter_(this, value);
   
   @DomName('SVGPathSegArcRel.r1')
   @DocsEditable()
-  num get r1 => _blink.BlinkSVGPathSegArcRel.instance.r1_Getter_(unwrap_jso(this));
+  num get r1 => _blink.BlinkSVGPathSegArcRel.instance.r1_Getter_(this);
   
   @DomName('SVGPathSegArcRel.r1')
   @DocsEditable()
-  set r1(num value) => _blink.BlinkSVGPathSegArcRel.instance.r1_Setter_(unwrap_jso(this), value);
+  set r1(num value) => _blink.BlinkSVGPathSegArcRel.instance.r1_Setter_(this, value);
   
   @DomName('SVGPathSegArcRel.r2')
   @DocsEditable()
-  num get r2 => _blink.BlinkSVGPathSegArcRel.instance.r2_Getter_(unwrap_jso(this));
+  num get r2 => _blink.BlinkSVGPathSegArcRel.instance.r2_Getter_(this);
   
   @DomName('SVGPathSegArcRel.r2')
   @DocsEditable()
-  set r2(num value) => _blink.BlinkSVGPathSegArcRel.instance.r2_Setter_(unwrap_jso(this), value);
+  set r2(num value) => _blink.BlinkSVGPathSegArcRel.instance.r2_Setter_(this, value);
   
   @DomName('SVGPathSegArcRel.sweepFlag')
   @DocsEditable()
-  bool get sweepFlag => _blink.BlinkSVGPathSegArcRel.instance.sweepFlag_Getter_(unwrap_jso(this));
+  bool get sweepFlag => _blink.BlinkSVGPathSegArcRel.instance.sweepFlag_Getter_(this);
   
   @DomName('SVGPathSegArcRel.sweepFlag')
   @DocsEditable()
-  set sweepFlag(bool value) => _blink.BlinkSVGPathSegArcRel.instance.sweepFlag_Setter_(unwrap_jso(this), value);
+  set sweepFlag(bool value) => _blink.BlinkSVGPathSegArcRel.instance.sweepFlag_Setter_(this, value);
   
   @DomName('SVGPathSegArcRel.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegArcRel.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPathSegArcRel.instance.x_Getter_(this);
   
   @DomName('SVGPathSegArcRel.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPathSegArcRel.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegArcRel.instance.x_Setter_(this, value);
   
   @DomName('SVGPathSegArcRel.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegArcRel.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPathSegArcRel.instance.y_Getter_(this);
   
   @DomName('SVGPathSegArcRel.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPathSegArcRel.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegArcRel.instance.y_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4860,11 +4384,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegClosePath internalCreatePathSegClosePath() {
-    return new PathSegClosePath._internalWrap();
-  }
-
-  external factory PathSegClosePath._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegClosePath.internal_() : super.internal_();
@@ -4887,11 +4407,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegCurvetoCubicAbs internalCreatePathSegCurvetoCubicAbs() {
-    return new PathSegCurvetoCubicAbs._internalWrap();
-  }
-
-  external factory PathSegCurvetoCubicAbs._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegCurvetoCubicAbs.internal_() : super.internal_();
@@ -4899,51 +4415,51 @@
 
   @DomName('SVGPathSegCurvetoCubicAbs.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicAbs.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoCubicAbs.x1')
   @DocsEditable()
-  num get x1 => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x1_Getter_(unwrap_jso(this));
+  num get x1 => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x1_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicAbs.x1')
   @DocsEditable()
-  set x1(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x1_Setter_(unwrap_jso(this), value);
+  set x1(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x1_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoCubicAbs.x2')
   @DocsEditable()
-  num get x2 => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x2_Getter_(unwrap_jso(this));
+  num get x2 => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x2_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicAbs.x2')
   @DocsEditable()
-  set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x2_Setter_(unwrap_jso(this), value);
+  set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x2_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoCubicAbs.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicAbs.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoCubicAbs.y1')
   @DocsEditable()
-  num get y1 => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y1_Getter_(unwrap_jso(this));
+  num get y1 => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y1_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicAbs.y1')
   @DocsEditable()
-  set y1(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y1_Setter_(unwrap_jso(this), value);
+  set y1(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y1_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoCubicAbs.y2')
   @DocsEditable()
-  num get y2 => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y2_Getter_(unwrap_jso(this));
+  num get y2 => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y2_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicAbs.y2')
   @DocsEditable()
-  set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y2_Setter_(unwrap_jso(this), value);
+  set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y2_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4962,11 +4478,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegCurvetoCubicRel internalCreatePathSegCurvetoCubicRel() {
-    return new PathSegCurvetoCubicRel._internalWrap();
-  }
-
-  external factory PathSegCurvetoCubicRel._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegCurvetoCubicRel.internal_() : super.internal_();
@@ -4974,51 +4486,51 @@
 
   @DomName('SVGPathSegCurvetoCubicRel.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicRel.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoCubicRel.x1')
   @DocsEditable()
-  num get x1 => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x1_Getter_(unwrap_jso(this));
+  num get x1 => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x1_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicRel.x1')
   @DocsEditable()
-  set x1(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x1_Setter_(unwrap_jso(this), value);
+  set x1(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x1_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoCubicRel.x2')
   @DocsEditable()
-  num get x2 => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x2_Getter_(unwrap_jso(this));
+  num get x2 => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x2_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicRel.x2')
   @DocsEditable()
-  set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x2_Setter_(unwrap_jso(this), value);
+  set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x2_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoCubicRel.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicRel.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoCubicRel.y1')
   @DocsEditable()
-  num get y1 => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y1_Getter_(unwrap_jso(this));
+  num get y1 => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y1_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicRel.y1')
   @DocsEditable()
-  set y1(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y1_Setter_(unwrap_jso(this), value);
+  set y1(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y1_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoCubicRel.y2')
   @DocsEditable()
-  num get y2 => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y2_Getter_(unwrap_jso(this));
+  num get y2 => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y2_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicRel.y2')
   @DocsEditable()
-  set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y2_Setter_(unwrap_jso(this), value);
+  set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y2_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5037,11 +4549,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegCurvetoCubicSmoothAbs internalCreatePathSegCurvetoCubicSmoothAbs() {
-    return new PathSegCurvetoCubicSmoothAbs._internalWrap();
-  }
-
-  external factory PathSegCurvetoCubicSmoothAbs._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegCurvetoCubicSmoothAbs.internal_() : super.internal_();
@@ -5049,35 +4557,35 @@
 
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.x2')
   @DocsEditable()
-  num get x2 => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x2_Getter_(unwrap_jso(this));
+  num get x2 => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x2_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.x2')
   @DocsEditable()
-  set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x2_Setter_(unwrap_jso(this), value);
+  set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x2_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.y_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.y_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.y2')
   @DocsEditable()
-  num get y2 => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.y2_Getter_(unwrap_jso(this));
+  num get y2 => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.y2_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.y2')
   @DocsEditable()
-  set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.y2_Setter_(unwrap_jso(this), value);
+  set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.y2_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5096,11 +4604,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegCurvetoCubicSmoothRel internalCreatePathSegCurvetoCubicSmoothRel() {
-    return new PathSegCurvetoCubicSmoothRel._internalWrap();
-  }
-
-  external factory PathSegCurvetoCubicSmoothRel._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegCurvetoCubicSmoothRel.internal_() : super.internal_();
@@ -5108,35 +4612,35 @@
 
   @DomName('SVGPathSegCurvetoCubicSmoothRel.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicSmoothRel.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoCubicSmoothRel.x2')
   @DocsEditable()
-  num get x2 => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x2_Getter_(unwrap_jso(this));
+  num get x2 => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x2_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicSmoothRel.x2')
   @DocsEditable()
-  set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x2_Setter_(unwrap_jso(this), value);
+  set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x2_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoCubicSmoothRel.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.y_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicSmoothRel.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.y_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoCubicSmoothRel.y2')
   @DocsEditable()
-  num get y2 => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.y2_Getter_(unwrap_jso(this));
+  num get y2 => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.y2_Getter_(this);
   
   @DomName('SVGPathSegCurvetoCubicSmoothRel.y2')
   @DocsEditable()
-  set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.y2_Setter_(unwrap_jso(this), value);
+  set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.y2_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5155,11 +4659,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegCurvetoQuadraticAbs internalCreatePathSegCurvetoQuadraticAbs() {
-    return new PathSegCurvetoQuadraticAbs._internalWrap();
-  }
-
-  external factory PathSegCurvetoQuadraticAbs._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegCurvetoQuadraticAbs.internal_() : super.internal_();
@@ -5167,35 +4667,35 @@
 
   @DomName('SVGPathSegCurvetoQuadraticAbs.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x_Getter_(this);
   
   @DomName('SVGPathSegCurvetoQuadraticAbs.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoQuadraticAbs.x1')
   @DocsEditable()
-  num get x1 => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x1_Getter_(unwrap_jso(this));
+  num get x1 => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x1_Getter_(this);
   
   @DomName('SVGPathSegCurvetoQuadraticAbs.x1')
   @DocsEditable()
-  set x1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x1_Setter_(unwrap_jso(this), value);
+  set x1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x1_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoQuadraticAbs.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.y_Getter_(this);
   
   @DomName('SVGPathSegCurvetoQuadraticAbs.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.y_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoQuadraticAbs.y1')
   @DocsEditable()
-  num get y1 => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.y1_Getter_(unwrap_jso(this));
+  num get y1 => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.y1_Getter_(this);
   
   @DomName('SVGPathSegCurvetoQuadraticAbs.y1')
   @DocsEditable()
-  set y1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.y1_Setter_(unwrap_jso(this), value);
+  set y1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.y1_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5214,11 +4714,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegCurvetoQuadraticRel internalCreatePathSegCurvetoQuadraticRel() {
-    return new PathSegCurvetoQuadraticRel._internalWrap();
-  }
-
-  external factory PathSegCurvetoQuadraticRel._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegCurvetoQuadraticRel.internal_() : super.internal_();
@@ -5226,35 +4722,35 @@
 
   @DomName('SVGPathSegCurvetoQuadraticRel.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x_Getter_(this);
   
   @DomName('SVGPathSegCurvetoQuadraticRel.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoQuadraticRel.x1')
   @DocsEditable()
-  num get x1 => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x1_Getter_(unwrap_jso(this));
+  num get x1 => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x1_Getter_(this);
   
   @DomName('SVGPathSegCurvetoQuadraticRel.x1')
   @DocsEditable()
-  set x1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x1_Setter_(unwrap_jso(this), value);
+  set x1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x1_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoQuadraticRel.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.y_Getter_(this);
   
   @DomName('SVGPathSegCurvetoQuadraticRel.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.y_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoQuadraticRel.y1')
   @DocsEditable()
-  num get y1 => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.y1_Getter_(unwrap_jso(this));
+  num get y1 => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.y1_Getter_(this);
   
   @DomName('SVGPathSegCurvetoQuadraticRel.y1')
   @DocsEditable()
-  set y1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.y1_Setter_(unwrap_jso(this), value);
+  set y1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.y1_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5273,11 +4769,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegCurvetoQuadraticSmoothAbs internalCreatePathSegCurvetoQuadraticSmoothAbs() {
-    return new PathSegCurvetoQuadraticSmoothAbs._internalWrap();
-  }
-
-  external factory PathSegCurvetoQuadraticSmoothAbs._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegCurvetoQuadraticSmoothAbs.internal_() : super.internal_();
@@ -5285,19 +4777,19 @@
 
   @DomName('SVGPathSegCurvetoQuadraticSmoothAbs.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.x_Getter_(this);
   
   @DomName('SVGPathSegCurvetoQuadraticSmoothAbs.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.x_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoQuadraticSmoothAbs.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.y_Getter_(this);
   
   @DomName('SVGPathSegCurvetoQuadraticSmoothAbs.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.y_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5316,11 +4808,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegCurvetoQuadraticSmoothRel internalCreatePathSegCurvetoQuadraticSmoothRel() {
-    return new PathSegCurvetoQuadraticSmoothRel._internalWrap();
-  }
-
-  external factory PathSegCurvetoQuadraticSmoothRel._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegCurvetoQuadraticSmoothRel.internal_() : super.internal_();
@@ -5328,19 +4816,19 @@
 
   @DomName('SVGPathSegCurvetoQuadraticSmoothRel.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.x_Getter_(this);
   
   @DomName('SVGPathSegCurvetoQuadraticSmoothRel.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.x_Setter_(this, value);
   
   @DomName('SVGPathSegCurvetoQuadraticSmoothRel.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.y_Getter_(this);
   
   @DomName('SVGPathSegCurvetoQuadraticSmoothRel.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.y_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5359,11 +4847,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegLinetoAbs internalCreatePathSegLinetoAbs() {
-    return new PathSegLinetoAbs._internalWrap();
-  }
-
-  external factory PathSegLinetoAbs._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegLinetoAbs.internal_() : super.internal_();
@@ -5371,19 +4855,19 @@
 
   @DomName('SVGPathSegLinetoAbs.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegLinetoAbs.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPathSegLinetoAbs.instance.x_Getter_(this);
   
   @DomName('SVGPathSegLinetoAbs.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPathSegLinetoAbs.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegLinetoAbs.instance.x_Setter_(this, value);
   
   @DomName('SVGPathSegLinetoAbs.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegLinetoAbs.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPathSegLinetoAbs.instance.y_Getter_(this);
   
   @DomName('SVGPathSegLinetoAbs.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPathSegLinetoAbs.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegLinetoAbs.instance.y_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5402,11 +4886,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegLinetoHorizontalAbs internalCreatePathSegLinetoHorizontalAbs() {
-    return new PathSegLinetoHorizontalAbs._internalWrap();
-  }
-
-  external factory PathSegLinetoHorizontalAbs._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegLinetoHorizontalAbs.internal_() : super.internal_();
@@ -5414,11 +4894,11 @@
 
   @DomName('SVGPathSegLinetoHorizontalAbs.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegLinetoHorizontalAbs.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPathSegLinetoHorizontalAbs.instance.x_Getter_(this);
   
   @DomName('SVGPathSegLinetoHorizontalAbs.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPathSegLinetoHorizontalAbs.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegLinetoHorizontalAbs.instance.x_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5437,11 +4917,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegLinetoHorizontalRel internalCreatePathSegLinetoHorizontalRel() {
-    return new PathSegLinetoHorizontalRel._internalWrap();
-  }
-
-  external factory PathSegLinetoHorizontalRel._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegLinetoHorizontalRel.internal_() : super.internal_();
@@ -5449,11 +4925,11 @@
 
   @DomName('SVGPathSegLinetoHorizontalRel.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegLinetoHorizontalRel.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPathSegLinetoHorizontalRel.instance.x_Getter_(this);
   
   @DomName('SVGPathSegLinetoHorizontalRel.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPathSegLinetoHorizontalRel.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegLinetoHorizontalRel.instance.x_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5472,11 +4948,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegLinetoRel internalCreatePathSegLinetoRel() {
-    return new PathSegLinetoRel._internalWrap();
-  }
-
-  external factory PathSegLinetoRel._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegLinetoRel.internal_() : super.internal_();
@@ -5484,19 +4956,19 @@
 
   @DomName('SVGPathSegLinetoRel.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegLinetoRel.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPathSegLinetoRel.instance.x_Getter_(this);
   
   @DomName('SVGPathSegLinetoRel.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPathSegLinetoRel.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegLinetoRel.instance.x_Setter_(this, value);
   
   @DomName('SVGPathSegLinetoRel.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegLinetoRel.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPathSegLinetoRel.instance.y_Getter_(this);
   
   @DomName('SVGPathSegLinetoRel.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPathSegLinetoRel.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegLinetoRel.instance.y_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5515,11 +4987,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegLinetoVerticalAbs internalCreatePathSegLinetoVerticalAbs() {
-    return new PathSegLinetoVerticalAbs._internalWrap();
-  }
-
-  external factory PathSegLinetoVerticalAbs._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegLinetoVerticalAbs.internal_() : super.internal_();
@@ -5527,11 +4995,11 @@
 
   @DomName('SVGPathSegLinetoVerticalAbs.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegLinetoVerticalAbs.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPathSegLinetoVerticalAbs.instance.y_Getter_(this);
   
   @DomName('SVGPathSegLinetoVerticalAbs.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPathSegLinetoVerticalAbs.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegLinetoVerticalAbs.instance.y_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5550,11 +5018,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegLinetoVerticalRel internalCreatePathSegLinetoVerticalRel() {
-    return new PathSegLinetoVerticalRel._internalWrap();
-  }
-
-  external factory PathSegLinetoVerticalRel._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegLinetoVerticalRel.internal_() : super.internal_();
@@ -5562,11 +5026,11 @@
 
   @DomName('SVGPathSegLinetoVerticalRel.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegLinetoVerticalRel.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPathSegLinetoVerticalRel.instance.y_Getter_(this);
   
   @DomName('SVGPathSegLinetoVerticalRel.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPathSegLinetoVerticalRel.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegLinetoVerticalRel.instance.y_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5583,29 +5047,21 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static PathSegList internalCreatePathSegList() {
-    return new PathSegList._internalWrap();
-  }
 
-  factory PathSegList._internalWrap() {
-    return new PathSegList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGPathSegList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkSVGPathSegList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkSVGPathSegList.instance.length_Getter_(this);
   
   @DomName('SVGPathSegList.numberOfItems')
   @DocsEditable()
-  int get numberOfItems => _blink.BlinkSVGPathSegList.instance.numberOfItems_Getter_(unwrap_jso(this));
+  int get numberOfItems => _blink.BlinkSVGPathSegList.instance.numberOfItems_Getter_(this);
   
   PathSeg operator[](int index) {
     if (index < 0 || index >= length)
@@ -5654,35 +5110,35 @@
   @DomName('SVGPathSegList.__setter__')
   @DocsEditable()
   @Experimental() // untriaged
-  void __setter__(int index, PathSeg newItem) => _blink.BlinkSVGPathSegList.instance.$__setter___Callback_2_(unwrap_jso(this), index, unwrap_jso(newItem));
+  void __setter__(int index, PathSeg newItem) => _blink.BlinkSVGPathSegList.instance.$__setter___Callback_2_(this, index, newItem);
   
   @DomName('SVGPathSegList.appendItem')
   @DocsEditable()
-  PathSeg appendItem(PathSeg newItem) => wrap_jso(_blink.BlinkSVGPathSegList.instance.appendItem_Callback_1_(unwrap_jso(this), unwrap_jso(newItem)));
+  PathSeg appendItem(PathSeg newItem) => _blink.BlinkSVGPathSegList.instance.appendItem_Callback_1_(this, newItem);
   
   @DomName('SVGPathSegList.clear')
   @DocsEditable()
-  void clear() => _blink.BlinkSVGPathSegList.instance.clear_Callback_0_(unwrap_jso(this));
+  void clear() => _blink.BlinkSVGPathSegList.instance.clear_Callback_0_(this);
   
   @DomName('SVGPathSegList.getItem')
   @DocsEditable()
-  PathSeg getItem(int index) => wrap_jso(_blink.BlinkSVGPathSegList.instance.getItem_Callback_1_(unwrap_jso(this), index));
+  PathSeg getItem(int index) => _blink.BlinkSVGPathSegList.instance.getItem_Callback_1_(this, index);
   
   @DomName('SVGPathSegList.initialize')
   @DocsEditable()
-  PathSeg initialize(PathSeg newItem) => wrap_jso(_blink.BlinkSVGPathSegList.instance.initialize_Callback_1_(unwrap_jso(this), unwrap_jso(newItem)));
+  PathSeg initialize(PathSeg newItem) => _blink.BlinkSVGPathSegList.instance.initialize_Callback_1_(this, newItem);
   
   @DomName('SVGPathSegList.insertItemBefore')
   @DocsEditable()
-  PathSeg insertItemBefore(PathSeg newItem, int index) => wrap_jso(_blink.BlinkSVGPathSegList.instance.insertItemBefore_Callback_2_(unwrap_jso(this), unwrap_jso(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) => wrap_jso(_blink.BlinkSVGPathSegList.instance.removeItem_Callback_1_(unwrap_jso(this), index));
+  PathSeg removeItem(int index) => _blink.BlinkSVGPathSegList.instance.removeItem_Callback_1_(this, index);
   
   @DomName('SVGPathSegList.replaceItem')
   @DocsEditable()
-  PathSeg replaceItem(PathSeg newItem, int index) => wrap_jso(_blink.BlinkSVGPathSegList.instance.replaceItem_Callback_2_(unwrap_jso(this), unwrap_jso(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
@@ -5701,11 +5157,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegMovetoAbs internalCreatePathSegMovetoAbs() {
-    return new PathSegMovetoAbs._internalWrap();
-  }
-
-  external factory PathSegMovetoAbs._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegMovetoAbs.internal_() : super.internal_();
@@ -5713,19 +5165,19 @@
 
   @DomName('SVGPathSegMovetoAbs.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegMovetoAbs.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPathSegMovetoAbs.instance.x_Getter_(this);
   
   @DomName('SVGPathSegMovetoAbs.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPathSegMovetoAbs.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegMovetoAbs.instance.x_Setter_(this, value);
   
   @DomName('SVGPathSegMovetoAbs.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegMovetoAbs.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPathSegMovetoAbs.instance.y_Getter_(this);
   
   @DomName('SVGPathSegMovetoAbs.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPathSegMovetoAbs.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegMovetoAbs.instance.y_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5744,11 +5196,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PathSegMovetoRel internalCreatePathSegMovetoRel() {
-    return new PathSegMovetoRel._internalWrap();
-  }
-
-  external factory PathSegMovetoRel._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PathSegMovetoRel.internal_() : super.internal_();
@@ -5756,19 +5204,19 @@
 
   @DomName('SVGPathSegMovetoRel.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegMovetoRel.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPathSegMovetoRel.instance.x_Getter_(this);
   
   @DomName('SVGPathSegMovetoRel.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPathSegMovetoRel.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegMovetoRel.instance.x_Setter_(this, value);
   
   @DomName('SVGPathSegMovetoRel.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegMovetoRel.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPathSegMovetoRel.instance.y_Getter_(this);
   
   @DomName('SVGPathSegMovetoRel.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPathSegMovetoRel.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegMovetoRel.instance.y_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5791,11 +5239,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PatternElement internalCreatePatternElement() {
-    return new PatternElement._internalWrap();
-  }
-
-  external factory PatternElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PatternElement.internal_() : super.internal_();
@@ -5809,59 +5253,59 @@
 
   @DomName('SVGPatternElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGPatternElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGPatternElement.instance.height_Getter_(this);
   
   @DomName('SVGPatternElement.patternContentUnits')
   @DocsEditable()
-  AnimatedEnumeration get patternContentUnits => wrap_jso(_blink.BlinkSVGPatternElement.instance.patternContentUnits_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get patternContentUnits => _blink.BlinkSVGPatternElement.instance.patternContentUnits_Getter_(this);
   
   @DomName('SVGPatternElement.patternTransform')
   @DocsEditable()
-  AnimatedTransformList get patternTransform => wrap_jso(_blink.BlinkSVGPatternElement.instance.patternTransform_Getter_(unwrap_jso(this)));
+  AnimatedTransformList get patternTransform => _blink.BlinkSVGPatternElement.instance.patternTransform_Getter_(this);
   
   @DomName('SVGPatternElement.patternUnits')
   @DocsEditable()
-  AnimatedEnumeration get patternUnits => wrap_jso(_blink.BlinkSVGPatternElement.instance.patternUnits_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get patternUnits => _blink.BlinkSVGPatternElement.instance.patternUnits_Getter_(this);
   
   @DomName('SVGPatternElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGPatternElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGPatternElement.instance.width_Getter_(this);
   
   @DomName('SVGPatternElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGPatternElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGPatternElement.instance.x_Getter_(this);
   
   @DomName('SVGPatternElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGPatternElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGPatternElement.instance.y_Getter_(this);
   
   @DomName('SVGPatternElement.preserveAspectRatio')
   @DocsEditable()
-  AnimatedPreserveAspectRatio get preserveAspectRatio => wrap_jso(_blink.BlinkSVGPatternElement.instance.preserveAspectRatio_Getter_(unwrap_jso(this)));
+  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGPatternElement.instance.preserveAspectRatio_Getter_(this);
   
   @DomName('SVGPatternElement.viewBox')
   @DocsEditable()
-  AnimatedRect get viewBox => wrap_jso(_blink.BlinkSVGPatternElement.instance.viewBox_Getter_(unwrap_jso(this)));
+  AnimatedRect get viewBox => _blink.BlinkSVGPatternElement.instance.viewBox_Getter_(this);
   
   @DomName('SVGPatternElement.requiredExtensions')
   @DocsEditable()
-  StringList get requiredExtensions => wrap_jso(_blink.BlinkSVGPatternElement.instance.requiredExtensions_Getter_(unwrap_jso(this)));
+  StringList get requiredExtensions => _blink.BlinkSVGPatternElement.instance.requiredExtensions_Getter_(this);
   
   @DomName('SVGPatternElement.requiredFeatures')
   @DocsEditable()
-  StringList get requiredFeatures => wrap_jso(_blink.BlinkSVGPatternElement.instance.requiredFeatures_Getter_(unwrap_jso(this)));
+  StringList get requiredFeatures => _blink.BlinkSVGPatternElement.instance.requiredFeatures_Getter_(this);
   
   @DomName('SVGPatternElement.systemLanguage')
   @DocsEditable()
-  StringList get systemLanguage => wrap_jso(_blink.BlinkSVGPatternElement.instance.systemLanguage_Getter_(unwrap_jso(this)));
+  StringList get systemLanguage => _blink.BlinkSVGPatternElement.instance.systemLanguage_Getter_(this);
   
   @DomName('SVGPatternElement.hasExtension')
   @DocsEditable()
-  bool hasExtension(String extension) => _blink.BlinkSVGPatternElement.instance.hasExtension_Callback_1_(unwrap_jso(this), extension);
+  bool hasExtension(String extension) => _blink.BlinkSVGPatternElement.instance.hasExtension_Callback_1_(this, extension);
   
   @DomName('SVGPatternElement.href')
   @DocsEditable()
-  AnimatedString get href => wrap_jso(_blink.BlinkSVGPatternElement.instance.href_Getter_(unwrap_jso(this)));
+  AnimatedString get href => _blink.BlinkSVGPatternElement.instance.href_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5878,40 +5322,32 @@
   // To suppress missing implicit constructor warnings.
   factory Point._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Point internalCreatePoint() {
-    return new Point._internalWrap();
-  }
 
-  factory Point._internalWrap() {
-    return new Point.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Point.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGPoint.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPoint.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGPoint.instance.x_Getter_(this);
   
   @DomName('SVGPoint.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGPoint.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPoint.instance.x_Setter_(this, value);
   
   @DomName('SVGPoint.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPoint.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGPoint.instance.y_Getter_(this);
   
   @DomName('SVGPoint.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGPoint.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPoint.instance.y_Setter_(this, value);
   
   @DomName('SVGPoint.matrixTransform')
   @DocsEditable()
-  Point matrixTransform(Matrix matrix) => wrap_jso(_blink.BlinkSVGPoint.instance.matrixTransform_Callback_1_(unwrap_jso(this), unwrap_jso(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
@@ -5928,62 +5364,54 @@
   // To suppress missing implicit constructor warnings.
   factory PointList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static PointList internalCreatePointList() {
-    return new PointList._internalWrap();
-  }
 
-  factory PointList._internalWrap() {
-    return new PointList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PointList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGPointList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkSVGPointList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkSVGPointList.instance.length_Getter_(this);
   
   @DomName('SVGPointList.numberOfItems')
   @DocsEditable()
-  int get numberOfItems => _blink.BlinkSVGPointList.instance.numberOfItems_Getter_(unwrap_jso(this));
+  int get numberOfItems => _blink.BlinkSVGPointList.instance.numberOfItems_Getter_(this);
   
   @DomName('SVGPointList.__setter__')
   @DocsEditable()
   @Experimental() // untriaged
-  void __setter__(int index, Point newItem) => _blink.BlinkSVGPointList.instance.$__setter___Callback_2_(unwrap_jso(this), index, unwrap_jso(newItem));
+  void __setter__(int index, Point newItem) => _blink.BlinkSVGPointList.instance.$__setter___Callback_2_(this, index, newItem);
   
   @DomName('SVGPointList.appendItem')
   @DocsEditable()
-  Point appendItem(Point newItem) => wrap_jso(_blink.BlinkSVGPointList.instance.appendItem_Callback_1_(unwrap_jso(this), unwrap_jso(newItem)));
+  Point appendItem(Point newItem) => _blink.BlinkSVGPointList.instance.appendItem_Callback_1_(this, newItem);
   
   @DomName('SVGPointList.clear')
   @DocsEditable()
-  void clear() => _blink.BlinkSVGPointList.instance.clear_Callback_0_(unwrap_jso(this));
+  void clear() => _blink.BlinkSVGPointList.instance.clear_Callback_0_(this);
   
   @DomName('SVGPointList.getItem')
   @DocsEditable()
-  Point getItem(int index) => wrap_jso(_blink.BlinkSVGPointList.instance.getItem_Callback_1_(unwrap_jso(this), index));
+  Point getItem(int index) => _blink.BlinkSVGPointList.instance.getItem_Callback_1_(this, index);
   
   @DomName('SVGPointList.initialize')
   @DocsEditable()
-  Point initialize(Point newItem) => wrap_jso(_blink.BlinkSVGPointList.instance.initialize_Callback_1_(unwrap_jso(this), unwrap_jso(newItem)));
+  Point initialize(Point newItem) => _blink.BlinkSVGPointList.instance.initialize_Callback_1_(this, newItem);
   
   @DomName('SVGPointList.insertItemBefore')
   @DocsEditable()
-  Point insertItemBefore(Point newItem, int index) => wrap_jso(_blink.BlinkSVGPointList.instance.insertItemBefore_Callback_2_(unwrap_jso(this), unwrap_jso(newItem), index));
+  Point insertItemBefore(Point newItem, int index) => _blink.BlinkSVGPointList.instance.insertItemBefore_Callback_2_(this, newItem, index);
   
   @DomName('SVGPointList.removeItem')
   @DocsEditable()
-  Point removeItem(int index) => wrap_jso(_blink.BlinkSVGPointList.instance.removeItem_Callback_1_(unwrap_jso(this), index));
+  Point removeItem(int index) => _blink.BlinkSVGPointList.instance.removeItem_Callback_1_(this, index);
   
   @DomName('SVGPointList.replaceItem')
   @DocsEditable()
-  Point replaceItem(Point newItem, int index) => wrap_jso(_blink.BlinkSVGPointList.instance.replaceItem_Callback_2_(unwrap_jso(this), unwrap_jso(newItem), index));
+  Point replaceItem(Point newItem, int index) => _blink.BlinkSVGPointList.instance.replaceItem_Callback_2_(this, newItem, index);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6006,11 +5434,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PolygonElement internalCreatePolygonElement() {
-    return new PolygonElement._internalWrap();
-  }
-
-  external factory PolygonElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PolygonElement.internal_() : super.internal_();
@@ -6024,11 +5448,11 @@
 
   @DomName('SVGPolygonElement.animatedPoints')
   @DocsEditable()
-  PointList get animatedPoints => wrap_jso(_blink.BlinkSVGPolygonElement.instance.animatedPoints_Getter_(unwrap_jso(this)));
+  PointList get animatedPoints => _blink.BlinkSVGPolygonElement.instance.animatedPoints_Getter_(this);
   
   @DomName('SVGPolygonElement.points')
   @DocsEditable()
-  PointList get points => wrap_jso(_blink.BlinkSVGPolygonElement.instance.points_Getter_(unwrap_jso(this)));
+  PointList get points => _blink.BlinkSVGPolygonElement.instance.points_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6051,11 +5475,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PolylineElement internalCreatePolylineElement() {
-    return new PolylineElement._internalWrap();
-  }
-
-  external factory PolylineElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PolylineElement.internal_() : super.internal_();
@@ -6069,11 +5489,11 @@
 
   @DomName('SVGPolylineElement.animatedPoints')
   @DocsEditable()
-  PointList get animatedPoints => wrap_jso(_blink.BlinkSVGPolylineElement.instance.animatedPoints_Getter_(unwrap_jso(this)));
+  PointList get animatedPoints => _blink.BlinkSVGPolylineElement.instance.animatedPoints_Getter_(this);
   
   @DomName('SVGPolylineElement.points')
   @DocsEditable()
-  PointList get points => wrap_jso(_blink.BlinkSVGPolylineElement.instance.points_Getter_(unwrap_jso(this)));
+  PointList get points => _blink.BlinkSVGPolylineElement.instance.points_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6090,21 +5510,13 @@
   // To suppress missing implicit constructor warnings.
   factory PreserveAspectRatio._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static PreserveAspectRatio internalCreatePreserveAspectRatio() {
-    return new PreserveAspectRatio._internalWrap();
-  }
 
-  factory PreserveAspectRatio._internalWrap() {
-    return new PreserveAspectRatio.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PreserveAspectRatio.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET')
   @DocsEditable()
   static const int SVG_MEETORSLICE_MEET = 1;
@@ -6163,19 +5575,19 @@
 
   @DomName('SVGPreserveAspectRatio.align')
   @DocsEditable()
-  int get align => _blink.BlinkSVGPreserveAspectRatio.instance.align_Getter_(unwrap_jso(this));
+  int get align => _blink.BlinkSVGPreserveAspectRatio.instance.align_Getter_(this);
   
   @DomName('SVGPreserveAspectRatio.align')
   @DocsEditable()
-  set align(int value) => _blink.BlinkSVGPreserveAspectRatio.instance.align_Setter_(unwrap_jso(this), value);
+  set align(int value) => _blink.BlinkSVGPreserveAspectRatio.instance.align_Setter_(this, value);
   
   @DomName('SVGPreserveAspectRatio.meetOrSlice')
   @DocsEditable()
-  int get meetOrSlice => _blink.BlinkSVGPreserveAspectRatio.instance.meetOrSlice_Getter_(unwrap_jso(this));
+  int get meetOrSlice => _blink.BlinkSVGPreserveAspectRatio.instance.meetOrSlice_Getter_(this);
   
   @DomName('SVGPreserveAspectRatio.meetOrSlice')
   @DocsEditable()
-  set meetOrSlice(int value) => _blink.BlinkSVGPreserveAspectRatio.instance.meetOrSlice_Setter_(unwrap_jso(this), value);
+  set meetOrSlice(int value) => _blink.BlinkSVGPreserveAspectRatio.instance.meetOrSlice_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6198,11 +5610,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static RadialGradientElement internalCreateRadialGradientElement() {
-    return new RadialGradientElement._internalWrap();
-  }
-
-  external factory RadialGradientElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   RadialGradientElement.internal_() : super.internal_();
@@ -6216,27 +5624,27 @@
 
   @DomName('SVGRadialGradientElement.cx')
   @DocsEditable()
-  AnimatedLength get cx => wrap_jso(_blink.BlinkSVGRadialGradientElement.instance.cx_Getter_(unwrap_jso(this)));
+  AnimatedLength get cx => _blink.BlinkSVGRadialGradientElement.instance.cx_Getter_(this);
   
   @DomName('SVGRadialGradientElement.cy')
   @DocsEditable()
-  AnimatedLength get cy => wrap_jso(_blink.BlinkSVGRadialGradientElement.instance.cy_Getter_(unwrap_jso(this)));
+  AnimatedLength get cy => _blink.BlinkSVGRadialGradientElement.instance.cy_Getter_(this);
   
   @DomName('SVGRadialGradientElement.fr')
   @DocsEditable()
-  AnimatedLength get fr => wrap_jso(_blink.BlinkSVGRadialGradientElement.instance.fr_Getter_(unwrap_jso(this)));
+  AnimatedLength get fr => _blink.BlinkSVGRadialGradientElement.instance.fr_Getter_(this);
   
   @DomName('SVGRadialGradientElement.fx')
   @DocsEditable()
-  AnimatedLength get fx => wrap_jso(_blink.BlinkSVGRadialGradientElement.instance.fx_Getter_(unwrap_jso(this)));
+  AnimatedLength get fx => _blink.BlinkSVGRadialGradientElement.instance.fx_Getter_(this);
   
   @DomName('SVGRadialGradientElement.fy')
   @DocsEditable()
-  AnimatedLength get fy => wrap_jso(_blink.BlinkSVGRadialGradientElement.instance.fy_Getter_(unwrap_jso(this)));
+  AnimatedLength get fy => _blink.BlinkSVGRadialGradientElement.instance.fy_Getter_(this);
   
   @DomName('SVGRadialGradientElement.r')
   @DocsEditable()
-  AnimatedLength get r => wrap_jso(_blink.BlinkSVGRadialGradientElement.instance.r_Getter_(unwrap_jso(this)));
+  AnimatedLength get r => _blink.BlinkSVGRadialGradientElement.instance.r_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6253,52 +5661,44 @@
   // To suppress missing implicit constructor warnings.
   factory Rect._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Rect internalCreateRect() {
-    return new Rect._internalWrap();
-  }
 
-  factory Rect._internalWrap() {
-    return new Rect.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Rect.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGRect.height')
   @DocsEditable()
-  num get height => _blink.BlinkSVGRect.instance.height_Getter_(unwrap_jso(this));
+  num get height => _blink.BlinkSVGRect.instance.height_Getter_(this);
   
   @DomName('SVGRect.height')
   @DocsEditable()
-  set height(num value) => _blink.BlinkSVGRect.instance.height_Setter_(unwrap_jso(this), value);
+  set height(num value) => _blink.BlinkSVGRect.instance.height_Setter_(this, value);
   
   @DomName('SVGRect.width')
   @DocsEditable()
-  num get width => _blink.BlinkSVGRect.instance.width_Getter_(unwrap_jso(this));
+  num get width => _blink.BlinkSVGRect.instance.width_Getter_(this);
   
   @DomName('SVGRect.width')
   @DocsEditable()
-  set width(num value) => _blink.BlinkSVGRect.instance.width_Setter_(unwrap_jso(this), value);
+  set width(num value) => _blink.BlinkSVGRect.instance.width_Setter_(this, value);
   
   @DomName('SVGRect.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGRect.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkSVGRect.instance.x_Getter_(this);
   
   @DomName('SVGRect.x')
   @DocsEditable()
-  set x(num value) => _blink.BlinkSVGRect.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGRect.instance.x_Setter_(this, value);
   
   @DomName('SVGRect.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGRect.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkSVGRect.instance.y_Getter_(this);
   
   @DomName('SVGRect.y')
   @DocsEditable()
-  set y(num value) => _blink.BlinkSVGRect.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGRect.instance.y_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6321,11 +5721,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static RectElement internalCreateRectElement() {
-    return new RectElement._internalWrap();
-  }
-
-  external factory RectElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   RectElement.internal_() : super.internal_();
@@ -6339,27 +5735,27 @@
 
   @DomName('SVGRectElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGRectElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGRectElement.instance.height_Getter_(this);
   
   @DomName('SVGRectElement.rx')
   @DocsEditable()
-  AnimatedLength get rx => wrap_jso(_blink.BlinkSVGRectElement.instance.rx_Getter_(unwrap_jso(this)));
+  AnimatedLength get rx => _blink.BlinkSVGRectElement.instance.rx_Getter_(this);
   
   @DomName('SVGRectElement.ry')
   @DocsEditable()
-  AnimatedLength get ry => wrap_jso(_blink.BlinkSVGRectElement.instance.ry_Getter_(unwrap_jso(this)));
+  AnimatedLength get ry => _blink.BlinkSVGRectElement.instance.ry_Getter_(this);
   
   @DomName('SVGRectElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGRectElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGRectElement.instance.width_Getter_(this);
   
   @DomName('SVGRectElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGRectElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGRectElement.instance.x_Getter_(this);
   
   @DomName('SVGRectElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGRectElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGRectElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6382,11 +5778,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ScriptElement internalCreateScriptElement() {
-    return new ScriptElement._internalWrap();
-  }
-
-  external factory ScriptElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ScriptElement.internal_() : super.internal_();
@@ -6400,15 +5792,15 @@
 
   @DomName('SVGScriptElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkSVGScriptElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkSVGScriptElement.instance.type_Getter_(this);
   
   @DomName('SVGScriptElement.type')
   @DocsEditable()
-  set type(String value) => _blink.BlinkSVGScriptElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkSVGScriptElement.instance.type_Setter_(this, value);
   
   @DomName('SVGScriptElement.href')
   @DocsEditable()
-  AnimatedString get href => wrap_jso(_blink.BlinkSVGScriptElement.instance.href_Getter_(unwrap_jso(this)));
+  AnimatedString get href => _blink.BlinkSVGScriptElement.instance.href_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6434,11 +5826,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static SetElement internalCreateSetElement() {
-    return new SetElement._internalWrap();
-  }
-
-  external factory SetElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SetElement.internal_() : super.internal_();
@@ -6474,11 +5862,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static StopElement internalCreateStopElement() {
-    return new StopElement._internalWrap();
-  }
-
-  external factory StopElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   StopElement.internal_() : super.internal_();
@@ -6492,7 +5876,7 @@
 
   @DomName('SVGStopElement.offset')
   @DocsEditable()
-  AnimatedNumber get gradientOffset => wrap_jso(_blink.BlinkSVGStopElement.instance.offset_Getter_(unwrap_jso(this)));
+  AnimatedNumber get gradientOffset => _blink.BlinkSVGStopElement.instance.offset_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6509,29 +5893,21 @@
   // To suppress missing implicit constructor warnings.
   factory StringList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static StringList internalCreateStringList() {
-    return new StringList._internalWrap();
-  }
 
-  factory StringList._internalWrap() {
-    return new StringList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   StringList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGStringList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkSVGStringList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkSVGStringList.instance.length_Getter_(this);
   
   @DomName('SVGStringList.numberOfItems')
   @DocsEditable()
-  int get numberOfItems => _blink.BlinkSVGStringList.instance.numberOfItems_Getter_(unwrap_jso(this));
+  int get numberOfItems => _blink.BlinkSVGStringList.instance.numberOfItems_Getter_(this);
   
   String operator[](int index) {
     if (index < 0 || index >= length)
@@ -6580,35 +5956,35 @@
   @DomName('SVGStringList.__setter__')
   @DocsEditable()
   @Experimental() // untriaged
-  void __setter__(int index, String newItem) => _blink.BlinkSVGStringList.instance.$__setter___Callback_2_(unwrap_jso(this), index, newItem);
+  void __setter__(int index, String newItem) => _blink.BlinkSVGStringList.instance.$__setter___Callback_2_(this, index, newItem);
   
   @DomName('SVGStringList.appendItem')
   @DocsEditable()
-  String appendItem(String newItem) => _blink.BlinkSVGStringList.instance.appendItem_Callback_1_(unwrap_jso(this), newItem);
+  String appendItem(String newItem) => _blink.BlinkSVGStringList.instance.appendItem_Callback_1_(this, newItem);
   
   @DomName('SVGStringList.clear')
   @DocsEditable()
-  void clear() => _blink.BlinkSVGStringList.instance.clear_Callback_0_(unwrap_jso(this));
+  void clear() => _blink.BlinkSVGStringList.instance.clear_Callback_0_(this);
   
   @DomName('SVGStringList.getItem')
   @DocsEditable()
-  String getItem(int index) => _blink.BlinkSVGStringList.instance.getItem_Callback_1_(unwrap_jso(this), index);
+  String getItem(int index) => _blink.BlinkSVGStringList.instance.getItem_Callback_1_(this, index);
   
   @DomName('SVGStringList.initialize')
   @DocsEditable()
-  String initialize(String newItem) => _blink.BlinkSVGStringList.instance.initialize_Callback_1_(unwrap_jso(this), newItem);
+  String initialize(String newItem) => _blink.BlinkSVGStringList.instance.initialize_Callback_1_(this, newItem);
   
   @DomName('SVGStringList.insertItemBefore')
   @DocsEditable()
-  String insertItemBefore(String item, int index) => _blink.BlinkSVGStringList.instance.insertItemBefore_Callback_2_(unwrap_jso(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.instance.removeItem_Callback_1_(unwrap_jso(this), index);
+  String removeItem(int index) => _blink.BlinkSVGStringList.instance.removeItem_Callback_1_(this, index);
   
   @DomName('SVGStringList.replaceItem')
   @DocsEditable()
-  String replaceItem(String newItem, int index) => _blink.BlinkSVGStringList.instance.replaceItem_Callback_2_(unwrap_jso(this), newItem, index);
+  String replaceItem(String newItem, int index) => _blink.BlinkSVGStringList.instance.replaceItem_Callback_2_(this, newItem, index);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6632,11 +6008,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static StyleElement internalCreateStyleElement() {
-    return new StyleElement._internalWrap();
-  }
-
-  external factory StyleElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   StyleElement.internal_() : super.internal_();
@@ -6650,40 +6022,40 @@
 
   @DomName('SVGStyleElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkSVGStyleElement.instance.disabled_Getter_(unwrap_jso(this));
+  bool get disabled => _blink.BlinkSVGStyleElement.instance.disabled_Getter_(this);
   
   @DomName('SVGStyleElement.disabled')
   @DocsEditable()
-  set disabled(bool value) => _blink.BlinkSVGStyleElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkSVGStyleElement.instance.disabled_Setter_(this, value);
   
   @DomName('SVGStyleElement.media')
   @DocsEditable()
-  String get media => _blink.BlinkSVGStyleElement.instance.media_Getter_(unwrap_jso(this));
+  String get media => _blink.BlinkSVGStyleElement.instance.media_Getter_(this);
   
   @DomName('SVGStyleElement.media')
   @DocsEditable()
-  set media(String value) => _blink.BlinkSVGStyleElement.instance.media_Setter_(unwrap_jso(this), value);
+  set media(String value) => _blink.BlinkSVGStyleElement.instance.media_Setter_(this, value);
   
   @DomName('SVGStyleElement.sheet')
   @DocsEditable()
   @Experimental() // untriaged
-  StyleSheet get sheet => wrap_jso(_blink.BlinkSVGStyleElement.instance.sheet_Getter_(unwrap_jso(this)));
+  StyleSheet get sheet => _blink.BlinkSVGStyleElement.instance.sheet_Getter_(this);
   
   @DomName('SVGStyleElement.title')
   @DocsEditable()
-  String get title => _blink.BlinkSVGStyleElement.instance.title_Getter_(unwrap_jso(this));
+  String get title => _blink.BlinkSVGStyleElement.instance.title_Getter_(this);
   
   @DomName('SVGStyleElement.title')
   @DocsEditable()
-  set title(String value) => _blink.BlinkSVGStyleElement.instance.title_Setter_(unwrap_jso(this), value);
+  set title(String value) => _blink.BlinkSVGStyleElement.instance.title_Setter_(this, value);
   
   @DomName('SVGStyleElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkSVGStyleElement.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkSVGStyleElement.instance.type_Getter_(this);
   
   @DomName('SVGStyleElement.type')
   @DocsEditable()
-  set type(String value) => _blink.BlinkSVGStyleElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkSVGStyleElement.instance.type_Setter_(this, value);
   
 }
 // Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
@@ -6834,18 +6206,8 @@
   }
 
   set _svgClassName(AnimatedString value) =>
-      _blink.BlinkSVGElement.instance.className_Setter_(unwrap_jso(this), unwrap_jso(value));
+      _blink.BlinkSVGElement.instance.className_Setter_(this, value);
 
-  String get className => _svgClassName.baseVal;
-
-  // Unbelievable hack. We can't create an SvgAnimatedString, but we can get
-  // the existing one and change its baseVal. Then we call the blink setter directly
-  // TODO(alanknight): Handle suppressing the SVGAnimated<*> better
-  set className(String s) {
-    var oldClass = _svgClassName;
-    oldClass.baseVal = s;
-    _svgClassName = oldClass;
-  }
   // To suppress missing implicit constructor warnings.
   factory SvgElement._() { throw new UnsupportedError("Not supported"); }
 
@@ -7111,11 +6473,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static SvgElement internalCreateSvgElement() {
-    return new SvgElement._internalWrap();
-  }
-
-  external factory SvgElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SvgElement.internal_() : super.internal_();
@@ -7130,40 +6488,40 @@
   @DomName('SVGElement.className')
   @DocsEditable()
   @Experimental() // untriaged
-  AnimatedString get _svgClassName => wrap_jso(_blink.BlinkSVGElement.instance.className_Getter_(unwrap_jso(this)));
+  AnimatedString get _svgClassName => _blink.BlinkSVGElement.instance.className_Getter_(this);
   
   @DomName('SVGElement.ownerSVGElement')
   @DocsEditable()
-  SvgSvgElement get ownerSvgElement => wrap_jso(_blink.BlinkSVGElement.instance.ownerSVGElement_Getter_(unwrap_jso(this)));
+  SvgSvgElement get ownerSvgElement => _blink.BlinkSVGElement.instance.ownerSVGElement_Getter_(this);
   
   @DomName('SVGElement.style')
   @DocsEditable()
   @Experimental() // untriaged
-  CssStyleDeclaration get style => wrap_jso(_blink.BlinkSVGElement.instance.style_Getter_(unwrap_jso(this)));
+  CssStyleDeclaration get style => _blink.BlinkSVGElement.instance.style_Getter_(this);
   
   @DomName('SVGElement.tabIndex')
   @DocsEditable()
   @Experimental() // untriaged
-  int get tabIndex => _blink.BlinkSVGElement.instance.tabIndex_Getter_(unwrap_jso(this));
+  int get tabIndex => _blink.BlinkSVGElement.instance.tabIndex_Getter_(this);
   
   @DomName('SVGElement.tabIndex')
   @DocsEditable()
   @Experimental() // untriaged
-  set tabIndex(int value) => _blink.BlinkSVGElement.instance.tabIndex_Setter_(unwrap_jso(this), value);
+  set tabIndex(int value) => _blink.BlinkSVGElement.instance.tabIndex_Setter_(this, value);
   
   @DomName('SVGElement.viewportElement')
   @DocsEditable()
-  SvgElement get viewportElement => wrap_jso(_blink.BlinkSVGElement.instance.viewportElement_Getter_(unwrap_jso(this)));
+  SvgElement get viewportElement => _blink.BlinkSVGElement.instance.viewportElement_Getter_(this);
   
   @DomName('SVGElement.blur')
   @DocsEditable()
   @Experimental() // untriaged
-  void blur() => _blink.BlinkSVGElement.instance.blur_Callback_0_(unwrap_jso(this));
+  void blur() => _blink.BlinkSVGElement.instance.blur_Callback_0_(this);
   
   @DomName('SVGElement.focus')
   @DocsEditable()
   @Experimental() // untriaged
-  void focus() => _blink.BlinkSVGElement.instance.focus_Callback_0_(unwrap_jso(this));
+  void focus() => _blink.BlinkSVGElement.instance.focus_Callback_0_(this);
   
   @DomName('SVGElement.onabort')
   @DocsEditable()
@@ -7446,11 +6804,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static SvgSvgElement internalCreateSvgSvgElement() {
-    return new SvgSvgElement._internalWrap();
-  }
-
-  external factory SvgSvgElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SvgSvgElement.internal_() : super.internal_();
@@ -7464,167 +6818,167 @@
 
   @DomName('SVGSVGElement.currentScale')
   @DocsEditable()
-  num get currentScale => _blink.BlinkSVGSVGElement.instance.currentScale_Getter_(unwrap_jso(this));
+  num get currentScale => _blink.BlinkSVGSVGElement.instance.currentScale_Getter_(this);
   
   @DomName('SVGSVGElement.currentScale')
   @DocsEditable()
-  set currentScale(num value) => _blink.BlinkSVGSVGElement.instance.currentScale_Setter_(unwrap_jso(this), value);
+  set currentScale(num value) => _blink.BlinkSVGSVGElement.instance.currentScale_Setter_(this, value);
   
   @DomName('SVGSVGElement.currentTranslate')
   @DocsEditable()
-  Point get currentTranslate => wrap_jso(_blink.BlinkSVGSVGElement.instance.currentTranslate_Getter_(unwrap_jso(this)));
+  Point get currentTranslate => _blink.BlinkSVGSVGElement.instance.currentTranslate_Getter_(this);
   
   @DomName('SVGSVGElement.currentView')
   @DocsEditable()
-  ViewSpec get currentView => wrap_jso(_blink.BlinkSVGSVGElement.instance.currentView_Getter_(unwrap_jso(this)));
+  ViewSpec get currentView => _blink.BlinkSVGSVGElement.instance.currentView_Getter_(this);
   
   @DomName('SVGSVGElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGSVGElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGSVGElement.instance.height_Getter_(this);
   
   @DomName('SVGSVGElement.pixelUnitToMillimeterX')
   @DocsEditable()
-  num get pixelUnitToMillimeterX => _blink.BlinkSVGSVGElement.instance.pixelUnitToMillimeterX_Getter_(unwrap_jso(this));
+  num get pixelUnitToMillimeterX => _blink.BlinkSVGSVGElement.instance.pixelUnitToMillimeterX_Getter_(this);
   
   @DomName('SVGSVGElement.pixelUnitToMillimeterY')
   @DocsEditable()
-  num get pixelUnitToMillimeterY => _blink.BlinkSVGSVGElement.instance.pixelUnitToMillimeterY_Getter_(unwrap_jso(this));
+  num get pixelUnitToMillimeterY => _blink.BlinkSVGSVGElement.instance.pixelUnitToMillimeterY_Getter_(this);
   
   @DomName('SVGSVGElement.screenPixelToMillimeterX')
   @DocsEditable()
-  num get screenPixelToMillimeterX => _blink.BlinkSVGSVGElement.instance.screenPixelToMillimeterX_Getter_(unwrap_jso(this));
+  num get screenPixelToMillimeterX => _blink.BlinkSVGSVGElement.instance.screenPixelToMillimeterX_Getter_(this);
   
   @DomName('SVGSVGElement.screenPixelToMillimeterY')
   @DocsEditable()
-  num get screenPixelToMillimeterY => _blink.BlinkSVGSVGElement.instance.screenPixelToMillimeterY_Getter_(unwrap_jso(this));
+  num get screenPixelToMillimeterY => _blink.BlinkSVGSVGElement.instance.screenPixelToMillimeterY_Getter_(this);
   
   @DomName('SVGSVGElement.useCurrentView')
   @DocsEditable()
-  bool get useCurrentView => _blink.BlinkSVGSVGElement.instance.useCurrentView_Getter_(unwrap_jso(this));
+  bool get useCurrentView => _blink.BlinkSVGSVGElement.instance.useCurrentView_Getter_(this);
   
   @DomName('SVGSVGElement.viewport')
   @DocsEditable()
-  Rect get viewport => wrap_jso(_blink.BlinkSVGSVGElement.instance.viewport_Getter_(unwrap_jso(this)));
+  Rect get viewport => _blink.BlinkSVGSVGElement.instance.viewport_Getter_(this);
   
   @DomName('SVGSVGElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGSVGElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGSVGElement.instance.width_Getter_(this);
   
   @DomName('SVGSVGElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGSVGElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGSVGElement.instance.x_Getter_(this);
   
   @DomName('SVGSVGElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGSVGElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGSVGElement.instance.y_Getter_(this);
   
   @DomName('SVGSVGElement.animationsPaused')
   @DocsEditable()
-  bool animationsPaused() => _blink.BlinkSVGSVGElement.instance.animationsPaused_Callback_0_(unwrap_jso(this));
+  bool animationsPaused() => _blink.BlinkSVGSVGElement.instance.animationsPaused_Callback_0_(this);
   
   @DomName('SVGSVGElement.checkEnclosure')
   @DocsEditable()
-  bool checkEnclosure(SvgElement element, Rect rect) => _blink.BlinkSVGSVGElement.instance.checkEnclosure_Callback_2_(unwrap_jso(this), unwrap_jso(element), unwrap_jso(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.instance.checkIntersection_Callback_2_(unwrap_jso(this), unwrap_jso(element), unwrap_jso(rect));
+  bool checkIntersection(SvgElement element, Rect rect) => _blink.BlinkSVGSVGElement.instance.checkIntersection_Callback_2_(this, element, rect);
   
   @DomName('SVGSVGElement.createSVGAngle')
   @DocsEditable()
-  Angle createSvgAngle() => wrap_jso(_blink.BlinkSVGSVGElement.instance.createSVGAngle_Callback_0_(unwrap_jso(this)));
+  Angle createSvgAngle() => _blink.BlinkSVGSVGElement.instance.createSVGAngle_Callback_0_(this);
   
   @DomName('SVGSVGElement.createSVGLength')
   @DocsEditable()
-  Length createSvgLength() => wrap_jso(_blink.BlinkSVGSVGElement.instance.createSVGLength_Callback_0_(unwrap_jso(this)));
+  Length createSvgLength() => _blink.BlinkSVGSVGElement.instance.createSVGLength_Callback_0_(this);
   
   @DomName('SVGSVGElement.createSVGMatrix')
   @DocsEditable()
-  Matrix createSvgMatrix() => wrap_jso(_blink.BlinkSVGSVGElement.instance.createSVGMatrix_Callback_0_(unwrap_jso(this)));
+  Matrix createSvgMatrix() => _blink.BlinkSVGSVGElement.instance.createSVGMatrix_Callback_0_(this);
   
   @DomName('SVGSVGElement.createSVGNumber')
   @DocsEditable()
-  Number createSvgNumber() => wrap_jso(_blink.BlinkSVGSVGElement.instance.createSVGNumber_Callback_0_(unwrap_jso(this)));
+  Number createSvgNumber() => _blink.BlinkSVGSVGElement.instance.createSVGNumber_Callback_0_(this);
   
   @DomName('SVGSVGElement.createSVGPoint')
   @DocsEditable()
-  Point createSvgPoint() => wrap_jso(_blink.BlinkSVGSVGElement.instance.createSVGPoint_Callback_0_(unwrap_jso(this)));
+  Point createSvgPoint() => _blink.BlinkSVGSVGElement.instance.createSVGPoint_Callback_0_(this);
   
   @DomName('SVGSVGElement.createSVGRect')
   @DocsEditable()
-  Rect createSvgRect() => wrap_jso(_blink.BlinkSVGSVGElement.instance.createSVGRect_Callback_0_(unwrap_jso(this)));
+  Rect createSvgRect() => _blink.BlinkSVGSVGElement.instance.createSVGRect_Callback_0_(this);
   
   @DomName('SVGSVGElement.createSVGTransform')
   @DocsEditable()
-  Transform createSvgTransform() => wrap_jso(_blink.BlinkSVGSVGElement.instance.createSVGTransform_Callback_0_(unwrap_jso(this)));
+  Transform createSvgTransform() => _blink.BlinkSVGSVGElement.instance.createSVGTransform_Callback_0_(this);
   
   @DomName('SVGSVGElement.createSVGTransformFromMatrix')
   @DocsEditable()
-  Transform createSvgTransformFromMatrix(Matrix matrix) => wrap_jso(_blink.BlinkSVGSVGElement.instance.createSVGTransformFromMatrix_Callback_1_(unwrap_jso(this), unwrap_jso(matrix)));
+  Transform createSvgTransformFromMatrix(Matrix matrix) => _blink.BlinkSVGSVGElement.instance.createSVGTransformFromMatrix_Callback_1_(this, matrix);
   
   @DomName('SVGSVGElement.deselectAll')
   @DocsEditable()
-  void deselectAll() => _blink.BlinkSVGSVGElement.instance.deselectAll_Callback_0_(unwrap_jso(this));
+  void deselectAll() => _blink.BlinkSVGSVGElement.instance.deselectAll_Callback_0_(this);
   
   @DomName('SVGSVGElement.forceRedraw')
   @DocsEditable()
-  void forceRedraw() => _blink.BlinkSVGSVGElement.instance.forceRedraw_Callback_0_(unwrap_jso(this));
+  void forceRedraw() => _blink.BlinkSVGSVGElement.instance.forceRedraw_Callback_0_(this);
   
   @DomName('SVGSVGElement.getCurrentTime')
   @DocsEditable()
-  num getCurrentTime() => _blink.BlinkSVGSVGElement.instance.getCurrentTime_Callback_0_(unwrap_jso(this));
+  num getCurrentTime() => _blink.BlinkSVGSVGElement.instance.getCurrentTime_Callback_0_(this);
   
   @DomName('SVGSVGElement.getElementById')
   @DocsEditable()
-  Element getElementById(String elementId) => wrap_jso(_blink.BlinkSVGSVGElement.instance.getElementById_Callback_1_(unwrap_jso(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) => wrap_jso(_blink.BlinkSVGSVGElement.instance.getEnclosureList_Callback_2_(unwrap_jso(this), unwrap_jso(rect), unwrap_jso(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) => wrap_jso(_blink.BlinkSVGSVGElement.instance.getIntersectionList_Callback_2_(unwrap_jso(this), unwrap_jso(rect), unwrap_jso(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.instance.pauseAnimations_Callback_0_(unwrap_jso(this));
+  void pauseAnimations() => _blink.BlinkSVGSVGElement.instance.pauseAnimations_Callback_0_(this);
   
   @DomName('SVGSVGElement.setCurrentTime')
   @DocsEditable()
-  void setCurrentTime(num seconds) => _blink.BlinkSVGSVGElement.instance.setCurrentTime_Callback_1_(unwrap_jso(this), seconds);
+  void setCurrentTime(num seconds) => _blink.BlinkSVGSVGElement.instance.setCurrentTime_Callback_1_(this, seconds);
   
   @DomName('SVGSVGElement.suspendRedraw')
   @DocsEditable()
-  int suspendRedraw(int maxWaitMilliseconds) => _blink.BlinkSVGSVGElement.instance.suspendRedraw_Callback_1_(unwrap_jso(this), maxWaitMilliseconds);
+  int suspendRedraw(int maxWaitMilliseconds) => _blink.BlinkSVGSVGElement.instance.suspendRedraw_Callback_1_(this, maxWaitMilliseconds);
   
   @DomName('SVGSVGElement.unpauseAnimations')
   @DocsEditable()
-  void unpauseAnimations() => _blink.BlinkSVGSVGElement.instance.unpauseAnimations_Callback_0_(unwrap_jso(this));
+  void unpauseAnimations() => _blink.BlinkSVGSVGElement.instance.unpauseAnimations_Callback_0_(this);
   
   @DomName('SVGSVGElement.unsuspendRedraw')
   @DocsEditable()
-  void unsuspendRedraw(int suspendHandleId) => _blink.BlinkSVGSVGElement.instance.unsuspendRedraw_Callback_1_(unwrap_jso(this), suspendHandleId);
+  void unsuspendRedraw(int suspendHandleId) => _blink.BlinkSVGSVGElement.instance.unsuspendRedraw_Callback_1_(this, suspendHandleId);
   
   @DomName('SVGSVGElement.unsuspendRedrawAll')
   @DocsEditable()
-  void unsuspendRedrawAll() => _blink.BlinkSVGSVGElement.instance.unsuspendRedrawAll_Callback_0_(unwrap_jso(this));
+  void unsuspendRedrawAll() => _blink.BlinkSVGSVGElement.instance.unsuspendRedrawAll_Callback_0_(this);
   
   @DomName('SVGSVGElement.preserveAspectRatio')
   @DocsEditable()
-  AnimatedPreserveAspectRatio get preserveAspectRatio => wrap_jso(_blink.BlinkSVGSVGElement.instance.preserveAspectRatio_Getter_(unwrap_jso(this)));
+  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGSVGElement.instance.preserveAspectRatio_Getter_(this);
   
   @DomName('SVGSVGElement.viewBox')
   @DocsEditable()
-  AnimatedRect get viewBox => wrap_jso(_blink.BlinkSVGSVGElement.instance.viewBox_Getter_(unwrap_jso(this)));
+  AnimatedRect get viewBox => _blink.BlinkSVGSVGElement.instance.viewBox_Getter_(this);
   
   @DomName('SVGSVGElement.zoomAndPan')
   @DocsEditable()
-  int get zoomAndPan => _blink.BlinkSVGSVGElement.instance.zoomAndPan_Getter_(unwrap_jso(this));
+  int get zoomAndPan => _blink.BlinkSVGSVGElement.instance.zoomAndPan_Getter_(this);
   
   @DomName('SVGSVGElement.zoomAndPan')
   @DocsEditable()
-  set zoomAndPan(int value) => _blink.BlinkSVGSVGElement.instance.zoomAndPan_Setter_(unwrap_jso(this), value);
+  set zoomAndPan(int value) => _blink.BlinkSVGSVGElement.instance.zoomAndPan_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7647,11 +7001,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static SwitchElement internalCreateSwitchElement() {
-    return new SwitchElement._internalWrap();
-  }
-
-  external factory SwitchElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SwitchElement.internal_() : super.internal_();
@@ -7684,11 +7034,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static SymbolElement internalCreateSymbolElement() {
-    return new SymbolElement._internalWrap();
-  }
-
-  external factory SymbolElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SymbolElement.internal_() : super.internal_();
@@ -7702,11 +7048,11 @@
 
   @DomName('SVGSymbolElement.preserveAspectRatio')
   @DocsEditable()
-  AnimatedPreserveAspectRatio get preserveAspectRatio => wrap_jso(_blink.BlinkSVGSymbolElement.instance.preserveAspectRatio_Getter_(unwrap_jso(this)));
+  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGSymbolElement.instance.preserveAspectRatio_Getter_(this);
   
   @DomName('SVGSymbolElement.viewBox')
   @DocsEditable()
-  AnimatedRect get viewBox => wrap_jso(_blink.BlinkSVGSymbolElement.instance.viewBox_Getter_(unwrap_jso(this)));
+  AnimatedRect get viewBox => _blink.BlinkSVGSymbolElement.instance.viewBox_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7729,11 +7075,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TSpanElement internalCreateTSpanElement() {
-    return new TSpanElement._internalWrap();
-  }
-
-  external factory TSpanElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TSpanElement.internal_() : super.internal_();
@@ -7793,11 +7135,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TextContentElement internalCreateTextContentElement() {
-    return new TextContentElement._internalWrap();
-  }
-
-  external factory TextContentElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TextContentElement.internal_() : super.internal_();
@@ -7823,47 +7161,47 @@
 
   @DomName('SVGTextContentElement.lengthAdjust')
   @DocsEditable()
-  AnimatedEnumeration get lengthAdjust => wrap_jso(_blink.BlinkSVGTextContentElement.instance.lengthAdjust_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get lengthAdjust => _blink.BlinkSVGTextContentElement.instance.lengthAdjust_Getter_(this);
   
   @DomName('SVGTextContentElement.textLength')
   @DocsEditable()
-  AnimatedLength get textLength => wrap_jso(_blink.BlinkSVGTextContentElement.instance.textLength_Getter_(unwrap_jso(this)));
+  AnimatedLength get textLength => _blink.BlinkSVGTextContentElement.instance.textLength_Getter_(this);
   
   @DomName('SVGTextContentElement.getCharNumAtPosition')
   @DocsEditable()
-  int getCharNumAtPosition(Point point) => _blink.BlinkSVGTextContentElement.instance.getCharNumAtPosition_Callback_1_(unwrap_jso(this), unwrap_jso(point));
+  int getCharNumAtPosition(Point point) => _blink.BlinkSVGTextContentElement.instance.getCharNumAtPosition_Callback_1_(this, point);
   
   @DomName('SVGTextContentElement.getComputedTextLength')
   @DocsEditable()
-  num getComputedTextLength() => _blink.BlinkSVGTextContentElement.instance.getComputedTextLength_Callback_0_(unwrap_jso(this));
+  num getComputedTextLength() => _blink.BlinkSVGTextContentElement.instance.getComputedTextLength_Callback_0_(this);
   
   @DomName('SVGTextContentElement.getEndPositionOfChar')
   @DocsEditable()
-  Point getEndPositionOfChar(int charnum) => wrap_jso(_blink.BlinkSVGTextContentElement.instance.getEndPositionOfChar_Callback_1_(unwrap_jso(this), charnum));
+  Point getEndPositionOfChar(int charnum) => _blink.BlinkSVGTextContentElement.instance.getEndPositionOfChar_Callback_1_(this, charnum);
   
   @DomName('SVGTextContentElement.getExtentOfChar')
   @DocsEditable()
-  Rect getExtentOfChar(int charnum) => wrap_jso(_blink.BlinkSVGTextContentElement.instance.getExtentOfChar_Callback_1_(unwrap_jso(this), charnum));
+  Rect getExtentOfChar(int charnum) => _blink.BlinkSVGTextContentElement.instance.getExtentOfChar_Callback_1_(this, charnum);
   
   @DomName('SVGTextContentElement.getNumberOfChars')
   @DocsEditable()
-  int getNumberOfChars() => _blink.BlinkSVGTextContentElement.instance.getNumberOfChars_Callback_0_(unwrap_jso(this));
+  int getNumberOfChars() => _blink.BlinkSVGTextContentElement.instance.getNumberOfChars_Callback_0_(this);
   
   @DomName('SVGTextContentElement.getRotationOfChar')
   @DocsEditable()
-  num getRotationOfChar(int charnum) => _blink.BlinkSVGTextContentElement.instance.getRotationOfChar_Callback_1_(unwrap_jso(this), charnum);
+  num getRotationOfChar(int charnum) => _blink.BlinkSVGTextContentElement.instance.getRotationOfChar_Callback_1_(this, charnum);
   
   @DomName('SVGTextContentElement.getStartPositionOfChar')
   @DocsEditable()
-  Point getStartPositionOfChar(int charnum) => wrap_jso(_blink.BlinkSVGTextContentElement.instance.getStartPositionOfChar_Callback_1_(unwrap_jso(this), charnum));
+  Point getStartPositionOfChar(int charnum) => _blink.BlinkSVGTextContentElement.instance.getStartPositionOfChar_Callback_1_(this, charnum);
   
   @DomName('SVGTextContentElement.getSubStringLength')
   @DocsEditable()
-  num getSubStringLength(int charnum, int nchars) => _blink.BlinkSVGTextContentElement.instance.getSubStringLength_Callback_2_(unwrap_jso(this), charnum, nchars);
+  num getSubStringLength(int charnum, int nchars) => _blink.BlinkSVGTextContentElement.instance.getSubStringLength_Callback_2_(this, charnum, nchars);
   
   @DomName('SVGTextContentElement.selectSubString')
   @DocsEditable()
-  void selectSubString(int charnum, int nchars) => _blink.BlinkSVGTextContentElement.instance.selectSubString_Callback_2_(unwrap_jso(this), charnum, nchars);
+  void selectSubString(int charnum, int nchars) => _blink.BlinkSVGTextContentElement.instance.selectSubString_Callback_2_(this, charnum, nchars);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7886,11 +7224,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TextElement internalCreateTextElement() {
-    return new TextElement._internalWrap();
-  }
-
-  external factory TextElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TextElement.internal_() : super.internal_();
@@ -7919,11 +7253,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TextPathElement internalCreateTextPathElement() {
-    return new TextPathElement._internalWrap();
-  }
-
-  external factory TextPathElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TextPathElement.internal_() : super.internal_();
@@ -7961,19 +7291,19 @@
 
   @DomName('SVGTextPathElement.method')
   @DocsEditable()
-  AnimatedEnumeration get method => wrap_jso(_blink.BlinkSVGTextPathElement.instance.method_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get method => _blink.BlinkSVGTextPathElement.instance.method_Getter_(this);
   
   @DomName('SVGTextPathElement.spacing')
   @DocsEditable()
-  AnimatedEnumeration get spacing => wrap_jso(_blink.BlinkSVGTextPathElement.instance.spacing_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get spacing => _blink.BlinkSVGTextPathElement.instance.spacing_Getter_(this);
   
   @DomName('SVGTextPathElement.startOffset')
   @DocsEditable()
-  AnimatedLength get startOffset => wrap_jso(_blink.BlinkSVGTextPathElement.instance.startOffset_Getter_(unwrap_jso(this)));
+  AnimatedLength get startOffset => _blink.BlinkSVGTextPathElement.instance.startOffset_Getter_(this);
   
   @DomName('SVGTextPathElement.href')
   @DocsEditable()
-  AnimatedString get href => wrap_jso(_blink.BlinkSVGTextPathElement.instance.href_Getter_(unwrap_jso(this)));
+  AnimatedString get href => _blink.BlinkSVGTextPathElement.instance.href_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7992,11 +7322,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TextPositioningElement internalCreateTextPositioningElement() {
-    return new TextPositioningElement._internalWrap();
-  }
-
-  external factory TextPositioningElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TextPositioningElement.internal_() : super.internal_();
@@ -8010,23 +7336,23 @@
 
   @DomName('SVGTextPositioningElement.dx')
   @DocsEditable()
-  AnimatedLengthList get dx => wrap_jso(_blink.BlinkSVGTextPositioningElement.instance.dx_Getter_(unwrap_jso(this)));
+  AnimatedLengthList get dx => _blink.BlinkSVGTextPositioningElement.instance.dx_Getter_(this);
   
   @DomName('SVGTextPositioningElement.dy')
   @DocsEditable()
-  AnimatedLengthList get dy => wrap_jso(_blink.BlinkSVGTextPositioningElement.instance.dy_Getter_(unwrap_jso(this)));
+  AnimatedLengthList get dy => _blink.BlinkSVGTextPositioningElement.instance.dy_Getter_(this);
   
   @DomName('SVGTextPositioningElement.rotate')
   @DocsEditable()
-  AnimatedNumberList get rotate => wrap_jso(_blink.BlinkSVGTextPositioningElement.instance.rotate_Getter_(unwrap_jso(this)));
+  AnimatedNumberList get rotate => _blink.BlinkSVGTextPositioningElement.instance.rotate_Getter_(this);
   
   @DomName('SVGTextPositioningElement.x')
   @DocsEditable()
-  AnimatedLengthList get x => wrap_jso(_blink.BlinkSVGTextPositioningElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLengthList get x => _blink.BlinkSVGTextPositioningElement.instance.x_Getter_(this);
   
   @DomName('SVGTextPositioningElement.y')
   @DocsEditable()
-  AnimatedLengthList get y => wrap_jso(_blink.BlinkSVGTextPositioningElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLengthList get y => _blink.BlinkSVGTextPositioningElement.instance.y_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8049,11 +7375,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static TitleElement internalCreateTitleElement() {
-    return new TitleElement._internalWrap();
-  }
-
-  external factory TitleElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TitleElement.internal_() : super.internal_();
@@ -8080,21 +7402,13 @@
   // To suppress missing implicit constructor warnings.
   factory Transform._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Transform internalCreateTransform() {
-    return new Transform._internalWrap();
-  }
 
-  factory Transform._internalWrap() {
-    return new Transform.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Transform.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGTransform.SVG_TRANSFORM_MATRIX')
   @DocsEditable()
   static const int SVG_TRANSFORM_MATRIX = 1;
@@ -8125,39 +7439,39 @@
 
   @DomName('SVGTransform.angle')
   @DocsEditable()
-  num get angle => _blink.BlinkSVGTransform.instance.angle_Getter_(unwrap_jso(this));
+  num get angle => _blink.BlinkSVGTransform.instance.angle_Getter_(this);
   
   @DomName('SVGTransform.matrix')
   @DocsEditable()
-  Matrix get matrix => wrap_jso(_blink.BlinkSVGTransform.instance.matrix_Getter_(unwrap_jso(this)));
+  Matrix get matrix => _blink.BlinkSVGTransform.instance.matrix_Getter_(this);
   
   @DomName('SVGTransform.type')
   @DocsEditable()
-  int get type => _blink.BlinkSVGTransform.instance.type_Getter_(unwrap_jso(this));
+  int get type => _blink.BlinkSVGTransform.instance.type_Getter_(this);
   
   @DomName('SVGTransform.setMatrix')
   @DocsEditable()
-  void setMatrix(Matrix matrix) => _blink.BlinkSVGTransform.instance.setMatrix_Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.setRotate_Callback_3_(unwrap_jso(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.instance.setScale_Callback_2_(unwrap_jso(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.instance.setSkewX_Callback_1_(unwrap_jso(this), angle);
+  void setSkewX(num angle) => _blink.BlinkSVGTransform.instance.setSkewX_Callback_1_(this, angle);
   
   @DomName('SVGTransform.setSkewY')
   @DocsEditable()
-  void setSkewY(num angle) => _blink.BlinkSVGTransform.instance.setSkewY_Callback_1_(unwrap_jso(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.instance.setTranslate_Callback_2_(unwrap_jso(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
@@ -8174,29 +7488,21 @@
   // To suppress missing implicit constructor warnings.
   factory TransformList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static TransformList internalCreateTransformList() {
-    return new TransformList._internalWrap();
-  }
 
-  factory TransformList._internalWrap() {
-    return new TransformList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TransformList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGTransformList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkSVGTransformList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkSVGTransformList.instance.length_Getter_(this);
   
   @DomName('SVGTransformList.numberOfItems')
   @DocsEditable()
-  int get numberOfItems => _blink.BlinkSVGTransformList.instance.numberOfItems_Getter_(unwrap_jso(this));
+  int get numberOfItems => _blink.BlinkSVGTransformList.instance.numberOfItems_Getter_(this);
   
   Transform operator[](int index) {
     if (index < 0 || index >= length)
@@ -8245,43 +7551,43 @@
   @DomName('SVGTransformList.__setter__')
   @DocsEditable()
   @Experimental() // untriaged
-  void __setter__(int index, Transform newItem) => _blink.BlinkSVGTransformList.instance.$__setter___Callback_2_(unwrap_jso(this), index, unwrap_jso(newItem));
+  void __setter__(int index, Transform newItem) => _blink.BlinkSVGTransformList.instance.$__setter___Callback_2_(this, index, newItem);
   
   @DomName('SVGTransformList.appendItem')
   @DocsEditable()
-  Transform appendItem(Transform newItem) => wrap_jso(_blink.BlinkSVGTransformList.instance.appendItem_Callback_1_(unwrap_jso(this), unwrap_jso(newItem)));
+  Transform appendItem(Transform newItem) => _blink.BlinkSVGTransformList.instance.appendItem_Callback_1_(this, newItem);
   
   @DomName('SVGTransformList.clear')
   @DocsEditable()
-  void clear() => _blink.BlinkSVGTransformList.instance.clear_Callback_0_(unwrap_jso(this));
+  void clear() => _blink.BlinkSVGTransformList.instance.clear_Callback_0_(this);
   
   @DomName('SVGTransformList.consolidate')
   @DocsEditable()
-  Transform consolidate() => wrap_jso(_blink.BlinkSVGTransformList.instance.consolidate_Callback_0_(unwrap_jso(this)));
+  Transform consolidate() => _blink.BlinkSVGTransformList.instance.consolidate_Callback_0_(this);
   
   @DomName('SVGTransformList.createSVGTransformFromMatrix')
   @DocsEditable()
-  Transform createSvgTransformFromMatrix(Matrix matrix) => wrap_jso(_blink.BlinkSVGTransformList.instance.createSVGTransformFromMatrix_Callback_1_(unwrap_jso(this), unwrap_jso(matrix)));
+  Transform createSvgTransformFromMatrix(Matrix matrix) => _blink.BlinkSVGTransformList.instance.createSVGTransformFromMatrix_Callback_1_(this, matrix);
   
   @DomName('SVGTransformList.getItem')
   @DocsEditable()
-  Transform getItem(int index) => wrap_jso(_blink.BlinkSVGTransformList.instance.getItem_Callback_1_(unwrap_jso(this), index));
+  Transform getItem(int index) => _blink.BlinkSVGTransformList.instance.getItem_Callback_1_(this, index);
   
   @DomName('SVGTransformList.initialize')
   @DocsEditable()
-  Transform initialize(Transform newItem) => wrap_jso(_blink.BlinkSVGTransformList.instance.initialize_Callback_1_(unwrap_jso(this), unwrap_jso(newItem)));
+  Transform initialize(Transform newItem) => _blink.BlinkSVGTransformList.instance.initialize_Callback_1_(this, newItem);
   
   @DomName('SVGTransformList.insertItemBefore')
   @DocsEditable()
-  Transform insertItemBefore(Transform newItem, int index) => wrap_jso(_blink.BlinkSVGTransformList.instance.insertItemBefore_Callback_2_(unwrap_jso(this), unwrap_jso(newItem), index));
+  Transform insertItemBefore(Transform newItem, int index) => _blink.BlinkSVGTransformList.instance.insertItemBefore_Callback_2_(this, newItem, index);
   
   @DomName('SVGTransformList.removeItem')
   @DocsEditable()
-  Transform removeItem(int index) => wrap_jso(_blink.BlinkSVGTransformList.instance.removeItem_Callback_1_(unwrap_jso(this), index));
+  Transform removeItem(int index) => _blink.BlinkSVGTransformList.instance.removeItem_Callback_1_(this, index);
   
   @DomName('SVGTransformList.replaceItem')
   @DocsEditable()
-  Transform replaceItem(Transform newItem, int index) => wrap_jso(_blink.BlinkSVGTransformList.instance.replaceItem_Callback_2_(unwrap_jso(this), unwrap_jso(newItem), index));
+  Transform replaceItem(Transform newItem, int index) => _blink.BlinkSVGTransformList.instance.replaceItem_Callback_2_(this, newItem, index);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8298,21 +7604,13 @@
   // To suppress missing implicit constructor warnings.
   factory UnitTypes._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static UnitTypes internalCreateUnitTypes() {
-    return new UnitTypes._internalWrap();
-  }
 
-  factory UnitTypes._internalWrap() {
-    return new UnitTypes.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   UnitTypes.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGUnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX')
   @DocsEditable()
   static const int SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2;
@@ -8365,11 +7663,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static UseElement internalCreateUseElement() {
-    return new UseElement._internalWrap();
-  }
-
-  external factory UseElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   UseElement.internal_() : super.internal_();
@@ -8383,23 +7677,23 @@
 
   @DomName('SVGUseElement.height')
   @DocsEditable()
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGUseElement.instance.height_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGUseElement.instance.height_Getter_(this);
   
   @DomName('SVGUseElement.width')
   @DocsEditable()
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGUseElement.instance.width_Getter_(unwrap_jso(this)));
+  AnimatedLength get width => _blink.BlinkSVGUseElement.instance.width_Getter_(this);
   
   @DomName('SVGUseElement.x')
   @DocsEditable()
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGUseElement.instance.x_Getter_(unwrap_jso(this)));
+  AnimatedLength get x => _blink.BlinkSVGUseElement.instance.x_Getter_(this);
   
   @DomName('SVGUseElement.y')
   @DocsEditable()
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGUseElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get y => _blink.BlinkSVGUseElement.instance.y_Getter_(this);
   
   @DomName('SVGUseElement.href')
   @DocsEditable()
-  AnimatedString get href => wrap_jso(_blink.BlinkSVGUseElement.instance.href_Getter_(unwrap_jso(this)));
+  AnimatedString get href => _blink.BlinkSVGUseElement.instance.href_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8422,11 +7716,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ViewElement internalCreateViewElement() {
-    return new ViewElement._internalWrap();
-  }
-
-  external factory ViewElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ViewElement.internal_() : super.internal_();
@@ -8440,23 +7730,23 @@
 
   @DomName('SVGViewElement.viewTarget')
   @DocsEditable()
-  StringList get viewTarget => wrap_jso(_blink.BlinkSVGViewElement.instance.viewTarget_Getter_(unwrap_jso(this)));
+  StringList get viewTarget => _blink.BlinkSVGViewElement.instance.viewTarget_Getter_(this);
   
   @DomName('SVGViewElement.preserveAspectRatio')
   @DocsEditable()
-  AnimatedPreserveAspectRatio get preserveAspectRatio => wrap_jso(_blink.BlinkSVGViewElement.instance.preserveAspectRatio_Getter_(unwrap_jso(this)));
+  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGViewElement.instance.preserveAspectRatio_Getter_(this);
   
   @DomName('SVGViewElement.viewBox')
   @DocsEditable()
-  AnimatedRect get viewBox => wrap_jso(_blink.BlinkSVGViewElement.instance.viewBox_Getter_(unwrap_jso(this)));
+  AnimatedRect get viewBox => _blink.BlinkSVGViewElement.instance.viewBox_Getter_(this);
   
   @DomName('SVGViewElement.zoomAndPan')
   @DocsEditable()
-  int get zoomAndPan => _blink.BlinkSVGViewElement.instance.zoomAndPan_Getter_(unwrap_jso(this));
+  int get zoomAndPan => _blink.BlinkSVGViewElement.instance.zoomAndPan_Getter_(this);
   
   @DomName('SVGViewElement.zoomAndPan')
   @DocsEditable()
-  set zoomAndPan(int value) => _blink.BlinkSVGViewElement.instance.zoomAndPan_Setter_(unwrap_jso(this), value);
+  set zoomAndPan(int value) => _blink.BlinkSVGViewElement.instance.zoomAndPan_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8473,64 +7763,56 @@
   // To suppress missing implicit constructor warnings.
   factory ViewSpec._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ViewSpec internalCreateViewSpec() {
-    return new ViewSpec._internalWrap();
-  }
 
-  factory ViewSpec._internalWrap() {
-    return new ViewSpec.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ViewSpec.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SVGViewSpec.preserveAspectRatioString')
   @DocsEditable()
-  String get preserveAspectRatioString => _blink.BlinkSVGViewSpec.instance.preserveAspectRatioString_Getter_(unwrap_jso(this));
+  String get preserveAspectRatioString => _blink.BlinkSVGViewSpec.instance.preserveAspectRatioString_Getter_(this);
   
   @DomName('SVGViewSpec.transform')
   @DocsEditable()
-  TransformList get transform => wrap_jso(_blink.BlinkSVGViewSpec.instance.transform_Getter_(unwrap_jso(this)));
+  TransformList get transform => _blink.BlinkSVGViewSpec.instance.transform_Getter_(this);
   
   @DomName('SVGViewSpec.transformString')
   @DocsEditable()
-  String get transformString => _blink.BlinkSVGViewSpec.instance.transformString_Getter_(unwrap_jso(this));
+  String get transformString => _blink.BlinkSVGViewSpec.instance.transformString_Getter_(this);
   
   @DomName('SVGViewSpec.viewBoxString')
   @DocsEditable()
-  String get viewBoxString => _blink.BlinkSVGViewSpec.instance.viewBoxString_Getter_(unwrap_jso(this));
+  String get viewBoxString => _blink.BlinkSVGViewSpec.instance.viewBoxString_Getter_(this);
   
   @DomName('SVGViewSpec.viewTarget')
   @DocsEditable()
-  SvgElement get viewTarget => wrap_jso(_blink.BlinkSVGViewSpec.instance.viewTarget_Getter_(unwrap_jso(this)));
+  SvgElement get viewTarget => _blink.BlinkSVGViewSpec.instance.viewTarget_Getter_(this);
   
   @DomName('SVGViewSpec.viewTargetString')
   @DocsEditable()
-  String get viewTargetString => _blink.BlinkSVGViewSpec.instance.viewTargetString_Getter_(unwrap_jso(this));
+  String get viewTargetString => _blink.BlinkSVGViewSpec.instance.viewTargetString_Getter_(this);
   
   @DomName('SVGViewSpec.preserveAspectRatio')
   @DocsEditable()
   @Experimental() // nonstandard
-  AnimatedPreserveAspectRatio get preserveAspectRatio => wrap_jso(_blink.BlinkSVGViewSpec.instance.preserveAspectRatio_Getter_(unwrap_jso(this)));
+  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGViewSpec.instance.preserveAspectRatio_Getter_(this);
   
   @DomName('SVGViewSpec.viewBox')
   @DocsEditable()
   @Experimental() // nonstandard
-  AnimatedRect get viewBox => wrap_jso(_blink.BlinkSVGViewSpec.instance.viewBox_Getter_(unwrap_jso(this)));
+  AnimatedRect get viewBox => _blink.BlinkSVGViewSpec.instance.viewBox_Getter_(this);
   
   @DomName('SVGViewSpec.zoomAndPan')
   @DocsEditable()
   @Experimental() // nonstandard
-  int get zoomAndPan => _blink.BlinkSVGViewSpec.instance.zoomAndPan_Getter_(unwrap_jso(this));
+  int get zoomAndPan => _blink.BlinkSVGViewSpec.instance.zoomAndPan_Getter_(this);
   
   @DomName('SVGViewSpec.zoomAndPan')
   @DocsEditable()
   @Experimental() // nonstandard
-  set zoomAndPan(int value) => _blink.BlinkSVGViewSpec.instance.zoomAndPan_Setter_(unwrap_jso(this), value);
+  set zoomAndPan(int value) => _blink.BlinkSVGViewSpec.instance.zoomAndPan_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8584,11 +7866,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ZoomEvent internalCreateZoomEvent() {
-    return new ZoomEvent._internalWrap();
-  }
-
-  external factory ZoomEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ZoomEvent.internal_() : super.internal_();
@@ -8596,23 +7874,23 @@
 
   @DomName('SVGZoomEvent.newScale')
   @DocsEditable()
-  num get newScale => _blink.BlinkSVGZoomEvent.instance.newScale_Getter_(unwrap_jso(this));
+  num get newScale => _blink.BlinkSVGZoomEvent.instance.newScale_Getter_(this);
   
   @DomName('SVGZoomEvent.newTranslate')
   @DocsEditable()
-  Point get newTranslate => wrap_jso(_blink.BlinkSVGZoomEvent.instance.newTranslate_Getter_(unwrap_jso(this)));
+  Point get newTranslate => _blink.BlinkSVGZoomEvent.instance.newTranslate_Getter_(this);
   
   @DomName('SVGZoomEvent.previousScale')
   @DocsEditable()
-  num get previousScale => _blink.BlinkSVGZoomEvent.instance.previousScale_Getter_(unwrap_jso(this));
+  num get previousScale => _blink.BlinkSVGZoomEvent.instance.previousScale_Getter_(this);
   
   @DomName('SVGZoomEvent.previousTranslate')
   @DocsEditable()
-  Point get previousTranslate => wrap_jso(_blink.BlinkSVGZoomEvent.instance.previousTranslate_Getter_(unwrap_jso(this)));
+  Point get previousTranslate => _blink.BlinkSVGZoomEvent.instance.previousTranslate_Getter_(this);
   
   @DomName('SVGZoomEvent.zoomRectScreen')
   @DocsEditable()
-  Rect get zoomRectScreen => wrap_jso(_blink.BlinkSVGZoomEvent.instance.zoomRectScreen_Getter_(unwrap_jso(this)));
+  Rect get zoomRectScreen => _blink.BlinkSVGZoomEvent.instance.zoomRectScreen_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8631,11 +7909,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _GradientElement internalCreate_GradientElement() {
-    return new _GradientElement._internalWrap();
-  }
-
-  external factory _GradientElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _GradientElement.internal_() : super.internal_();
@@ -8665,19 +7939,19 @@
 
   @DomName('SVGGradientElement.gradientTransform')
   @DocsEditable()
-  AnimatedTransformList get gradientTransform => wrap_jso(_blink.BlinkSVGGradientElement.instance.gradientTransform_Getter_(unwrap_jso(this)));
+  AnimatedTransformList get gradientTransform => _blink.BlinkSVGGradientElement.instance.gradientTransform_Getter_(this);
   
   @DomName('SVGGradientElement.gradientUnits')
   @DocsEditable()
-  AnimatedEnumeration get gradientUnits => wrap_jso(_blink.BlinkSVGGradientElement.instance.gradientUnits_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get gradientUnits => _blink.BlinkSVGGradientElement.instance.gradientUnits_Getter_(this);
   
   @DomName('SVGGradientElement.spreadMethod')
   @DocsEditable()
-  AnimatedEnumeration get spreadMethod => wrap_jso(_blink.BlinkSVGGradientElement.instance.spreadMethod_Getter_(unwrap_jso(this)));
+  AnimatedEnumeration get spreadMethod => _blink.BlinkSVGGradientElement.instance.spreadMethod_Getter_(this);
   
   @DomName('SVGGradientElement.href')
   @DocsEditable()
-  AnimatedString get href => wrap_jso(_blink.BlinkSVGGradientElement.instance.href_Getter_(unwrap_jso(this)));
+  AnimatedString get href => _blink.BlinkSVGGradientElement.instance.href_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8696,11 +7970,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _SVGComponentTransferFunctionElement internalCreate_SVGComponentTransferFunctionElement() {
-    return new _SVGComponentTransferFunctionElement._internalWrap();
-  }
-
-  external factory _SVGComponentTransferFunctionElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _SVGComponentTransferFunctionElement.internal_() : super.internal_();
@@ -8731,11 +8001,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _SVGCursorElement internalCreate_SVGCursorElement() {
-    return new _SVGCursorElement._internalWrap();
-  }
-
-  external factory _SVGCursorElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _SVGCursorElement.internal_() : super.internal_();
@@ -8751,11 +8017,11 @@
   static bool get supported => true;
 
   // Override these methods for Dartium _SVGCursorElement can't be abstract.
-  StringList get requiredExtensions => wrap_jso(_blink.BlinkSVGCursorElement.instance.requiredExtensions_Getter_(unwrap_jso(this)));
-  StringList get requiredFeatures => wrap_jso(_blink.BlinkSVGCursorElement.instance.requiredFeatures_Getter_(unwrap_jso(this)));
-  StringList get systemLanguage => wrap_jso(_blink.BlinkSVGCursorElement.instance.systemLanguage_Getter_(unwrap_jso(this)));
-  AnimatedString get href => wrap_jso(_blink.BlinkSVGCursorElement.instance.href_Getter_(unwrap_jso(this)));
-  bool hasExtension(String extension) => _blink.BlinkSVGCursorElement.instance.hasExtension_Callback_1_(unwrap_jso(this), extension);
+  StringList get requiredExtensions => _blink.BlinkSVGCursorElement.instance.requiredExtensions_Getter_(this);
+  StringList get requiredFeatures => _blink.BlinkSVGCursorElement.instance.requiredFeatures_Getter_(this);
+  StringList get systemLanguage => _blink.BlinkSVGCursorElement.instance.systemLanguage_Getter_(this);
+  AnimatedString get href => _blink.BlinkSVGCursorElement.instance.href_Getter_(this);
+  bool hasExtension(String extension) => _blink.BlinkSVGCursorElement.instance.hasExtension_Callback_1_(this, extension);
 }
 
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8772,11 +8038,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _SVGFEDropShadowElement internalCreate_SVGFEDropShadowElement() {
-    return new _SVGFEDropShadowElement._internalWrap();
-  }
-
-  external factory _SVGFEDropShadowElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _SVGFEDropShadowElement.internal_() : super.internal_();
@@ -8789,11 +8051,11 @@
   _SVGFEDropShadowElement.created() : super.created();
 
   // Override these methods for Dartium _SVGFEDropShadowElement can't be abstract.
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFEDropShadowElement.instance.height_Getter_(unwrap_jso(this)));
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFEDropShadowElement.instance.result_Getter_(unwrap_jso(this)));
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFEDropShadowElement.instance.width_Getter_(unwrap_jso(this)));
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFEDropShadowElement.instance.x_Getter_(unwrap_jso(this)));
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFEDropShadowElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFEDropShadowElement.instance.height_Getter_(this);
+  AnimatedString get result => _blink.BlinkSVGFEDropShadowElement.instance.result_Getter_(this);
+  AnimatedLength get width => _blink.BlinkSVGFEDropShadowElement.instance.width_Getter_(this);
+  AnimatedLength get x => _blink.BlinkSVGFEDropShadowElement.instance.x_Getter_(this);
+  AnimatedLength get y => _blink.BlinkSVGFEDropShadowElement.instance.y_Getter_(this);
 }
 
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8813,11 +8075,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static _SVGMPathElement internalCreate_SVGMPathElement() {
-    return new _SVGMPathElement._internalWrap();
-  }
-
-  external factory _SVGMPathElement._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _SVGMPathElement.internal_() : super.internal_();
@@ -8830,6 +8088,6 @@
   _SVGMPathElement.created() : super.created();
 
   // Override these methods for Dartium _SVGMPathElement can't be abstract.
-  AnimatedString get href => wrap_jso(_blink.BlinkSVGMPathElement.instance.href_Getter_(unwrap_jso(this)));
+  AnimatedString get href => _blink.BlinkSVGMPathElement.instance.href_Getter_(this);
 }
 
diff --git a/sdk/lib/web_audio/dartium/web_audio_dartium.dart b/sdk/lib/web_audio/dartium/web_audio_dartium.dart
index d318a3d..c73b31b 100644
--- a/sdk/lib/web_audio/dartium/web_audio_dartium.dart
+++ b/sdk/lib/web_audio/dartium/web_audio_dartium.dart
@@ -21,68 +21,34 @@
 // FIXME: Can we make this private?
 @Deprecated("Internal Use Only")
 final web_audioBlinkMap = {
-  'AnalyserNode': () => AnalyserNode,
-  'AudioBuffer': () => AudioBuffer,
-  'AudioBufferSourceNode': () => AudioBufferSourceNode,
-  'AudioContext': () => AudioContext,
-  'AudioDestinationNode': () => AudioDestinationNode,
-  'AudioListener': () => AudioListener,
-  'AudioNode': () => AudioNode,
-  'AudioParam': () => AudioParam,
-  'AudioProcessingEvent': () => AudioProcessingEvent,
-  'AudioSourceNode': () => AudioSourceNode,
-  'BiquadFilterNode': () => BiquadFilterNode,
-  'ChannelMergerNode': () => ChannelMergerNode,
-  'ChannelSplitterNode': () => ChannelSplitterNode,
-  'ConvolverNode': () => ConvolverNode,
-  'DelayNode': () => DelayNode,
-  'DynamicsCompressorNode': () => DynamicsCompressorNode,
-  'GainNode': () => GainNode,
-  'MediaElementAudioSourceNode': () => MediaElementAudioSourceNode,
-  'MediaStreamAudioDestinationNode': () => MediaStreamAudioDestinationNode,
-  'MediaStreamAudioSourceNode': () => MediaStreamAudioSourceNode,
-  'OfflineAudioCompletionEvent': () => OfflineAudioCompletionEvent,
-  'OfflineAudioContext': () => OfflineAudioContext,
-  'OscillatorNode': () => OscillatorNode,
-  'PannerNode': () => PannerNode,
-  'PeriodicWave': () => PeriodicWave,
-  'ScriptProcessorNode': () => ScriptProcessorNode,
-  'StereoPannerNode': () => StereoPannerNode,
-  'WaveShaperNode': () => WaveShaperNode,
-
-};
-
-// FIXME: Can we make this private?
-@Deprecated("Internal Use Only")
-final web_audioBlinkFunctionMap = {
-  'AnalyserNode': () => AnalyserNode.internalCreateAnalyserNode,
-  'AudioBuffer': () => AudioBuffer.internalCreateAudioBuffer,
-  'AudioBufferSourceNode': () => AudioBufferSourceNode.internalCreateAudioBufferSourceNode,
-  'AudioContext': () => AudioContext.internalCreateAudioContext,
-  'AudioDestinationNode': () => AudioDestinationNode.internalCreateAudioDestinationNode,
-  'AudioListener': () => AudioListener.internalCreateAudioListener,
-  'AudioNode': () => AudioNode.internalCreateAudioNode,
-  'AudioParam': () => AudioParam.internalCreateAudioParam,
-  'AudioProcessingEvent': () => AudioProcessingEvent.internalCreateAudioProcessingEvent,
-  'AudioSourceNode': () => AudioSourceNode.internalCreateAudioSourceNode,
-  'BiquadFilterNode': () => BiquadFilterNode.internalCreateBiquadFilterNode,
-  'ChannelMergerNode': () => ChannelMergerNode.internalCreateChannelMergerNode,
-  'ChannelSplitterNode': () => ChannelSplitterNode.internalCreateChannelSplitterNode,
-  'ConvolverNode': () => ConvolverNode.internalCreateConvolverNode,
-  'DelayNode': () => DelayNode.internalCreateDelayNode,
-  'DynamicsCompressorNode': () => DynamicsCompressorNode.internalCreateDynamicsCompressorNode,
-  'GainNode': () => GainNode.internalCreateGainNode,
-  'MediaElementAudioSourceNode': () => MediaElementAudioSourceNode.internalCreateMediaElementAudioSourceNode,
-  'MediaStreamAudioDestinationNode': () => MediaStreamAudioDestinationNode.internalCreateMediaStreamAudioDestinationNode,
-  'MediaStreamAudioSourceNode': () => MediaStreamAudioSourceNode.internalCreateMediaStreamAudioSourceNode,
-  'OfflineAudioCompletionEvent': () => OfflineAudioCompletionEvent.internalCreateOfflineAudioCompletionEvent,
-  'OfflineAudioContext': () => OfflineAudioContext.internalCreateOfflineAudioContext,
-  'OscillatorNode': () => OscillatorNode.internalCreateOscillatorNode,
-  'PannerNode': () => PannerNode.internalCreatePannerNode,
-  'PeriodicWave': () => PeriodicWave.internalCreatePeriodicWave,
-  'ScriptProcessorNode': () => ScriptProcessorNode.internalCreateScriptProcessorNode,
-  'StereoPannerNode': () => StereoPannerNode.internalCreateStereoPannerNode,
-  'WaveShaperNode': () => WaveShaperNode.internalCreateWaveShaperNode,
+  'AnalyserNode': () => AnalyserNode.instanceRuntimeType,
+  'AudioBuffer': () => AudioBuffer.instanceRuntimeType,
+  'AudioBufferSourceNode': () => AudioBufferSourceNode.instanceRuntimeType,
+  'AudioContext': () => AudioContext.instanceRuntimeType,
+  'AudioDestinationNode': () => AudioDestinationNode.instanceRuntimeType,
+  'AudioListener': () => AudioListener.instanceRuntimeType,
+  'AudioNode': () => AudioNode.instanceRuntimeType,
+  'AudioParam': () => AudioParam.instanceRuntimeType,
+  'AudioProcessingEvent': () => AudioProcessingEvent.instanceRuntimeType,
+  'AudioSourceNode': () => AudioSourceNode.instanceRuntimeType,
+  'BiquadFilterNode': () => BiquadFilterNode.instanceRuntimeType,
+  'ChannelMergerNode': () => ChannelMergerNode.instanceRuntimeType,
+  'ChannelSplitterNode': () => ChannelSplitterNode.instanceRuntimeType,
+  'ConvolverNode': () => ConvolverNode.instanceRuntimeType,
+  'DelayNode': () => DelayNode.instanceRuntimeType,
+  'DynamicsCompressorNode': () => DynamicsCompressorNode.instanceRuntimeType,
+  'GainNode': () => GainNode.instanceRuntimeType,
+  'MediaElementAudioSourceNode': () => MediaElementAudioSourceNode.instanceRuntimeType,
+  'MediaStreamAudioDestinationNode': () => MediaStreamAudioDestinationNode.instanceRuntimeType,
+  'MediaStreamAudioSourceNode': () => MediaStreamAudioSourceNode.instanceRuntimeType,
+  'OfflineAudioCompletionEvent': () => OfflineAudioCompletionEvent.instanceRuntimeType,
+  'OfflineAudioContext': () => OfflineAudioContext.instanceRuntimeType,
+  'OscillatorNode': () => OscillatorNode.instanceRuntimeType,
+  'PannerNode': () => PannerNode.instanceRuntimeType,
+  'PeriodicWave': () => PeriodicWave.instanceRuntimeType,
+  'ScriptProcessorNode': () => ScriptProcessorNode.instanceRuntimeType,
+  'StereoPannerNode': () => StereoPannerNode.instanceRuntimeType,
+  'WaveShaperNode': () => WaveShaperNode.instanceRuntimeType,
 
 };
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -102,11 +68,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static AnalyserNode internalCreateAnalyserNode() {
-    return new AnalyserNode._internalWrap();
-  }
-
-  external factory AnalyserNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AnalyserNode.internal_() : super.internal_();
@@ -114,56 +76,56 @@
 
   @DomName('AnalyserNode.fftSize')
   @DocsEditable()
-  int get fftSize => _blink.BlinkAnalyserNode.instance.fftSize_Getter_(unwrap_jso(this));
+  int get fftSize => _blink.BlinkAnalyserNode.instance.fftSize_Getter_(this);
   
   @DomName('AnalyserNode.fftSize')
   @DocsEditable()
-  set fftSize(int value) => _blink.BlinkAnalyserNode.instance.fftSize_Setter_(unwrap_jso(this), value);
+  set fftSize(int value) => _blink.BlinkAnalyserNode.instance.fftSize_Setter_(this, value);
   
   @DomName('AnalyserNode.frequencyBinCount')
   @DocsEditable()
-  int get frequencyBinCount => _blink.BlinkAnalyserNode.instance.frequencyBinCount_Getter_(unwrap_jso(this));
+  int get frequencyBinCount => _blink.BlinkAnalyserNode.instance.frequencyBinCount_Getter_(this);
   
   @DomName('AnalyserNode.maxDecibels')
   @DocsEditable()
-  num get maxDecibels => _blink.BlinkAnalyserNode.instance.maxDecibels_Getter_(unwrap_jso(this));
+  num get maxDecibels => _blink.BlinkAnalyserNode.instance.maxDecibels_Getter_(this);
   
   @DomName('AnalyserNode.maxDecibels')
   @DocsEditable()
-  set maxDecibels(num value) => _blink.BlinkAnalyserNode.instance.maxDecibels_Setter_(unwrap_jso(this), value);
+  set maxDecibels(num value) => _blink.BlinkAnalyserNode.instance.maxDecibels_Setter_(this, value);
   
   @DomName('AnalyserNode.minDecibels')
   @DocsEditable()
-  num get minDecibels => _blink.BlinkAnalyserNode.instance.minDecibels_Getter_(unwrap_jso(this));
+  num get minDecibels => _blink.BlinkAnalyserNode.instance.minDecibels_Getter_(this);
   
   @DomName('AnalyserNode.minDecibels')
   @DocsEditable()
-  set minDecibels(num value) => _blink.BlinkAnalyserNode.instance.minDecibels_Setter_(unwrap_jso(this), value);
+  set minDecibels(num value) => _blink.BlinkAnalyserNode.instance.minDecibels_Setter_(this, value);
   
   @DomName('AnalyserNode.smoothingTimeConstant')
   @DocsEditable()
-  num get smoothingTimeConstant => _blink.BlinkAnalyserNode.instance.smoothingTimeConstant_Getter_(unwrap_jso(this));
+  num get smoothingTimeConstant => _blink.BlinkAnalyserNode.instance.smoothingTimeConstant_Getter_(this);
   
   @DomName('AnalyserNode.smoothingTimeConstant')
   @DocsEditable()
-  set smoothingTimeConstant(num value) => _blink.BlinkAnalyserNode.instance.smoothingTimeConstant_Setter_(unwrap_jso(this), value);
+  set smoothingTimeConstant(num value) => _blink.BlinkAnalyserNode.instance.smoothingTimeConstant_Setter_(this, value);
   
   @DomName('AnalyserNode.getByteFrequencyData')
   @DocsEditable()
-  void getByteFrequencyData(Uint8List array) => _blink.BlinkAnalyserNode.instance.getByteFrequencyData_Callback_1_(unwrap_jso(this), unwrap_jso(array));
+  void getByteFrequencyData(Uint8List array) => _blink.BlinkAnalyserNode.instance.getByteFrequencyData_Callback_1_(this, array);
   
   @DomName('AnalyserNode.getByteTimeDomainData')
   @DocsEditable()
-  void getByteTimeDomainData(Uint8List array) => _blink.BlinkAnalyserNode.instance.getByteTimeDomainData_Callback_1_(unwrap_jso(this), unwrap_jso(array));
+  void getByteTimeDomainData(Uint8List array) => _blink.BlinkAnalyserNode.instance.getByteTimeDomainData_Callback_1_(this, array);
   
   @DomName('AnalyserNode.getFloatFrequencyData')
   @DocsEditable()
-  void getFloatFrequencyData(Float32List array) => _blink.BlinkAnalyserNode.instance.getFloatFrequencyData_Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.getFloatTimeDomainData_Callback_1_(unwrap_jso(this), unwrap_jso(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
@@ -181,58 +143,50 @@
   // To suppress missing implicit constructor warnings.
   factory AudioBuffer._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AudioBuffer internalCreateAudioBuffer() {
-    return new AudioBuffer._internalWrap();
-  }
 
-  factory AudioBuffer._internalWrap() {
-    return new AudioBuffer.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AudioBuffer.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('AudioBuffer.duration')
   @DocsEditable()
-  num get duration => _blink.BlinkAudioBuffer.instance.duration_Getter_(unwrap_jso(this));
+  num get duration => _blink.BlinkAudioBuffer.instance.duration_Getter_(this);
   
   @DomName('AudioBuffer.length')
   @DocsEditable()
-  int get length => _blink.BlinkAudioBuffer.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkAudioBuffer.instance.length_Getter_(this);
   
   @DomName('AudioBuffer.numberOfChannels')
   @DocsEditable()
-  int get numberOfChannels => _blink.BlinkAudioBuffer.instance.numberOfChannels_Getter_(unwrap_jso(this));
+  int get numberOfChannels => _blink.BlinkAudioBuffer.instance.numberOfChannels_Getter_(this);
   
   @DomName('AudioBuffer.sampleRate')
   @DocsEditable()
-  num get sampleRate => _blink.BlinkAudioBuffer.instance.sampleRate_Getter_(unwrap_jso(this));
+  num get sampleRate => _blink.BlinkAudioBuffer.instance.sampleRate_Getter_(this);
   
   void copyFromChannel(Float32List destination, int channelNumber, [int startInChannel]) {
     if (startInChannel != null) {
-      _blink.BlinkAudioBuffer.instance.copyFromChannel_Callback_3_(unwrap_jso(this), unwrap_jso(destination), channelNumber, startInChannel);
+      _blink.BlinkAudioBuffer.instance.copyFromChannel_Callback_3_(this, destination, channelNumber, startInChannel);
       return;
     }
-    _blink.BlinkAudioBuffer.instance.copyFromChannel_Callback_2_(unwrap_jso(this), unwrap_jso(destination), channelNumber);
+    _blink.BlinkAudioBuffer.instance.copyFromChannel_Callback_2_(this, destination, channelNumber);
     return;
   }
 
   void copyToChannel(Float32List source, int channelNumber, [int startInChannel]) {
     if (startInChannel != null) {
-      _blink.BlinkAudioBuffer.instance.copyToChannel_Callback_3_(unwrap_jso(this), unwrap_jso(source), channelNumber, startInChannel);
+      _blink.BlinkAudioBuffer.instance.copyToChannel_Callback_3_(this, source, channelNumber, startInChannel);
       return;
     }
-    _blink.BlinkAudioBuffer.instance.copyToChannel_Callback_2_(unwrap_jso(this), unwrap_jso(source), channelNumber);
+    _blink.BlinkAudioBuffer.instance.copyToChannel_Callback_2_(this, source, channelNumber);
     return;
   }
 
   @DomName('AudioBuffer.getChannelData')
   @DocsEditable()
-  Float32List getChannelData(int channelIndex) => wrap_jso(_blink.BlinkAudioBuffer.instance.getChannelData_Callback_1_(unwrap_jso(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
@@ -276,11 +230,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static AudioBufferSourceNode internalCreateAudioBufferSourceNode() {
-    return new AudioBufferSourceNode._internalWrap();
-  }
-
-  external factory AudioBufferSourceNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AudioBufferSourceNode.internal_() : super.internal_();
@@ -288,68 +238,68 @@
 
   @DomName('AudioBufferSourceNode.buffer')
   @DocsEditable()
-  AudioBuffer get buffer => wrap_jso(_blink.BlinkAudioBufferSourceNode.instance.buffer_Getter_(unwrap_jso(this)));
+  AudioBuffer get buffer => _blink.BlinkAudioBufferSourceNode.instance.buffer_Getter_(this);
   
   @DomName('AudioBufferSourceNode.buffer')
   @DocsEditable()
-  set buffer(AudioBuffer value) => _blink.BlinkAudioBufferSourceNode.instance.buffer_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set buffer(AudioBuffer value) => _blink.BlinkAudioBufferSourceNode.instance.buffer_Setter_(this, value);
   
   @DomName('AudioBufferSourceNode.detune')
   @DocsEditable()
   @Experimental() // untriaged
-  AudioParam get detune => wrap_jso(_blink.BlinkAudioBufferSourceNode.instance.detune_Getter_(unwrap_jso(this)));
+  AudioParam get detune => _blink.BlinkAudioBufferSourceNode.instance.detune_Getter_(this);
   
   @DomName('AudioBufferSourceNode.loop')
   @DocsEditable()
-  bool get loop => _blink.BlinkAudioBufferSourceNode.instance.loop_Getter_(unwrap_jso(this));
+  bool get loop => _blink.BlinkAudioBufferSourceNode.instance.loop_Getter_(this);
   
   @DomName('AudioBufferSourceNode.loop')
   @DocsEditable()
-  set loop(bool value) => _blink.BlinkAudioBufferSourceNode.instance.loop_Setter_(unwrap_jso(this), value);
+  set loop(bool value) => _blink.BlinkAudioBufferSourceNode.instance.loop_Setter_(this, value);
   
   @DomName('AudioBufferSourceNode.loopEnd')
   @DocsEditable()
-  num get loopEnd => _blink.BlinkAudioBufferSourceNode.instance.loopEnd_Getter_(unwrap_jso(this));
+  num get loopEnd => _blink.BlinkAudioBufferSourceNode.instance.loopEnd_Getter_(this);
   
   @DomName('AudioBufferSourceNode.loopEnd')
   @DocsEditable()
-  set loopEnd(num value) => _blink.BlinkAudioBufferSourceNode.instance.loopEnd_Setter_(unwrap_jso(this), value);
+  set loopEnd(num value) => _blink.BlinkAudioBufferSourceNode.instance.loopEnd_Setter_(this, value);
   
   @DomName('AudioBufferSourceNode.loopStart')
   @DocsEditable()
-  num get loopStart => _blink.BlinkAudioBufferSourceNode.instance.loopStart_Getter_(unwrap_jso(this));
+  num get loopStart => _blink.BlinkAudioBufferSourceNode.instance.loopStart_Getter_(this);
   
   @DomName('AudioBufferSourceNode.loopStart')
   @DocsEditable()
-  set loopStart(num value) => _blink.BlinkAudioBufferSourceNode.instance.loopStart_Setter_(unwrap_jso(this), value);
+  set loopStart(num value) => _blink.BlinkAudioBufferSourceNode.instance.loopStart_Setter_(this, value);
   
   @DomName('AudioBufferSourceNode.playbackRate')
   @DocsEditable()
-  AudioParam get playbackRate => wrap_jso(_blink.BlinkAudioBufferSourceNode.instance.playbackRate_Getter_(unwrap_jso(this)));
+  AudioParam get playbackRate => _blink.BlinkAudioBufferSourceNode.instance.playbackRate_Getter_(this);
   
   void start([num when, num grainOffset, num grainDuration]) {
     if (grainDuration != null) {
-      _blink.BlinkAudioBufferSourceNode.instance.start_Callback_3_(unwrap_jso(this), when, grainOffset, grainDuration);
+      _blink.BlinkAudioBufferSourceNode.instance.start_Callback_3_(this, when, grainOffset, grainDuration);
       return;
     }
     if (grainOffset != null) {
-      _blink.BlinkAudioBufferSourceNode.instance.start_Callback_2_(unwrap_jso(this), when, grainOffset);
+      _blink.BlinkAudioBufferSourceNode.instance.start_Callback_2_(this, when, grainOffset);
       return;
     }
     if (when != null) {
-      _blink.BlinkAudioBufferSourceNode.instance.start_Callback_1_(unwrap_jso(this), when);
+      _blink.BlinkAudioBufferSourceNode.instance.start_Callback_1_(this, when);
       return;
     }
-    _blink.BlinkAudioBufferSourceNode.instance.start_Callback_0_(unwrap_jso(this));
+    _blink.BlinkAudioBufferSourceNode.instance.start_Callback_0_(this);
     return;
   }
 
   void stop([num when]) {
     if (when != null) {
-      _blink.BlinkAudioBufferSourceNode.instance.stop_Callback_1_(unwrap_jso(this), when);
+      _blink.BlinkAudioBufferSourceNode.instance.stop_Callback_1_(this, when);
       return;
     }
-    _blink.BlinkAudioBufferSourceNode.instance.stop_Callback_0_(unwrap_jso(this));
+    _blink.BlinkAudioBufferSourceNode.instance.stop_Callback_0_(this);
     return;
   }
 
@@ -377,16 +327,12 @@
   @DomName('AudioContext.AudioContext')
   @DocsEditable()
   factory AudioContext() {
-    return wrap_jso(_blink.BlinkAudioContext.instance.constructorCallback_0_());
+    return _blink.BlinkAudioContext.instance.constructorCallback_0_();
   }
 
 
   @Deprecated("Internal Use Only")
-  static AudioContext internalCreateAudioContext() {
-    return new AudioContext._internalWrap();
-  }
-
-  external factory AudioContext._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AudioContext.internal_() : super.internal_();
@@ -397,144 +343,144 @@
 
   @DomName('AudioContext.currentTime')
   @DocsEditable()
-  num get currentTime => _blink.BlinkAudioContext.instance.currentTime_Getter_(unwrap_jso(this));
+  num get currentTime => _blink.BlinkAudioContext.instance.currentTime_Getter_(this);
   
   @DomName('AudioContext.destination')
   @DocsEditable()
-  AudioDestinationNode get destination => wrap_jso(_blink.BlinkAudioContext.instance.destination_Getter_(unwrap_jso(this)));
+  AudioDestinationNode get destination => _blink.BlinkAudioContext.instance.destination_Getter_(this);
   
   @DomName('AudioContext.listener')
   @DocsEditable()
-  AudioListener get listener => wrap_jso(_blink.BlinkAudioContext.instance.listener_Getter_(unwrap_jso(this)));
+  AudioListener get listener => _blink.BlinkAudioContext.instance.listener_Getter_(this);
   
   @DomName('AudioContext.sampleRate')
   @DocsEditable()
-  num get sampleRate => _blink.BlinkAudioContext.instance.sampleRate_Getter_(unwrap_jso(this));
+  num get sampleRate => _blink.BlinkAudioContext.instance.sampleRate_Getter_(this);
   
   @DomName('AudioContext.state')
   @DocsEditable()
   @Experimental() // untriaged
-  String get state => _blink.BlinkAudioContext.instance.state_Getter_(unwrap_jso(this));
+  String get state => _blink.BlinkAudioContext.instance.state_Getter_(this);
   
   @DomName('AudioContext.close')
   @DocsEditable()
   @Experimental() // untriaged
-  Future close() => wrap_jso(_blink.BlinkAudioContext.instance.close_Callback_0_(unwrap_jso(this)));
+  Future close() => convertNativePromiseToDartFuture(_blink.BlinkAudioContext.instance.close_Callback_0_(this));
   
   @DomName('AudioContext.createAnalyser')
   @DocsEditable()
-  AnalyserNode createAnalyser() => wrap_jso(_blink.BlinkAudioContext.instance.createAnalyser_Callback_0_(unwrap_jso(this)));
+  AnalyserNode createAnalyser() => _blink.BlinkAudioContext.instance.createAnalyser_Callback_0_(this);
   
   @DomName('AudioContext.createBiquadFilter')
   @DocsEditable()
-  BiquadFilterNode createBiquadFilter() => wrap_jso(_blink.BlinkAudioContext.instance.createBiquadFilter_Callback_0_(unwrap_jso(this)));
+  BiquadFilterNode createBiquadFilter() => _blink.BlinkAudioContext.instance.createBiquadFilter_Callback_0_(this);
   
   @DomName('AudioContext.createBuffer')
   @DocsEditable()
-  AudioBuffer createBuffer(int numberOfChannels, int numberOfFrames, num sampleRate) => wrap_jso(_blink.BlinkAudioContext.instance.createBuffer_Callback_3_(unwrap_jso(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() => wrap_jso(_blink.BlinkAudioContext.instance.createBufferSource_Callback_0_(unwrap_jso(this)));
+  AudioBufferSourceNode createBufferSource() => _blink.BlinkAudioContext.instance.createBufferSource_Callback_0_(this);
   
   ChannelMergerNode createChannelMerger([int numberOfInputs]) {
     if (numberOfInputs != null) {
-      return wrap_jso(_blink.BlinkAudioContext.instance.createChannelMerger_Callback_1_(unwrap_jso(this), numberOfInputs));
+      return _blink.BlinkAudioContext.instance.createChannelMerger_Callback_1_(this, numberOfInputs);
     }
-    return wrap_jso(_blink.BlinkAudioContext.instance.createChannelMerger_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkAudioContext.instance.createChannelMerger_Callback_0_(this);
   }
 
   ChannelSplitterNode createChannelSplitter([int numberOfOutputs]) {
     if (numberOfOutputs != null) {
-      return wrap_jso(_blink.BlinkAudioContext.instance.createChannelSplitter_Callback_1_(unwrap_jso(this), numberOfOutputs));
+      return _blink.BlinkAudioContext.instance.createChannelSplitter_Callback_1_(this, numberOfOutputs);
     }
-    return wrap_jso(_blink.BlinkAudioContext.instance.createChannelSplitter_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkAudioContext.instance.createChannelSplitter_Callback_0_(this);
   }
 
   @DomName('AudioContext.createConvolver')
   @DocsEditable()
-  ConvolverNode createConvolver() => wrap_jso(_blink.BlinkAudioContext.instance.createConvolver_Callback_0_(unwrap_jso(this)));
+  ConvolverNode createConvolver() => _blink.BlinkAudioContext.instance.createConvolver_Callback_0_(this);
   
   DelayNode createDelay([num maxDelayTime]) {
     if (maxDelayTime != null) {
-      return wrap_jso(_blink.BlinkAudioContext.instance.createDelay_Callback_1_(unwrap_jso(this), maxDelayTime));
+      return _blink.BlinkAudioContext.instance.createDelay_Callback_1_(this, maxDelayTime);
     }
-    return wrap_jso(_blink.BlinkAudioContext.instance.createDelay_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkAudioContext.instance.createDelay_Callback_0_(this);
   }
 
   @DomName('AudioContext.createDynamicsCompressor')
   @DocsEditable()
-  DynamicsCompressorNode createDynamicsCompressor() => wrap_jso(_blink.BlinkAudioContext.instance.createDynamicsCompressor_Callback_0_(unwrap_jso(this)));
+  DynamicsCompressorNode createDynamicsCompressor() => _blink.BlinkAudioContext.instance.createDynamicsCompressor_Callback_0_(this);
   
   @DomName('AudioContext.createGain')
   @DocsEditable()
-  GainNode createGain() => wrap_jso(_blink.BlinkAudioContext.instance.createGain_Callback_0_(unwrap_jso(this)));
+  GainNode createGain() => _blink.BlinkAudioContext.instance.createGain_Callback_0_(this);
   
   @DomName('AudioContext.createMediaElementSource')
   @DocsEditable()
-  MediaElementAudioSourceNode createMediaElementSource(MediaElement mediaElement) => wrap_jso(_blink.BlinkAudioContext.instance.createMediaElementSource_Callback_1_(unwrap_jso(this), unwrap_jso(mediaElement)));
+  MediaElementAudioSourceNode createMediaElementSource(MediaElement mediaElement) => _blink.BlinkAudioContext.instance.createMediaElementSource_Callback_1_(this, mediaElement);
   
   @DomName('AudioContext.createMediaStreamDestination')
   @DocsEditable()
-  MediaStreamAudioDestinationNode createMediaStreamDestination() => wrap_jso(_blink.BlinkAudioContext.instance.createMediaStreamDestination_Callback_0_(unwrap_jso(this)));
+  MediaStreamAudioDestinationNode createMediaStreamDestination() => _blink.BlinkAudioContext.instance.createMediaStreamDestination_Callback_0_(this);
   
   @DomName('AudioContext.createMediaStreamSource')
   @DocsEditable()
-  MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream) => wrap_jso(_blink.BlinkAudioContext.instance.createMediaStreamSource_Callback_1_(unwrap_jso(this), unwrap_jso(mediaStream)));
+  MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream) => _blink.BlinkAudioContext.instance.createMediaStreamSource_Callback_1_(this, mediaStream);
   
   @DomName('AudioContext.createOscillator')
   @DocsEditable()
-  OscillatorNode createOscillator() => wrap_jso(_blink.BlinkAudioContext.instance.createOscillator_Callback_0_(unwrap_jso(this)));
+  OscillatorNode createOscillator() => _blink.BlinkAudioContext.instance.createOscillator_Callback_0_(this);
   
   @DomName('AudioContext.createPanner')
   @DocsEditable()
-  PannerNode createPanner() => wrap_jso(_blink.BlinkAudioContext.instance.createPanner_Callback_0_(unwrap_jso(this)));
+  PannerNode createPanner() => _blink.BlinkAudioContext.instance.createPanner_Callback_0_(this);
   
   @DomName('AudioContext.createPeriodicWave')
   @DocsEditable()
   @Experimental() // untriaged
-  PeriodicWave createPeriodicWave(Float32List real, Float32List imag) => wrap_jso(_blink.BlinkAudioContext.instance.createPeriodicWave_Callback_2_(unwrap_jso(this), unwrap_jso(real), unwrap_jso(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 wrap_jso(_blink.BlinkAudioContext.instance.createScriptProcessor_Callback_3_(unwrap_jso(this), bufferSize, numberOfInputChannels, numberOfOutputChannels));
+      return _blink.BlinkAudioContext.instance.createScriptProcessor_Callback_3_(this, bufferSize, numberOfInputChannels, numberOfOutputChannels);
     }
     if (numberOfInputChannels != null) {
-      return wrap_jso(_blink.BlinkAudioContext.instance.createScriptProcessor_Callback_2_(unwrap_jso(this), bufferSize, numberOfInputChannels));
+      return _blink.BlinkAudioContext.instance.createScriptProcessor_Callback_2_(this, bufferSize, numberOfInputChannels);
     }
     if (bufferSize != null) {
-      return wrap_jso(_blink.BlinkAudioContext.instance.createScriptProcessor_Callback_1_(unwrap_jso(this), bufferSize));
+      return _blink.BlinkAudioContext.instance.createScriptProcessor_Callback_1_(this, bufferSize);
     }
-    return wrap_jso(_blink.BlinkAudioContext.instance.createScriptProcessor_Callback_0_(unwrap_jso(this)));
+    return _blink.BlinkAudioContext.instance.createScriptProcessor_Callback_0_(this);
   }
 
   @DomName('AudioContext.createStereoPanner')
   @DocsEditable()
   @Experimental() // untriaged
-  StereoPannerNode createStereoPanner() => wrap_jso(_blink.BlinkAudioContext.instance.createStereoPanner_Callback_0_(unwrap_jso(this)));
+  StereoPannerNode createStereoPanner() => _blink.BlinkAudioContext.instance.createStereoPanner_Callback_0_(this);
   
   @DomName('AudioContext.createWaveShaper')
   @DocsEditable()
-  WaveShaperNode createWaveShaper() => wrap_jso(_blink.BlinkAudioContext.instance.createWaveShaper_Callback_0_(unwrap_jso(this)));
+  WaveShaperNode createWaveShaper() => _blink.BlinkAudioContext.instance.createWaveShaper_Callback_0_(this);
   
   void _decodeAudioData(ByteBuffer audioData, AudioBufferCallback successCallback, [AudioBufferCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkAudioContext.instance.decodeAudioData_Callback_3_(unwrap_jso(this), unwrap_jso(audioData), unwrap_jso((audioBuffer) => successCallback(wrap_jso(audioBuffer))), unwrap_jso((audioBuffer) => errorCallback(wrap_jso(audioBuffer))));
+      _blink.BlinkAudioContext.instance.decodeAudioData_Callback_3_(this, audioData, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkAudioContext.instance.decodeAudioData_Callback_2_(unwrap_jso(this), unwrap_jso(audioData), unwrap_jso((audioBuffer) => successCallback(wrap_jso(audioBuffer))));
+    _blink.BlinkAudioContext.instance.decodeAudioData_Callback_2_(this, audioData, successCallback);
     return;
   }
 
   @DomName('AudioContext.resume')
   @DocsEditable()
   @Experimental() // untriaged
-  Future resume() => wrap_jso(_blink.BlinkAudioContext.instance.resume_Callback_0_(unwrap_jso(this)));
+  Future resume() => convertNativePromiseToDartFuture(_blink.BlinkAudioContext.instance.resume_Callback_0_(this));
   
   @DomName('AudioContext.suspend')
   @DocsEditable()
   @Experimental() // untriaged
-  Future suspend() => wrap_jso(_blink.BlinkAudioContext.instance.suspend_Callback_0_(unwrap_jso(this)));
+  Future suspend() => convertNativePromiseToDartFuture(_blink.BlinkAudioContext.instance.suspend_Callback_0_(this));
   
   @DomName('AudioContext.decodeAudioData')
   Future<AudioBuffer> decodeAudioData(ByteBuffer audioData) {
@@ -568,11 +514,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static AudioDestinationNode internalCreateAudioDestinationNode() {
-    return new AudioDestinationNode._internalWrap();
-  }
-
-  external factory AudioDestinationNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AudioDestinationNode.internal_() : super.internal_();
@@ -580,7 +522,7 @@
 
   @DomName('AudioDestinationNode.maxChannelCount')
   @DocsEditable()
-  int get maxChannelCount => _blink.BlinkAudioDestinationNode.instance.maxChannelCount_Getter_(unwrap_jso(this));
+  int get maxChannelCount => _blink.BlinkAudioDestinationNode.instance.maxChannelCount_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -598,48 +540,40 @@
   // To suppress missing implicit constructor warnings.
   factory AudioListener._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AudioListener internalCreateAudioListener() {
-    return new AudioListener._internalWrap();
-  }
 
-  factory AudioListener._internalWrap() {
-    return new AudioListener.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AudioListener.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('AudioListener.dopplerFactor')
   @DocsEditable()
-  num get dopplerFactor => _blink.BlinkAudioListener.instance.dopplerFactor_Getter_(unwrap_jso(this));
+  num get dopplerFactor => _blink.BlinkAudioListener.instance.dopplerFactor_Getter_(this);
   
   @DomName('AudioListener.dopplerFactor')
   @DocsEditable()
-  set dopplerFactor(num value) => _blink.BlinkAudioListener.instance.dopplerFactor_Setter_(unwrap_jso(this), value);
+  set dopplerFactor(num value) => _blink.BlinkAudioListener.instance.dopplerFactor_Setter_(this, value);
   
   @DomName('AudioListener.speedOfSound')
   @DocsEditable()
-  num get speedOfSound => _blink.BlinkAudioListener.instance.speedOfSound_Getter_(unwrap_jso(this));
+  num get speedOfSound => _blink.BlinkAudioListener.instance.speedOfSound_Getter_(this);
   
   @DomName('AudioListener.speedOfSound')
   @DocsEditable()
-  set speedOfSound(num value) => _blink.BlinkAudioListener.instance.speedOfSound_Setter_(unwrap_jso(this), value);
+  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.instance.setOrientation_Callback_6_(unwrap_jso(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.instance.setPosition_Callback_3_(unwrap_jso(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.instance.setVelocity_Callback_3_(unwrap_jso(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
@@ -656,11 +590,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static AudioNode internalCreateAudioNode() {
-    return new AudioNode._internalWrap();
-  }
-
-  external factory AudioNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AudioNode.internal_() : super.internal_();
@@ -668,59 +598,59 @@
 
   @DomName('AudioNode.channelCount')
   @DocsEditable()
-  int get channelCount => _blink.BlinkAudioNode.instance.channelCount_Getter_(unwrap_jso(this));
+  int get channelCount => _blink.BlinkAudioNode.instance.channelCount_Getter_(this);
   
   @DomName('AudioNode.channelCount')
   @DocsEditable()
-  set channelCount(int value) => _blink.BlinkAudioNode.instance.channelCount_Setter_(unwrap_jso(this), value);
+  set channelCount(int value) => _blink.BlinkAudioNode.instance.channelCount_Setter_(this, value);
   
   @DomName('AudioNode.channelCountMode')
   @DocsEditable()
-  String get channelCountMode => _blink.BlinkAudioNode.instance.channelCountMode_Getter_(unwrap_jso(this));
+  String get channelCountMode => _blink.BlinkAudioNode.instance.channelCountMode_Getter_(this);
   
   @DomName('AudioNode.channelCountMode')
   @DocsEditable()
-  set channelCountMode(String value) => _blink.BlinkAudioNode.instance.channelCountMode_Setter_(unwrap_jso(this), value);
+  set channelCountMode(String value) => _blink.BlinkAudioNode.instance.channelCountMode_Setter_(this, value);
   
   @DomName('AudioNode.channelInterpretation')
   @DocsEditable()
-  String get channelInterpretation => _blink.BlinkAudioNode.instance.channelInterpretation_Getter_(unwrap_jso(this));
+  String get channelInterpretation => _blink.BlinkAudioNode.instance.channelInterpretation_Getter_(this);
   
   @DomName('AudioNode.channelInterpretation')
   @DocsEditable()
-  set channelInterpretation(String value) => _blink.BlinkAudioNode.instance.channelInterpretation_Setter_(unwrap_jso(this), value);
+  set channelInterpretation(String value) => _blink.BlinkAudioNode.instance.channelInterpretation_Setter_(this, value);
   
   @DomName('AudioNode.context')
   @DocsEditable()
-  AudioContext get context => wrap_jso(_blink.BlinkAudioNode.instance.context_Getter_(unwrap_jso(this)));
+  AudioContext get context => _blink.BlinkAudioNode.instance.context_Getter_(this);
   
   @DomName('AudioNode.numberOfInputs')
   @DocsEditable()
-  int get numberOfInputs => _blink.BlinkAudioNode.instance.numberOfInputs_Getter_(unwrap_jso(this));
+  int get numberOfInputs => _blink.BlinkAudioNode.instance.numberOfInputs_Getter_(this);
   
   @DomName('AudioNode.numberOfOutputs')
   @DocsEditable()
-  int get numberOfOutputs => _blink.BlinkAudioNode.instance.numberOfOutputs_Getter_(unwrap_jso(this));
+  int get numberOfOutputs => _blink.BlinkAudioNode.instance.numberOfOutputs_Getter_(this);
   
   void _connect(destination, [int output, int input]) {
     if ((destination is AudioNode) && output == null && input == null) {
-      _blink.BlinkAudioNode.instance.connect_Callback_1_(unwrap_jso(this), unwrap_jso(destination));
+      _blink.BlinkAudioNode.instance.connect_Callback_1_(this, destination);
       return;
     }
     if ((output is int || output == null) && (destination is AudioNode) && input == null) {
-      _blink.BlinkAudioNode.instance.connect_Callback_2_(unwrap_jso(this), unwrap_jso(destination), output);
+      _blink.BlinkAudioNode.instance.connect_Callback_2_(this, destination, output);
       return;
     }
     if ((input is int || input == null) && (output is int || output == null) && (destination is AudioNode)) {
-      _blink.BlinkAudioNode.instance.connect_Callback_3_(unwrap_jso(this), unwrap_jso(destination), output, input);
+      _blink.BlinkAudioNode.instance.connect_Callback_3_(this, destination, output, input);
       return;
     }
     if ((destination is AudioParam) && output == null && input == null) {
-      _blink.BlinkAudioNode.instance.connect_Callback_1_(unwrap_jso(this), unwrap_jso(destination));
+      _blink.BlinkAudioNode.instance.connect_Callback_1_(this, destination);
       return;
     }
     if ((output is int || output == null) && (destination is AudioParam) && input == null) {
-      _blink.BlinkAudioNode.instance.connect_Callback_2_(unwrap_jso(this), unwrap_jso(destination), output);
+      _blink.BlinkAudioNode.instance.connect_Callback_2_(this, destination, output);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -728,31 +658,31 @@
 
   void disconnect([destination_OR_output, int output, int input]) {
     if (destination_OR_output == null && output == null && input == null) {
-      _blink.BlinkAudioNode.instance.disconnect_Callback_0_(unwrap_jso(this));
+      _blink.BlinkAudioNode.instance.disconnect_Callback_0_(this);
       return;
     }
     if ((destination_OR_output is int) && output == null && input == null) {
-      _blink.BlinkAudioNode.instance.disconnect_Callback_1_(unwrap_jso(this), unwrap_jso(destination_OR_output));
+      _blink.BlinkAudioNode.instance.disconnect_Callback_1_(this, destination_OR_output);
       return;
     }
     if ((destination_OR_output is AudioNode) && output == null && input == null) {
-      _blink.BlinkAudioNode.instance.disconnect_Callback_1_(unwrap_jso(this), unwrap_jso(destination_OR_output));
+      _blink.BlinkAudioNode.instance.disconnect_Callback_1_(this, destination_OR_output);
       return;
     }
     if ((output is int) && (destination_OR_output is AudioNode) && input == null) {
-      _blink.BlinkAudioNode.instance.disconnect_Callback_2_(unwrap_jso(this), unwrap_jso(destination_OR_output), output);
+      _blink.BlinkAudioNode.instance.disconnect_Callback_2_(this, destination_OR_output, output);
       return;
     }
     if ((input is int) && (output is int) && (destination_OR_output is AudioNode)) {
-      _blink.BlinkAudioNode.instance.disconnect_Callback_3_(unwrap_jso(this), unwrap_jso(destination_OR_output), output, input);
+      _blink.BlinkAudioNode.instance.disconnect_Callback_3_(this, destination_OR_output, output, input);
       return;
     }
     if ((destination_OR_output is AudioParam) && output == null && input == null) {
-      _blink.BlinkAudioNode.instance.disconnect_Callback_1_(unwrap_jso(this), unwrap_jso(destination_OR_output));
+      _blink.BlinkAudioNode.instance.disconnect_Callback_1_(this, destination_OR_output);
       return;
     }
     if ((output is int) && (destination_OR_output is AudioParam) && input == null) {
-      _blink.BlinkAudioNode.instance.disconnect_Callback_2_(unwrap_jso(this), unwrap_jso(destination_OR_output), output);
+      _blink.BlinkAudioNode.instance.disconnect_Callback_2_(this, destination_OR_output, output);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -781,56 +711,48 @@
   // To suppress missing implicit constructor warnings.
   factory AudioParam._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AudioParam internalCreateAudioParam() {
-    return new AudioParam._internalWrap();
-  }
 
-  factory AudioParam._internalWrap() {
-    return new AudioParam.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AudioParam.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('AudioParam.defaultValue')
   @DocsEditable()
-  num get defaultValue => _blink.BlinkAudioParam.instance.defaultValue_Getter_(unwrap_jso(this));
+  num get defaultValue => _blink.BlinkAudioParam.instance.defaultValue_Getter_(this);
   
   @DomName('AudioParam.value')
   @DocsEditable()
-  num get value => _blink.BlinkAudioParam.instance.value_Getter_(unwrap_jso(this));
+  num get value => _blink.BlinkAudioParam.instance.value_Getter_(this);
   
   @DomName('AudioParam.value')
   @DocsEditable()
-  set value(num value) => _blink.BlinkAudioParam.instance.value_Setter_(unwrap_jso(this), value);
+  set value(num value) => _blink.BlinkAudioParam.instance.value_Setter_(this, value);
   
   @DomName('AudioParam.cancelScheduledValues')
   @DocsEditable()
-  void cancelScheduledValues(num startTime) => _blink.BlinkAudioParam.instance.cancelScheduledValues_Callback_1_(unwrap_jso(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.instance.exponentialRampToValueAtTime_Callback_2_(unwrap_jso(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.instance.linearRampToValueAtTime_Callback_2_(unwrap_jso(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.instance.setTargetAtTime_Callback_3_(unwrap_jso(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.instance.setValueAtTime_Callback_2_(unwrap_jso(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.instance.setValueCurveAtTime_Callback_3_(unwrap_jso(this), unwrap_jso(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
@@ -850,11 +772,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static AudioProcessingEvent internalCreateAudioProcessingEvent() {
-    return new AudioProcessingEvent._internalWrap();
-  }
-
-  external factory AudioProcessingEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AudioProcessingEvent.internal_() : super.internal_();
@@ -862,16 +780,16 @@
 
   @DomName('AudioProcessingEvent.inputBuffer')
   @DocsEditable()
-  AudioBuffer get inputBuffer => wrap_jso(_blink.BlinkAudioProcessingEvent.instance.inputBuffer_Getter_(unwrap_jso(this)));
+  AudioBuffer get inputBuffer => _blink.BlinkAudioProcessingEvent.instance.inputBuffer_Getter_(this);
   
   @DomName('AudioProcessingEvent.outputBuffer')
   @DocsEditable()
-  AudioBuffer get outputBuffer => wrap_jso(_blink.BlinkAudioProcessingEvent.instance.outputBuffer_Getter_(unwrap_jso(this)));
+  AudioBuffer get outputBuffer => _blink.BlinkAudioProcessingEvent.instance.outputBuffer_Getter_(this);
   
   @DomName('AudioProcessingEvent.playbackTime')
   @DocsEditable()
   @Experimental() // untriaged
-  num get playbackTime => _blink.BlinkAudioProcessingEvent.instance.playbackTime_Getter_(unwrap_jso(this));
+  num get playbackTime => _blink.BlinkAudioProcessingEvent.instance.playbackTime_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -891,11 +809,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static AudioSourceNode internalCreateAudioSourceNode() {
-    return new AudioSourceNode._internalWrap();
-  }
-
-  external factory AudioSourceNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AudioSourceNode.internal_() : super.internal_();
@@ -919,11 +833,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static BiquadFilterNode internalCreateBiquadFilterNode() {
-    return new BiquadFilterNode._internalWrap();
-  }
-
-  external factory BiquadFilterNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   BiquadFilterNode.internal_() : super.internal_();
@@ -931,31 +841,31 @@
 
   @DomName('BiquadFilterNode.Q')
   @DocsEditable()
-  AudioParam get Q => wrap_jso(_blink.BlinkBiquadFilterNode.instance.Q_Getter_(unwrap_jso(this)));
+  AudioParam get Q => _blink.BlinkBiquadFilterNode.instance.Q_Getter_(this);
   
   @DomName('BiquadFilterNode.detune')
   @DocsEditable()
-  AudioParam get detune => wrap_jso(_blink.BlinkBiquadFilterNode.instance.detune_Getter_(unwrap_jso(this)));
+  AudioParam get detune => _blink.BlinkBiquadFilterNode.instance.detune_Getter_(this);
   
   @DomName('BiquadFilterNode.frequency')
   @DocsEditable()
-  AudioParam get frequency => wrap_jso(_blink.BlinkBiquadFilterNode.instance.frequency_Getter_(unwrap_jso(this)));
+  AudioParam get frequency => _blink.BlinkBiquadFilterNode.instance.frequency_Getter_(this);
   
   @DomName('BiquadFilterNode.gain')
   @DocsEditable()
-  AudioParam get gain => wrap_jso(_blink.BlinkBiquadFilterNode.instance.gain_Getter_(unwrap_jso(this)));
+  AudioParam get gain => _blink.BlinkBiquadFilterNode.instance.gain_Getter_(this);
   
   @DomName('BiquadFilterNode.type')
   @DocsEditable()
-  String get type => _blink.BlinkBiquadFilterNode.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkBiquadFilterNode.instance.type_Getter_(this);
   
   @DomName('BiquadFilterNode.type')
   @DocsEditable()
-  set type(String value) => _blink.BlinkBiquadFilterNode.instance.type_Setter_(unwrap_jso(this), value);
+  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.instance.getFrequencyResponse_Callback_3_(unwrap_jso(this), unwrap_jso(frequencyHz), unwrap_jso(magResponse), unwrap_jso(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
@@ -975,11 +885,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ChannelMergerNode internalCreateChannelMergerNode() {
-    return new ChannelMergerNode._internalWrap();
-  }
-
-  external factory ChannelMergerNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ChannelMergerNode.internal_() : super.internal_();
@@ -1003,11 +909,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ChannelSplitterNode internalCreateChannelSplitterNode() {
-    return new ChannelSplitterNode._internalWrap();
-  }
-
-  external factory ChannelSplitterNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ChannelSplitterNode.internal_() : super.internal_();
@@ -1031,11 +933,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ConvolverNode internalCreateConvolverNode() {
-    return new ConvolverNode._internalWrap();
-  }
-
-  external factory ConvolverNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ConvolverNode.internal_() : super.internal_();
@@ -1043,19 +941,19 @@
 
   @DomName('ConvolverNode.buffer')
   @DocsEditable()
-  AudioBuffer get buffer => wrap_jso(_blink.BlinkConvolverNode.instance.buffer_Getter_(unwrap_jso(this)));
+  AudioBuffer get buffer => _blink.BlinkConvolverNode.instance.buffer_Getter_(this);
   
   @DomName('ConvolverNode.buffer')
   @DocsEditable()
-  set buffer(AudioBuffer value) => _blink.BlinkConvolverNode.instance.buffer_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set buffer(AudioBuffer value) => _blink.BlinkConvolverNode.instance.buffer_Setter_(this, value);
   
   @DomName('ConvolverNode.normalize')
   @DocsEditable()
-  bool get normalize => _blink.BlinkConvolverNode.instance.normalize_Getter_(unwrap_jso(this));
+  bool get normalize => _blink.BlinkConvolverNode.instance.normalize_Getter_(this);
   
   @DomName('ConvolverNode.normalize')
   @DocsEditable()
-  set normalize(bool value) => _blink.BlinkConvolverNode.instance.normalize_Setter_(unwrap_jso(this), value);
+  set normalize(bool value) => _blink.BlinkConvolverNode.instance.normalize_Setter_(this, value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1075,11 +973,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static DelayNode internalCreateDelayNode() {
-    return new DelayNode._internalWrap();
-  }
-
-  external factory DelayNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DelayNode.internal_() : super.internal_();
@@ -1087,7 +981,7 @@
 
   @DomName('DelayNode.delayTime')
   @DocsEditable()
-  AudioParam get delayTime => wrap_jso(_blink.BlinkDelayNode.instance.delayTime_Getter_(unwrap_jso(this)));
+  AudioParam get delayTime => _blink.BlinkDelayNode.instance.delayTime_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1107,11 +1001,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static DynamicsCompressorNode internalCreateDynamicsCompressorNode() {
-    return new DynamicsCompressorNode._internalWrap();
-  }
-
-  external factory DynamicsCompressorNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DynamicsCompressorNode.internal_() : super.internal_();
@@ -1119,27 +1009,27 @@
 
   @DomName('DynamicsCompressorNode.attack')
   @DocsEditable()
-  AudioParam get attack => wrap_jso(_blink.BlinkDynamicsCompressorNode.instance.attack_Getter_(unwrap_jso(this)));
+  AudioParam get attack => _blink.BlinkDynamicsCompressorNode.instance.attack_Getter_(this);
   
   @DomName('DynamicsCompressorNode.knee')
   @DocsEditable()
-  AudioParam get knee => wrap_jso(_blink.BlinkDynamicsCompressorNode.instance.knee_Getter_(unwrap_jso(this)));
+  AudioParam get knee => _blink.BlinkDynamicsCompressorNode.instance.knee_Getter_(this);
   
   @DomName('DynamicsCompressorNode.ratio')
   @DocsEditable()
-  AudioParam get ratio => wrap_jso(_blink.BlinkDynamicsCompressorNode.instance.ratio_Getter_(unwrap_jso(this)));
+  AudioParam get ratio => _blink.BlinkDynamicsCompressorNode.instance.ratio_Getter_(this);
   
   @DomName('DynamicsCompressorNode.reduction')
   @DocsEditable()
-  AudioParam get reduction => wrap_jso(_blink.BlinkDynamicsCompressorNode.instance.reduction_Getter_(unwrap_jso(this)));
+  AudioParam get reduction => _blink.BlinkDynamicsCompressorNode.instance.reduction_Getter_(this);
   
   @DomName('DynamicsCompressorNode.release')
   @DocsEditable()
-  AudioParam get release => wrap_jso(_blink.BlinkDynamicsCompressorNode.instance.release_Getter_(unwrap_jso(this)));
+  AudioParam get release => _blink.BlinkDynamicsCompressorNode.instance.release_Getter_(this);
   
   @DomName('DynamicsCompressorNode.threshold')
   @DocsEditable()
-  AudioParam get threshold => wrap_jso(_blink.BlinkDynamicsCompressorNode.instance.threshold_Getter_(unwrap_jso(this)));
+  AudioParam get threshold => _blink.BlinkDynamicsCompressorNode.instance.threshold_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1159,11 +1049,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static GainNode internalCreateGainNode() {
-    return new GainNode._internalWrap();
-  }
-
-  external factory GainNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   GainNode.internal_() : super.internal_();
@@ -1171,7 +1057,7 @@
 
   @DomName('GainNode.gain')
   @DocsEditable()
-  AudioParam get gain => wrap_jso(_blink.BlinkGainNode.instance.gain_Getter_(unwrap_jso(this)));
+  AudioParam get gain => _blink.BlinkGainNode.instance.gain_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1191,11 +1077,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MediaElementAudioSourceNode internalCreateMediaElementAudioSourceNode() {
-    return new MediaElementAudioSourceNode._internalWrap();
-  }
-
-  external factory MediaElementAudioSourceNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaElementAudioSourceNode.internal_() : super.internal_();
@@ -1204,7 +1086,7 @@
   @DomName('MediaElementAudioSourceNode.mediaElement')
   @DocsEditable()
   @Experimental() // non-standard
-  MediaElement get mediaElement => wrap_jso(_blink.BlinkMediaElementAudioSourceNode.instance.mediaElement_Getter_(unwrap_jso(this)));
+  MediaElement get mediaElement => _blink.BlinkMediaElementAudioSourceNode.instance.mediaElement_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1224,11 +1106,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MediaStreamAudioDestinationNode internalCreateMediaStreamAudioDestinationNode() {
-    return new MediaStreamAudioDestinationNode._internalWrap();
-  }
-
-  external factory MediaStreamAudioDestinationNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaStreamAudioDestinationNode.internal_() : super.internal_();
@@ -1236,7 +1114,7 @@
 
   @DomName('MediaStreamAudioDestinationNode.stream')
   @DocsEditable()
-  MediaStream get stream => wrap_jso(_blink.BlinkMediaStreamAudioDestinationNode.instance.stream_Getter_(unwrap_jso(this)));
+  MediaStream get stream => _blink.BlinkMediaStreamAudioDestinationNode.instance.stream_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1256,11 +1134,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static MediaStreamAudioSourceNode internalCreateMediaStreamAudioSourceNode() {
-    return new MediaStreamAudioSourceNode._internalWrap();
-  }
-
-  external factory MediaStreamAudioSourceNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   MediaStreamAudioSourceNode.internal_() : super.internal_();
@@ -1268,7 +1142,7 @@
 
   @DomName('MediaStreamAudioSourceNode.mediaStream')
   @DocsEditable()
-  MediaStream get mediaStream => wrap_jso(_blink.BlinkMediaStreamAudioSourceNode.instance.mediaStream_Getter_(unwrap_jso(this)));
+  MediaStream get mediaStream => _blink.BlinkMediaStreamAudioSourceNode.instance.mediaStream_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1288,11 +1162,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static OfflineAudioCompletionEvent internalCreateOfflineAudioCompletionEvent() {
-    return new OfflineAudioCompletionEvent._internalWrap();
-  }
-
-  external factory OfflineAudioCompletionEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   OfflineAudioCompletionEvent.internal_() : super.internal_();
@@ -1300,7 +1170,7 @@
 
   @DomName('OfflineAudioCompletionEvent.renderedBuffer')
   @DocsEditable()
-  AudioBuffer get renderedBuffer => wrap_jso(_blink.BlinkOfflineAudioCompletionEvent.instance.renderedBuffer_Getter_(unwrap_jso(this)));
+  AudioBuffer get renderedBuffer => _blink.BlinkOfflineAudioCompletionEvent.instance.renderedBuffer_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1321,16 +1191,12 @@
   @DomName('OfflineAudioContext.OfflineAudioContext')
   @DocsEditable()
   factory OfflineAudioContext(int numberOfChannels, int numberOfFrames, num sampleRate) {
-    return wrap_jso(_blink.BlinkOfflineAudioContext.instance.constructorCallback_3_(numberOfChannels, numberOfFrames, sampleRate));
+    return _blink.BlinkOfflineAudioContext.instance.constructorCallback_3_(numberOfChannels, numberOfFrames, sampleRate);
   }
 
 
   @Deprecated("Internal Use Only")
-  static OfflineAudioContext internalCreateOfflineAudioContext() {
-    return new OfflineAudioContext._internalWrap();
-  }
-
-  external factory OfflineAudioContext._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   OfflineAudioContext.internal_() : super.internal_();
@@ -1339,7 +1205,7 @@
   @DomName('OfflineAudioContext.startRendering')
   @DocsEditable()
   @Experimental() // untriaged
-  Future startRendering() => wrap_jso(_blink.BlinkOfflineAudioContext.instance.startRendering_Callback_0_(unwrap_jso(this)));
+  Future startRendering() => convertNativePromiseToDartFuture(_blink.BlinkOfflineAudioContext.instance.startRendering_Callback_0_(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1370,11 +1236,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static OscillatorNode internalCreateOscillatorNode() {
-    return new OscillatorNode._internalWrap();
-  }
-
-  external factory OscillatorNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   OscillatorNode.internal_() : super.internal_();
@@ -1382,40 +1244,40 @@
 
   @DomName('OscillatorNode.detune')
   @DocsEditable()
-  AudioParam get detune => wrap_jso(_blink.BlinkOscillatorNode.instance.detune_Getter_(unwrap_jso(this)));
+  AudioParam get detune => _blink.BlinkOscillatorNode.instance.detune_Getter_(this);
   
   @DomName('OscillatorNode.frequency')
   @DocsEditable()
-  AudioParam get frequency => wrap_jso(_blink.BlinkOscillatorNode.instance.frequency_Getter_(unwrap_jso(this)));
+  AudioParam get frequency => _blink.BlinkOscillatorNode.instance.frequency_Getter_(this);
   
   @DomName('OscillatorNode.type')
   @DocsEditable()
-  String get type => _blink.BlinkOscillatorNode.instance.type_Getter_(unwrap_jso(this));
+  String get type => _blink.BlinkOscillatorNode.instance.type_Getter_(this);
   
   @DomName('OscillatorNode.type')
   @DocsEditable()
-  set type(String value) => _blink.BlinkOscillatorNode.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkOscillatorNode.instance.type_Setter_(this, value);
   
   @DomName('OscillatorNode.setPeriodicWave')
   @DocsEditable()
   @Experimental() // untriaged
-  void setPeriodicWave(PeriodicWave periodicWave) => _blink.BlinkOscillatorNode.instance.setPeriodicWave_Callback_1_(unwrap_jso(this), unwrap_jso(periodicWave));
+  void setPeriodicWave(PeriodicWave periodicWave) => _blink.BlinkOscillatorNode.instance.setPeriodicWave_Callback_1_(this, periodicWave);
   
   void start([num when]) {
     if (when != null) {
-      _blink.BlinkOscillatorNode.instance.start_Callback_1_(unwrap_jso(this), when);
+      _blink.BlinkOscillatorNode.instance.start_Callback_1_(this, when);
       return;
     }
-    _blink.BlinkOscillatorNode.instance.start_Callback_0_(unwrap_jso(this));
+    _blink.BlinkOscillatorNode.instance.start_Callback_0_(this);
     return;
   }
 
   void stop([num when]) {
     if (when != null) {
-      _blink.BlinkOscillatorNode.instance.stop_Callback_1_(unwrap_jso(this), when);
+      _blink.BlinkOscillatorNode.instance.stop_Callback_1_(this, when);
       return;
     }
-    _blink.BlinkOscillatorNode.instance.stop_Callback_0_(unwrap_jso(this));
+    _blink.BlinkOscillatorNode.instance.stop_Callback_0_(this);
     return;
   }
 
@@ -1443,11 +1305,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static PannerNode internalCreatePannerNode() {
-    return new PannerNode._internalWrap();
-  }
-
-  external factory PannerNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PannerNode.internal_() : super.internal_();
@@ -1455,79 +1313,79 @@
 
   @DomName('PannerNode.coneInnerAngle')
   @DocsEditable()
-  num get coneInnerAngle => _blink.BlinkPannerNode.instance.coneInnerAngle_Getter_(unwrap_jso(this));
+  num get coneInnerAngle => _blink.BlinkPannerNode.instance.coneInnerAngle_Getter_(this);
   
   @DomName('PannerNode.coneInnerAngle')
   @DocsEditable()
-  set coneInnerAngle(num value) => _blink.BlinkPannerNode.instance.coneInnerAngle_Setter_(unwrap_jso(this), value);
+  set coneInnerAngle(num value) => _blink.BlinkPannerNode.instance.coneInnerAngle_Setter_(this, value);
   
   @DomName('PannerNode.coneOuterAngle')
   @DocsEditable()
-  num get coneOuterAngle => _blink.BlinkPannerNode.instance.coneOuterAngle_Getter_(unwrap_jso(this));
+  num get coneOuterAngle => _blink.BlinkPannerNode.instance.coneOuterAngle_Getter_(this);
   
   @DomName('PannerNode.coneOuterAngle')
   @DocsEditable()
-  set coneOuterAngle(num value) => _blink.BlinkPannerNode.instance.coneOuterAngle_Setter_(unwrap_jso(this), value);
+  set coneOuterAngle(num value) => _blink.BlinkPannerNode.instance.coneOuterAngle_Setter_(this, value);
   
   @DomName('PannerNode.coneOuterGain')
   @DocsEditable()
-  num get coneOuterGain => _blink.BlinkPannerNode.instance.coneOuterGain_Getter_(unwrap_jso(this));
+  num get coneOuterGain => _blink.BlinkPannerNode.instance.coneOuterGain_Getter_(this);
   
   @DomName('PannerNode.coneOuterGain')
   @DocsEditable()
-  set coneOuterGain(num value) => _blink.BlinkPannerNode.instance.coneOuterGain_Setter_(unwrap_jso(this), value);
+  set coneOuterGain(num value) => _blink.BlinkPannerNode.instance.coneOuterGain_Setter_(this, value);
   
   @DomName('PannerNode.distanceModel')
   @DocsEditable()
-  String get distanceModel => _blink.BlinkPannerNode.instance.distanceModel_Getter_(unwrap_jso(this));
+  String get distanceModel => _blink.BlinkPannerNode.instance.distanceModel_Getter_(this);
   
   @DomName('PannerNode.distanceModel')
   @DocsEditable()
-  set distanceModel(String value) => _blink.BlinkPannerNode.instance.distanceModel_Setter_(unwrap_jso(this), value);
+  set distanceModel(String value) => _blink.BlinkPannerNode.instance.distanceModel_Setter_(this, value);
   
   @DomName('PannerNode.maxDistance')
   @DocsEditable()
-  num get maxDistance => _blink.BlinkPannerNode.instance.maxDistance_Getter_(unwrap_jso(this));
+  num get maxDistance => _blink.BlinkPannerNode.instance.maxDistance_Getter_(this);
   
   @DomName('PannerNode.maxDistance')
   @DocsEditable()
-  set maxDistance(num value) => _blink.BlinkPannerNode.instance.maxDistance_Setter_(unwrap_jso(this), value);
+  set maxDistance(num value) => _blink.BlinkPannerNode.instance.maxDistance_Setter_(this, value);
   
   @DomName('PannerNode.panningModel')
   @DocsEditable()
-  String get panningModel => _blink.BlinkPannerNode.instance.panningModel_Getter_(unwrap_jso(this));
+  String get panningModel => _blink.BlinkPannerNode.instance.panningModel_Getter_(this);
   
   @DomName('PannerNode.panningModel')
   @DocsEditable()
-  set panningModel(String value) => _blink.BlinkPannerNode.instance.panningModel_Setter_(unwrap_jso(this), value);
+  set panningModel(String value) => _blink.BlinkPannerNode.instance.panningModel_Setter_(this, value);
   
   @DomName('PannerNode.refDistance')
   @DocsEditable()
-  num get refDistance => _blink.BlinkPannerNode.instance.refDistance_Getter_(unwrap_jso(this));
+  num get refDistance => _blink.BlinkPannerNode.instance.refDistance_Getter_(this);
   
   @DomName('PannerNode.refDistance')
   @DocsEditable()
-  set refDistance(num value) => _blink.BlinkPannerNode.instance.refDistance_Setter_(unwrap_jso(this), value);
+  set refDistance(num value) => _blink.BlinkPannerNode.instance.refDistance_Setter_(this, value);
   
   @DomName('PannerNode.rolloffFactor')
   @DocsEditable()
-  num get rolloffFactor => _blink.BlinkPannerNode.instance.rolloffFactor_Getter_(unwrap_jso(this));
+  num get rolloffFactor => _blink.BlinkPannerNode.instance.rolloffFactor_Getter_(this);
   
   @DomName('PannerNode.rolloffFactor')
   @DocsEditable()
-  set rolloffFactor(num value) => _blink.BlinkPannerNode.instance.rolloffFactor_Setter_(unwrap_jso(this), value);
+  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.instance.setOrientation_Callback_3_(unwrap_jso(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.instance.setPosition_Callback_3_(unwrap_jso(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.instance.setVelocity_Callback_3_(unwrap_jso(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
@@ -1544,21 +1402,13 @@
   // To suppress missing implicit constructor warnings.
   factory PeriodicWave._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static PeriodicWave internalCreatePeriodicWave() {
-    return new PeriodicWave._internalWrap();
-  }
 
-  factory PeriodicWave._internalWrap() {
-    return new PeriodicWave.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   PeriodicWave.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -1588,11 +1438,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static ScriptProcessorNode internalCreateScriptProcessorNode() {
-    return new ScriptProcessorNode._internalWrap();
-  }
-
-  external factory ScriptProcessorNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ScriptProcessorNode.internal_() : super.internal_();
@@ -1600,12 +1446,12 @@
 
   @DomName('ScriptProcessorNode.bufferSize')
   @DocsEditable()
-  int get bufferSize => _blink.BlinkScriptProcessorNode.instance.bufferSize_Getter_(unwrap_jso(this));
+  int get bufferSize => _blink.BlinkScriptProcessorNode.instance.bufferSize_Getter_(this);
   
   @DomName('ScriptProcessorNode.setEventListener')
   @DocsEditable()
   @Experimental() // untriaged
-  void setEventListener(EventListener eventListener) => _blink.BlinkScriptProcessorNode.instance.setEventListener_Callback_1_(unwrap_jso(this), unwrap_jso((event) => eventListener(wrap_jso(event))));
+  void setEventListener(EventListener eventListener) => _blink.BlinkScriptProcessorNode.instance.setEventListener_Callback_1_(this, eventListener);
   
   /// Stream of `audioprocess` events handled by this [ScriptProcessorNode].
 /**
@@ -1637,11 +1483,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static StereoPannerNode internalCreateStereoPannerNode() {
-    return new StereoPannerNode._internalWrap();
-  }
-
-  external factory StereoPannerNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   StereoPannerNode.internal_() : super.internal_();
@@ -1650,7 +1492,7 @@
   @DomName('StereoPannerNode.pan')
   @DocsEditable()
   @Experimental() // untriaged
-  AudioParam get pan => wrap_jso(_blink.BlinkStereoPannerNode.instance.pan_Getter_(unwrap_jso(this)));
+  AudioParam get pan => _blink.BlinkStereoPannerNode.instance.pan_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1670,11 +1512,7 @@
 
 
   @Deprecated("Internal Use Only")
-  static WaveShaperNode internalCreateWaveShaperNode() {
-    return new WaveShaperNode._internalWrap();
-  }
-
-  external factory WaveShaperNode._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   WaveShaperNode.internal_() : super.internal_();
@@ -1682,18 +1520,18 @@
 
   @DomName('WaveShaperNode.curve')
   @DocsEditable()
-  Float32List get curve => wrap_jso(_blink.BlinkWaveShaperNode.instance.curve_Getter_(unwrap_jso(this)));
+  Float32List get curve => _blink.BlinkWaveShaperNode.instance.curve_Getter_(this);
   
   @DomName('WaveShaperNode.curve')
   @DocsEditable()
-  set curve(Float32List value) => _blink.BlinkWaveShaperNode.instance.curve_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set curve(Float32List value) => _blink.BlinkWaveShaperNode.instance.curve_Setter_(this, value);
   
   @DomName('WaveShaperNode.oversample')
   @DocsEditable()
-  String get oversample => _blink.BlinkWaveShaperNode.instance.oversample_Getter_(unwrap_jso(this));
+  String get oversample => _blink.BlinkWaveShaperNode.instance.oversample_Getter_(this);
   
   @DomName('WaveShaperNode.oversample')
   @DocsEditable()
-  set oversample(String value) => _blink.BlinkWaveShaperNode.instance.oversample_Setter_(unwrap_jso(this), value);
+  set oversample(String value) => _blink.BlinkWaveShaperNode.instance.oversample_Setter_(this, value);
   
 }
diff --git a/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart b/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart
index 37916f4..71f2dbb 100644
--- a/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart
+++ b/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart
@@ -2386,24 +2386,10 @@
   @DocsEditable()
   void blendFuncSeparate(int srcRGB, int dstRGB, int srcAlpha, int dstAlpha) native;
 
-  /**
-   * Buffers the specified data.
-   *
-   * The [bufferData] method is provided for WebGL API compatibility reasons, but
-   * it is highly recommended that you use [bufferDataTyped] or [bufferByteData]
-   * depending on your purposes.
-   */
   @DomName('WebGLRenderingContext.bufferData')
   @DocsEditable()
   void bufferData(int target, data_OR_size, int usage) native;
 
-  /**
-   * Buffers the specified subset of data.
-   *
-   * The [bufferSubData] method is provided for WebGL API compatibility reasons, but
-   * it is highly recommended that you use [bufferSubDataTyped] or [bufferSubByteData]
-   * depending on your purposes.
-   */
   @DomName('WebGLRenderingContext.bufferSubData')
   @DocsEditable()
   void bufferSubData(int target, int offset, data) native;
@@ -2782,14 +2768,6 @@
   @DocsEditable()
   void stencilOpSeparate(int face, int fail, int zfail, int zpass) native;
 
-  /**
-   * Updates the currently bound texture to [data].
-   *
-   * The [texImage2D] method is provided for WebGL API compatibility reasons, but it
-   * is highly recommended that you use [texImage2DUntyped] or [texImage2DTyped]
-   * (or for more specificity, the more specialized [texImage2DImageData],
-   * [texImage2DCanvas], [texImage2DVideo]).
-   */
   @DomName('WebGLRenderingContext.texImage2D')
   @DocsEditable()
   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]) {
@@ -2817,62 +2795,22 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
   @JSName('texImage2D')
-  /**
-   * Updates the currently bound texture to [data].
-   *
-   * The [texImage2D] method is provided for WebGL API compatibility reasons, but it
-   * is highly recommended that you use [texImage2DUntyped] or [texImage2DTyped]
-   * (or for more specificity, the more specialized [texImage2DImageData],
-   * [texImage2DCanvas], [texImage2DVideo]).
-   */
   @DomName('WebGLRenderingContext.texImage2D')
   @DocsEditable()
   void _texImage2D_1(target, level, internalformat, width, height, int border, format, type, TypedData pixels) native;
   @JSName('texImage2D')
-  /**
-   * Updates the currently bound texture to [data].
-   *
-   * The [texImage2D] method is provided for WebGL API compatibility reasons, but it
-   * is highly recommended that you use [texImage2DUntyped] or [texImage2DTyped]
-   * (or for more specificity, the more specialized [texImage2DImageData],
-   * [texImage2DCanvas], [texImage2DVideo]).
-   */
   @DomName('WebGLRenderingContext.texImage2D')
   @DocsEditable()
   void _texImage2D_2(target, level, internalformat, format, type, pixels) native;
   @JSName('texImage2D')
-  /**
-   * Updates the currently bound texture to [data].
-   *
-   * The [texImage2D] method is provided for WebGL API compatibility reasons, but it
-   * is highly recommended that you use [texImage2DUntyped] or [texImage2DTyped]
-   * (or for more specificity, the more specialized [texImage2DImageData],
-   * [texImage2DCanvas], [texImage2DVideo]).
-   */
   @DomName('WebGLRenderingContext.texImage2D')
   @DocsEditable()
   void _texImage2D_3(target, level, internalformat, format, type, ImageElement image) native;
   @JSName('texImage2D')
-  /**
-   * Updates the currently bound texture to [data].
-   *
-   * The [texImage2D] method is provided for WebGL API compatibility reasons, but it
-   * is highly recommended that you use [texImage2DUntyped] or [texImage2DTyped]
-   * (or for more specificity, the more specialized [texImage2DImageData],
-   * [texImage2DCanvas], [texImage2DVideo]).
-   */
   @DomName('WebGLRenderingContext.texImage2D')
   @DocsEditable()
   void _texImage2D_4(target, level, internalformat, format, type, CanvasElement canvas) native;
   @JSName('texImage2D')
-  /**
-   * Updates the currently bound texture to [data].
-   *
-   * The [texImage2D] method is provided for WebGL API compatibility reasons, but it
-   * is highly recommended that you use [texImage2DUntyped] or [texImage2DTyped]
-   * (or for more specificity, the more specialized [texImage2DImageData],
-   * [texImage2DCanvas], [texImage2DVideo]).
-   */
   @DomName('WebGLRenderingContext.texImage2D')
   @DocsEditable()
   void _texImage2D_5(target, level, internalformat, format, type, VideoElement video) native;
@@ -2885,14 +2823,6 @@
   @DocsEditable()
   void texParameteri(int target, int pname, int param) native;
 
-  /**
-   * Updates a sub-rectangle of the currently bound texture to [data].
-   *
-   * The [texSubImage2D] method is provided for WebGL API compatibility reasons, but it
-   * is highly recommended that you use [texSubImage2DUntyped] or [texSubImage2DTyped]
-   * (or for more specificity, the more specialized [texSubImage2DImageData],
-   * [texSubImage2DCanvas], [texSubImage2DVideo]).
-   */
   @DomName('WebGLRenderingContext.texSubImage2D')
   @DocsEditable()
   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]) {
@@ -2920,62 +2850,22 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
   @JSName('texSubImage2D')
-  /**
-   * Updates a sub-rectangle of the currently bound texture to [data].
-   *
-   * The [texSubImage2D] method is provided for WebGL API compatibility reasons, but it
-   * is highly recommended that you use [texSubImage2DUntyped] or [texSubImage2DTyped]
-   * (or for more specificity, the more specialized [texSubImage2DImageData],
-   * [texSubImage2DCanvas], [texSubImage2DVideo]).
-   */
   @DomName('WebGLRenderingContext.texSubImage2D')
   @DocsEditable()
   void _texSubImage2D_1(target, level, xoffset, yoffset, width, height, int format, type, TypedData pixels) native;
   @JSName('texSubImage2D')
-  /**
-   * Updates a sub-rectangle of the currently bound texture to [data].
-   *
-   * The [texSubImage2D] method is provided for WebGL API compatibility reasons, but it
-   * is highly recommended that you use [texSubImage2DUntyped] or [texSubImage2DTyped]
-   * (or for more specificity, the more specialized [texSubImage2DImageData],
-   * [texSubImage2DCanvas], [texSubImage2DVideo]).
-   */
   @DomName('WebGLRenderingContext.texSubImage2D')
   @DocsEditable()
   void _texSubImage2D_2(target, level, xoffset, yoffset, format, type, pixels) native;
   @JSName('texSubImage2D')
-  /**
-   * Updates a sub-rectangle of the currently bound texture to [data].
-   *
-   * The [texSubImage2D] method is provided for WebGL API compatibility reasons, but it
-   * is highly recommended that you use [texSubImage2DUntyped] or [texSubImage2DTyped]
-   * (or for more specificity, the more specialized [texSubImage2DImageData],
-   * [texSubImage2DCanvas], [texSubImage2DVideo]).
-   */
   @DomName('WebGLRenderingContext.texSubImage2D')
   @DocsEditable()
   void _texSubImage2D_3(target, level, xoffset, yoffset, format, type, ImageElement image) native;
   @JSName('texSubImage2D')
-  /**
-   * Updates a sub-rectangle of the currently bound texture to [data].
-   *
-   * The [texSubImage2D] method is provided for WebGL API compatibility reasons, but it
-   * is highly recommended that you use [texSubImage2DUntyped] or [texSubImage2DTyped]
-   * (or for more specificity, the more specialized [texSubImage2DImageData],
-   * [texSubImage2DCanvas], [texSubImage2DVideo]).
-   */
   @DomName('WebGLRenderingContext.texSubImage2D')
   @DocsEditable()
   void _texSubImage2D_4(target, level, xoffset, yoffset, format, type, CanvasElement canvas) native;
   @JSName('texSubImage2D')
-  /**
-   * Updates a sub-rectangle of the currently bound texture to [data].
-   *
-   * The [texSubImage2D] method is provided for WebGL API compatibility reasons, but it
-   * is highly recommended that you use [texSubImage2DUntyped] or [texSubImage2DTyped]
-   * (or for more specificity, the more specialized [texSubImage2DImageData],
-   * [texSubImage2DCanvas], [texSubImage2DVideo]).
-   */
   @DomName('WebGLRenderingContext.texSubImage2D')
   @DocsEditable()
   void _texSubImage2D_5(target, level, xoffset, yoffset, format, type, VideoElement video) native;
@@ -3109,43 +2999,70 @@
    * Sets the currently bound texture to [data].
    *
    * [data] can be either an [ImageElement], a
-   * [CanvasElement], a [VideoElement], or an [ImageData] object.
+   * [CanvasElement], a [VideoElement], [TypedData] or an [ImageData] object.
    *
-   * To use [texImage2d] with a TypedData object, use [texImage2dTyped].
-   *
+   * This is deprecated in favor of [texImage2D].
    */
-  @JSName('texImage2D')
-  void texImage2DUntyped(int targetTexture, int levelOfDetail, 
-      int internalFormat, int format, int type, data) native;
+  @Deprecated("Use texImage2D")
+  void texImage2DUntyped(int targetTexture, int levelOfDetail,
+      int internalFormat, int format, int type, data) {
+    texImage2D(targetText, levelOfDetail, internalFormat, format, type, data);
+  }
 
   /**
    * Sets the currently bound texture to [data].
+   *
+   * This is deprecated in favour of [texImage2D].
    */
-  @JSName('texImage2D')
-  void texImage2DTyped(int targetTexture, int levelOfDetail,
-      int internalFormat, int width, int height, int border, int format,
-      int type, TypedData data) native;
+  @Deprecated("Use texImage2D")
+  void texImage2DTyped(int targetTexture, int levelOfDetail, int internalFormat,
+      int width, int height, int border, int format, int type, TypedData data) {
+    texImage2D(targetTexture, levelOfDetail, internalFormat,
+        width, height, border, format, type, data);
+  }
 
   /**
    * Updates a sub-rectangle of the currently bound texture to [data].
    *
    * [data] can be either an [ImageElement], a
-   * [CanvasElement], a [VideoElement], or an [ImageData] object.
-   *
-   * To use [texSubImage2d] with a TypedData object, use [texSubImage2dTyped].
+   * [CanvasElement], a [VideoElement], [TypedData] or an [ImageData] object.
    *
    */
-  @JSName('texSubImage2D')
+  @Deprecated("Use texSubImage2D")
   void texSubImage2DUntyped(int targetTexture, int levelOfDetail,
-      int xOffset, int yOffset, int format, int type, data) native;
+      int xOffset, int yOffset, int format, int type, data) {
+    texSubImage2D(targetTexture, levelOfDetail, xOffset, yOffset,
+        format, type, data);
+  }
 
   /**
    * Updates a sub-rectangle of the currently bound texture to [data].
    */
-  @JSName('texSubImage2D')
+  @Deprecated("Use texSubImage2D")
   void texSubImage2DTyped(int targetTexture, int levelOfDetail,
       int xOffset, int yOffset, int width, int height, int border, int format,
-      int type, TypedData data) native;
+      int type, TypedData data) {
+    texSubImage2D(targetTexture, levelOfDetail, xOffset, yOffset,
+        width, height, format, type, data);
+  }
+
+  /**
+   * Set the bufferData to [data].
+   */
+  @Deprecated("Use bufferData")
+  void bufferDataTyped(int target, TypedData data, int usage) {
+    bufferData2D(targetTexture, levelOfDetail, xOffset, yOffset,
+        format, type, data);
+  }
+
+  /**
+   * Set the bufferSubData to [data].
+   */
+  @Deprecated("Use bufferSubData")
+  void bufferSubDataTyped(int target, TypedData data, int usage) {
+    bufferSubData2D(targetTexture, levelOfDetail, xOffset, yOffset,
+        format, type, data);
+  }
 }
 // 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
diff --git a/sdk/lib/web_gl/dartium/web_gl_dartium.dart b/sdk/lib/web_gl/dartium/web_gl_dartium.dart
index ede152f..31ad9e4 100644
--- a/sdk/lib/web_gl/dartium/web_gl_dartium.dart
+++ b/sdk/lib/web_gl/dartium/web_gl_dartium.dart
@@ -22,97 +22,49 @@
 // FIXME: Can we make this private?
 @Deprecated("Internal Use Only")
 final web_glBlinkMap = {
-  'ANGLEInstancedArrays': () => AngleInstancedArrays,
-  'CHROMIUMSubscribeUniform': () => ChromiumSubscribeUniform,
-  'EXTBlendMinMax': () => ExtBlendMinMax,
-  'EXTFragDepth': () => ExtFragDepth,
-  'EXTShaderTextureLOD': () => ExtShaderTextureLod,
-  'EXTTextureFilterAnisotropic': () => ExtTextureFilterAnisotropic,
-  'EXTsRGB': () => EXTsRgb,
-  'OESElementIndexUint': () => OesElementIndexUint,
-  'OESStandardDerivatives': () => OesStandardDerivatives,
-  'OESTextureFloat': () => OesTextureFloat,
-  'OESTextureFloatLinear': () => OesTextureFloatLinear,
-  'OESTextureHalfFloat': () => OesTextureHalfFloat,
-  'OESTextureHalfFloatLinear': () => OesTextureHalfFloatLinear,
-  'OESVertexArrayObject': () => OesVertexArrayObject,
-  'WebGL2RenderingContext': () => RenderingContext2,
-  'WebGL2RenderingContextBase': () => _WebGL2RenderingContextBase,
-  'WebGLActiveInfo': () => ActiveInfo,
-  'WebGLBuffer': () => Buffer,
-  'WebGLCompressedTextureATC': () => CompressedTextureAtc,
-  'WebGLCompressedTextureETC1': () => CompressedTextureETC1,
-  'WebGLCompressedTexturePVRTC': () => CompressedTexturePvrtc,
-  'WebGLCompressedTextureS3TC': () => CompressedTextureS3TC,
-  'WebGLContextEvent': () => ContextEvent,
-  'WebGLDebugRendererInfo': () => DebugRendererInfo,
-  'WebGLDebugShaders': () => DebugShaders,
-  'WebGLDepthTexture': () => DepthTexture,
-  'WebGLDrawBuffers': () => DrawBuffers,
-  'WebGLFramebuffer': () => Framebuffer,
-  'WebGLLoseContext': () => LoseContext,
-  'WebGLProgram': () => Program,
-  'WebGLQuery': () => Query,
-  'WebGLRenderbuffer': () => Renderbuffer,
-  'WebGLRenderingContext': () => RenderingContext,
-  'WebGLRenderingContextBase': () => _WebGLRenderingContextBase,
-  'WebGLSampler': () => Sampler,
-  'WebGLShader': () => Shader,
-  'WebGLShaderPrecisionFormat': () => ShaderPrecisionFormat,
-  'WebGLSync': () => Sync,
-  'WebGLTexture': () => Texture,
-  'WebGLTransformFeedback': () => TransformFeedback,
-  'WebGLUniformLocation': () => UniformLocation,
-  'WebGLVertexArrayObject': () => VertexArrayObject,
-  'WebGLVertexArrayObjectOES': () => VertexArrayObjectOes,
-
-};
-
-// FIXME: Can we make this private?
-@Deprecated("Internal Use Only")
-final web_glBlinkFunctionMap = {
-  'ANGLEInstancedArrays': () => AngleInstancedArrays.internalCreateAngleInstancedArrays,
-  'CHROMIUMSubscribeUniform': () => ChromiumSubscribeUniform.internalCreateChromiumSubscribeUniform,
-  'EXTBlendMinMax': () => ExtBlendMinMax.internalCreateExtBlendMinMax,
-  'EXTFragDepth': () => ExtFragDepth.internalCreateExtFragDepth,
-  'EXTShaderTextureLOD': () => ExtShaderTextureLod.internalCreateExtShaderTextureLod,
-  'EXTTextureFilterAnisotropic': () => ExtTextureFilterAnisotropic.internalCreateExtTextureFilterAnisotropic,
-  'EXTsRGB': () => EXTsRgb.internalCreateEXTsRgb,
-  'OESElementIndexUint': () => OesElementIndexUint.internalCreateOesElementIndexUint,
-  'OESStandardDerivatives': () => OesStandardDerivatives.internalCreateOesStandardDerivatives,
-  'OESTextureFloat': () => OesTextureFloat.internalCreateOesTextureFloat,
-  'OESTextureFloatLinear': () => OesTextureFloatLinear.internalCreateOesTextureFloatLinear,
-  'OESTextureHalfFloat': () => OesTextureHalfFloat.internalCreateOesTextureHalfFloat,
-  'OESTextureHalfFloatLinear': () => OesTextureHalfFloatLinear.internalCreateOesTextureHalfFloatLinear,
-  'OESVertexArrayObject': () => OesVertexArrayObject.internalCreateOesVertexArrayObject,
-  'WebGL2RenderingContext': () => RenderingContext2.internalCreateRenderingContext2,
-  'WebGL2RenderingContextBase': () => _WebGL2RenderingContextBase.internalCreate_WebGL2RenderingContextBase,
-  'WebGLActiveInfo': () => ActiveInfo.internalCreateActiveInfo,
-  'WebGLBuffer': () => Buffer.internalCreateBuffer,
-  'WebGLCompressedTextureATC': () => CompressedTextureAtc.internalCreateCompressedTextureAtc,
-  'WebGLCompressedTextureETC1': () => CompressedTextureETC1.internalCreateCompressedTextureETC1,
-  'WebGLCompressedTexturePVRTC': () => CompressedTexturePvrtc.internalCreateCompressedTexturePvrtc,
-  'WebGLCompressedTextureS3TC': () => CompressedTextureS3TC.internalCreateCompressedTextureS3TC,
-  'WebGLContextEvent': () => ContextEvent.internalCreateContextEvent,
-  'WebGLDebugRendererInfo': () => DebugRendererInfo.internalCreateDebugRendererInfo,
-  'WebGLDebugShaders': () => DebugShaders.internalCreateDebugShaders,
-  'WebGLDepthTexture': () => DepthTexture.internalCreateDepthTexture,
-  'WebGLDrawBuffers': () => DrawBuffers.internalCreateDrawBuffers,
-  'WebGLFramebuffer': () => Framebuffer.internalCreateFramebuffer,
-  'WebGLLoseContext': () => LoseContext.internalCreateLoseContext,
-  'WebGLProgram': () => Program.internalCreateProgram,
-  'WebGLQuery': () => Query.internalCreateQuery,
-  'WebGLRenderbuffer': () => Renderbuffer.internalCreateRenderbuffer,
-  'WebGLRenderingContext': () => RenderingContext.internalCreateRenderingContext,
-  'WebGLSampler': () => Sampler.internalCreateSampler,
-  'WebGLShader': () => Shader.internalCreateShader,
-  'WebGLShaderPrecisionFormat': () => ShaderPrecisionFormat.internalCreateShaderPrecisionFormat,
-  'WebGLSync': () => Sync.internalCreateSync,
-  'WebGLTexture': () => Texture.internalCreateTexture,
-  'WebGLTransformFeedback': () => TransformFeedback.internalCreateTransformFeedback,
-  'WebGLUniformLocation': () => UniformLocation.internalCreateUniformLocation,
-  'WebGLVertexArrayObject': () => VertexArrayObject.internalCreateVertexArrayObject,
-  'WebGLVertexArrayObjectOES': () => VertexArrayObjectOes.internalCreateVertexArrayObjectOes,
+  'ANGLEInstancedArrays': () => AngleInstancedArrays.instanceRuntimeType,
+  'CHROMIUMSubscribeUniform': () => ChromiumSubscribeUniform.instanceRuntimeType,
+  'EXTBlendMinMax': () => ExtBlendMinMax.instanceRuntimeType,
+  'EXTFragDepth': () => ExtFragDepth.instanceRuntimeType,
+  'EXTShaderTextureLOD': () => ExtShaderTextureLod.instanceRuntimeType,
+  'EXTTextureFilterAnisotropic': () => ExtTextureFilterAnisotropic.instanceRuntimeType,
+  'EXTsRGB': () => EXTsRgb.instanceRuntimeType,
+  'OESElementIndexUint': () => OesElementIndexUint.instanceRuntimeType,
+  'OESStandardDerivatives': () => OesStandardDerivatives.instanceRuntimeType,
+  'OESTextureFloat': () => OesTextureFloat.instanceRuntimeType,
+  'OESTextureFloatLinear': () => OesTextureFloatLinear.instanceRuntimeType,
+  'OESTextureHalfFloat': () => OesTextureHalfFloat.instanceRuntimeType,
+  'OESTextureHalfFloatLinear': () => OesTextureHalfFloatLinear.instanceRuntimeType,
+  'OESVertexArrayObject': () => OesVertexArrayObject.instanceRuntimeType,
+  'WebGL2RenderingContext': () => RenderingContext2.instanceRuntimeType,
+  'WebGL2RenderingContextBase': () => _WebGL2RenderingContextBase.instanceRuntimeType,
+  'WebGLActiveInfo': () => ActiveInfo.instanceRuntimeType,
+  'WebGLBuffer': () => Buffer.instanceRuntimeType,
+  'WebGLCompressedTextureATC': () => CompressedTextureAtc.instanceRuntimeType,
+  'WebGLCompressedTextureETC1': () => CompressedTextureETC1.instanceRuntimeType,
+  'WebGLCompressedTexturePVRTC': () => CompressedTexturePvrtc.instanceRuntimeType,
+  'WebGLCompressedTextureS3TC': () => CompressedTextureS3TC.instanceRuntimeType,
+  'WebGLContextEvent': () => ContextEvent.instanceRuntimeType,
+  'WebGLDebugRendererInfo': () => DebugRendererInfo.instanceRuntimeType,
+  'WebGLDebugShaders': () => DebugShaders.instanceRuntimeType,
+  'WebGLDepthTexture': () => DepthTexture.instanceRuntimeType,
+  'WebGLDrawBuffers': () => DrawBuffers.instanceRuntimeType,
+  'WebGLFramebuffer': () => Framebuffer.instanceRuntimeType,
+  'WebGLLoseContext': () => LoseContext.instanceRuntimeType,
+  'WebGLProgram': () => Program.instanceRuntimeType,
+  'WebGLQuery': () => Query.instanceRuntimeType,
+  'WebGLRenderbuffer': () => Renderbuffer.instanceRuntimeType,
+  'WebGLRenderingContext': () => RenderingContext.instanceRuntimeType,
+  'WebGLRenderingContextBase': () => _WebGLRenderingContextBase.instanceRuntimeType,
+  'WebGLSampler': () => Sampler.instanceRuntimeType,
+  'WebGLShader': () => Shader.instanceRuntimeType,
+  'WebGLShaderPrecisionFormat': () => ShaderPrecisionFormat.instanceRuntimeType,
+  'WebGLSync': () => Sync.instanceRuntimeType,
+  'WebGLTexture': () => Texture.instanceRuntimeType,
+  'WebGLTransformFeedback': () => TransformFeedback.instanceRuntimeType,
+  'WebGLUniformLocation': () => UniformLocation.instanceRuntimeType,
+  'WebGLVertexArrayObject': () => VertexArrayObject.instanceRuntimeType,
+  'WebGLVertexArrayObjectOES': () => VertexArrayObjectOes.instanceRuntimeType,
 
 };
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -430,32 +382,24 @@
   // To suppress missing implicit constructor warnings.
   factory ActiveInfo._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ActiveInfo internalCreateActiveInfo() {
-    return new ActiveInfo._internalWrap();
-  }
 
-  factory ActiveInfo._internalWrap() {
-    return new ActiveInfo.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ActiveInfo.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('WebGLActiveInfo.name')
   @DocsEditable()
-  String get name => _blink.BlinkWebGLActiveInfo.instance.name_Getter_(unwrap_jso(this));
+  String get name => _blink.BlinkWebGLActiveInfo.instance.name_Getter_(this);
   
   @DomName('WebGLActiveInfo.size')
   @DocsEditable()
-  int get size => _blink.BlinkWebGLActiveInfo.instance.size_Getter_(unwrap_jso(this));
+  int get size => _blink.BlinkWebGLActiveInfo.instance.size_Getter_(this);
   
   @DomName('WebGLActiveInfo.type')
   @DocsEditable()
-  int get type => _blink.BlinkWebGLActiveInfo.instance.type_Getter_(unwrap_jso(this));
+  int get type => _blink.BlinkWebGLActiveInfo.instance.type_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -472,21 +416,13 @@
   // To suppress missing implicit constructor warnings.
   factory AngleInstancedArrays._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static AngleInstancedArrays internalCreateAngleInstancedArrays() {
-    return new AngleInstancedArrays._internalWrap();
-  }
 
-  factory AngleInstancedArrays._internalWrap() {
-    return new AngleInstancedArrays.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   AngleInstancedArrays.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('ANGLEInstancedArrays.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE')
   @DocsEditable()
   @Experimental() // untriaged
@@ -495,17 +431,17 @@
   @DomName('ANGLEInstancedArrays.drawArraysInstancedANGLE')
   @DocsEditable()
   @Experimental() // untriaged
-  void drawArraysInstancedAngle(int mode, int first, int count, int primcount) => _blink.BlinkANGLEInstancedArrays.instance.drawArraysInstancedANGLE_Callback_4_(unwrap_jso(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.instance.drawElementsInstancedANGLE_Callback_5_(unwrap_jso(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.instance.vertexAttribDivisorANGLE_Callback_2_(unwrap_jso(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
@@ -522,21 +458,13 @@
   // To suppress missing implicit constructor warnings.
   factory Buffer._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Buffer internalCreateBuffer() {
-    return new Buffer._internalWrap();
-  }
 
-  factory Buffer._internalWrap() {
-    return new Buffer.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Buffer.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -552,21 +480,13 @@
   // To suppress missing implicit constructor warnings.
   factory ChromiumSubscribeUniform._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ChromiumSubscribeUniform internalCreateChromiumSubscribeUniform() {
-    return new ChromiumSubscribeUniform._internalWrap();
-  }
 
-  factory ChromiumSubscribeUniform._internalWrap() {
-    return new ChromiumSubscribeUniform.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ChromiumSubscribeUniform.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('CHROMIUMSubscribeUniform.MOUSE_POSITION_CHROMIUM')
   @DocsEditable()
   @Experimental() // untriaged
@@ -580,37 +500,37 @@
   @DomName('CHROMIUMSubscribeUniform.bindValuebufferCHROMIUM')
   @DocsEditable()
   @Experimental() // untriaged
-  void bindValuebufferChromium(int target, ChromiumValuebuffer buffer) => _blink.BlinkCHROMIUMSubscribeUniform.instance.bindValuebufferCHROMIUM_Callback_2_(unwrap_jso(this), target, unwrap_jso(buffer));
+  void bindValuebufferChromium(int target, ChromiumValuebuffer buffer) => _blink.BlinkCHROMIUMSubscribeUniform.instance.bindValuebufferCHROMIUM_Callback_2_(this, target, buffer);
   
   @DomName('CHROMIUMSubscribeUniform.createValuebufferCHROMIUM')
   @DocsEditable()
   @Experimental() // untriaged
-  ChromiumValuebuffer createValuebufferChromium() => wrap_jso(_blink.BlinkCHROMIUMSubscribeUniform.instance.createValuebufferCHROMIUM_Callback_0_(unwrap_jso(this)));
+  ChromiumValuebuffer createValuebufferChromium() => _blink.BlinkCHROMIUMSubscribeUniform.instance.createValuebufferCHROMIUM_Callback_0_(this);
   
   @DomName('CHROMIUMSubscribeUniform.deleteValuebufferCHROMIUM')
   @DocsEditable()
   @Experimental() // untriaged
-  void deleteValuebufferChromium(ChromiumValuebuffer buffer) => _blink.BlinkCHROMIUMSubscribeUniform.instance.deleteValuebufferCHROMIUM_Callback_1_(unwrap_jso(this), unwrap_jso(buffer));
+  void deleteValuebufferChromium(ChromiumValuebuffer buffer) => _blink.BlinkCHROMIUMSubscribeUniform.instance.deleteValuebufferCHROMIUM_Callback_1_(this, buffer);
   
   @DomName('CHROMIUMSubscribeUniform.isValuebufferCHROMIUM')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isValuebufferChromium(ChromiumValuebuffer buffer) => _blink.BlinkCHROMIUMSubscribeUniform.instance.isValuebufferCHROMIUM_Callback_1_(unwrap_jso(this), unwrap_jso(buffer));
+  bool isValuebufferChromium(ChromiumValuebuffer buffer) => _blink.BlinkCHROMIUMSubscribeUniform.instance.isValuebufferCHROMIUM_Callback_1_(this, buffer);
   
   @DomName('CHROMIUMSubscribeUniform.populateSubscribedValuesCHROMIUM')
   @DocsEditable()
   @Experimental() // untriaged
-  void populateSubscribedValuesChromium(int target) => _blink.BlinkCHROMIUMSubscribeUniform.instance.populateSubscribedValuesCHROMIUM_Callback_1_(unwrap_jso(this), target);
+  void populateSubscribedValuesChromium(int target) => _blink.BlinkCHROMIUMSubscribeUniform.instance.populateSubscribedValuesCHROMIUM_Callback_1_(this, target);
   
   @DomName('CHROMIUMSubscribeUniform.subscribeValueCHROMIUM')
   @DocsEditable()
   @Experimental() // untriaged
-  void subscribeValueChromium(int target, int subscriptions) => _blink.BlinkCHROMIUMSubscribeUniform.instance.subscribeValueCHROMIUM_Callback_2_(unwrap_jso(this), target, subscriptions);
+  void subscribeValueChromium(int target, int subscriptions) => _blink.BlinkCHROMIUMSubscribeUniform.instance.subscribeValueCHROMIUM_Callback_2_(this, target, subscriptions);
   
   @DomName('CHROMIUMSubscribeUniform.uniformValuebufferCHROMIUM')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniformValuebufferChromium(UniformLocation location, int target, int subscription) => _blink.BlinkCHROMIUMSubscribeUniform.instance.uniformValuebufferCHROMIUM_Callback_3_(unwrap_jso(this), unwrap_jso(location), target, subscription);
+  void uniformValuebufferChromium(UniformLocation location, int target, int subscription) => _blink.BlinkCHROMIUMSubscribeUniform.instance.uniformValuebufferCHROMIUM_Callback_3_(this, location, target, subscription);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -628,21 +548,13 @@
   // To suppress missing implicit constructor warnings.
   factory CompressedTextureAtc._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static CompressedTextureAtc internalCreateCompressedTextureAtc() {
-    return new CompressedTextureAtc._internalWrap();
-  }
 
-  factory CompressedTextureAtc._internalWrap() {
-    return new CompressedTextureAtc.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CompressedTextureAtc.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('WebGLCompressedTextureATC.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL')
   @DocsEditable()
   static const int COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 0x8C93;
@@ -670,21 +582,13 @@
   // To suppress missing implicit constructor warnings.
   factory CompressedTextureETC1._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static CompressedTextureETC1 internalCreateCompressedTextureETC1() {
-    return new CompressedTextureETC1._internalWrap();
-  }
 
-  factory CompressedTextureETC1._internalWrap() {
-    return new CompressedTextureETC1.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CompressedTextureETC1.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('WebGLCompressedTextureETC1.COMPRESSED_RGB_ETC1_WEBGL')
   @DocsEditable()
   @Experimental() // untriaged
@@ -706,21 +610,13 @@
   // To suppress missing implicit constructor warnings.
   factory CompressedTexturePvrtc._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static CompressedTexturePvrtc internalCreateCompressedTexturePvrtc() {
-    return new CompressedTexturePvrtc._internalWrap();
-  }
 
-  factory CompressedTexturePvrtc._internalWrap() {
-    return new CompressedTexturePvrtc.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CompressedTexturePvrtc.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('WebGLCompressedTexturePVRTC.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG')
   @DocsEditable()
   static const int COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03;
@@ -753,21 +649,13 @@
   // To suppress missing implicit constructor warnings.
   factory CompressedTextureS3TC._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static CompressedTextureS3TC internalCreateCompressedTextureS3TC() {
-    return new CompressedTextureS3TC._internalWrap();
-  }
 
-  factory CompressedTextureS3TC._internalWrap() {
-    return new CompressedTextureS3TC.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   CompressedTextureS3TC.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('WebGLCompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT1_EXT')
   @DocsEditable()
   static const int COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1;
@@ -804,18 +692,14 @@
   factory ContextEvent(String type, [Map eventInit]) {
     if (eventInit != null) {
       var eventInit_1 = convertDartToNative_Dictionary(eventInit);
-      return wrap_jso(_blink.BlinkWebGLContextEvent.instance.constructorCallback_2_(type, eventInit_1));
+      return _blink.BlinkWebGLContextEvent.instance.constructorCallback_2_(type, eventInit_1);
     }
-    return wrap_jso(_blink.BlinkWebGLContextEvent.instance.constructorCallback_1_(type));
+    return _blink.BlinkWebGLContextEvent.instance.constructorCallback_1_(type);
   }
 
 
   @Deprecated("Internal Use Only")
-  static ContextEvent internalCreateContextEvent() {
-    return new ContextEvent._internalWrap();
-  }
-
-  external factory ContextEvent._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ContextEvent.internal_() : super.internal_();
@@ -823,7 +707,7 @@
 
   @DomName('WebGLContextEvent.statusMessage')
   @DocsEditable()
-  String get statusMessage => _blink.BlinkWebGLContextEvent.instance.statusMessage_Getter_(unwrap_jso(this));
+  String get statusMessage => _blink.BlinkWebGLContextEvent.instance.statusMessage_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -841,21 +725,13 @@
   // To suppress missing implicit constructor warnings.
   factory DebugRendererInfo._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DebugRendererInfo internalCreateDebugRendererInfo() {
-    return new DebugRendererInfo._internalWrap();
-  }
 
-  factory DebugRendererInfo._internalWrap() {
-    return new DebugRendererInfo.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DebugRendererInfo.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('WebGLDebugRendererInfo.UNMASKED_RENDERER_WEBGL')
   @DocsEditable()
   static const int UNMASKED_RENDERER_WEBGL = 0x9246;
@@ -880,24 +756,16 @@
   // To suppress missing implicit constructor warnings.
   factory DebugShaders._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DebugShaders internalCreateDebugShaders() {
-    return new DebugShaders._internalWrap();
-  }
 
-  factory DebugShaders._internalWrap() {
-    return new DebugShaders.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DebugShaders.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('WebGLDebugShaders.getTranslatedShaderSource')
   @DocsEditable()
-  String getTranslatedShaderSource(Shader shader) => _blink.BlinkWebGLDebugShaders.instance.getTranslatedShaderSource_Callback_1_(unwrap_jso(this), unwrap_jso(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
@@ -915,21 +783,13 @@
   // To suppress missing implicit constructor warnings.
   factory DepthTexture._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DepthTexture internalCreateDepthTexture() {
-    return new DepthTexture._internalWrap();
-  }
 
-  factory DepthTexture._internalWrap() {
-    return new DepthTexture.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DepthTexture.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('WebGLDepthTexture.UNSIGNED_INT_24_8_WEBGL')
   @DocsEditable()
   static const int UNSIGNED_INT_24_8_WEBGL = 0x84FA;
@@ -950,21 +810,13 @@
   // To suppress missing implicit constructor warnings.
   factory DrawBuffers._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static DrawBuffers internalCreateDrawBuffers() {
-    return new DrawBuffers._internalWrap();
-  }
 
-  factory DrawBuffers._internalWrap() {
-    return new DrawBuffers.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   DrawBuffers.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('WebGLDrawBuffers.COLOR_ATTACHMENT0_WEBGL')
   @DocsEditable()
   static const int COLOR_ATTACHMENT0_WEBGL = 0x8CE0;
@@ -1103,7 +955,7 @@
 
   @DomName('WebGLDrawBuffers.drawBuffersWEBGL')
   @DocsEditable()
-  void drawBuffersWebgl(List<int> buffers) => _blink.BlinkWebGLDrawBuffers.instance.drawBuffersWEBGL_Callback_1_(unwrap_jso(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
@@ -1120,21 +972,13 @@
   // To suppress missing implicit constructor warnings.
   factory EXTsRgb._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static EXTsRgb internalCreateEXTsRgb() {
-    return new EXTsRgb._internalWrap();
-  }
 
-  factory EXTsRgb._internalWrap() {
-    return new EXTsRgb.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   EXTsRgb.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('EXTsRGB.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT')
   @DocsEditable()
   @Experimental() // untriaged
@@ -1170,21 +1014,13 @@
   // To suppress missing implicit constructor warnings.
   factory ExtBlendMinMax._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ExtBlendMinMax internalCreateExtBlendMinMax() {
-    return new ExtBlendMinMax._internalWrap();
-  }
 
-  factory ExtBlendMinMax._internalWrap() {
-    return new ExtBlendMinMax.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ExtBlendMinMax.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('EXTBlendMinMax.MAX_EXT')
   @DocsEditable()
   @Experimental() // untriaged
@@ -1211,21 +1047,13 @@
   // To suppress missing implicit constructor warnings.
   factory ExtFragDepth._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ExtFragDepth internalCreateExtFragDepth() {
-    return new ExtFragDepth._internalWrap();
-  }
 
-  factory ExtFragDepth._internalWrap() {
-    return new ExtFragDepth.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ExtFragDepth.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -1241,21 +1069,13 @@
   // To suppress missing implicit constructor warnings.
   factory ExtShaderTextureLod._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ExtShaderTextureLod internalCreateExtShaderTextureLod() {
-    return new ExtShaderTextureLod._internalWrap();
-  }
 
-  factory ExtShaderTextureLod._internalWrap() {
-    return new ExtShaderTextureLod.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ExtShaderTextureLod.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -1272,21 +1092,13 @@
   // To suppress missing implicit constructor warnings.
   factory ExtTextureFilterAnisotropic._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ExtTextureFilterAnisotropic internalCreateExtTextureFilterAnisotropic() {
-    return new ExtTextureFilterAnisotropic._internalWrap();
-  }
 
-  factory ExtTextureFilterAnisotropic._internalWrap() {
-    return new ExtTextureFilterAnisotropic.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ExtTextureFilterAnisotropic.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('EXTTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT')
   @DocsEditable()
   static const int MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF;
@@ -1310,21 +1122,13 @@
   // To suppress missing implicit constructor warnings.
   factory Framebuffer._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Framebuffer internalCreateFramebuffer() {
-    return new Framebuffer._internalWrap();
-  }
 
-  factory Framebuffer._internalWrap() {
-    return new Framebuffer.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Framebuffer.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -1341,28 +1145,20 @@
   // To suppress missing implicit constructor warnings.
   factory LoseContext._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static LoseContext internalCreateLoseContext() {
-    return new LoseContext._internalWrap();
-  }
 
-  factory LoseContext._internalWrap() {
-    return new LoseContext.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   LoseContext.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('WebGLLoseContext.loseContext')
   @DocsEditable()
-  void loseContext() => _blink.BlinkWebGLLoseContext.instance.loseContext_Callback_0_(unwrap_jso(this));
+  void loseContext() => _blink.BlinkWebGLLoseContext.instance.loseContext_Callback_0_(this);
   
   @DomName('WebGLLoseContext.restoreContext')
   @DocsEditable()
-  void restoreContext() => _blink.BlinkWebGLLoseContext.instance.restoreContext_Callback_0_(unwrap_jso(this));
+  void restoreContext() => _blink.BlinkWebGLLoseContext.instance.restoreContext_Callback_0_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1380,21 +1176,13 @@
   // To suppress missing implicit constructor warnings.
   factory OesElementIndexUint._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static OesElementIndexUint internalCreateOesElementIndexUint() {
-    return new OesElementIndexUint._internalWrap();
-  }
 
-  factory OesElementIndexUint._internalWrap() {
-    return new OesElementIndexUint.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   OesElementIndexUint.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -1411,21 +1199,13 @@
   // To suppress missing implicit constructor warnings.
   factory OesStandardDerivatives._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static OesStandardDerivatives internalCreateOesStandardDerivatives() {
-    return new OesStandardDerivatives._internalWrap();
-  }
 
-  factory OesStandardDerivatives._internalWrap() {
-    return new OesStandardDerivatives.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   OesStandardDerivatives.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('OESStandardDerivatives.FRAGMENT_SHADER_DERIVATIVE_HINT_OES')
   @DocsEditable()
   static const int FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B;
@@ -1446,21 +1226,13 @@
   // To suppress missing implicit constructor warnings.
   factory OesTextureFloat._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static OesTextureFloat internalCreateOesTextureFloat() {
-    return new OesTextureFloat._internalWrap();
-  }
 
-  factory OesTextureFloat._internalWrap() {
-    return new OesTextureFloat.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   OesTextureFloat.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -1477,21 +1249,13 @@
   // To suppress missing implicit constructor warnings.
   factory OesTextureFloatLinear._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static OesTextureFloatLinear internalCreateOesTextureFloatLinear() {
-    return new OesTextureFloatLinear._internalWrap();
-  }
 
-  factory OesTextureFloatLinear._internalWrap() {
-    return new OesTextureFloatLinear.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   OesTextureFloatLinear.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -1508,21 +1272,13 @@
   // To suppress missing implicit constructor warnings.
   factory OesTextureHalfFloat._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static OesTextureHalfFloat internalCreateOesTextureHalfFloat() {
-    return new OesTextureHalfFloat._internalWrap();
-  }
 
-  factory OesTextureHalfFloat._internalWrap() {
-    return new OesTextureHalfFloat.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   OesTextureHalfFloat.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('OESTextureHalfFloat.HALF_FLOAT_OES')
   @DocsEditable()
   static const int HALF_FLOAT_OES = 0x8D61;
@@ -1543,21 +1299,13 @@
   // To suppress missing implicit constructor warnings.
   factory OesTextureHalfFloatLinear._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static OesTextureHalfFloatLinear internalCreateOesTextureHalfFloatLinear() {
-    return new OesTextureHalfFloatLinear._internalWrap();
-  }
 
-  factory OesTextureHalfFloatLinear._internalWrap() {
-    return new OesTextureHalfFloatLinear.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   OesTextureHalfFloatLinear.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -1574,40 +1322,32 @@
   // To suppress missing implicit constructor warnings.
   factory OesVertexArrayObject._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static OesVertexArrayObject internalCreateOesVertexArrayObject() {
-    return new OesVertexArrayObject._internalWrap();
-  }
 
-  factory OesVertexArrayObject._internalWrap() {
-    return new OesVertexArrayObject.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   OesVertexArrayObject.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('OESVertexArrayObject.VERTEX_ARRAY_BINDING_OES')
   @DocsEditable()
   static const int VERTEX_ARRAY_BINDING_OES = 0x85B5;
 
   @DomName('OESVertexArrayObject.bindVertexArrayOES')
   @DocsEditable()
-  void bindVertexArray(VertexArrayObjectOes arrayObject) => _blink.BlinkOESVertexArrayObject.instance.bindVertexArrayOES_Callback_1_(unwrap_jso(this), unwrap_jso(arrayObject));
+  void bindVertexArray(VertexArrayObjectOes arrayObject) => _blink.BlinkOESVertexArrayObject.instance.bindVertexArrayOES_Callback_1_(this, arrayObject);
   
   @DomName('OESVertexArrayObject.createVertexArrayOES')
   @DocsEditable()
-  VertexArrayObjectOes createVertexArray() => wrap_jso(_blink.BlinkOESVertexArrayObject.instance.createVertexArrayOES_Callback_0_(unwrap_jso(this)));
+  VertexArrayObjectOes createVertexArray() => _blink.BlinkOESVertexArrayObject.instance.createVertexArrayOES_Callback_0_(this);
   
   @DomName('OESVertexArrayObject.deleteVertexArrayOES')
   @DocsEditable()
-  void deleteVertexArray(VertexArrayObjectOes arrayObject) => _blink.BlinkOESVertexArrayObject.instance.deleteVertexArrayOES_Callback_1_(unwrap_jso(this), unwrap_jso(arrayObject));
+  void deleteVertexArray(VertexArrayObjectOes arrayObject) => _blink.BlinkOESVertexArrayObject.instance.deleteVertexArrayOES_Callback_1_(this, arrayObject);
   
   @DomName('OESVertexArrayObject.isVertexArrayOES')
   @DocsEditable()
-  bool isVertexArray(VertexArrayObjectOes arrayObject) => _blink.BlinkOESVertexArrayObject.instance.isVertexArrayOES_Callback_1_(unwrap_jso(this), unwrap_jso(arrayObject));
+  bool isVertexArray(VertexArrayObjectOes arrayObject) => _blink.BlinkOESVertexArrayObject.instance.isVertexArrayOES_Callback_1_(this, arrayObject);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1624,21 +1364,13 @@
   // To suppress missing implicit constructor warnings.
   factory Program._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Program internalCreateProgram() {
-    return new Program._internalWrap();
-  }
 
-  factory Program._internalWrap() {
-    return new Program.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Program.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -1654,21 +1386,13 @@
   // To suppress missing implicit constructor warnings.
   factory Query._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Query internalCreateQuery() {
-    return new Query._internalWrap();
-  }
 
-  factory Query._internalWrap() {
-    return new Query.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Query.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -1684,21 +1408,13 @@
   // To suppress missing implicit constructor warnings.
   factory Renderbuffer._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Renderbuffer internalCreateRenderbuffer() {
-    return new Renderbuffer._internalWrap();
-  }
 
-  factory Renderbuffer._internalWrap() {
-    return new Renderbuffer.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Renderbuffer.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -1714,21 +1430,13 @@
   // To suppress missing implicit constructor warnings.
   factory RenderingContext._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static RenderingContext internalCreateRenderingContext() {
-    return new RenderingContext._internalWrap();
-  }
 
-  factory RenderingContext._internalWrap() {
-    return new RenderingContext.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   RenderingContext.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
@@ -2925,75 +2633,75 @@
   @DomName('WebGLRenderingContext.canvas')
   @DocsEditable()
   @Experimental() // untriaged
-  CanvasElement get canvas => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.canvas_Getter_(unwrap_jso(this)));
+  CanvasElement get canvas => _blink.BlinkWebGLRenderingContext.instance.canvas_Getter_(this);
   
   @DomName('WebGLRenderingContext.drawingBufferHeight')
   @DocsEditable()
-  int get drawingBufferHeight => _blink.BlinkWebGLRenderingContext.instance.drawingBufferHeight_Getter_(unwrap_jso(this));
+  int get drawingBufferHeight => _blink.BlinkWebGLRenderingContext.instance.drawingBufferHeight_Getter_(this);
   
   @DomName('WebGLRenderingContext.drawingBufferWidth')
   @DocsEditable()
-  int get drawingBufferWidth => _blink.BlinkWebGLRenderingContext.instance.drawingBufferWidth_Getter_(unwrap_jso(this));
+  int get drawingBufferWidth => _blink.BlinkWebGLRenderingContext.instance.drawingBufferWidth_Getter_(this);
   
   @DomName('WebGLRenderingContext.activeTexture')
   @DocsEditable()
-  void activeTexture(int texture) => _blink.BlinkWebGLRenderingContext.instance.activeTexture_Callback_1_(unwrap_jso(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.instance.attachShader_Callback_2_(unwrap_jso(this), unwrap_jso(program), unwrap_jso(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.instance.bindAttribLocation_Callback_3_(unwrap_jso(this), unwrap_jso(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.instance.bindBuffer_Callback_2_(unwrap_jso(this), target, unwrap_jso(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.instance.bindFramebuffer_Callback_2_(unwrap_jso(this), target, unwrap_jso(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.instance.bindRenderbuffer_Callback_2_(unwrap_jso(this), target, unwrap_jso(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.instance.bindTexture_Callback_2_(unwrap_jso(this), target, unwrap_jso(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.instance.blendColor_Callback_4_(unwrap_jso(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.instance.blendEquation_Callback_1_(unwrap_jso(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.instance.blendEquationSeparate_Callback_2_(unwrap_jso(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.instance.blendFunc_Callback_2_(unwrap_jso(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.instance.blendFuncSeparate_Callback_4_(unwrap_jso(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);
   
   void bufferData(int target, data_OR_size, int usage) {
     if ((usage is int) && (data_OR_size is int) && (target is int)) {
-      _blink.BlinkWebGLRenderingContext.instance.bufferData_Callback_3_(unwrap_jso(this), target, unwrap_jso(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.instance.bufferData_Callback_3_(unwrap_jso(this), target, unwrap_jso(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.instance.bufferData_Callback_3_(unwrap_jso(this), target, unwrap_jso(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");
@@ -3001,11 +2709,11 @@
 
   void bufferSubData(int target, int offset, data) {
     if ((data is TypedData) && (offset is int) && (target is int)) {
-      _blink.BlinkWebGLRenderingContext.instance.bufferSubData_Callback_3_(unwrap_jso(this), target, offset, unwrap_jso(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.instance.bufferSubData_Callback_3_(unwrap_jso(this), target, offset, unwrap_jso(data));
+      _blink.BlinkWebGLRenderingContext.instance.bufferSubData_Callback_3_(this, target, offset, data);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -3013,371 +2721,371 @@
 
   @DomName('WebGLRenderingContext.checkFramebufferStatus')
   @DocsEditable()
-  int checkFramebufferStatus(int target) => _blink.BlinkWebGLRenderingContext.instance.checkFramebufferStatus_Callback_1_(unwrap_jso(this), target);
+  int checkFramebufferStatus(int target) => _blink.BlinkWebGLRenderingContext.instance.checkFramebufferStatus_Callback_1_(this, target);
   
   @DomName('WebGLRenderingContext.clear')
   @DocsEditable()
-  void clear(int mask) => _blink.BlinkWebGLRenderingContext.instance.clear_Callback_1_(unwrap_jso(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.instance.clearColor_Callback_4_(unwrap_jso(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.instance.clearDepth_Callback_1_(unwrap_jso(this), depth);
+  void clearDepth(num depth) => _blink.BlinkWebGLRenderingContext.instance.clearDepth_Callback_1_(this, depth);
   
   @DomName('WebGLRenderingContext.clearStencil')
   @DocsEditable()
-  void clearStencil(int s) => _blink.BlinkWebGLRenderingContext.instance.clearStencil_Callback_1_(unwrap_jso(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.instance.colorMask_Callback_4_(unwrap_jso(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.instance.compileShader_Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.compressedTexImage2D_Callback_7_(unwrap_jso(this), target, level, internalformat, width, height, border, unwrap_jso(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.instance.compressedTexSubImage2D_Callback_8_(unwrap_jso(this), target, level, xoffset, yoffset, width, height, format, unwrap_jso(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.instance.copyTexImage2D_Callback_8_(unwrap_jso(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.instance.copyTexSubImage2D_Callback_8_(unwrap_jso(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() => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.createBuffer_Callback_0_(unwrap_jso(this)));
+  Buffer createBuffer() => _blink.BlinkWebGLRenderingContext.instance.createBuffer_Callback_0_(this);
   
   @DomName('WebGLRenderingContext.createFramebuffer')
   @DocsEditable()
-  Framebuffer createFramebuffer() => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.createFramebuffer_Callback_0_(unwrap_jso(this)));
+  Framebuffer createFramebuffer() => _blink.BlinkWebGLRenderingContext.instance.createFramebuffer_Callback_0_(this);
   
   @DomName('WebGLRenderingContext.createProgram')
   @DocsEditable()
-  Program createProgram() => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.createProgram_Callback_0_(unwrap_jso(this)));
+  Program createProgram() => _blink.BlinkWebGLRenderingContext.instance.createProgram_Callback_0_(this);
   
   @DomName('WebGLRenderingContext.createRenderbuffer')
   @DocsEditable()
-  Renderbuffer createRenderbuffer() => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.createRenderbuffer_Callback_0_(unwrap_jso(this)));
+  Renderbuffer createRenderbuffer() => _blink.BlinkWebGLRenderingContext.instance.createRenderbuffer_Callback_0_(this);
   
   @DomName('WebGLRenderingContext.createShader')
   @DocsEditable()
-  Shader createShader(int type) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.createShader_Callback_1_(unwrap_jso(this), type));
+  Shader createShader(int type) => _blink.BlinkWebGLRenderingContext.instance.createShader_Callback_1_(this, type);
   
   @DomName('WebGLRenderingContext.createTexture')
   @DocsEditable()
-  Texture createTexture() => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.createTexture_Callback_0_(unwrap_jso(this)));
+  Texture createTexture() => _blink.BlinkWebGLRenderingContext.instance.createTexture_Callback_0_(this);
   
   @DomName('WebGLRenderingContext.cullFace')
   @DocsEditable()
-  void cullFace(int mode) => _blink.BlinkWebGLRenderingContext.instance.cullFace_Callback_1_(unwrap_jso(this), mode);
+  void cullFace(int mode) => _blink.BlinkWebGLRenderingContext.instance.cullFace_Callback_1_(this, mode);
   
   @DomName('WebGLRenderingContext.deleteBuffer')
   @DocsEditable()
-  void deleteBuffer(Buffer buffer) => _blink.BlinkWebGLRenderingContext.instance.deleteBuffer_Callback_1_(unwrap_jso(this), unwrap_jso(buffer));
+  void deleteBuffer(Buffer buffer) => _blink.BlinkWebGLRenderingContext.instance.deleteBuffer_Callback_1_(this, buffer);
   
   @DomName('WebGLRenderingContext.deleteFramebuffer')
   @DocsEditable()
-  void deleteFramebuffer(Framebuffer framebuffer) => _blink.BlinkWebGLRenderingContext.instance.deleteFramebuffer_Callback_1_(unwrap_jso(this), unwrap_jso(framebuffer));
+  void deleteFramebuffer(Framebuffer framebuffer) => _blink.BlinkWebGLRenderingContext.instance.deleteFramebuffer_Callback_1_(this, framebuffer);
   
   @DomName('WebGLRenderingContext.deleteProgram')
   @DocsEditable()
-  void deleteProgram(Program program) => _blink.BlinkWebGLRenderingContext.instance.deleteProgram_Callback_1_(unwrap_jso(this), unwrap_jso(program));
+  void deleteProgram(Program program) => _blink.BlinkWebGLRenderingContext.instance.deleteProgram_Callback_1_(this, program);
   
   @DomName('WebGLRenderingContext.deleteRenderbuffer')
   @DocsEditable()
-  void deleteRenderbuffer(Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.instance.deleteRenderbuffer_Callback_1_(unwrap_jso(this), unwrap_jso(renderbuffer));
+  void deleteRenderbuffer(Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.instance.deleteRenderbuffer_Callback_1_(this, renderbuffer);
   
   @DomName('WebGLRenderingContext.deleteShader')
   @DocsEditable()
-  void deleteShader(Shader shader) => _blink.BlinkWebGLRenderingContext.instance.deleteShader_Callback_1_(unwrap_jso(this), unwrap_jso(shader));
+  void deleteShader(Shader shader) => _blink.BlinkWebGLRenderingContext.instance.deleteShader_Callback_1_(this, shader);
   
   @DomName('WebGLRenderingContext.deleteTexture')
   @DocsEditable()
-  void deleteTexture(Texture texture) => _blink.BlinkWebGLRenderingContext.instance.deleteTexture_Callback_1_(unwrap_jso(this), unwrap_jso(texture));
+  void deleteTexture(Texture texture) => _blink.BlinkWebGLRenderingContext.instance.deleteTexture_Callback_1_(this, texture);
   
   @DomName('WebGLRenderingContext.depthFunc')
   @DocsEditable()
-  void depthFunc(int func) => _blink.BlinkWebGLRenderingContext.instance.depthFunc_Callback_1_(unwrap_jso(this), func);
+  void depthFunc(int func) => _blink.BlinkWebGLRenderingContext.instance.depthFunc_Callback_1_(this, func);
   
   @DomName('WebGLRenderingContext.depthMask')
   @DocsEditable()
-  void depthMask(bool flag) => _blink.BlinkWebGLRenderingContext.instance.depthMask_Callback_1_(unwrap_jso(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.instance.depthRange_Callback_2_(unwrap_jso(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.instance.detachShader_Callback_2_(unwrap_jso(this), unwrap_jso(program), unwrap_jso(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.instance.disable_Callback_1_(unwrap_jso(this), cap);
+  void disable(int cap) => _blink.BlinkWebGLRenderingContext.instance.disable_Callback_1_(this, cap);
   
   @DomName('WebGLRenderingContext.disableVertexAttribArray')
   @DocsEditable()
-  void disableVertexAttribArray(int index) => _blink.BlinkWebGLRenderingContext.instance.disableVertexAttribArray_Callback_1_(unwrap_jso(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.instance.drawArrays_Callback_3_(unwrap_jso(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.instance.drawElements_Callback_4_(unwrap_jso(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.instance.enable_Callback_1_(unwrap_jso(this), cap);
+  void enable(int cap) => _blink.BlinkWebGLRenderingContext.instance.enable_Callback_1_(this, cap);
   
   @DomName('WebGLRenderingContext.enableVertexAttribArray')
   @DocsEditable()
-  void enableVertexAttribArray(int index) => _blink.BlinkWebGLRenderingContext.instance.enableVertexAttribArray_Callback_1_(unwrap_jso(this), index);
+  void enableVertexAttribArray(int index) => _blink.BlinkWebGLRenderingContext.instance.enableVertexAttribArray_Callback_1_(this, index);
   
   @DomName('WebGLRenderingContext.finish')
   @DocsEditable()
-  void finish() => _blink.BlinkWebGLRenderingContext.instance.finish_Callback_0_(unwrap_jso(this));
+  void finish() => _blink.BlinkWebGLRenderingContext.instance.finish_Callback_0_(this);
   
   @DomName('WebGLRenderingContext.flush')
   @DocsEditable()
-  void flush() => _blink.BlinkWebGLRenderingContext.instance.flush_Callback_0_(unwrap_jso(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.instance.framebufferRenderbuffer_Callback_4_(unwrap_jso(this), target, attachment, renderbuffertarget, unwrap_jso(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.instance.framebufferTexture2D_Callback_5_(unwrap_jso(this), target, attachment, textarget, unwrap_jso(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.instance.frontFace_Callback_1_(unwrap_jso(this), mode);
+  void frontFace(int mode) => _blink.BlinkWebGLRenderingContext.instance.frontFace_Callback_1_(this, mode);
   
   @DomName('WebGLRenderingContext.generateMipmap')
   @DocsEditable()
-  void generateMipmap(int target) => _blink.BlinkWebGLRenderingContext.instance.generateMipmap_Callback_1_(unwrap_jso(this), target);
+  void generateMipmap(int target) => _blink.BlinkWebGLRenderingContext.instance.generateMipmap_Callback_1_(this, target);
   
   @DomName('WebGLRenderingContext.getActiveAttrib')
   @DocsEditable()
-  ActiveInfo getActiveAttrib(Program program, int index) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getActiveAttrib_Callback_2_(unwrap_jso(this), unwrap_jso(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) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getActiveUniform_Callback_2_(unwrap_jso(this), unwrap_jso(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) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getAttachedShaders_Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.getAttribLocation_Callback_2_(unwrap_jso(this), unwrap_jso(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) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getBufferParameter_Callback_2_(unwrap_jso(this), target, pname));
+  Object getBufferParameter(int target, int pname) => (_blink.BlinkWebGLRenderingContext.instance.getBufferParameter_Callback_2_(this, target, pname));
   
   @DomName('WebGLRenderingContext.getContextAttributes')
   @DocsEditable()
-   getContextAttributes() => convertNativeDictionaryToDartDictionary(wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getContextAttributes_Callback_0_(unwrap_jso(this))));
+   getContextAttributes() => convertNativeDictionaryToDartDictionary((_blink.BlinkWebGLRenderingContext.instance.getContextAttributes_Callback_0_(this)));
   
   @DomName('WebGLRenderingContext.getError')
   @DocsEditable()
-  int getError() => _blink.BlinkWebGLRenderingContext.instance.getError_Callback_0_(unwrap_jso(this));
+  int getError() => _blink.BlinkWebGLRenderingContext.instance.getError_Callback_0_(this);
   
   @DomName('WebGLRenderingContext.getExtension')
   @DocsEditable()
-  Object getExtension(String name) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getExtension_Callback_1_(unwrap_jso(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) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getFramebufferAttachmentParameter_Callback_3_(unwrap_jso(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) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getParameter_Callback_1_(unwrap_jso(this), pname));
+  Object getParameter(int pname) => (_blink.BlinkWebGLRenderingContext.instance.getParameter_Callback_1_(this, pname));
   
   @DomName('WebGLRenderingContext.getProgramInfoLog')
   @DocsEditable()
-  String getProgramInfoLog(Program program) => _blink.BlinkWebGLRenderingContext.instance.getProgramInfoLog_Callback_1_(unwrap_jso(this), unwrap_jso(program));
+  String getProgramInfoLog(Program program) => _blink.BlinkWebGLRenderingContext.instance.getProgramInfoLog_Callback_1_(this, program);
   
   @DomName('WebGLRenderingContext.getProgramParameter')
   @DocsEditable()
-  Object getProgramParameter(Program program, int pname) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getProgramParameter_Callback_2_(unwrap_jso(this), unwrap_jso(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) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getRenderbufferParameter_Callback_2_(unwrap_jso(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.instance.getShaderInfoLog_Callback_1_(unwrap_jso(this), unwrap_jso(shader));
+  String getShaderInfoLog(Shader shader) => _blink.BlinkWebGLRenderingContext.instance.getShaderInfoLog_Callback_1_(this, shader);
   
   @DomName('WebGLRenderingContext.getShaderParameter')
   @DocsEditable()
-  Object getShaderParameter(Shader shader, int pname) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getShaderParameter_Callback_2_(unwrap_jso(this), unwrap_jso(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) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getShaderPrecisionFormat_Callback_2_(unwrap_jso(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.instance.getShaderSource_Callback_1_(unwrap_jso(this), unwrap_jso(shader));
+  String getShaderSource(Shader shader) => _blink.BlinkWebGLRenderingContext.instance.getShaderSource_Callback_1_(this, shader);
   
   @DomName('WebGLRenderingContext.getSupportedExtensions')
   @DocsEditable()
-  List<String> getSupportedExtensions() => _blink.BlinkWebGLRenderingContext.instance.getSupportedExtensions_Callback_0_(unwrap_jso(this));
+  List<String> getSupportedExtensions() => _blink.BlinkWebGLRenderingContext.instance.getSupportedExtensions_Callback_0_(this);
   
   @DomName('WebGLRenderingContext.getTexParameter')
   @DocsEditable()
-  Object getTexParameter(int target, int pname) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getTexParameter_Callback_2_(unwrap_jso(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) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getUniform_Callback_2_(unwrap_jso(this), unwrap_jso(program), unwrap_jso(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) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getUniformLocation_Callback_2_(unwrap_jso(this), unwrap_jso(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) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getVertexAttrib_Callback_2_(unwrap_jso(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.instance.getVertexAttribOffset_Callback_2_(unwrap_jso(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.instance.hint_Callback_2_(unwrap_jso(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.instance.isBuffer_Callback_1_(unwrap_jso(this), unwrap_jso(buffer));
+  bool isBuffer(Buffer buffer) => _blink.BlinkWebGLRenderingContext.instance.isBuffer_Callback_1_(this, buffer);
   
   @DomName('WebGLRenderingContext.isContextLost')
   @DocsEditable()
-  bool isContextLost() => _blink.BlinkWebGLRenderingContext.instance.isContextLost_Callback_0_(unwrap_jso(this));
+  bool isContextLost() => _blink.BlinkWebGLRenderingContext.instance.isContextLost_Callback_0_(this);
   
   @DomName('WebGLRenderingContext.isEnabled')
   @DocsEditable()
-  bool isEnabled(int cap) => _blink.BlinkWebGLRenderingContext.instance.isEnabled_Callback_1_(unwrap_jso(this), cap);
+  bool isEnabled(int cap) => _blink.BlinkWebGLRenderingContext.instance.isEnabled_Callback_1_(this, cap);
   
   @DomName('WebGLRenderingContext.isFramebuffer')
   @DocsEditable()
-  bool isFramebuffer(Framebuffer framebuffer) => _blink.BlinkWebGLRenderingContext.instance.isFramebuffer_Callback_1_(unwrap_jso(this), unwrap_jso(framebuffer));
+  bool isFramebuffer(Framebuffer framebuffer) => _blink.BlinkWebGLRenderingContext.instance.isFramebuffer_Callback_1_(this, framebuffer);
   
   @DomName('WebGLRenderingContext.isProgram')
   @DocsEditable()
-  bool isProgram(Program program) => _blink.BlinkWebGLRenderingContext.instance.isProgram_Callback_1_(unwrap_jso(this), unwrap_jso(program));
+  bool isProgram(Program program) => _blink.BlinkWebGLRenderingContext.instance.isProgram_Callback_1_(this, program);
   
   @DomName('WebGLRenderingContext.isRenderbuffer')
   @DocsEditable()
-  bool isRenderbuffer(Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.instance.isRenderbuffer_Callback_1_(unwrap_jso(this), unwrap_jso(renderbuffer));
+  bool isRenderbuffer(Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.instance.isRenderbuffer_Callback_1_(this, renderbuffer);
   
   @DomName('WebGLRenderingContext.isShader')
   @DocsEditable()
-  bool isShader(Shader shader) => _blink.BlinkWebGLRenderingContext.instance.isShader_Callback_1_(unwrap_jso(this), unwrap_jso(shader));
+  bool isShader(Shader shader) => _blink.BlinkWebGLRenderingContext.instance.isShader_Callback_1_(this, shader);
   
   @DomName('WebGLRenderingContext.isTexture')
   @DocsEditable()
-  bool isTexture(Texture texture) => _blink.BlinkWebGLRenderingContext.instance.isTexture_Callback_1_(unwrap_jso(this), unwrap_jso(texture));
+  bool isTexture(Texture texture) => _blink.BlinkWebGLRenderingContext.instance.isTexture_Callback_1_(this, texture);
   
   @DomName('WebGLRenderingContext.lineWidth')
   @DocsEditable()
-  void lineWidth(num width) => _blink.BlinkWebGLRenderingContext.instance.lineWidth_Callback_1_(unwrap_jso(this), width);
+  void lineWidth(num width) => _blink.BlinkWebGLRenderingContext.instance.lineWidth_Callback_1_(this, width);
   
   @DomName('WebGLRenderingContext.linkProgram')
   @DocsEditable()
-  void linkProgram(Program program) => _blink.BlinkWebGLRenderingContext.instance.linkProgram_Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.pixelStorei_Callback_2_(unwrap_jso(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.instance.polygonOffset_Callback_2_(unwrap_jso(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.instance.readPixels_Callback_7_(unwrap_jso(this), x, y, width, height, format, type, unwrap_jso(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.instance.renderbufferStorage_Callback_4_(unwrap_jso(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.instance.sampleCoverage_Callback_2_(unwrap_jso(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.instance.scissor_Callback_4_(unwrap_jso(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.instance.shaderSource_Callback_2_(unwrap_jso(this), unwrap_jso(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.instance.stencilFunc_Callback_3_(unwrap_jso(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.instance.stencilFuncSeparate_Callback_4_(unwrap_jso(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.instance.stencilMask_Callback_1_(unwrap_jso(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.instance.stencilMaskSeparate_Callback_2_(unwrap_jso(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.instance.stencilOp_Callback_3_(unwrap_jso(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.instance.stencilOpSeparate_Callback_4_(unwrap_jso(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.instance.texImage2D_Callback_9_(unwrap_jso(this), target, level, internalformat, format_OR_width, height_OR_type, unwrap_jso(border_OR_canvas_OR_image_OR_pixels_OR_video), format, type, unwrap_jso(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.instance.texImage2D_Callback_6_(unwrap_jso(this), target, level, internalformat, format_OR_width, height_OR_type, unwrap_jso(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.instance.texImage2D_Callback_6_(unwrap_jso(this), target, level, internalformat, format_OR_width, height_OR_type, unwrap_jso(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.instance.texImage2D_Callback_6_(unwrap_jso(this), target, level, internalformat, format_OR_width, height_OR_type, unwrap_jso(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.instance.texImage2D_Callback_6_(unwrap_jso(this), target, level, internalformat, format_OR_width, height_OR_type, unwrap_jso(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");
@@ -3385,31 +3093,31 @@
 
   @DomName('WebGLRenderingContext.texParameterf')
   @DocsEditable()
-  void texParameterf(int target, int pname, num param) => _blink.BlinkWebGLRenderingContext.instance.texParameterf_Callback_3_(unwrap_jso(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.instance.texParameteri_Callback_3_(unwrap_jso(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.instance.texSubImage2D_Callback_9_(unwrap_jso(this), target, level, xoffset, yoffset, format_OR_width, height_OR_type, unwrap_jso(canvas_OR_format_OR_image_OR_pixels_OR_video), type, unwrap_jso(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.instance.texSubImage2D_Callback_7_(unwrap_jso(this), target, level, xoffset, yoffset, format_OR_width, height_OR_type, unwrap_jso(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.instance.texSubImage2D_Callback_7_(unwrap_jso(this), target, level, xoffset, yoffset, format_OR_width, height_OR_type, unwrap_jso(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.instance.texSubImage2D_Callback_7_(unwrap_jso(this), target, level, xoffset, yoffset, format_OR_width, height_OR_type, unwrap_jso(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.instance.texSubImage2D_Callback_7_(unwrap_jso(this), target, level, xoffset, yoffset, format_OR_width, height_OR_type, unwrap_jso(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");
@@ -3417,15 +3125,15 @@
 
   @DomName('WebGLRenderingContext.uniform1f')
   @DocsEditable()
-  void uniform1f(UniformLocation location, num x) => _blink.BlinkWebGLRenderingContext.instance.uniform1f_Callback_2_(unwrap_jso(this), unwrap_jso(location), x);
+  void uniform1f(UniformLocation location, num x) => _blink.BlinkWebGLRenderingContext.instance.uniform1f_Callback_2_(this, location, x);
   
   void uniform1fv(UniformLocation location, v) {
     if ((v is Float32List) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniform1fv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGLRenderingContext.instance.uniform1fv_Callback_2_(this, location, v);
       return;
     }
     if ((v is List<num>) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniform1fv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGLRenderingContext.instance.uniform1fv_Callback_2_(this, location, v);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -3433,15 +3141,15 @@
 
   @DomName('WebGLRenderingContext.uniform1i')
   @DocsEditable()
-  void uniform1i(UniformLocation location, int x) => _blink.BlinkWebGLRenderingContext.instance.uniform1i_Callback_2_(unwrap_jso(this), unwrap_jso(location), x);
+  void uniform1i(UniformLocation location, int x) => _blink.BlinkWebGLRenderingContext.instance.uniform1i_Callback_2_(this, location, x);
   
   void uniform1iv(UniformLocation location, v) {
     if ((v is Int32List) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniform1iv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGLRenderingContext.instance.uniform1iv_Callback_2_(this, location, v);
       return;
     }
     if ((v is List<int>) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniform1iv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGLRenderingContext.instance.uniform1iv_Callback_2_(this, location, v);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -3449,15 +3157,15 @@
 
   @DomName('WebGLRenderingContext.uniform2f')
   @DocsEditable()
-  void uniform2f(UniformLocation location, num x, num y) => _blink.BlinkWebGLRenderingContext.instance.uniform2f_Callback_3_(unwrap_jso(this), unwrap_jso(location), x, y);
+  void uniform2f(UniformLocation location, num x, num y) => _blink.BlinkWebGLRenderingContext.instance.uniform2f_Callback_3_(this, location, x, y);
   
   void uniform2fv(UniformLocation location, v) {
     if ((v is Float32List) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniform2fv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGLRenderingContext.instance.uniform2fv_Callback_2_(this, location, v);
       return;
     }
     if ((v is List<num>) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniform2fv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGLRenderingContext.instance.uniform2fv_Callback_2_(this, location, v);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -3465,15 +3173,15 @@
 
   @DomName('WebGLRenderingContext.uniform2i')
   @DocsEditable()
-  void uniform2i(UniformLocation location, int x, int y) => _blink.BlinkWebGLRenderingContext.instance.uniform2i_Callback_3_(unwrap_jso(this), unwrap_jso(location), x, y);
+  void uniform2i(UniformLocation location, int x, int y) => _blink.BlinkWebGLRenderingContext.instance.uniform2i_Callback_3_(this, location, x, y);
   
   void uniform2iv(UniformLocation location, v) {
     if ((v is Int32List) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniform2iv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGLRenderingContext.instance.uniform2iv_Callback_2_(this, location, v);
       return;
     }
     if ((v is List<int>) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniform2iv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGLRenderingContext.instance.uniform2iv_Callback_2_(this, location, v);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -3481,15 +3189,15 @@
 
   @DomName('WebGLRenderingContext.uniform3f')
   @DocsEditable()
-  void uniform3f(UniformLocation location, num x, num y, num z) => _blink.BlinkWebGLRenderingContext.instance.uniform3f_Callback_4_(unwrap_jso(this), unwrap_jso(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);
   
   void uniform3fv(UniformLocation location, v) {
     if ((v is Float32List) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniform3fv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGLRenderingContext.instance.uniform3fv_Callback_2_(this, location, v);
       return;
     }
     if ((v is List<num>) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniform3fv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGLRenderingContext.instance.uniform3fv_Callback_2_(this, location, v);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -3497,15 +3205,15 @@
 
   @DomName('WebGLRenderingContext.uniform3i')
   @DocsEditable()
-  void uniform3i(UniformLocation location, int x, int y, int z) => _blink.BlinkWebGLRenderingContext.instance.uniform3i_Callback_4_(unwrap_jso(this), unwrap_jso(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);
   
   void uniform3iv(UniformLocation location, v) {
     if ((v is Int32List) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniform3iv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGLRenderingContext.instance.uniform3iv_Callback_2_(this, location, v);
       return;
     }
     if ((v is List<int>) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniform3iv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGLRenderingContext.instance.uniform3iv_Callback_2_(this, location, v);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -3513,15 +3221,15 @@
 
   @DomName('WebGLRenderingContext.uniform4f')
   @DocsEditable()
-  void uniform4f(UniformLocation location, num x, num y, num z, num w) => _blink.BlinkWebGLRenderingContext.instance.uniform4f_Callback_5_(unwrap_jso(this), unwrap_jso(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);
   
   void uniform4fv(UniformLocation location, v) {
     if ((v is Float32List) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniform4fv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGLRenderingContext.instance.uniform4fv_Callback_2_(this, location, v);
       return;
     }
     if ((v is List<num>) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniform4fv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGLRenderingContext.instance.uniform4fv_Callback_2_(this, location, v);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -3529,15 +3237,15 @@
 
   @DomName('WebGLRenderingContext.uniform4i')
   @DocsEditable()
-  void uniform4i(UniformLocation location, int x, int y, int z, int w) => _blink.BlinkWebGLRenderingContext.instance.uniform4i_Callback_5_(unwrap_jso(this), unwrap_jso(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);
   
   void uniform4iv(UniformLocation location, v) {
     if ((v is Int32List) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniform4iv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGLRenderingContext.instance.uniform4iv_Callback_2_(this, location, v);
       return;
     }
     if ((v is List<int>) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniform4iv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGLRenderingContext.instance.uniform4iv_Callback_2_(this, location, v);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -3545,11 +3253,11 @@
 
   void uniformMatrix2fv(UniformLocation location, bool transpose, array) {
     if ((array is Float32List) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniformMatrix2fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(array));
+      _blink.BlinkWebGLRenderingContext.instance.uniformMatrix2fv_Callback_3_(this, location, transpose, array);
       return;
     }
     if ((array is List<num>) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniformMatrix2fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(array));
+      _blink.BlinkWebGLRenderingContext.instance.uniformMatrix2fv_Callback_3_(this, location, transpose, array);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -3557,11 +3265,11 @@
 
   void uniformMatrix3fv(UniformLocation location, bool transpose, array) {
     if ((array is Float32List) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniformMatrix3fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(array));
+      _blink.BlinkWebGLRenderingContext.instance.uniformMatrix3fv_Callback_3_(this, location, transpose, array);
       return;
     }
     if ((array is List<num>) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniformMatrix3fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(array));
+      _blink.BlinkWebGLRenderingContext.instance.uniformMatrix3fv_Callback_3_(this, location, transpose, array);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -3569,11 +3277,11 @@
 
   void uniformMatrix4fv(UniformLocation location, bool transpose, array) {
     if ((array is Float32List) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniformMatrix4fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(array));
+      _blink.BlinkWebGLRenderingContext.instance.uniformMatrix4fv_Callback_3_(this, location, transpose, array);
       return;
     }
     if ((array is List<num>) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGLRenderingContext.instance.uniformMatrix4fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(array));
+      _blink.BlinkWebGLRenderingContext.instance.uniformMatrix4fv_Callback_3_(this, location, transpose, array);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -3581,23 +3289,23 @@
 
   @DomName('WebGLRenderingContext.useProgram')
   @DocsEditable()
-  void useProgram(Program program) => _blink.BlinkWebGLRenderingContext.instance.useProgram_Callback_1_(unwrap_jso(this), unwrap_jso(program));
+  void useProgram(Program program) => _blink.BlinkWebGLRenderingContext.instance.useProgram_Callback_1_(this, program);
   
   @DomName('WebGLRenderingContext.validateProgram')
   @DocsEditable()
-  void validateProgram(Program program) => _blink.BlinkWebGLRenderingContext.instance.validateProgram_Callback_1_(unwrap_jso(this), unwrap_jso(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.instance.vertexAttrib1f_Callback_2_(unwrap_jso(this), indx, x);
+  void vertexAttrib1f(int indx, num x) => _blink.BlinkWebGLRenderingContext.instance.vertexAttrib1f_Callback_2_(this, indx, x);
   
   void vertexAttrib1fv(int indx, values) {
     if ((values is Float32List) && (indx is int)) {
-      _blink.BlinkWebGLRenderingContext.instance.vertexAttrib1fv_Callback_2_(unwrap_jso(this), indx, unwrap_jso(values));
+      _blink.BlinkWebGLRenderingContext.instance.vertexAttrib1fv_Callback_2_(this, indx, values);
       return;
     }
     if ((values is List<num>) && (indx is int)) {
-      _blink.BlinkWebGLRenderingContext.instance.vertexAttrib1fv_Callback_2_(unwrap_jso(this), indx, unwrap_jso(values));
+      _blink.BlinkWebGLRenderingContext.instance.vertexAttrib1fv_Callback_2_(this, indx, values);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -3605,15 +3313,15 @@
 
   @DomName('WebGLRenderingContext.vertexAttrib2f')
   @DocsEditable()
-  void vertexAttrib2f(int indx, num x, num y) => _blink.BlinkWebGLRenderingContext.instance.vertexAttrib2f_Callback_3_(unwrap_jso(this), indx, x, y);
+  void vertexAttrib2f(int indx, num x, num y) => _blink.BlinkWebGLRenderingContext.instance.vertexAttrib2f_Callback_3_(this, indx, x, y);
   
   void vertexAttrib2fv(int indx, values) {
     if ((values is Float32List) && (indx is int)) {
-      _blink.BlinkWebGLRenderingContext.instance.vertexAttrib2fv_Callback_2_(unwrap_jso(this), indx, unwrap_jso(values));
+      _blink.BlinkWebGLRenderingContext.instance.vertexAttrib2fv_Callback_2_(this, indx, values);
       return;
     }
     if ((values is List<num>) && (indx is int)) {
-      _blink.BlinkWebGLRenderingContext.instance.vertexAttrib2fv_Callback_2_(unwrap_jso(this), indx, unwrap_jso(values));
+      _blink.BlinkWebGLRenderingContext.instance.vertexAttrib2fv_Callback_2_(this, indx, values);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -3621,15 +3329,15 @@
 
   @DomName('WebGLRenderingContext.vertexAttrib3f')
   @DocsEditable()
-  void vertexAttrib3f(int indx, num x, num y, num z) => _blink.BlinkWebGLRenderingContext.instance.vertexAttrib3f_Callback_4_(unwrap_jso(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);
   
   void vertexAttrib3fv(int indx, values) {
     if ((values is Float32List) && (indx is int)) {
-      _blink.BlinkWebGLRenderingContext.instance.vertexAttrib3fv_Callback_2_(unwrap_jso(this), indx, unwrap_jso(values));
+      _blink.BlinkWebGLRenderingContext.instance.vertexAttrib3fv_Callback_2_(this, indx, values);
       return;
     }
     if ((values is List<num>) && (indx is int)) {
-      _blink.BlinkWebGLRenderingContext.instance.vertexAttrib3fv_Callback_2_(unwrap_jso(this), indx, unwrap_jso(values));
+      _blink.BlinkWebGLRenderingContext.instance.vertexAttrib3fv_Callback_2_(this, indx, values);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -3637,15 +3345,15 @@
 
   @DomName('WebGLRenderingContext.vertexAttrib4f')
   @DocsEditable()
-  void vertexAttrib4f(int indx, num x, num y, num z, num w) => _blink.BlinkWebGLRenderingContext.instance.vertexAttrib4f_Callback_5_(unwrap_jso(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);
   
   void vertexAttrib4fv(int indx, values) {
     if ((values is Float32List) && (indx is int)) {
-      _blink.BlinkWebGLRenderingContext.instance.vertexAttrib4fv_Callback_2_(unwrap_jso(this), indx, unwrap_jso(values));
+      _blink.BlinkWebGLRenderingContext.instance.vertexAttrib4fv_Callback_2_(this, indx, values);
       return;
     }
     if ((values is List<num>) && (indx is int)) {
-      _blink.BlinkWebGLRenderingContext.instance.vertexAttrib4fv_Callback_2_(unwrap_jso(this), indx, unwrap_jso(values));
+      _blink.BlinkWebGLRenderingContext.instance.vertexAttrib4fv_Callback_2_(this, indx, values);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -3653,42 +3361,33 @@
 
   @DomName('WebGLRenderingContext.vertexAttribPointer')
   @DocsEditable()
-  void vertexAttribPointer(int indx, int size, int type, bool normalized, int stride, int offset) => _blink.BlinkWebGLRenderingContext.instance.vertexAttribPointer_Callback_6_(unwrap_jso(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.instance.viewport_Callback_4_(unwrap_jso(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);
   
 
   /**
    * Sets the currently bound texture to [data].
    *
    * [data] can be either an [ImageElement], a
-   * [CanvasElement], a [VideoElement], or an [ImageData] object.
+   * [CanvasElement], a [VideoElement], [TypedData] or an [ImageData] object.
    *
-   * To use [texImage2d] with a TypedData object, use [texImage2dTyped].
-   *
+   * This is deprecated in favor of [texImage2D].
    */
-  void texImage2DUntyped(int targetTexture, int levelOfDetail, 
+  @Deprecated("Use texImage2D")
+  void texImage2DUntyped(int targetTexture, int levelOfDetail,
       int internalFormat, int format, int type, data) {
-    if (data is ImageElement) {
-      texImage2DImage(targetTexture, levelOfDetail, internalFormat, format,
-          type, data);
-    } else if (data is ImageData) {
-      texImage2DImageData(targetTexture, levelOfDetail, internalFormat, format,
-          type, data);
-    } else if (data is CanvasElement) {
-      texImage2DCanvas(targetTexture, levelOfDetail, internalFormat, format,
-          type, data);
-    } else {
-      texImage2DVideo(targetTexture, levelOfDetail, internalFormat, format,
-          type, data);
-    }
+    texImage2D(targetText, levelOfDetail, internalFormat, format, type, data);
   }
 
   /**
    * Sets the currently bound texture to [data].
+   *
+   * This is deprecated in favour of [texImage2D].
    */
+  @Deprecated("Use texImage2D")
   void texImage2DTyped(int targetTexture, int levelOfDetail, int internalFormat,
       int width, int height, int border, int format, int type, TypedData data) {
     texImage2D(targetTexture, levelOfDetail, internalFormat,
@@ -3699,12 +3398,11 @@
    * Updates a sub-rectangle of the currently bound texture to [data].
    *
    * [data] can be either an [ImageElement], a
-   * [CanvasElement], a [VideoElement], or an [ImageData] object.
-   *
-   * To use [texSubImage2d] with a TypedData object, use [texSubImage2dTyped].
+   * [CanvasElement], a [VideoElement], [TypedData] or an [ImageData] object.
    *
    */
-  void texSubImage2DUntyped(int targetTexture, int levelOfDetail, 
+  @Deprecated("Use texSubImage2D")
+  void texSubImage2DUntyped(int targetTexture, int levelOfDetail,
       int xOffset, int yOffset, int format, int type, data) {
     texSubImage2D(targetTexture, levelOfDetail, xOffset, yOffset,
         format, type, data);
@@ -3713,12 +3411,31 @@
   /**
    * Updates a sub-rectangle of the currently bound texture to [data].
    */
+  @Deprecated("Use texSubImage2D")
   void texSubImage2DTyped(int targetTexture, int levelOfDetail,
-      int xOffset, int yOffset, int width, int height, int format,
+      int xOffset, int yOffset, int width, int height, int border, int format,
       int type, TypedData data) {
     texSubImage2D(targetTexture, levelOfDetail, xOffset, yOffset,
         width, height, format, type, data);
   }
+
+  /**
+   * Set the bufferData to [data].
+   */
+  @Deprecated("Use bufferData")
+  void bufferDataTyped(int target, TypedData data, int usage) {
+    bufferData2D(targetTexture, levelOfDetail, xOffset, yOffset,
+        format, type, data);
+  }
+
+  /**
+   * Set the bufferSubData to [data].
+   */
+  @Deprecated("Use bufferSubData")
+  void bufferSubDataTyped(int target, TypedData data, int usage) {
+    bufferSubData2D(targetTexture, levelOfDetail, xOffset, yOffset,
+        format, type, data);
+  }
 }
 // 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
@@ -3734,21 +3451,13 @@
   // To suppress missing implicit constructor warnings.
   factory RenderingContext2._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static RenderingContext2 internalCreateRenderingContext2() {
-    return new RenderingContext2._internalWrap();
-  }
 
-  factory RenderingContext2._internalWrap() {
-    return new RenderingContext2.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   RenderingContext2.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('WebGL2RenderingContext.ACTIVE_ATTRIBUTES')
   @DocsEditable()
   @Experimental() // untriaged
@@ -5237,55 +4946,55 @@
   @DomName('WebGL2RenderingContext.beginQuery')
   @DocsEditable()
   @Experimental() // untriaged
-  void beginQuery(int target, Query query) => _blink.BlinkWebGL2RenderingContext.instance.beginQuery_Callback_2_(unwrap_jso(this), target, unwrap_jso(query));
+  void beginQuery(int target, Query query) => _blink.BlinkWebGL2RenderingContext.instance.beginQuery_Callback_2_(this, target, query);
   
   @DomName('WebGL2RenderingContext.beginTransformFeedback')
   @DocsEditable()
   @Experimental() // untriaged
-  void beginTransformFeedback(int primitiveMode) => _blink.BlinkWebGL2RenderingContext.instance.beginTransformFeedback_Callback_1_(unwrap_jso(this), primitiveMode);
+  void beginTransformFeedback(int primitiveMode) => _blink.BlinkWebGL2RenderingContext.instance.beginTransformFeedback_Callback_1_(this, primitiveMode);
   
   @DomName('WebGL2RenderingContext.bindBufferBase')
   @DocsEditable()
   @Experimental() // untriaged
-  void bindBufferBase(int target, int index, Buffer buffer) => _blink.BlinkWebGL2RenderingContext.instance.bindBufferBase_Callback_3_(unwrap_jso(this), target, index, unwrap_jso(buffer));
+  void bindBufferBase(int target, int index, Buffer buffer) => _blink.BlinkWebGL2RenderingContext.instance.bindBufferBase_Callback_3_(this, target, index, buffer);
   
   @DomName('WebGL2RenderingContext.bindBufferRange')
   @DocsEditable()
   @Experimental() // untriaged
-  void bindBufferRange(int target, int index, Buffer buffer, int offset, int size) => _blink.BlinkWebGL2RenderingContext.instance.bindBufferRange_Callback_5_(unwrap_jso(this), target, index, unwrap_jso(buffer), offset, size);
+  void bindBufferRange(int target, int index, Buffer buffer, int offset, int size) => _blink.BlinkWebGL2RenderingContext.instance.bindBufferRange_Callback_5_(this, target, index, buffer, offset, size);
   
   @DomName('WebGL2RenderingContext.bindSampler')
   @DocsEditable()
   @Experimental() // untriaged
-  void bindSampler(int unit, Sampler sampler) => _blink.BlinkWebGL2RenderingContext.instance.bindSampler_Callback_2_(unwrap_jso(this), unit, unwrap_jso(sampler));
+  void bindSampler(int unit, Sampler sampler) => _blink.BlinkWebGL2RenderingContext.instance.bindSampler_Callback_2_(this, unit, sampler);
   
   @DomName('WebGL2RenderingContext.bindTransformFeedback')
   @DocsEditable()
   @Experimental() // untriaged
-  void bindTransformFeedback(int target, TransformFeedback feedback) => _blink.BlinkWebGL2RenderingContext.instance.bindTransformFeedback_Callback_2_(unwrap_jso(this), target, unwrap_jso(feedback));
+  void bindTransformFeedback(int target, TransformFeedback feedback) => _blink.BlinkWebGL2RenderingContext.instance.bindTransformFeedback_Callback_2_(this, target, feedback);
   
   @DomName('WebGL2RenderingContext.bindVertexArray')
   @DocsEditable()
   @Experimental() // untriaged
-  void bindVertexArray(VertexArrayObject vertexArray) => _blink.BlinkWebGL2RenderingContext.instance.bindVertexArray_Callback_1_(unwrap_jso(this), unwrap_jso(vertexArray));
+  void bindVertexArray(VertexArrayObject vertexArray) => _blink.BlinkWebGL2RenderingContext.instance.bindVertexArray_Callback_1_(this, vertexArray);
   
   @DomName('WebGL2RenderingContext.blitFramebuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  void blitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, int mask, int filter) => _blink.BlinkWebGL2RenderingContext.instance.blitFramebuffer_Callback_10_(unwrap_jso(this), srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
+  void blitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, int mask, int filter) => _blink.BlinkWebGL2RenderingContext.instance.blitFramebuffer_Callback_10_(this, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
   
   @DomName('WebGL2RenderingContext.clearBufferfi')
   @DocsEditable()
   @Experimental() // untriaged
-  void clearBufferfi(int buffer, int drawbuffer, num depth, int stencil) => _blink.BlinkWebGL2RenderingContext.instance.clearBufferfi_Callback_4_(unwrap_jso(this), buffer, drawbuffer, depth, stencil);
+  void clearBufferfi(int buffer, int drawbuffer, num depth, int stencil) => _blink.BlinkWebGL2RenderingContext.instance.clearBufferfi_Callback_4_(this, buffer, drawbuffer, depth, stencil);
   
   void clearBufferfv(int buffer, int drawbuffer, value) {
     if ((value is Float32List) && (drawbuffer is int) && (buffer is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.clearBufferfv_Callback_3_(unwrap_jso(this), buffer, drawbuffer, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.clearBufferfv_Callback_3_(this, buffer, drawbuffer, value);
       return;
     }
     if ((value is List<num>) && (drawbuffer is int) && (buffer is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.clearBufferfv_Callback_3_(unwrap_jso(this), buffer, drawbuffer, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.clearBufferfv_Callback_3_(this, buffer, drawbuffer, value);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -5293,11 +5002,11 @@
 
   void clearBufferiv(int buffer, int drawbuffer, value) {
     if ((value is Int32List) && (drawbuffer is int) && (buffer is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.clearBufferiv_Callback_3_(unwrap_jso(this), buffer, drawbuffer, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.clearBufferiv_Callback_3_(this, buffer, drawbuffer, value);
       return;
     }
     if ((value is List<int>) && (drawbuffer is int) && (buffer is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.clearBufferiv_Callback_3_(unwrap_jso(this), buffer, drawbuffer, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.clearBufferiv_Callback_3_(this, buffer, drawbuffer, value);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -5305,11 +5014,11 @@
 
   void clearBufferuiv(int buffer, int drawbuffer, value) {
     if ((value is Uint32List) && (drawbuffer is int) && (buffer is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.clearBufferuiv_Callback_3_(unwrap_jso(this), buffer, drawbuffer, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.clearBufferuiv_Callback_3_(this, buffer, drawbuffer, value);
       return;
     }
     if ((value is List<int>) && (drawbuffer is int) && (buffer is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.clearBufferuiv_Callback_3_(unwrap_jso(this), buffer, drawbuffer, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.clearBufferuiv_Callback_3_(this, buffer, drawbuffer, value);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -5318,282 +5027,282 @@
   @DomName('WebGL2RenderingContext.clientWaitSync')
   @DocsEditable()
   @Experimental() // untriaged
-  int clientWaitSync(Sync sync, int flags, int timeout) => _blink.BlinkWebGL2RenderingContext.instance.clientWaitSync_Callback_3_(unwrap_jso(this), unwrap_jso(sync), flags, timeout);
+  int clientWaitSync(Sync sync, int flags, int timeout) => _blink.BlinkWebGL2RenderingContext.instance.clientWaitSync_Callback_3_(this, sync, flags, timeout);
   
   @DomName('WebGL2RenderingContext.compressedTexImage3D')
   @DocsEditable()
   @Experimental() // untriaged
-  void compressedTexImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, TypedData data) => _blink.BlinkWebGL2RenderingContext.instance.compressedTexImage3D_Callback_8_(unwrap_jso(this), target, level, internalformat, width, height, depth, border, unwrap_jso(data));
+  void compressedTexImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, TypedData data) => _blink.BlinkWebGL2RenderingContext.instance.compressedTexImage3D_Callback_8_(this, target, level, internalformat, width, height, depth, border, data);
   
   @DomName('WebGL2RenderingContext.compressedTexSubImage3D')
   @DocsEditable()
   @Experimental() // untriaged
-  void compressedTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, int format, TypedData data) => _blink.BlinkWebGL2RenderingContext.instance.compressedTexSubImage3D_Callback_10_(unwrap_jso(this), target, level, xoffset, yoffset, zoffset, width, height, depth, format, unwrap_jso(data));
+  void compressedTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, int format, TypedData data) => _blink.BlinkWebGL2RenderingContext.instance.compressedTexSubImage3D_Callback_10_(this, target, level, xoffset, yoffset, zoffset, width, height, depth, format, data);
   
   @DomName('WebGL2RenderingContext.copyBufferSubData')
   @DocsEditable()
   @Experimental() // untriaged
-  void copyBufferSubData(int readTarget, int writeTarget, int readOffset, int writeOffset, int size) => _blink.BlinkWebGL2RenderingContext.instance.copyBufferSubData_Callback_5_(unwrap_jso(this), readTarget, writeTarget, readOffset, writeOffset, size);
+  void copyBufferSubData(int readTarget, int writeTarget, int readOffset, int writeOffset, int size) => _blink.BlinkWebGL2RenderingContext.instance.copyBufferSubData_Callback_5_(this, readTarget, writeTarget, readOffset, writeOffset, size);
   
   @DomName('WebGL2RenderingContext.copyTexSubImage3D')
   @DocsEditable()
   @Experimental() // untriaged
-  void copyTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) => _blink.BlinkWebGL2RenderingContext.instance.copyTexSubImage3D_Callback_9_(unwrap_jso(this), target, level, xoffset, yoffset, zoffset, x, y, width, height);
+  void copyTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) => _blink.BlinkWebGL2RenderingContext.instance.copyTexSubImage3D_Callback_9_(this, target, level, xoffset, yoffset, zoffset, x, y, width, height);
   
   @DomName('WebGL2RenderingContext.createQuery')
   @DocsEditable()
   @Experimental() // untriaged
-  Query createQuery() => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.createQuery_Callback_0_(unwrap_jso(this)));
+  Query createQuery() => _blink.BlinkWebGL2RenderingContext.instance.createQuery_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.createSampler')
   @DocsEditable()
   @Experimental() // untriaged
-  Sampler createSampler() => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.createSampler_Callback_0_(unwrap_jso(this)));
+  Sampler createSampler() => _blink.BlinkWebGL2RenderingContext.instance.createSampler_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.createTransformFeedback')
   @DocsEditable()
   @Experimental() // untriaged
-  TransformFeedback createTransformFeedback() => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.createTransformFeedback_Callback_0_(unwrap_jso(this)));
+  TransformFeedback createTransformFeedback() => _blink.BlinkWebGL2RenderingContext.instance.createTransformFeedback_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.createVertexArray')
   @DocsEditable()
   @Experimental() // untriaged
-  VertexArrayObject createVertexArray() => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.createVertexArray_Callback_0_(unwrap_jso(this)));
+  VertexArrayObject createVertexArray() => _blink.BlinkWebGL2RenderingContext.instance.createVertexArray_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.deleteQuery')
   @DocsEditable()
   @Experimental() // untriaged
-  void deleteQuery(Query query) => _blink.BlinkWebGL2RenderingContext.instance.deleteQuery_Callback_1_(unwrap_jso(this), unwrap_jso(query));
+  void deleteQuery(Query query) => _blink.BlinkWebGL2RenderingContext.instance.deleteQuery_Callback_1_(this, query);
   
   @DomName('WebGL2RenderingContext.deleteSampler')
   @DocsEditable()
   @Experimental() // untriaged
-  void deleteSampler(Sampler sampler) => _blink.BlinkWebGL2RenderingContext.instance.deleteSampler_Callback_1_(unwrap_jso(this), unwrap_jso(sampler));
+  void deleteSampler(Sampler sampler) => _blink.BlinkWebGL2RenderingContext.instance.deleteSampler_Callback_1_(this, sampler);
   
   @DomName('WebGL2RenderingContext.deleteSync')
   @DocsEditable()
   @Experimental() // untriaged
-  void deleteSync(Sync sync) => _blink.BlinkWebGL2RenderingContext.instance.deleteSync_Callback_1_(unwrap_jso(this), unwrap_jso(sync));
+  void deleteSync(Sync sync) => _blink.BlinkWebGL2RenderingContext.instance.deleteSync_Callback_1_(this, sync);
   
   @DomName('WebGL2RenderingContext.deleteTransformFeedback')
   @DocsEditable()
   @Experimental() // untriaged
-  void deleteTransformFeedback(TransformFeedback feedback) => _blink.BlinkWebGL2RenderingContext.instance.deleteTransformFeedback_Callback_1_(unwrap_jso(this), unwrap_jso(feedback));
+  void deleteTransformFeedback(TransformFeedback feedback) => _blink.BlinkWebGL2RenderingContext.instance.deleteTransformFeedback_Callback_1_(this, feedback);
   
   @DomName('WebGL2RenderingContext.deleteVertexArray')
   @DocsEditable()
   @Experimental() // untriaged
-  void deleteVertexArray(VertexArrayObject vertexArray) => _blink.BlinkWebGL2RenderingContext.instance.deleteVertexArray_Callback_1_(unwrap_jso(this), unwrap_jso(vertexArray));
+  void deleteVertexArray(VertexArrayObject vertexArray) => _blink.BlinkWebGL2RenderingContext.instance.deleteVertexArray_Callback_1_(this, vertexArray);
   
   @DomName('WebGL2RenderingContext.drawArraysInstanced')
   @DocsEditable()
   @Experimental() // untriaged
-  void drawArraysInstanced(int mode, int first, int count, int instanceCount) => _blink.BlinkWebGL2RenderingContext.instance.drawArraysInstanced_Callback_4_(unwrap_jso(this), mode, first, count, instanceCount);
+  void drawArraysInstanced(int mode, int first, int count, int instanceCount) => _blink.BlinkWebGL2RenderingContext.instance.drawArraysInstanced_Callback_4_(this, mode, first, count, instanceCount);
   
   @DomName('WebGL2RenderingContext.drawBuffers')
   @DocsEditable()
   @Experimental() // untriaged
-  void drawBuffers(List<int> buffers) => _blink.BlinkWebGL2RenderingContext.instance.drawBuffers_Callback_1_(unwrap_jso(this), buffers);
+  void drawBuffers(List<int> buffers) => _blink.BlinkWebGL2RenderingContext.instance.drawBuffers_Callback_1_(this, buffers);
   
   @DomName('WebGL2RenderingContext.drawElementsInstanced')
   @DocsEditable()
   @Experimental() // untriaged
-  void drawElementsInstanced(int mode, int count, int type, int offset, int instanceCount) => _blink.BlinkWebGL2RenderingContext.instance.drawElementsInstanced_Callback_5_(unwrap_jso(this), mode, count, type, offset, instanceCount);
+  void drawElementsInstanced(int mode, int count, int type, int offset, int instanceCount) => _blink.BlinkWebGL2RenderingContext.instance.drawElementsInstanced_Callback_5_(this, mode, count, type, offset, instanceCount);
   
   @DomName('WebGL2RenderingContext.drawRangeElements')
   @DocsEditable()
   @Experimental() // untriaged
-  void drawRangeElements(int mode, int start, int end, int count, int type, int offset) => _blink.BlinkWebGL2RenderingContext.instance.drawRangeElements_Callback_6_(unwrap_jso(this), mode, start, end, count, type, offset);
+  void drawRangeElements(int mode, int start, int end, int count, int type, int offset) => _blink.BlinkWebGL2RenderingContext.instance.drawRangeElements_Callback_6_(this, mode, start, end, count, type, offset);
   
   @DomName('WebGL2RenderingContext.endQuery')
   @DocsEditable()
   @Experimental() // untriaged
-  void endQuery(int target) => _blink.BlinkWebGL2RenderingContext.instance.endQuery_Callback_1_(unwrap_jso(this), target);
+  void endQuery(int target) => _blink.BlinkWebGL2RenderingContext.instance.endQuery_Callback_1_(this, target);
   
   @DomName('WebGL2RenderingContext.endTransformFeedback')
   @DocsEditable()
   @Experimental() // untriaged
-  void endTransformFeedback() => _blink.BlinkWebGL2RenderingContext.instance.endTransformFeedback_Callback_0_(unwrap_jso(this));
+  void endTransformFeedback() => _blink.BlinkWebGL2RenderingContext.instance.endTransformFeedback_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.fenceSync')
   @DocsEditable()
   @Experimental() // untriaged
-  Sync fenceSync(int condition, int flags) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.fenceSync_Callback_2_(unwrap_jso(this), condition, flags));
+  Sync fenceSync(int condition, int flags) => _blink.BlinkWebGL2RenderingContext.instance.fenceSync_Callback_2_(this, condition, flags);
   
   @DomName('WebGL2RenderingContext.framebufferTextureLayer')
   @DocsEditable()
   @Experimental() // untriaged
-  void framebufferTextureLayer(int target, int attachment, Texture texture, int level, int layer) => _blink.BlinkWebGL2RenderingContext.instance.framebufferTextureLayer_Callback_5_(unwrap_jso(this), target, attachment, unwrap_jso(texture), level, layer);
+  void framebufferTextureLayer(int target, int attachment, Texture texture, int level, int layer) => _blink.BlinkWebGL2RenderingContext.instance.framebufferTextureLayer_Callback_5_(this, target, attachment, texture, level, layer);
   
   @DomName('WebGL2RenderingContext.getActiveUniformBlockName')
   @DocsEditable()
   @Experimental() // untriaged
-  String getActiveUniformBlockName(Program program, int uniformBlockIndex) => _blink.BlinkWebGL2RenderingContext.instance.getActiveUniformBlockName_Callback_2_(unwrap_jso(this), unwrap_jso(program), uniformBlockIndex);
+  String getActiveUniformBlockName(Program program, int uniformBlockIndex) => _blink.BlinkWebGL2RenderingContext.instance.getActiveUniformBlockName_Callback_2_(this, program, uniformBlockIndex);
   
   @DomName('WebGL2RenderingContext.getActiveUniformBlockParameter')
   @DocsEditable()
   @Experimental() // untriaged
-  Object getActiveUniformBlockParameter(Program program, int uniformBlockIndex, int pname) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getActiveUniformBlockParameter_Callback_3_(unwrap_jso(this), unwrap_jso(program), uniformBlockIndex, pname));
+  Object getActiveUniformBlockParameter(Program program, int uniformBlockIndex, int pname) => (_blink.BlinkWebGL2RenderingContext.instance.getActiveUniformBlockParameter_Callback_3_(this, program, uniformBlockIndex, pname));
   
   @DomName('WebGL2RenderingContext.getActiveUniforms')
   @DocsEditable()
   @Experimental() // untriaged
-  List<int> getActiveUniforms(Program program, List<int> uniformIndices, int pname) => _blink.BlinkWebGL2RenderingContext.instance.getActiveUniforms_Callback_3_(unwrap_jso(this), unwrap_jso(program), uniformIndices, pname);
+  List<int> getActiveUniforms(Program program, List<int> uniformIndices, int pname) => _blink.BlinkWebGL2RenderingContext.instance.getActiveUniforms_Callback_3_(this, program, uniformIndices, pname);
   
   @DomName('WebGL2RenderingContext.getBufferSubData')
   @DocsEditable()
   @Experimental() // untriaged
-  void getBufferSubData(int target, int offset, ByteBuffer returnedData) => _blink.BlinkWebGL2RenderingContext.instance.getBufferSubData_Callback_3_(unwrap_jso(this), target, offset, unwrap_jso(returnedData));
+  void getBufferSubData(int target, int offset, ByteBuffer returnedData) => _blink.BlinkWebGL2RenderingContext.instance.getBufferSubData_Callback_3_(this, target, offset, returnedData);
   
   @DomName('WebGL2RenderingContext.getFragDataLocation')
   @DocsEditable()
   @Experimental() // untriaged
-  int getFragDataLocation(Program program, String name) => _blink.BlinkWebGL2RenderingContext.instance.getFragDataLocation_Callback_2_(unwrap_jso(this), unwrap_jso(program), name);
+  int getFragDataLocation(Program program, String name) => _blink.BlinkWebGL2RenderingContext.instance.getFragDataLocation_Callback_2_(this, program, name);
   
   @DomName('WebGL2RenderingContext.getIndexedParameter')
   @DocsEditable()
   @Experimental() // untriaged
-  Object getIndexedParameter(int target, int index) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getIndexedParameter_Callback_2_(unwrap_jso(this), target, index));
+  Object getIndexedParameter(int target, int index) => (_blink.BlinkWebGL2RenderingContext.instance.getIndexedParameter_Callback_2_(this, target, index));
   
   @DomName('WebGL2RenderingContext.getInternalformatParameter')
   @DocsEditable()
   @Experimental() // untriaged
-  Object getInternalformatParameter(int target, int internalformat, int pname) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getInternalformatParameter_Callback_3_(unwrap_jso(this), target, internalformat, pname));
+  Object getInternalformatParameter(int target, int internalformat, int pname) => (_blink.BlinkWebGL2RenderingContext.instance.getInternalformatParameter_Callback_3_(this, target, internalformat, pname));
   
   @DomName('WebGL2RenderingContext.getQuery')
   @DocsEditable()
   @Experimental() // untriaged
-  Query getQuery(int target, int pname) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getQuery_Callback_2_(unwrap_jso(this), target, pname));
+  Query getQuery(int target, int pname) => _blink.BlinkWebGL2RenderingContext.instance.getQuery_Callback_2_(this, target, pname);
   
   @DomName('WebGL2RenderingContext.getQueryParameter')
   @DocsEditable()
   @Experimental() // untriaged
-  Object getQueryParameter(Query query, int pname) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getQueryParameter_Callback_2_(unwrap_jso(this), unwrap_jso(query), pname));
+  Object getQueryParameter(Query query, int pname) => (_blink.BlinkWebGL2RenderingContext.instance.getQueryParameter_Callback_2_(this, query, pname));
   
   @DomName('WebGL2RenderingContext.getSamplerParameter')
   @DocsEditable()
   @Experimental() // untriaged
-  Object getSamplerParameter(Sampler sampler, int pname) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getSamplerParameter_Callback_2_(unwrap_jso(this), unwrap_jso(sampler), pname));
+  Object getSamplerParameter(Sampler sampler, int pname) => (_blink.BlinkWebGL2RenderingContext.instance.getSamplerParameter_Callback_2_(this, sampler, pname));
   
   @DomName('WebGL2RenderingContext.getSyncParameter')
   @DocsEditable()
   @Experimental() // untriaged
-  Object getSyncParameter(Sync sync, int pname) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getSyncParameter_Callback_2_(unwrap_jso(this), unwrap_jso(sync), pname));
+  Object getSyncParameter(Sync sync, int pname) => (_blink.BlinkWebGL2RenderingContext.instance.getSyncParameter_Callback_2_(this, sync, pname));
   
   @DomName('WebGL2RenderingContext.getTransformFeedbackVarying')
   @DocsEditable()
   @Experimental() // untriaged
-  ActiveInfo getTransformFeedbackVarying(Program program, int index) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getTransformFeedbackVarying_Callback_2_(unwrap_jso(this), unwrap_jso(program), index));
+  ActiveInfo getTransformFeedbackVarying(Program program, int index) => _blink.BlinkWebGL2RenderingContext.instance.getTransformFeedbackVarying_Callback_2_(this, program, index);
   
   @DomName('WebGL2RenderingContext.getUniformBlockIndex')
   @DocsEditable()
   @Experimental() // untriaged
-  int getUniformBlockIndex(Program program, String uniformBlockName) => _blink.BlinkWebGL2RenderingContext.instance.getUniformBlockIndex_Callback_2_(unwrap_jso(this), unwrap_jso(program), uniformBlockName);
+  int getUniformBlockIndex(Program program, String uniformBlockName) => _blink.BlinkWebGL2RenderingContext.instance.getUniformBlockIndex_Callback_2_(this, program, uniformBlockName);
   
   @DomName('WebGL2RenderingContext.getUniformIndices')
   @DocsEditable()
   @Experimental() // untriaged
-  List<int> getUniformIndices(Program program, List<String> uniformNames) => _blink.BlinkWebGL2RenderingContext.instance.getUniformIndices_Callback_2_(unwrap_jso(this), unwrap_jso(program), uniformNames);
+  List<int> getUniformIndices(Program program, List<String> uniformNames) => _blink.BlinkWebGL2RenderingContext.instance.getUniformIndices_Callback_2_(this, program, uniformNames);
   
   @DomName('WebGL2RenderingContext.invalidateFramebuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  void invalidateFramebuffer(int target, List<int> attachments) => _blink.BlinkWebGL2RenderingContext.instance.invalidateFramebuffer_Callback_2_(unwrap_jso(this), target, attachments);
+  void invalidateFramebuffer(int target, List<int> attachments) => _blink.BlinkWebGL2RenderingContext.instance.invalidateFramebuffer_Callback_2_(this, target, attachments);
   
   @DomName('WebGL2RenderingContext.invalidateSubFramebuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  void invalidateSubFramebuffer(int target, List<int> attachments, int x, int y, int width, int height) => _blink.BlinkWebGL2RenderingContext.instance.invalidateSubFramebuffer_Callback_6_(unwrap_jso(this), target, attachments, x, y, width, height);
+  void invalidateSubFramebuffer(int target, List<int> attachments, int x, int y, int width, int height) => _blink.BlinkWebGL2RenderingContext.instance.invalidateSubFramebuffer_Callback_6_(this, target, attachments, x, y, width, height);
   
   @DomName('WebGL2RenderingContext.isQuery')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isQuery(Query query) => _blink.BlinkWebGL2RenderingContext.instance.isQuery_Callback_1_(unwrap_jso(this), unwrap_jso(query));
+  bool isQuery(Query query) => _blink.BlinkWebGL2RenderingContext.instance.isQuery_Callback_1_(this, query);
   
   @DomName('WebGL2RenderingContext.isSampler')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isSampler(Sampler sampler) => _blink.BlinkWebGL2RenderingContext.instance.isSampler_Callback_1_(unwrap_jso(this), unwrap_jso(sampler));
+  bool isSampler(Sampler sampler) => _blink.BlinkWebGL2RenderingContext.instance.isSampler_Callback_1_(this, sampler);
   
   @DomName('WebGL2RenderingContext.isSync')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isSync(Sync sync) => _blink.BlinkWebGL2RenderingContext.instance.isSync_Callback_1_(unwrap_jso(this), unwrap_jso(sync));
+  bool isSync(Sync sync) => _blink.BlinkWebGL2RenderingContext.instance.isSync_Callback_1_(this, sync);
   
   @DomName('WebGL2RenderingContext.isTransformFeedback')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isTransformFeedback(TransformFeedback feedback) => _blink.BlinkWebGL2RenderingContext.instance.isTransformFeedback_Callback_1_(unwrap_jso(this), unwrap_jso(feedback));
+  bool isTransformFeedback(TransformFeedback feedback) => _blink.BlinkWebGL2RenderingContext.instance.isTransformFeedback_Callback_1_(this, feedback);
   
   @DomName('WebGL2RenderingContext.isVertexArray')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isVertexArray(VertexArrayObject vertexArray) => _blink.BlinkWebGL2RenderingContext.instance.isVertexArray_Callback_1_(unwrap_jso(this), unwrap_jso(vertexArray));
+  bool isVertexArray(VertexArrayObject vertexArray) => _blink.BlinkWebGL2RenderingContext.instance.isVertexArray_Callback_1_(this, vertexArray);
   
   @DomName('WebGL2RenderingContext.pauseTransformFeedback')
   @DocsEditable()
   @Experimental() // untriaged
-  void pauseTransformFeedback() => _blink.BlinkWebGL2RenderingContext.instance.pauseTransformFeedback_Callback_0_(unwrap_jso(this));
+  void pauseTransformFeedback() => _blink.BlinkWebGL2RenderingContext.instance.pauseTransformFeedback_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.readBuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  void readBuffer(int mode) => _blink.BlinkWebGL2RenderingContext.instance.readBuffer_Callback_1_(unwrap_jso(this), mode);
+  void readBuffer(int mode) => _blink.BlinkWebGL2RenderingContext.instance.readBuffer_Callback_1_(this, mode);
   
   @DomName('WebGL2RenderingContext.renderbufferStorageMultisample')
   @DocsEditable()
   @Experimental() // untriaged
-  void renderbufferStorageMultisample(int target, int samples, int internalformat, int width, int height) => _blink.BlinkWebGL2RenderingContext.instance.renderbufferStorageMultisample_Callback_5_(unwrap_jso(this), target, samples, internalformat, width, height);
+  void renderbufferStorageMultisample(int target, int samples, int internalformat, int width, int height) => _blink.BlinkWebGL2RenderingContext.instance.renderbufferStorageMultisample_Callback_5_(this, target, samples, internalformat, width, height);
   
   @DomName('WebGL2RenderingContext.resumeTransformFeedback')
   @DocsEditable()
   @Experimental() // untriaged
-  void resumeTransformFeedback() => _blink.BlinkWebGL2RenderingContext.instance.resumeTransformFeedback_Callback_0_(unwrap_jso(this));
+  void resumeTransformFeedback() => _blink.BlinkWebGL2RenderingContext.instance.resumeTransformFeedback_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.samplerParameterf')
   @DocsEditable()
   @Experimental() // untriaged
-  void samplerParameterf(Sampler sampler, int pname, num param) => _blink.BlinkWebGL2RenderingContext.instance.samplerParameterf_Callback_3_(unwrap_jso(this), unwrap_jso(sampler), pname, param);
+  void samplerParameterf(Sampler sampler, int pname, num param) => _blink.BlinkWebGL2RenderingContext.instance.samplerParameterf_Callback_3_(this, sampler, pname, param);
   
   @DomName('WebGL2RenderingContext.samplerParameteri')
   @DocsEditable()
   @Experimental() // untriaged
-  void samplerParameteri(Sampler sampler, int pname, int param) => _blink.BlinkWebGL2RenderingContext.instance.samplerParameteri_Callback_3_(unwrap_jso(this), unwrap_jso(sampler), pname, param);
+  void samplerParameteri(Sampler sampler, int pname, int param) => _blink.BlinkWebGL2RenderingContext.instance.samplerParameteri_Callback_3_(this, sampler, pname, param);
   
   @DomName('WebGL2RenderingContext.texImage3D')
   @DocsEditable()
   @Experimental() // untriaged
-  void texImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format, int type, TypedData pixels) => _blink.BlinkWebGL2RenderingContext.instance.texImage3D_Callback_10_(unwrap_jso(this), target, level, internalformat, width, height, depth, border, format, type, unwrap_jso(pixels));
+  void texImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format, int type, TypedData pixels) => _blink.BlinkWebGL2RenderingContext.instance.texImage3D_Callback_10_(this, target, level, internalformat, width, height, depth, border, format, type, pixels);
   
   @DomName('WebGL2RenderingContext.texStorage2D')
   @DocsEditable()
   @Experimental() // untriaged
-  void texStorage2D(int target, int levels, int internalformat, int width, int height) => _blink.BlinkWebGL2RenderingContext.instance.texStorage2D_Callback_5_(unwrap_jso(this), target, levels, internalformat, width, height);
+  void texStorage2D(int target, int levels, int internalformat, int width, int height) => _blink.BlinkWebGL2RenderingContext.instance.texStorage2D_Callback_5_(this, target, levels, internalformat, width, height);
   
   @DomName('WebGL2RenderingContext.texStorage3D')
   @DocsEditable()
   @Experimental() // untriaged
-  void texStorage3D(int target, int levels, int internalformat, int width, int height, int depth) => _blink.BlinkWebGL2RenderingContext.instance.texStorage3D_Callback_6_(unwrap_jso(this), target, levels, internalformat, width, height, depth);
+  void texStorage3D(int target, int levels, int internalformat, int width, int height, int depth) => _blink.BlinkWebGL2RenderingContext.instance.texStorage3D_Callback_6_(this, target, levels, internalformat, width, height, depth);
   
   void texSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int format_OR_width, int height_OR_type, canvas_OR_data_OR_depth_OR_image_OR_video, [int format, int type, TypedData pixels]) {
     if ((pixels is TypedData || pixels == null) && (type is int) && (format is int) && (canvas_OR_data_OR_depth_OR_image_OR_video is int) && (height_OR_type is int) && (format_OR_width is int) && (zoffset is int) && (yoffset is int) && (xoffset is int) && (level is int) && (target is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.texSubImage3D_Callback_11_(unwrap_jso(this), target, level, xoffset, yoffset, zoffset, format_OR_width, height_OR_type, unwrap_jso(canvas_OR_data_OR_depth_OR_image_OR_video), format, type, unwrap_jso(pixels));
+      _blink.BlinkWebGL2RenderingContext.instance.texSubImage3D_Callback_11_(this, target, level, xoffset, yoffset, zoffset, format_OR_width, height_OR_type, canvas_OR_data_OR_depth_OR_image_OR_video, format, type, pixels);
       return;
     }
     if ((canvas_OR_data_OR_depth_OR_image_OR_video is ImageData || canvas_OR_data_OR_depth_OR_image_OR_video == null) && (height_OR_type is int) && (format_OR_width is int) && (zoffset is int) && (yoffset is int) && (xoffset is int) && (level is int) && (target is int) && format == null && type == null && pixels == null) {
-      _blink.BlinkWebGL2RenderingContext.instance.texSubImage3D_Callback_8_(unwrap_jso(this), target, level, xoffset, yoffset, zoffset, format_OR_width, height_OR_type, unwrap_jso(canvas_OR_data_OR_depth_OR_image_OR_video));
+      _blink.BlinkWebGL2RenderingContext.instance.texSubImage3D_Callback_8_(this, target, level, xoffset, yoffset, zoffset, format_OR_width, height_OR_type, canvas_OR_data_OR_depth_OR_image_OR_video);
       return;
     }
     if ((canvas_OR_data_OR_depth_OR_image_OR_video is ImageElement || canvas_OR_data_OR_depth_OR_image_OR_video == null) && (height_OR_type is int) && (format_OR_width is int) && (zoffset is int) && (yoffset is int) && (xoffset is int) && (level is int) && (target is int) && format == null && type == null && pixels == null) {
-      _blink.BlinkWebGL2RenderingContext.instance.texSubImage3D_Callback_8_(unwrap_jso(this), target, level, xoffset, yoffset, zoffset, format_OR_width, height_OR_type, unwrap_jso(canvas_OR_data_OR_depth_OR_image_OR_video));
+      _blink.BlinkWebGL2RenderingContext.instance.texSubImage3D_Callback_8_(this, target, level, xoffset, yoffset, zoffset, format_OR_width, height_OR_type, canvas_OR_data_OR_depth_OR_image_OR_video);
       return;
     }
     if ((canvas_OR_data_OR_depth_OR_image_OR_video is CanvasElement || canvas_OR_data_OR_depth_OR_image_OR_video == null) && (height_OR_type is int) && (format_OR_width is int) && (zoffset is int) && (yoffset is int) && (xoffset is int) && (level is int) && (target is int) && format == null && type == null && pixels == null) {
-      _blink.BlinkWebGL2RenderingContext.instance.texSubImage3D_Callback_8_(unwrap_jso(this), target, level, xoffset, yoffset, zoffset, format_OR_width, height_OR_type, unwrap_jso(canvas_OR_data_OR_depth_OR_image_OR_video));
+      _blink.BlinkWebGL2RenderingContext.instance.texSubImage3D_Callback_8_(this, target, level, xoffset, yoffset, zoffset, format_OR_width, height_OR_type, canvas_OR_data_OR_depth_OR_image_OR_video);
       return;
     }
     if ((canvas_OR_data_OR_depth_OR_image_OR_video is VideoElement || canvas_OR_data_OR_depth_OR_image_OR_video == null) && (height_OR_type is int) && (format_OR_width is int) && (zoffset is int) && (yoffset is int) && (xoffset is int) && (level is int) && (target is int) && format == null && type == null && pixels == null) {
-      _blink.BlinkWebGL2RenderingContext.instance.texSubImage3D_Callback_8_(unwrap_jso(this), target, level, xoffset, yoffset, zoffset, format_OR_width, height_OR_type, unwrap_jso(canvas_OR_data_OR_depth_OR_image_OR_video));
+      _blink.BlinkWebGL2RenderingContext.instance.texSubImage3D_Callback_8_(this, target, level, xoffset, yoffset, zoffset, format_OR_width, height_OR_type, canvas_OR_data_OR_depth_OR_image_OR_video);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -5602,60 +5311,60 @@
   @DomName('WebGL2RenderingContext.transformFeedbackVaryings')
   @DocsEditable()
   @Experimental() // untriaged
-  void transformFeedbackVaryings(Program program, List<String> varyings, int bufferMode) => _blink.BlinkWebGL2RenderingContext.instance.transformFeedbackVaryings_Callback_3_(unwrap_jso(this), unwrap_jso(program), varyings, bufferMode);
+  void transformFeedbackVaryings(Program program, List<String> varyings, int bufferMode) => _blink.BlinkWebGL2RenderingContext.instance.transformFeedbackVaryings_Callback_3_(this, program, varyings, bufferMode);
   
   @DomName('WebGL2RenderingContext.uniform1ui')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniform1ui(UniformLocation location, int v0) => _blink.BlinkWebGL2RenderingContext.instance.uniform1ui_Callback_2_(unwrap_jso(this), unwrap_jso(location), v0);
+  void uniform1ui(UniformLocation location, int v0) => _blink.BlinkWebGL2RenderingContext.instance.uniform1ui_Callback_2_(this, location, v0);
   
   @DomName('WebGL2RenderingContext.uniform1uiv')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniform1uiv(UniformLocation location, List<int> value) => _blink.BlinkWebGL2RenderingContext.instance.uniform1uiv_Callback_2_(unwrap_jso(this), unwrap_jso(location), value);
+  void uniform1uiv(UniformLocation location, List<int> value) => _blink.BlinkWebGL2RenderingContext.instance.uniform1uiv_Callback_2_(this, location, value);
   
   @DomName('WebGL2RenderingContext.uniform2ui')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniform2ui(UniformLocation location, int v0, int v1) => _blink.BlinkWebGL2RenderingContext.instance.uniform2ui_Callback_3_(unwrap_jso(this), unwrap_jso(location), v0, v1);
+  void uniform2ui(UniformLocation location, int v0, int v1) => _blink.BlinkWebGL2RenderingContext.instance.uniform2ui_Callback_3_(this, location, v0, v1);
   
   @DomName('WebGL2RenderingContext.uniform2uiv')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniform2uiv(UniformLocation location, List<int> value) => _blink.BlinkWebGL2RenderingContext.instance.uniform2uiv_Callback_2_(unwrap_jso(this), unwrap_jso(location), value);
+  void uniform2uiv(UniformLocation location, List<int> value) => _blink.BlinkWebGL2RenderingContext.instance.uniform2uiv_Callback_2_(this, location, value);
   
   @DomName('WebGL2RenderingContext.uniform3ui')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniform3ui(UniformLocation location, int v0, int v1, int v2) => _blink.BlinkWebGL2RenderingContext.instance.uniform3ui_Callback_4_(unwrap_jso(this), unwrap_jso(location), v0, v1, v2);
+  void uniform3ui(UniformLocation location, int v0, int v1, int v2) => _blink.BlinkWebGL2RenderingContext.instance.uniform3ui_Callback_4_(this, location, v0, v1, v2);
   
   @DomName('WebGL2RenderingContext.uniform3uiv')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniform3uiv(UniformLocation location, List<int> value) => _blink.BlinkWebGL2RenderingContext.instance.uniform3uiv_Callback_2_(unwrap_jso(this), unwrap_jso(location), value);
+  void uniform3uiv(UniformLocation location, List<int> value) => _blink.BlinkWebGL2RenderingContext.instance.uniform3uiv_Callback_2_(this, location, value);
   
   @DomName('WebGL2RenderingContext.uniform4ui')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniform4ui(UniformLocation location, int v0, int v1, int v2, int v3) => _blink.BlinkWebGL2RenderingContext.instance.uniform4ui_Callback_5_(unwrap_jso(this), unwrap_jso(location), v0, v1, v2, v3);
+  void uniform4ui(UniformLocation location, int v0, int v1, int v2, int v3) => _blink.BlinkWebGL2RenderingContext.instance.uniform4ui_Callback_5_(this, location, v0, v1, v2, v3);
   
   @DomName('WebGL2RenderingContext.uniform4uiv')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniform4uiv(UniformLocation location, List<int> value) => _blink.BlinkWebGL2RenderingContext.instance.uniform4uiv_Callback_2_(unwrap_jso(this), unwrap_jso(location), value);
+  void uniform4uiv(UniformLocation location, List<int> value) => _blink.BlinkWebGL2RenderingContext.instance.uniform4uiv_Callback_2_(this, location, value);
   
   @DomName('WebGL2RenderingContext.uniformBlockBinding')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniformBlockBinding(Program program, int uniformBlockIndex, int uniformBlockBinding) => _blink.BlinkWebGL2RenderingContext.instance.uniformBlockBinding_Callback_3_(unwrap_jso(this), unwrap_jso(program), uniformBlockIndex, uniformBlockBinding);
+  void uniformBlockBinding(Program program, int uniformBlockIndex, int uniformBlockBinding) => _blink.BlinkWebGL2RenderingContext.instance.uniformBlockBinding_Callback_3_(this, program, uniformBlockIndex, uniformBlockBinding);
   
   void uniformMatrix2x3fv(UniformLocation location, bool transpose, value) {
     if ((value is Float32List) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix2x3fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix2x3fv_Callback_3_(this, location, transpose, value);
       return;
     }
     if ((value is List<num>) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix2x3fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix2x3fv_Callback_3_(this, location, transpose, value);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -5663,11 +5372,11 @@
 
   void uniformMatrix2x4fv(UniformLocation location, bool transpose, value) {
     if ((value is Float32List) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix2x4fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix2x4fv_Callback_3_(this, location, transpose, value);
       return;
     }
     if ((value is List<num>) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix2x4fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix2x4fv_Callback_3_(this, location, transpose, value);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -5675,11 +5384,11 @@
 
   void uniformMatrix3x2fv(UniformLocation location, bool transpose, value) {
     if ((value is Float32List) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix3x2fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix3x2fv_Callback_3_(this, location, transpose, value);
       return;
     }
     if ((value is List<num>) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix3x2fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix3x2fv_Callback_3_(this, location, transpose, value);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -5687,11 +5396,11 @@
 
   void uniformMatrix3x4fv(UniformLocation location, bool transpose, value) {
     if ((value is Float32List) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix3x4fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix3x4fv_Callback_3_(this, location, transpose, value);
       return;
     }
     if ((value is List<num>) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix3x4fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix3x4fv_Callback_3_(this, location, transpose, value);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -5699,11 +5408,11 @@
 
   void uniformMatrix4x2fv(UniformLocation location, bool transpose, value) {
     if ((value is Float32List) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix4x2fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix4x2fv_Callback_3_(this, location, transpose, value);
       return;
     }
     if ((value is List<num>) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix4x2fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix4x2fv_Callback_3_(this, location, transpose, value);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -5711,11 +5420,11 @@
 
   void uniformMatrix4x3fv(UniformLocation location, bool transpose, value) {
     if ((value is Float32List) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix4x3fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix4x3fv_Callback_3_(this, location, transpose, value);
       return;
     }
     if ((value is List<num>) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix4x3fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(value));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix4x3fv_Callback_3_(this, location, transpose, value);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -5724,124 +5433,124 @@
   @DomName('WebGL2RenderingContext.vertexAttribDivisor')
   @DocsEditable()
   @Experimental() // untriaged
-  void vertexAttribDivisor(int index, int divisor) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttribDivisor_Callback_2_(unwrap_jso(this), index, divisor);
+  void vertexAttribDivisor(int index, int divisor) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttribDivisor_Callback_2_(this, index, divisor);
   
   @DomName('WebGL2RenderingContext.vertexAttribI4i')
   @DocsEditable()
   @Experimental() // untriaged
-  void vertexAttribI4i(int index, int x, int y, int z, int w) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttribI4i_Callback_5_(unwrap_jso(this), index, x, y, z, w);
+  void vertexAttribI4i(int index, int x, int y, int z, int w) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttribI4i_Callback_5_(this, index, x, y, z, w);
   
   @DomName('WebGL2RenderingContext.vertexAttribI4iv')
   @DocsEditable()
   @Experimental() // untriaged
-  void vertexAttribI4iv(int index, List<int> v) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttribI4iv_Callback_2_(unwrap_jso(this), index, v);
+  void vertexAttribI4iv(int index, List<int> v) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttribI4iv_Callback_2_(this, index, v);
   
   @DomName('WebGL2RenderingContext.vertexAttribI4ui')
   @DocsEditable()
   @Experimental() // untriaged
-  void vertexAttribI4ui(int index, int x, int y, int z, int w) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttribI4ui_Callback_5_(unwrap_jso(this), index, x, y, z, w);
+  void vertexAttribI4ui(int index, int x, int y, int z, int w) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttribI4ui_Callback_5_(this, index, x, y, z, w);
   
   @DomName('WebGL2RenderingContext.vertexAttribI4uiv')
   @DocsEditable()
   @Experimental() // untriaged
-  void vertexAttribI4uiv(int index, List<int> v) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttribI4uiv_Callback_2_(unwrap_jso(this), index, v);
+  void vertexAttribI4uiv(int index, List<int> v) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttribI4uiv_Callback_2_(this, index, v);
   
   @DomName('WebGL2RenderingContext.vertexAttribIPointer')
   @DocsEditable()
   @Experimental() // untriaged
-  void vertexAttribIPointer(int index, int size, int type, int stride, int offset) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttribIPointer_Callback_5_(unwrap_jso(this), index, size, type, stride, offset);
+  void vertexAttribIPointer(int index, int size, int type, int stride, int offset) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttribIPointer_Callback_5_(this, index, size, type, stride, offset);
   
   @DomName('WebGL2RenderingContext.waitSync')
   @DocsEditable()
   @Experimental() // untriaged
-  void waitSync(Sync sync, int flags, int timeout) => _blink.BlinkWebGL2RenderingContext.instance.waitSync_Callback_3_(unwrap_jso(this), unwrap_jso(sync), flags, timeout);
+  void waitSync(Sync sync, int flags, int timeout) => _blink.BlinkWebGL2RenderingContext.instance.waitSync_Callback_3_(this, sync, flags, timeout);
   
   @DomName('WebGL2RenderingContext.canvas')
   @DocsEditable()
   @Experimental() // untriaged
-  CanvasElement get canvas => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.canvas_Getter_(unwrap_jso(this)));
+  CanvasElement get canvas => _blink.BlinkWebGL2RenderingContext.instance.canvas_Getter_(this);
   
   @DomName('WebGL2RenderingContext.drawingBufferHeight')
   @DocsEditable()
   @Experimental() // untriaged
-  int get drawingBufferHeight => _blink.BlinkWebGL2RenderingContext.instance.drawingBufferHeight_Getter_(unwrap_jso(this));
+  int get drawingBufferHeight => _blink.BlinkWebGL2RenderingContext.instance.drawingBufferHeight_Getter_(this);
   
   @DomName('WebGL2RenderingContext.drawingBufferWidth')
   @DocsEditable()
   @Experimental() // untriaged
-  int get drawingBufferWidth => _blink.BlinkWebGL2RenderingContext.instance.drawingBufferWidth_Getter_(unwrap_jso(this));
+  int get drawingBufferWidth => _blink.BlinkWebGL2RenderingContext.instance.drawingBufferWidth_Getter_(this);
   
   @DomName('WebGL2RenderingContext.activeTexture')
   @DocsEditable()
   @Experimental() // untriaged
-  void activeTexture(int texture) => _blink.BlinkWebGL2RenderingContext.instance.activeTexture_Callback_1_(unwrap_jso(this), texture);
+  void activeTexture(int texture) => _blink.BlinkWebGL2RenderingContext.instance.activeTexture_Callback_1_(this, texture);
   
   @DomName('WebGL2RenderingContext.attachShader')
   @DocsEditable()
   @Experimental() // untriaged
-  void attachShader(Program program, Shader shader) => _blink.BlinkWebGL2RenderingContext.instance.attachShader_Callback_2_(unwrap_jso(this), unwrap_jso(program), unwrap_jso(shader));
+  void attachShader(Program program, Shader shader) => _blink.BlinkWebGL2RenderingContext.instance.attachShader_Callback_2_(this, program, shader);
   
   @DomName('WebGL2RenderingContext.bindAttribLocation')
   @DocsEditable()
   @Experimental() // untriaged
-  void bindAttribLocation(Program program, int index, String name) => _blink.BlinkWebGL2RenderingContext.instance.bindAttribLocation_Callback_3_(unwrap_jso(this), unwrap_jso(program), index, name);
+  void bindAttribLocation(Program program, int index, String name) => _blink.BlinkWebGL2RenderingContext.instance.bindAttribLocation_Callback_3_(this, program, index, name);
   
   @DomName('WebGL2RenderingContext.bindBuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  void bindBuffer(int target, Buffer buffer) => _blink.BlinkWebGL2RenderingContext.instance.bindBuffer_Callback_2_(unwrap_jso(this), target, unwrap_jso(buffer));
+  void bindBuffer(int target, Buffer buffer) => _blink.BlinkWebGL2RenderingContext.instance.bindBuffer_Callback_2_(this, target, buffer);
   
   @DomName('WebGL2RenderingContext.bindFramebuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  void bindFramebuffer(int target, Framebuffer framebuffer) => _blink.BlinkWebGL2RenderingContext.instance.bindFramebuffer_Callback_2_(unwrap_jso(this), target, unwrap_jso(framebuffer));
+  void bindFramebuffer(int target, Framebuffer framebuffer) => _blink.BlinkWebGL2RenderingContext.instance.bindFramebuffer_Callback_2_(this, target, framebuffer);
   
   @DomName('WebGL2RenderingContext.bindRenderbuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  void bindRenderbuffer(int target, Renderbuffer renderbuffer) => _blink.BlinkWebGL2RenderingContext.instance.bindRenderbuffer_Callback_2_(unwrap_jso(this), target, unwrap_jso(renderbuffer));
+  void bindRenderbuffer(int target, Renderbuffer renderbuffer) => _blink.BlinkWebGL2RenderingContext.instance.bindRenderbuffer_Callback_2_(this, target, renderbuffer);
   
   @DomName('WebGL2RenderingContext.bindTexture')
   @DocsEditable()
   @Experimental() // untriaged
-  void bindTexture(int target, Texture texture) => _blink.BlinkWebGL2RenderingContext.instance.bindTexture_Callback_2_(unwrap_jso(this), target, unwrap_jso(texture));
+  void bindTexture(int target, Texture texture) => _blink.BlinkWebGL2RenderingContext.instance.bindTexture_Callback_2_(this, target, texture);
   
   @DomName('WebGL2RenderingContext.blendColor')
   @DocsEditable()
   @Experimental() // untriaged
-  void blendColor(num red, num green, num blue, num alpha) => _blink.BlinkWebGL2RenderingContext.instance.blendColor_Callback_4_(unwrap_jso(this), red, green, blue, alpha);
+  void blendColor(num red, num green, num blue, num alpha) => _blink.BlinkWebGL2RenderingContext.instance.blendColor_Callback_4_(this, red, green, blue, alpha);
   
   @DomName('WebGL2RenderingContext.blendEquation')
   @DocsEditable()
   @Experimental() // untriaged
-  void blendEquation(int mode) => _blink.BlinkWebGL2RenderingContext.instance.blendEquation_Callback_1_(unwrap_jso(this), mode);
+  void blendEquation(int mode) => _blink.BlinkWebGL2RenderingContext.instance.blendEquation_Callback_1_(this, mode);
   
   @DomName('WebGL2RenderingContext.blendEquationSeparate')
   @DocsEditable()
   @Experimental() // untriaged
-  void blendEquationSeparate(int modeRGB, int modeAlpha) => _blink.BlinkWebGL2RenderingContext.instance.blendEquationSeparate_Callback_2_(unwrap_jso(this), modeRGB, modeAlpha);
+  void blendEquationSeparate(int modeRGB, int modeAlpha) => _blink.BlinkWebGL2RenderingContext.instance.blendEquationSeparate_Callback_2_(this, modeRGB, modeAlpha);
   
   @DomName('WebGL2RenderingContext.blendFunc')
   @DocsEditable()
   @Experimental() // untriaged
-  void blendFunc(int sfactor, int dfactor) => _blink.BlinkWebGL2RenderingContext.instance.blendFunc_Callback_2_(unwrap_jso(this), sfactor, dfactor);
+  void blendFunc(int sfactor, int dfactor) => _blink.BlinkWebGL2RenderingContext.instance.blendFunc_Callback_2_(this, sfactor, dfactor);
   
   @DomName('WebGL2RenderingContext.blendFuncSeparate')
   @DocsEditable()
   @Experimental() // untriaged
-  void blendFuncSeparate(int srcRGB, int dstRGB, int srcAlpha, int dstAlpha) => _blink.BlinkWebGL2RenderingContext.instance.blendFuncSeparate_Callback_4_(unwrap_jso(this), srcRGB, dstRGB, srcAlpha, dstAlpha);
+  void blendFuncSeparate(int srcRGB, int dstRGB, int srcAlpha, int dstAlpha) => _blink.BlinkWebGL2RenderingContext.instance.blendFuncSeparate_Callback_4_(this, srcRGB, dstRGB, srcAlpha, dstAlpha);
   
   void bufferData(int target, data_OR_size, int usage) {
     if ((usage is int) && (data_OR_size is int) && (target is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.bufferData_Callback_3_(unwrap_jso(this), target, unwrap_jso(data_OR_size), usage);
+      _blink.BlinkWebGL2RenderingContext.instance.bufferData_Callback_3_(this, target, data_OR_size, usage);
       return;
     }
     if ((usage is int) && (data_OR_size is TypedData) && (target is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.bufferData_Callback_3_(unwrap_jso(this), target, unwrap_jso(data_OR_size), usage);
+      _blink.BlinkWebGL2RenderingContext.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.BlinkWebGL2RenderingContext.instance.bufferData_Callback_3_(unwrap_jso(this), target, unwrap_jso(data_OR_size), usage);
+      _blink.BlinkWebGL2RenderingContext.instance.bufferData_Callback_3_(this, target, data_OR_size, usage);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -5849,11 +5558,11 @@
 
   void bufferSubData(int target, int offset, data) {
     if ((data is TypedData) && (offset is int) && (target is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.bufferSubData_Callback_3_(unwrap_jso(this), target, offset, unwrap_jso(data));
+      _blink.BlinkWebGL2RenderingContext.instance.bufferSubData_Callback_3_(this, target, offset, data);
       return;
     }
     if ((data is ByteBuffer || data == null) && (offset is int) && (target is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.bufferSubData_Callback_3_(unwrap_jso(this), target, offset, unwrap_jso(data));
+      _blink.BlinkWebGL2RenderingContext.instance.bufferSubData_Callback_3_(this, target, offset, data);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -5862,457 +5571,457 @@
   @DomName('WebGL2RenderingContext.checkFramebufferStatus')
   @DocsEditable()
   @Experimental() // untriaged
-  int checkFramebufferStatus(int target) => _blink.BlinkWebGL2RenderingContext.instance.checkFramebufferStatus_Callback_1_(unwrap_jso(this), target);
+  int checkFramebufferStatus(int target) => _blink.BlinkWebGL2RenderingContext.instance.checkFramebufferStatus_Callback_1_(this, target);
   
   @DomName('WebGL2RenderingContext.clear')
   @DocsEditable()
   @Experimental() // untriaged
-  void clear(int mask) => _blink.BlinkWebGL2RenderingContext.instance.clear_Callback_1_(unwrap_jso(this), mask);
+  void clear(int mask) => _blink.BlinkWebGL2RenderingContext.instance.clear_Callback_1_(this, mask);
   
   @DomName('WebGL2RenderingContext.clearColor')
   @DocsEditable()
   @Experimental() // untriaged
-  void clearColor(num red, num green, num blue, num alpha) => _blink.BlinkWebGL2RenderingContext.instance.clearColor_Callback_4_(unwrap_jso(this), red, green, blue, alpha);
+  void clearColor(num red, num green, num blue, num alpha) => _blink.BlinkWebGL2RenderingContext.instance.clearColor_Callback_4_(this, red, green, blue, alpha);
   
   @DomName('WebGL2RenderingContext.clearDepth')
   @DocsEditable()
   @Experimental() // untriaged
-  void clearDepth(num depth) => _blink.BlinkWebGL2RenderingContext.instance.clearDepth_Callback_1_(unwrap_jso(this), depth);
+  void clearDepth(num depth) => _blink.BlinkWebGL2RenderingContext.instance.clearDepth_Callback_1_(this, depth);
   
   @DomName('WebGL2RenderingContext.clearStencil')
   @DocsEditable()
   @Experimental() // untriaged
-  void clearStencil(int s) => _blink.BlinkWebGL2RenderingContext.instance.clearStencil_Callback_1_(unwrap_jso(this), s);
+  void clearStencil(int s) => _blink.BlinkWebGL2RenderingContext.instance.clearStencil_Callback_1_(this, s);
   
   @DomName('WebGL2RenderingContext.colorMask')
   @DocsEditable()
   @Experimental() // untriaged
-  void colorMask(bool red, bool green, bool blue, bool alpha) => _blink.BlinkWebGL2RenderingContext.instance.colorMask_Callback_4_(unwrap_jso(this), red, green, blue, alpha);
+  void colorMask(bool red, bool green, bool blue, bool alpha) => _blink.BlinkWebGL2RenderingContext.instance.colorMask_Callback_4_(this, red, green, blue, alpha);
   
   @DomName('WebGL2RenderingContext.compileShader')
   @DocsEditable()
   @Experimental() // untriaged
-  void compileShader(Shader shader) => _blink.BlinkWebGL2RenderingContext.instance.compileShader_Callback_1_(unwrap_jso(this), unwrap_jso(shader));
+  void compileShader(Shader shader) => _blink.BlinkWebGL2RenderingContext.instance.compileShader_Callback_1_(this, shader);
   
   @DomName('WebGL2RenderingContext.compressedTexImage2D')
   @DocsEditable()
   @Experimental() // untriaged
-  void compressedTexImage2D(int target, int level, int internalformat, int width, int height, int border, TypedData data) => _blink.BlinkWebGL2RenderingContext.instance.compressedTexImage2D_Callback_7_(unwrap_jso(this), target, level, internalformat, width, height, border, unwrap_jso(data));
+  void compressedTexImage2D(int target, int level, int internalformat, int width, int height, int border, TypedData data) => _blink.BlinkWebGL2RenderingContext.instance.compressedTexImage2D_Callback_7_(this, target, level, internalformat, width, height, border, data);
   
   @DomName('WebGL2RenderingContext.compressedTexSubImage2D')
   @DocsEditable()
   @Experimental() // untriaged
-  void compressedTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height, int format, TypedData data) => _blink.BlinkWebGL2RenderingContext.instance.compressedTexSubImage2D_Callback_8_(unwrap_jso(this), target, level, xoffset, yoffset, width, height, format, unwrap_jso(data));
+  void compressedTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height, int format, TypedData data) => _blink.BlinkWebGL2RenderingContext.instance.compressedTexSubImage2D_Callback_8_(this, target, level, xoffset, yoffset, width, height, format, data);
   
   @DomName('WebGL2RenderingContext.copyTexImage2D')
   @DocsEditable()
   @Experimental() // untriaged
-  void copyTexImage2D(int target, int level, int internalformat, int x, int y, int width, int height, int border) => _blink.BlinkWebGL2RenderingContext.instance.copyTexImage2D_Callback_8_(unwrap_jso(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.BlinkWebGL2RenderingContext.instance.copyTexImage2D_Callback_8_(this, target, level, internalformat, x, y, width, height, border);
   
   @DomName('WebGL2RenderingContext.copyTexSubImage2D')
   @DocsEditable()
   @Experimental() // untriaged
-  void copyTexSubImage2D(int target, int level, int xoffset, int yoffset, int x, int y, int width, int height) => _blink.BlinkWebGL2RenderingContext.instance.copyTexSubImage2D_Callback_8_(unwrap_jso(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.BlinkWebGL2RenderingContext.instance.copyTexSubImage2D_Callback_8_(this, target, level, xoffset, yoffset, x, y, width, height);
   
   @DomName('WebGL2RenderingContext.createBuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  Buffer createBuffer() => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.createBuffer_Callback_0_(unwrap_jso(this)));
+  Buffer createBuffer() => _blink.BlinkWebGL2RenderingContext.instance.createBuffer_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.createFramebuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  Framebuffer createFramebuffer() => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.createFramebuffer_Callback_0_(unwrap_jso(this)));
+  Framebuffer createFramebuffer() => _blink.BlinkWebGL2RenderingContext.instance.createFramebuffer_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.createProgram')
   @DocsEditable()
   @Experimental() // untriaged
-  Program createProgram() => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.createProgram_Callback_0_(unwrap_jso(this)));
+  Program createProgram() => _blink.BlinkWebGL2RenderingContext.instance.createProgram_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.createRenderbuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  Renderbuffer createRenderbuffer() => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.createRenderbuffer_Callback_0_(unwrap_jso(this)));
+  Renderbuffer createRenderbuffer() => _blink.BlinkWebGL2RenderingContext.instance.createRenderbuffer_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.createShader')
   @DocsEditable()
   @Experimental() // untriaged
-  Shader createShader(int type) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.createShader_Callback_1_(unwrap_jso(this), type));
+  Shader createShader(int type) => _blink.BlinkWebGL2RenderingContext.instance.createShader_Callback_1_(this, type);
   
   @DomName('WebGL2RenderingContext.createTexture')
   @DocsEditable()
   @Experimental() // untriaged
-  Texture createTexture() => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.createTexture_Callback_0_(unwrap_jso(this)));
+  Texture createTexture() => _blink.BlinkWebGL2RenderingContext.instance.createTexture_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.cullFace')
   @DocsEditable()
   @Experimental() // untriaged
-  void cullFace(int mode) => _blink.BlinkWebGL2RenderingContext.instance.cullFace_Callback_1_(unwrap_jso(this), mode);
+  void cullFace(int mode) => _blink.BlinkWebGL2RenderingContext.instance.cullFace_Callback_1_(this, mode);
   
   @DomName('WebGL2RenderingContext.deleteBuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  void deleteBuffer(Buffer buffer) => _blink.BlinkWebGL2RenderingContext.instance.deleteBuffer_Callback_1_(unwrap_jso(this), unwrap_jso(buffer));
+  void deleteBuffer(Buffer buffer) => _blink.BlinkWebGL2RenderingContext.instance.deleteBuffer_Callback_1_(this, buffer);
   
   @DomName('WebGL2RenderingContext.deleteFramebuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  void deleteFramebuffer(Framebuffer framebuffer) => _blink.BlinkWebGL2RenderingContext.instance.deleteFramebuffer_Callback_1_(unwrap_jso(this), unwrap_jso(framebuffer));
+  void deleteFramebuffer(Framebuffer framebuffer) => _blink.BlinkWebGL2RenderingContext.instance.deleteFramebuffer_Callback_1_(this, framebuffer);
   
   @DomName('WebGL2RenderingContext.deleteProgram')
   @DocsEditable()
   @Experimental() // untriaged
-  void deleteProgram(Program program) => _blink.BlinkWebGL2RenderingContext.instance.deleteProgram_Callback_1_(unwrap_jso(this), unwrap_jso(program));
+  void deleteProgram(Program program) => _blink.BlinkWebGL2RenderingContext.instance.deleteProgram_Callback_1_(this, program);
   
   @DomName('WebGL2RenderingContext.deleteRenderbuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  void deleteRenderbuffer(Renderbuffer renderbuffer) => _blink.BlinkWebGL2RenderingContext.instance.deleteRenderbuffer_Callback_1_(unwrap_jso(this), unwrap_jso(renderbuffer));
+  void deleteRenderbuffer(Renderbuffer renderbuffer) => _blink.BlinkWebGL2RenderingContext.instance.deleteRenderbuffer_Callback_1_(this, renderbuffer);
   
   @DomName('WebGL2RenderingContext.deleteShader')
   @DocsEditable()
   @Experimental() // untriaged
-  void deleteShader(Shader shader) => _blink.BlinkWebGL2RenderingContext.instance.deleteShader_Callback_1_(unwrap_jso(this), unwrap_jso(shader));
+  void deleteShader(Shader shader) => _blink.BlinkWebGL2RenderingContext.instance.deleteShader_Callback_1_(this, shader);
   
   @DomName('WebGL2RenderingContext.deleteTexture')
   @DocsEditable()
   @Experimental() // untriaged
-  void deleteTexture(Texture texture) => _blink.BlinkWebGL2RenderingContext.instance.deleteTexture_Callback_1_(unwrap_jso(this), unwrap_jso(texture));
+  void deleteTexture(Texture texture) => _blink.BlinkWebGL2RenderingContext.instance.deleteTexture_Callback_1_(this, texture);
   
   @DomName('WebGL2RenderingContext.depthFunc')
   @DocsEditable()
   @Experimental() // untriaged
-  void depthFunc(int func) => _blink.BlinkWebGL2RenderingContext.instance.depthFunc_Callback_1_(unwrap_jso(this), func);
+  void depthFunc(int func) => _blink.BlinkWebGL2RenderingContext.instance.depthFunc_Callback_1_(this, func);
   
   @DomName('WebGL2RenderingContext.depthMask')
   @DocsEditable()
   @Experimental() // untriaged
-  void depthMask(bool flag) => _blink.BlinkWebGL2RenderingContext.instance.depthMask_Callback_1_(unwrap_jso(this), flag);
+  void depthMask(bool flag) => _blink.BlinkWebGL2RenderingContext.instance.depthMask_Callback_1_(this, flag);
   
   @DomName('WebGL2RenderingContext.depthRange')
   @DocsEditable()
   @Experimental() // untriaged
-  void depthRange(num zNear, num zFar) => _blink.BlinkWebGL2RenderingContext.instance.depthRange_Callback_2_(unwrap_jso(this), zNear, zFar);
+  void depthRange(num zNear, num zFar) => _blink.BlinkWebGL2RenderingContext.instance.depthRange_Callback_2_(this, zNear, zFar);
   
   @DomName('WebGL2RenderingContext.detachShader')
   @DocsEditable()
   @Experimental() // untriaged
-  void detachShader(Program program, Shader shader) => _blink.BlinkWebGL2RenderingContext.instance.detachShader_Callback_2_(unwrap_jso(this), unwrap_jso(program), unwrap_jso(shader));
+  void detachShader(Program program, Shader shader) => _blink.BlinkWebGL2RenderingContext.instance.detachShader_Callback_2_(this, program, shader);
   
   @DomName('WebGL2RenderingContext.disable')
   @DocsEditable()
   @Experimental() // untriaged
-  void disable(int cap) => _blink.BlinkWebGL2RenderingContext.instance.disable_Callback_1_(unwrap_jso(this), cap);
+  void disable(int cap) => _blink.BlinkWebGL2RenderingContext.instance.disable_Callback_1_(this, cap);
   
   @DomName('WebGL2RenderingContext.disableVertexAttribArray')
   @DocsEditable()
   @Experimental() // untriaged
-  void disableVertexAttribArray(int index) => _blink.BlinkWebGL2RenderingContext.instance.disableVertexAttribArray_Callback_1_(unwrap_jso(this), index);
+  void disableVertexAttribArray(int index) => _blink.BlinkWebGL2RenderingContext.instance.disableVertexAttribArray_Callback_1_(this, index);
   
   @DomName('WebGL2RenderingContext.drawArrays')
   @DocsEditable()
   @Experimental() // untriaged
-  void drawArrays(int mode, int first, int count) => _blink.BlinkWebGL2RenderingContext.instance.drawArrays_Callback_3_(unwrap_jso(this), mode, first, count);
+  void drawArrays(int mode, int first, int count) => _blink.BlinkWebGL2RenderingContext.instance.drawArrays_Callback_3_(this, mode, first, count);
   
   @DomName('WebGL2RenderingContext.drawElements')
   @DocsEditable()
   @Experimental() // untriaged
-  void drawElements(int mode, int count, int type, int offset) => _blink.BlinkWebGL2RenderingContext.instance.drawElements_Callback_4_(unwrap_jso(this), mode, count, type, offset);
+  void drawElements(int mode, int count, int type, int offset) => _blink.BlinkWebGL2RenderingContext.instance.drawElements_Callback_4_(this, mode, count, type, offset);
   
   @DomName('WebGL2RenderingContext.enable')
   @DocsEditable()
   @Experimental() // untriaged
-  void enable(int cap) => _blink.BlinkWebGL2RenderingContext.instance.enable_Callback_1_(unwrap_jso(this), cap);
+  void enable(int cap) => _blink.BlinkWebGL2RenderingContext.instance.enable_Callback_1_(this, cap);
   
   @DomName('WebGL2RenderingContext.enableVertexAttribArray')
   @DocsEditable()
   @Experimental() // untriaged
-  void enableVertexAttribArray(int index) => _blink.BlinkWebGL2RenderingContext.instance.enableVertexAttribArray_Callback_1_(unwrap_jso(this), index);
+  void enableVertexAttribArray(int index) => _blink.BlinkWebGL2RenderingContext.instance.enableVertexAttribArray_Callback_1_(this, index);
   
   @DomName('WebGL2RenderingContext.finish')
   @DocsEditable()
   @Experimental() // untriaged
-  void finish() => _blink.BlinkWebGL2RenderingContext.instance.finish_Callback_0_(unwrap_jso(this));
+  void finish() => _blink.BlinkWebGL2RenderingContext.instance.finish_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.flush')
   @DocsEditable()
   @Experimental() // untriaged
-  void flush() => _blink.BlinkWebGL2RenderingContext.instance.flush_Callback_0_(unwrap_jso(this));
+  void flush() => _blink.BlinkWebGL2RenderingContext.instance.flush_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.framebufferRenderbuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  void framebufferRenderbuffer(int target, int attachment, int renderbuffertarget, Renderbuffer renderbuffer) => _blink.BlinkWebGL2RenderingContext.instance.framebufferRenderbuffer_Callback_4_(unwrap_jso(this), target, attachment, renderbuffertarget, unwrap_jso(renderbuffer));
+  void framebufferRenderbuffer(int target, int attachment, int renderbuffertarget, Renderbuffer renderbuffer) => _blink.BlinkWebGL2RenderingContext.instance.framebufferRenderbuffer_Callback_4_(this, target, attachment, renderbuffertarget, renderbuffer);
   
   @DomName('WebGL2RenderingContext.framebufferTexture2D')
   @DocsEditable()
   @Experimental() // untriaged
-  void framebufferTexture2D(int target, int attachment, int textarget, Texture texture, int level) => _blink.BlinkWebGL2RenderingContext.instance.framebufferTexture2D_Callback_5_(unwrap_jso(this), target, attachment, textarget, unwrap_jso(texture), level);
+  void framebufferTexture2D(int target, int attachment, int textarget, Texture texture, int level) => _blink.BlinkWebGL2RenderingContext.instance.framebufferTexture2D_Callback_5_(this, target, attachment, textarget, texture, level);
   
   @DomName('WebGL2RenderingContext.frontFace')
   @DocsEditable()
   @Experimental() // untriaged
-  void frontFace(int mode) => _blink.BlinkWebGL2RenderingContext.instance.frontFace_Callback_1_(unwrap_jso(this), mode);
+  void frontFace(int mode) => _blink.BlinkWebGL2RenderingContext.instance.frontFace_Callback_1_(this, mode);
   
   @DomName('WebGL2RenderingContext.generateMipmap')
   @DocsEditable()
   @Experimental() // untriaged
-  void generateMipmap(int target) => _blink.BlinkWebGL2RenderingContext.instance.generateMipmap_Callback_1_(unwrap_jso(this), target);
+  void generateMipmap(int target) => _blink.BlinkWebGL2RenderingContext.instance.generateMipmap_Callback_1_(this, target);
   
   @DomName('WebGL2RenderingContext.getActiveAttrib')
   @DocsEditable()
   @Experimental() // untriaged
-  ActiveInfo getActiveAttrib(Program program, int index) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getActiveAttrib_Callback_2_(unwrap_jso(this), unwrap_jso(program), index));
+  ActiveInfo getActiveAttrib(Program program, int index) => _blink.BlinkWebGL2RenderingContext.instance.getActiveAttrib_Callback_2_(this, program, index);
   
   @DomName('WebGL2RenderingContext.getActiveUniform')
   @DocsEditable()
   @Experimental() // untriaged
-  ActiveInfo getActiveUniform(Program program, int index) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getActiveUniform_Callback_2_(unwrap_jso(this), unwrap_jso(program), index));
+  ActiveInfo getActiveUniform(Program program, int index) => _blink.BlinkWebGL2RenderingContext.instance.getActiveUniform_Callback_2_(this, program, index);
   
   @DomName('WebGL2RenderingContext.getAttachedShaders')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Shader> getAttachedShaders(Program program) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getAttachedShaders_Callback_1_(unwrap_jso(this), unwrap_jso(program)));
+  List<Shader> getAttachedShaders(Program program) => _blink.BlinkWebGL2RenderingContext.instance.getAttachedShaders_Callback_1_(this, program);
   
   @DomName('WebGL2RenderingContext.getAttribLocation')
   @DocsEditable()
   @Experimental() // untriaged
-  int getAttribLocation(Program program, String name) => _blink.BlinkWebGL2RenderingContext.instance.getAttribLocation_Callback_2_(unwrap_jso(this), unwrap_jso(program), name);
+  int getAttribLocation(Program program, String name) => _blink.BlinkWebGL2RenderingContext.instance.getAttribLocation_Callback_2_(this, program, name);
   
   @DomName('WebGL2RenderingContext.getBufferParameter')
   @DocsEditable()
   @Experimental() // untriaged
-  Object getBufferParameter(int target, int pname) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getBufferParameter_Callback_2_(unwrap_jso(this), target, pname));
+  Object getBufferParameter(int target, int pname) => (_blink.BlinkWebGL2RenderingContext.instance.getBufferParameter_Callback_2_(this, target, pname));
   
   @DomName('WebGL2RenderingContext.getContextAttributes')
   @DocsEditable()
   @Experimental() // untriaged
-   getContextAttributes() => convertNativeDictionaryToDartDictionary(wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getContextAttributes_Callback_0_(unwrap_jso(this))));
+   getContextAttributes() => convertNativeDictionaryToDartDictionary((_blink.BlinkWebGL2RenderingContext.instance.getContextAttributes_Callback_0_(this)));
   
   @DomName('WebGL2RenderingContext.getError')
   @DocsEditable()
   @Experimental() // untriaged
-  int getError() => _blink.BlinkWebGL2RenderingContext.instance.getError_Callback_0_(unwrap_jso(this));
+  int getError() => _blink.BlinkWebGL2RenderingContext.instance.getError_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.getExtension')
   @DocsEditable()
   @Experimental() // untriaged
-  Object getExtension(String name) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getExtension_Callback_1_(unwrap_jso(this), name));
+  Object getExtension(String name) => (_blink.BlinkWebGL2RenderingContext.instance.getExtension_Callback_1_(this, name));
   
   @DomName('WebGL2RenderingContext.getFramebufferAttachmentParameter')
   @DocsEditable()
   @Experimental() // untriaged
-  Object getFramebufferAttachmentParameter(int target, int attachment, int pname) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getFramebufferAttachmentParameter_Callback_3_(unwrap_jso(this), target, attachment, pname));
+  Object getFramebufferAttachmentParameter(int target, int attachment, int pname) => (_blink.BlinkWebGL2RenderingContext.instance.getFramebufferAttachmentParameter_Callback_3_(this, target, attachment, pname));
   
   @DomName('WebGL2RenderingContext.getParameter')
   @DocsEditable()
   @Experimental() // untriaged
-  Object getParameter(int pname) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getParameter_Callback_1_(unwrap_jso(this), pname));
+  Object getParameter(int pname) => (_blink.BlinkWebGL2RenderingContext.instance.getParameter_Callback_1_(this, pname));
   
   @DomName('WebGL2RenderingContext.getProgramInfoLog')
   @DocsEditable()
   @Experimental() // untriaged
-  String getProgramInfoLog(Program program) => _blink.BlinkWebGL2RenderingContext.instance.getProgramInfoLog_Callback_1_(unwrap_jso(this), unwrap_jso(program));
+  String getProgramInfoLog(Program program) => _blink.BlinkWebGL2RenderingContext.instance.getProgramInfoLog_Callback_1_(this, program);
   
   @DomName('WebGL2RenderingContext.getProgramParameter')
   @DocsEditable()
   @Experimental() // untriaged
-  Object getProgramParameter(Program program, int pname) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getProgramParameter_Callback_2_(unwrap_jso(this), unwrap_jso(program), pname));
+  Object getProgramParameter(Program program, int pname) => (_blink.BlinkWebGL2RenderingContext.instance.getProgramParameter_Callback_2_(this, program, pname));
   
   @DomName('WebGL2RenderingContext.getRenderbufferParameter')
   @DocsEditable()
   @Experimental() // untriaged
-  Object getRenderbufferParameter(int target, int pname) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getRenderbufferParameter_Callback_2_(unwrap_jso(this), target, pname));
+  Object getRenderbufferParameter(int target, int pname) => (_blink.BlinkWebGL2RenderingContext.instance.getRenderbufferParameter_Callback_2_(this, target, pname));
   
   @DomName('WebGL2RenderingContext.getShaderInfoLog')
   @DocsEditable()
   @Experimental() // untriaged
-  String getShaderInfoLog(Shader shader) => _blink.BlinkWebGL2RenderingContext.instance.getShaderInfoLog_Callback_1_(unwrap_jso(this), unwrap_jso(shader));
+  String getShaderInfoLog(Shader shader) => _blink.BlinkWebGL2RenderingContext.instance.getShaderInfoLog_Callback_1_(this, shader);
   
   @DomName('WebGL2RenderingContext.getShaderParameter')
   @DocsEditable()
   @Experimental() // untriaged
-  Object getShaderParameter(Shader shader, int pname) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getShaderParameter_Callback_2_(unwrap_jso(this), unwrap_jso(shader), pname));
+  Object getShaderParameter(Shader shader, int pname) => (_blink.BlinkWebGL2RenderingContext.instance.getShaderParameter_Callback_2_(this, shader, pname));
   
   @DomName('WebGL2RenderingContext.getShaderPrecisionFormat')
   @DocsEditable()
   @Experimental() // untriaged
-  ShaderPrecisionFormat getShaderPrecisionFormat(int shadertype, int precisiontype) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getShaderPrecisionFormat_Callback_2_(unwrap_jso(this), shadertype, precisiontype));
+  ShaderPrecisionFormat getShaderPrecisionFormat(int shadertype, int precisiontype) => _blink.BlinkWebGL2RenderingContext.instance.getShaderPrecisionFormat_Callback_2_(this, shadertype, precisiontype);
   
   @DomName('WebGL2RenderingContext.getShaderSource')
   @DocsEditable()
   @Experimental() // untriaged
-  String getShaderSource(Shader shader) => _blink.BlinkWebGL2RenderingContext.instance.getShaderSource_Callback_1_(unwrap_jso(this), unwrap_jso(shader));
+  String getShaderSource(Shader shader) => _blink.BlinkWebGL2RenderingContext.instance.getShaderSource_Callback_1_(this, shader);
   
   @DomName('WebGL2RenderingContext.getSupportedExtensions')
   @DocsEditable()
   @Experimental() // untriaged
-  List<String> getSupportedExtensions() => _blink.BlinkWebGL2RenderingContext.instance.getSupportedExtensions_Callback_0_(unwrap_jso(this));
+  List<String> getSupportedExtensions() => _blink.BlinkWebGL2RenderingContext.instance.getSupportedExtensions_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.getTexParameter')
   @DocsEditable()
   @Experimental() // untriaged
-  Object getTexParameter(int target, int pname) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getTexParameter_Callback_2_(unwrap_jso(this), target, pname));
+  Object getTexParameter(int target, int pname) => (_blink.BlinkWebGL2RenderingContext.instance.getTexParameter_Callback_2_(this, target, pname));
   
   @DomName('WebGL2RenderingContext.getUniform')
   @DocsEditable()
   @Experimental() // untriaged
-  Object getUniform(Program program, UniformLocation location) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getUniform_Callback_2_(unwrap_jso(this), unwrap_jso(program), unwrap_jso(location)));
+  Object getUniform(Program program, UniformLocation location) => (_blink.BlinkWebGL2RenderingContext.instance.getUniform_Callback_2_(this, program, location));
   
   @DomName('WebGL2RenderingContext.getUniformLocation')
   @DocsEditable()
   @Experimental() // untriaged
-  UniformLocation getUniformLocation(Program program, String name) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getUniformLocation_Callback_2_(unwrap_jso(this), unwrap_jso(program), name));
+  UniformLocation getUniformLocation(Program program, String name) => _blink.BlinkWebGL2RenderingContext.instance.getUniformLocation_Callback_2_(this, program, name);
   
   @DomName('WebGL2RenderingContext.getVertexAttrib')
   @DocsEditable()
   @Experimental() // untriaged
-  Object getVertexAttrib(int index, int pname) => wrap_jso(_blink.BlinkWebGL2RenderingContext.instance.getVertexAttrib_Callback_2_(unwrap_jso(this), index, pname));
+  Object getVertexAttrib(int index, int pname) => (_blink.BlinkWebGL2RenderingContext.instance.getVertexAttrib_Callback_2_(this, index, pname));
   
   @DomName('WebGL2RenderingContext.getVertexAttribOffset')
   @DocsEditable()
   @Experimental() // untriaged
-  int getVertexAttribOffset(int index, int pname) => _blink.BlinkWebGL2RenderingContext.instance.getVertexAttribOffset_Callback_2_(unwrap_jso(this), index, pname);
+  int getVertexAttribOffset(int index, int pname) => _blink.BlinkWebGL2RenderingContext.instance.getVertexAttribOffset_Callback_2_(this, index, pname);
   
   @DomName('WebGL2RenderingContext.hint')
   @DocsEditable()
   @Experimental() // untriaged
-  void hint(int target, int mode) => _blink.BlinkWebGL2RenderingContext.instance.hint_Callback_2_(unwrap_jso(this), target, mode);
+  void hint(int target, int mode) => _blink.BlinkWebGL2RenderingContext.instance.hint_Callback_2_(this, target, mode);
   
   @DomName('WebGL2RenderingContext.isBuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isBuffer(Buffer buffer) => _blink.BlinkWebGL2RenderingContext.instance.isBuffer_Callback_1_(unwrap_jso(this), unwrap_jso(buffer));
+  bool isBuffer(Buffer buffer) => _blink.BlinkWebGL2RenderingContext.instance.isBuffer_Callback_1_(this, buffer);
   
   @DomName('WebGL2RenderingContext.isContextLost')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isContextLost() => _blink.BlinkWebGL2RenderingContext.instance.isContextLost_Callback_0_(unwrap_jso(this));
+  bool isContextLost() => _blink.BlinkWebGL2RenderingContext.instance.isContextLost_Callback_0_(this);
   
   @DomName('WebGL2RenderingContext.isEnabled')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isEnabled(int cap) => _blink.BlinkWebGL2RenderingContext.instance.isEnabled_Callback_1_(unwrap_jso(this), cap);
+  bool isEnabled(int cap) => _blink.BlinkWebGL2RenderingContext.instance.isEnabled_Callback_1_(this, cap);
   
   @DomName('WebGL2RenderingContext.isFramebuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isFramebuffer(Framebuffer framebuffer) => _blink.BlinkWebGL2RenderingContext.instance.isFramebuffer_Callback_1_(unwrap_jso(this), unwrap_jso(framebuffer));
+  bool isFramebuffer(Framebuffer framebuffer) => _blink.BlinkWebGL2RenderingContext.instance.isFramebuffer_Callback_1_(this, framebuffer);
   
   @DomName('WebGL2RenderingContext.isProgram')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isProgram(Program program) => _blink.BlinkWebGL2RenderingContext.instance.isProgram_Callback_1_(unwrap_jso(this), unwrap_jso(program));
+  bool isProgram(Program program) => _blink.BlinkWebGL2RenderingContext.instance.isProgram_Callback_1_(this, program);
   
   @DomName('WebGL2RenderingContext.isRenderbuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isRenderbuffer(Renderbuffer renderbuffer) => _blink.BlinkWebGL2RenderingContext.instance.isRenderbuffer_Callback_1_(unwrap_jso(this), unwrap_jso(renderbuffer));
+  bool isRenderbuffer(Renderbuffer renderbuffer) => _blink.BlinkWebGL2RenderingContext.instance.isRenderbuffer_Callback_1_(this, renderbuffer);
   
   @DomName('WebGL2RenderingContext.isShader')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isShader(Shader shader) => _blink.BlinkWebGL2RenderingContext.instance.isShader_Callback_1_(unwrap_jso(this), unwrap_jso(shader));
+  bool isShader(Shader shader) => _blink.BlinkWebGL2RenderingContext.instance.isShader_Callback_1_(this, shader);
   
   @DomName('WebGL2RenderingContext.isTexture')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isTexture(Texture texture) => _blink.BlinkWebGL2RenderingContext.instance.isTexture_Callback_1_(unwrap_jso(this), unwrap_jso(texture));
+  bool isTexture(Texture texture) => _blink.BlinkWebGL2RenderingContext.instance.isTexture_Callback_1_(this, texture);
   
   @DomName('WebGL2RenderingContext.lineWidth')
   @DocsEditable()
   @Experimental() // untriaged
-  void lineWidth(num width) => _blink.BlinkWebGL2RenderingContext.instance.lineWidth_Callback_1_(unwrap_jso(this), width);
+  void lineWidth(num width) => _blink.BlinkWebGL2RenderingContext.instance.lineWidth_Callback_1_(this, width);
   
   @DomName('WebGL2RenderingContext.linkProgram')
   @DocsEditable()
   @Experimental() // untriaged
-  void linkProgram(Program program) => _blink.BlinkWebGL2RenderingContext.instance.linkProgram_Callback_1_(unwrap_jso(this), unwrap_jso(program));
+  void linkProgram(Program program) => _blink.BlinkWebGL2RenderingContext.instance.linkProgram_Callback_1_(this, program);
   
   @DomName('WebGL2RenderingContext.pixelStorei')
   @DocsEditable()
   @Experimental() // untriaged
-  void pixelStorei(int pname, int param) => _blink.BlinkWebGL2RenderingContext.instance.pixelStorei_Callback_2_(unwrap_jso(this), pname, param);
+  void pixelStorei(int pname, int param) => _blink.BlinkWebGL2RenderingContext.instance.pixelStorei_Callback_2_(this, pname, param);
   
   @DomName('WebGL2RenderingContext.polygonOffset')
   @DocsEditable()
   @Experimental() // untriaged
-  void polygonOffset(num factor, num units) => _blink.BlinkWebGL2RenderingContext.instance.polygonOffset_Callback_2_(unwrap_jso(this), factor, units);
+  void polygonOffset(num factor, num units) => _blink.BlinkWebGL2RenderingContext.instance.polygonOffset_Callback_2_(this, factor, units);
   
   @DomName('WebGL2RenderingContext.readPixels')
   @DocsEditable()
   @Experimental() // untriaged
-  void readPixels(int x, int y, int width, int height, int format, int type, TypedData pixels) => _blink.BlinkWebGL2RenderingContext.instance.readPixels_Callback_7_(unwrap_jso(this), x, y, width, height, format, type, unwrap_jso(pixels));
+  void readPixels(int x, int y, int width, int height, int format, int type, TypedData pixels) => _blink.BlinkWebGL2RenderingContext.instance.readPixels_Callback_7_(this, x, y, width, height, format, type, pixels);
   
   @DomName('WebGL2RenderingContext.renderbufferStorage')
   @DocsEditable()
   @Experimental() // untriaged
-  void renderbufferStorage(int target, int internalformat, int width, int height) => _blink.BlinkWebGL2RenderingContext.instance.renderbufferStorage_Callback_4_(unwrap_jso(this), target, internalformat, width, height);
+  void renderbufferStorage(int target, int internalformat, int width, int height) => _blink.BlinkWebGL2RenderingContext.instance.renderbufferStorage_Callback_4_(this, target, internalformat, width, height);
   
   @DomName('WebGL2RenderingContext.sampleCoverage')
   @DocsEditable()
   @Experimental() // untriaged
-  void sampleCoverage(num value, bool invert) => _blink.BlinkWebGL2RenderingContext.instance.sampleCoverage_Callback_2_(unwrap_jso(this), value, invert);
+  void sampleCoverage(num value, bool invert) => _blink.BlinkWebGL2RenderingContext.instance.sampleCoverage_Callback_2_(this, value, invert);
   
   @DomName('WebGL2RenderingContext.scissor')
   @DocsEditable()
   @Experimental() // untriaged
-  void scissor(int x, int y, int width, int height) => _blink.BlinkWebGL2RenderingContext.instance.scissor_Callback_4_(unwrap_jso(this), x, y, width, height);
+  void scissor(int x, int y, int width, int height) => _blink.BlinkWebGL2RenderingContext.instance.scissor_Callback_4_(this, x, y, width, height);
   
   @DomName('WebGL2RenderingContext.shaderSource')
   @DocsEditable()
   @Experimental() // untriaged
-  void shaderSource(Shader shader, String string) => _blink.BlinkWebGL2RenderingContext.instance.shaderSource_Callback_2_(unwrap_jso(this), unwrap_jso(shader), string);
+  void shaderSource(Shader shader, String string) => _blink.BlinkWebGL2RenderingContext.instance.shaderSource_Callback_2_(this, shader, string);
   
   @DomName('WebGL2RenderingContext.stencilFunc')
   @DocsEditable()
   @Experimental() // untriaged
-  void stencilFunc(int func, int ref, int mask) => _blink.BlinkWebGL2RenderingContext.instance.stencilFunc_Callback_3_(unwrap_jso(this), func, ref, mask);
+  void stencilFunc(int func, int ref, int mask) => _blink.BlinkWebGL2RenderingContext.instance.stencilFunc_Callback_3_(this, func, ref, mask);
   
   @DomName('WebGL2RenderingContext.stencilFuncSeparate')
   @DocsEditable()
   @Experimental() // untriaged
-  void stencilFuncSeparate(int face, int func, int ref, int mask) => _blink.BlinkWebGL2RenderingContext.instance.stencilFuncSeparate_Callback_4_(unwrap_jso(this), face, func, ref, mask);
+  void stencilFuncSeparate(int face, int func, int ref, int mask) => _blink.BlinkWebGL2RenderingContext.instance.stencilFuncSeparate_Callback_4_(this, face, func, ref, mask);
   
   @DomName('WebGL2RenderingContext.stencilMask')
   @DocsEditable()
   @Experimental() // untriaged
-  void stencilMask(int mask) => _blink.BlinkWebGL2RenderingContext.instance.stencilMask_Callback_1_(unwrap_jso(this), mask);
+  void stencilMask(int mask) => _blink.BlinkWebGL2RenderingContext.instance.stencilMask_Callback_1_(this, mask);
   
   @DomName('WebGL2RenderingContext.stencilMaskSeparate')
   @DocsEditable()
   @Experimental() // untriaged
-  void stencilMaskSeparate(int face, int mask) => _blink.BlinkWebGL2RenderingContext.instance.stencilMaskSeparate_Callback_2_(unwrap_jso(this), face, mask);
+  void stencilMaskSeparate(int face, int mask) => _blink.BlinkWebGL2RenderingContext.instance.stencilMaskSeparate_Callback_2_(this, face, mask);
   
   @DomName('WebGL2RenderingContext.stencilOp')
   @DocsEditable()
   @Experimental() // untriaged
-  void stencilOp(int fail, int zfail, int zpass) => _blink.BlinkWebGL2RenderingContext.instance.stencilOp_Callback_3_(unwrap_jso(this), fail, zfail, zpass);
+  void stencilOp(int fail, int zfail, int zpass) => _blink.BlinkWebGL2RenderingContext.instance.stencilOp_Callback_3_(this, fail, zfail, zpass);
   
   @DomName('WebGL2RenderingContext.stencilOpSeparate')
   @DocsEditable()
   @Experimental() // untriaged
-  void stencilOpSeparate(int face, int fail, int zfail, int zpass) => _blink.BlinkWebGL2RenderingContext.instance.stencilOpSeparate_Callback_4_(unwrap_jso(this), face, fail, zfail, zpass);
+  void stencilOpSeparate(int face, int fail, int zfail, int zpass) => _blink.BlinkWebGL2RenderingContext.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.BlinkWebGL2RenderingContext.instance.texImage2D_Callback_9_(unwrap_jso(this), target, level, internalformat, format_OR_width, height_OR_type, unwrap_jso(border_OR_canvas_OR_image_OR_pixels_OR_video), format, type, unwrap_jso(pixels));
+      _blink.BlinkWebGL2RenderingContext.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.BlinkWebGL2RenderingContext.instance.texImage2D_Callback_6_(unwrap_jso(this), target, level, internalformat, format_OR_width, height_OR_type, unwrap_jso(border_OR_canvas_OR_image_OR_pixels_OR_video));
+      _blink.BlinkWebGL2RenderingContext.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.BlinkWebGL2RenderingContext.instance.texImage2D_Callback_6_(unwrap_jso(this), target, level, internalformat, format_OR_width, height_OR_type, unwrap_jso(border_OR_canvas_OR_image_OR_pixels_OR_video));
+      _blink.BlinkWebGL2RenderingContext.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.BlinkWebGL2RenderingContext.instance.texImage2D_Callback_6_(unwrap_jso(this), target, level, internalformat, format_OR_width, height_OR_type, unwrap_jso(border_OR_canvas_OR_image_OR_pixels_OR_video));
+      _blink.BlinkWebGL2RenderingContext.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.BlinkWebGL2RenderingContext.instance.texImage2D_Callback_6_(unwrap_jso(this), target, level, internalformat, format_OR_width, height_OR_type, unwrap_jso(border_OR_canvas_OR_image_OR_pixels_OR_video));
+      _blink.BlinkWebGL2RenderingContext.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");
@@ -6321,32 +6030,32 @@
   @DomName('WebGL2RenderingContext.texParameterf')
   @DocsEditable()
   @Experimental() // untriaged
-  void texParameterf(int target, int pname, num param) => _blink.BlinkWebGL2RenderingContext.instance.texParameterf_Callback_3_(unwrap_jso(this), target, pname, param);
+  void texParameterf(int target, int pname, num param) => _blink.BlinkWebGL2RenderingContext.instance.texParameterf_Callback_3_(this, target, pname, param);
   
   @DomName('WebGL2RenderingContext.texParameteri')
   @DocsEditable()
   @Experimental() // untriaged
-  void texParameteri(int target, int pname, int param) => _blink.BlinkWebGL2RenderingContext.instance.texParameteri_Callback_3_(unwrap_jso(this), target, pname, param);
+  void texParameteri(int target, int pname, int param) => _blink.BlinkWebGL2RenderingContext.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.BlinkWebGL2RenderingContext.instance.texSubImage2D_Callback_9_(unwrap_jso(this), target, level, xoffset, yoffset, format_OR_width, height_OR_type, unwrap_jso(canvas_OR_format_OR_image_OR_pixels_OR_video), type, unwrap_jso(pixels));
+      _blink.BlinkWebGL2RenderingContext.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.BlinkWebGL2RenderingContext.instance.texSubImage2D_Callback_7_(unwrap_jso(this), target, level, xoffset, yoffset, format_OR_width, height_OR_type, unwrap_jso(canvas_OR_format_OR_image_OR_pixels_OR_video));
+      _blink.BlinkWebGL2RenderingContext.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.BlinkWebGL2RenderingContext.instance.texSubImage2D_Callback_7_(unwrap_jso(this), target, level, xoffset, yoffset, format_OR_width, height_OR_type, unwrap_jso(canvas_OR_format_OR_image_OR_pixels_OR_video));
+      _blink.BlinkWebGL2RenderingContext.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.BlinkWebGL2RenderingContext.instance.texSubImage2D_Callback_7_(unwrap_jso(this), target, level, xoffset, yoffset, format_OR_width, height_OR_type, unwrap_jso(canvas_OR_format_OR_image_OR_pixels_OR_video));
+      _blink.BlinkWebGL2RenderingContext.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.BlinkWebGL2RenderingContext.instance.texSubImage2D_Callback_7_(unwrap_jso(this), target, level, xoffset, yoffset, format_OR_width, height_OR_type, unwrap_jso(canvas_OR_format_OR_image_OR_pixels_OR_video));
+      _blink.BlinkWebGL2RenderingContext.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");
@@ -6355,15 +6064,15 @@
   @DomName('WebGL2RenderingContext.uniform1f')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniform1f(UniformLocation location, num x) => _blink.BlinkWebGL2RenderingContext.instance.uniform1f_Callback_2_(unwrap_jso(this), unwrap_jso(location), x);
+  void uniform1f(UniformLocation location, num x) => _blink.BlinkWebGL2RenderingContext.instance.uniform1f_Callback_2_(this, location, x);
   
   void uniform1fv(UniformLocation location, v) {
     if ((v is Float32List) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniform1fv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGL2RenderingContext.instance.uniform1fv_Callback_2_(this, location, v);
       return;
     }
     if ((v is List<num>) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniform1fv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGL2RenderingContext.instance.uniform1fv_Callback_2_(this, location, v);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -6372,15 +6081,15 @@
   @DomName('WebGL2RenderingContext.uniform1i')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniform1i(UniformLocation location, int x) => _blink.BlinkWebGL2RenderingContext.instance.uniform1i_Callback_2_(unwrap_jso(this), unwrap_jso(location), x);
+  void uniform1i(UniformLocation location, int x) => _blink.BlinkWebGL2RenderingContext.instance.uniform1i_Callback_2_(this, location, x);
   
   void uniform1iv(UniformLocation location, v) {
     if ((v is Int32List) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniform1iv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGL2RenderingContext.instance.uniform1iv_Callback_2_(this, location, v);
       return;
     }
     if ((v is List<int>) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniform1iv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGL2RenderingContext.instance.uniform1iv_Callback_2_(this, location, v);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -6389,15 +6098,15 @@
   @DomName('WebGL2RenderingContext.uniform2f')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniform2f(UniformLocation location, num x, num y) => _blink.BlinkWebGL2RenderingContext.instance.uniform2f_Callback_3_(unwrap_jso(this), unwrap_jso(location), x, y);
+  void uniform2f(UniformLocation location, num x, num y) => _blink.BlinkWebGL2RenderingContext.instance.uniform2f_Callback_3_(this, location, x, y);
   
   void uniform2fv(UniformLocation location, v) {
     if ((v is Float32List) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniform2fv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGL2RenderingContext.instance.uniform2fv_Callback_2_(this, location, v);
       return;
     }
     if ((v is List<num>) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniform2fv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGL2RenderingContext.instance.uniform2fv_Callback_2_(this, location, v);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -6406,15 +6115,15 @@
   @DomName('WebGL2RenderingContext.uniform2i')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniform2i(UniformLocation location, int x, int y) => _blink.BlinkWebGL2RenderingContext.instance.uniform2i_Callback_3_(unwrap_jso(this), unwrap_jso(location), x, y);
+  void uniform2i(UniformLocation location, int x, int y) => _blink.BlinkWebGL2RenderingContext.instance.uniform2i_Callback_3_(this, location, x, y);
   
   void uniform2iv(UniformLocation location, v) {
     if ((v is Int32List) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniform2iv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGL2RenderingContext.instance.uniform2iv_Callback_2_(this, location, v);
       return;
     }
     if ((v is List<int>) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniform2iv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGL2RenderingContext.instance.uniform2iv_Callback_2_(this, location, v);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -6423,15 +6132,15 @@
   @DomName('WebGL2RenderingContext.uniform3f')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniform3f(UniformLocation location, num x, num y, num z) => _blink.BlinkWebGL2RenderingContext.instance.uniform3f_Callback_4_(unwrap_jso(this), unwrap_jso(location), x, y, z);
+  void uniform3f(UniformLocation location, num x, num y, num z) => _blink.BlinkWebGL2RenderingContext.instance.uniform3f_Callback_4_(this, location, x, y, z);
   
   void uniform3fv(UniformLocation location, v) {
     if ((v is Float32List) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniform3fv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGL2RenderingContext.instance.uniform3fv_Callback_2_(this, location, v);
       return;
     }
     if ((v is List<num>) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniform3fv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGL2RenderingContext.instance.uniform3fv_Callback_2_(this, location, v);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -6440,15 +6149,15 @@
   @DomName('WebGL2RenderingContext.uniform3i')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniform3i(UniformLocation location, int x, int y, int z) => _blink.BlinkWebGL2RenderingContext.instance.uniform3i_Callback_4_(unwrap_jso(this), unwrap_jso(location), x, y, z);
+  void uniform3i(UniformLocation location, int x, int y, int z) => _blink.BlinkWebGL2RenderingContext.instance.uniform3i_Callback_4_(this, location, x, y, z);
   
   void uniform3iv(UniformLocation location, v) {
     if ((v is Int32List) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniform3iv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGL2RenderingContext.instance.uniform3iv_Callback_2_(this, location, v);
       return;
     }
     if ((v is List<int>) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniform3iv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGL2RenderingContext.instance.uniform3iv_Callback_2_(this, location, v);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -6457,15 +6166,15 @@
   @DomName('WebGL2RenderingContext.uniform4f')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniform4f(UniformLocation location, num x, num y, num z, num w) => _blink.BlinkWebGL2RenderingContext.instance.uniform4f_Callback_5_(unwrap_jso(this), unwrap_jso(location), x, y, z, w);
+  void uniform4f(UniformLocation location, num x, num y, num z, num w) => _blink.BlinkWebGL2RenderingContext.instance.uniform4f_Callback_5_(this, location, x, y, z, w);
   
   void uniform4fv(UniformLocation location, v) {
     if ((v is Float32List) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniform4fv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGL2RenderingContext.instance.uniform4fv_Callback_2_(this, location, v);
       return;
     }
     if ((v is List<num>) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniform4fv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGL2RenderingContext.instance.uniform4fv_Callback_2_(this, location, v);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -6474,15 +6183,15 @@
   @DomName('WebGL2RenderingContext.uniform4i')
   @DocsEditable()
   @Experimental() // untriaged
-  void uniform4i(UniformLocation location, int x, int y, int z, int w) => _blink.BlinkWebGL2RenderingContext.instance.uniform4i_Callback_5_(unwrap_jso(this), unwrap_jso(location), x, y, z, w);
+  void uniform4i(UniformLocation location, int x, int y, int z, int w) => _blink.BlinkWebGL2RenderingContext.instance.uniform4i_Callback_5_(this, location, x, y, z, w);
   
   void uniform4iv(UniformLocation location, v) {
     if ((v is Int32List) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniform4iv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGL2RenderingContext.instance.uniform4iv_Callback_2_(this, location, v);
       return;
     }
     if ((v is List<int>) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniform4iv_Callback_2_(unwrap_jso(this), unwrap_jso(location), unwrap_jso(v));
+      _blink.BlinkWebGL2RenderingContext.instance.uniform4iv_Callback_2_(this, location, v);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -6490,11 +6199,11 @@
 
   void uniformMatrix2fv(UniformLocation location, bool transpose, array) {
     if ((array is Float32List) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix2fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(array));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix2fv_Callback_3_(this, location, transpose, array);
       return;
     }
     if ((array is List<num>) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix2fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(array));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix2fv_Callback_3_(this, location, transpose, array);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -6502,11 +6211,11 @@
 
   void uniformMatrix3fv(UniformLocation location, bool transpose, array) {
     if ((array is Float32List) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix3fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(array));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix3fv_Callback_3_(this, location, transpose, array);
       return;
     }
     if ((array is List<num>) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix3fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(array));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix3fv_Callback_3_(this, location, transpose, array);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -6514,11 +6223,11 @@
 
   void uniformMatrix4fv(UniformLocation location, bool transpose, array) {
     if ((array is Float32List) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix4fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(array));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix4fv_Callback_3_(this, location, transpose, array);
       return;
     }
     if ((array is List<num>) && (transpose is bool) && (location is UniformLocation || location == null)) {
-      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix4fv_Callback_3_(unwrap_jso(this), unwrap_jso(location), transpose, unwrap_jso(array));
+      _blink.BlinkWebGL2RenderingContext.instance.uniformMatrix4fv_Callback_3_(this, location, transpose, array);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -6527,25 +6236,25 @@
   @DomName('WebGL2RenderingContext.useProgram')
   @DocsEditable()
   @Experimental() // untriaged
-  void useProgram(Program program) => _blink.BlinkWebGL2RenderingContext.instance.useProgram_Callback_1_(unwrap_jso(this), unwrap_jso(program));
+  void useProgram(Program program) => _blink.BlinkWebGL2RenderingContext.instance.useProgram_Callback_1_(this, program);
   
   @DomName('WebGL2RenderingContext.validateProgram')
   @DocsEditable()
   @Experimental() // untriaged
-  void validateProgram(Program program) => _blink.BlinkWebGL2RenderingContext.instance.validateProgram_Callback_1_(unwrap_jso(this), unwrap_jso(program));
+  void validateProgram(Program program) => _blink.BlinkWebGL2RenderingContext.instance.validateProgram_Callback_1_(this, program);
   
   @DomName('WebGL2RenderingContext.vertexAttrib1f')
   @DocsEditable()
   @Experimental() // untriaged
-  void vertexAttrib1f(int indx, num x) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib1f_Callback_2_(unwrap_jso(this), indx, x);
+  void vertexAttrib1f(int indx, num x) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib1f_Callback_2_(this, indx, x);
   
   void vertexAttrib1fv(int indx, values) {
     if ((values is Float32List) && (indx is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib1fv_Callback_2_(unwrap_jso(this), indx, unwrap_jso(values));
+      _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib1fv_Callback_2_(this, indx, values);
       return;
     }
     if ((values is List<num>) && (indx is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib1fv_Callback_2_(unwrap_jso(this), indx, unwrap_jso(values));
+      _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib1fv_Callback_2_(this, indx, values);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -6554,15 +6263,15 @@
   @DomName('WebGL2RenderingContext.vertexAttrib2f')
   @DocsEditable()
   @Experimental() // untriaged
-  void vertexAttrib2f(int indx, num x, num y) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib2f_Callback_3_(unwrap_jso(this), indx, x, y);
+  void vertexAttrib2f(int indx, num x, num y) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib2f_Callback_3_(this, indx, x, y);
   
   void vertexAttrib2fv(int indx, values) {
     if ((values is Float32List) && (indx is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib2fv_Callback_2_(unwrap_jso(this), indx, unwrap_jso(values));
+      _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib2fv_Callback_2_(this, indx, values);
       return;
     }
     if ((values is List<num>) && (indx is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib2fv_Callback_2_(unwrap_jso(this), indx, unwrap_jso(values));
+      _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib2fv_Callback_2_(this, indx, values);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -6571,15 +6280,15 @@
   @DomName('WebGL2RenderingContext.vertexAttrib3f')
   @DocsEditable()
   @Experimental() // untriaged
-  void vertexAttrib3f(int indx, num x, num y, num z) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib3f_Callback_4_(unwrap_jso(this), indx, x, y, z);
+  void vertexAttrib3f(int indx, num x, num y, num z) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib3f_Callback_4_(this, indx, x, y, z);
   
   void vertexAttrib3fv(int indx, values) {
     if ((values is Float32List) && (indx is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib3fv_Callback_2_(unwrap_jso(this), indx, unwrap_jso(values));
+      _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib3fv_Callback_2_(this, indx, values);
       return;
     }
     if ((values is List<num>) && (indx is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib3fv_Callback_2_(unwrap_jso(this), indx, unwrap_jso(values));
+      _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib3fv_Callback_2_(this, indx, values);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -6588,15 +6297,15 @@
   @DomName('WebGL2RenderingContext.vertexAttrib4f')
   @DocsEditable()
   @Experimental() // untriaged
-  void vertexAttrib4f(int indx, num x, num y, num z, num w) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib4f_Callback_5_(unwrap_jso(this), indx, x, y, z, w);
+  void vertexAttrib4f(int indx, num x, num y, num z, num w) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib4f_Callback_5_(this, indx, x, y, z, w);
   
   void vertexAttrib4fv(int indx, values) {
     if ((values is Float32List) && (indx is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib4fv_Callback_2_(unwrap_jso(this), indx, unwrap_jso(values));
+      _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib4fv_Callback_2_(this, indx, values);
       return;
     }
     if ((values is List<num>) && (indx is int)) {
-      _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib4fv_Callback_2_(unwrap_jso(this), indx, unwrap_jso(values));
+      _blink.BlinkWebGL2RenderingContext.instance.vertexAttrib4fv_Callback_2_(this, indx, values);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -6605,12 +6314,12 @@
   @DomName('WebGL2RenderingContext.vertexAttribPointer')
   @DocsEditable()
   @Experimental() // untriaged
-  void vertexAttribPointer(int indx, int size, int type, bool normalized, int stride, int offset) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttribPointer_Callback_6_(unwrap_jso(this), indx, size, type, normalized, stride, offset);
+  void vertexAttribPointer(int indx, int size, int type, bool normalized, int stride, int offset) => _blink.BlinkWebGL2RenderingContext.instance.vertexAttribPointer_Callback_6_(this, indx, size, type, normalized, stride, offset);
   
   @DomName('WebGL2RenderingContext.viewport')
   @DocsEditable()
   @Experimental() // untriaged
-  void viewport(int x, int y, int width, int height) => _blink.BlinkWebGL2RenderingContext.instance.viewport_Callback_4_(unwrap_jso(this), x, y, width, height);
+  void viewport(int x, int y, int width, int height) => _blink.BlinkWebGL2RenderingContext.instance.viewport_Callback_4_(this, x, y, width, height);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6627,21 +6336,13 @@
   // To suppress missing implicit constructor warnings.
   factory Sampler._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Sampler internalCreateSampler() {
-    return new Sampler._internalWrap();
-  }
 
-  factory Sampler._internalWrap() {
-    return new Sampler.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Sampler.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -6656,21 +6357,13 @@
   // To suppress missing implicit constructor warnings.
   factory Shader._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Shader internalCreateShader() {
-    return new Shader._internalWrap();
-  }
 
-  factory Shader._internalWrap() {
-    return new Shader.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Shader.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -6685,32 +6378,24 @@
   // To suppress missing implicit constructor warnings.
   factory ShaderPrecisionFormat._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static ShaderPrecisionFormat internalCreateShaderPrecisionFormat() {
-    return new ShaderPrecisionFormat._internalWrap();
-  }
 
-  factory ShaderPrecisionFormat._internalWrap() {
-    return new ShaderPrecisionFormat.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   ShaderPrecisionFormat.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('WebGLShaderPrecisionFormat.precision')
   @DocsEditable()
-  int get precision => _blink.BlinkWebGLShaderPrecisionFormat.instance.precision_Getter_(unwrap_jso(this));
+  int get precision => _blink.BlinkWebGLShaderPrecisionFormat.instance.precision_Getter_(this);
   
   @DomName('WebGLShaderPrecisionFormat.rangeMax')
   @DocsEditable()
-  int get rangeMax => _blink.BlinkWebGLShaderPrecisionFormat.instance.rangeMax_Getter_(unwrap_jso(this));
+  int get rangeMax => _blink.BlinkWebGLShaderPrecisionFormat.instance.rangeMax_Getter_(this);
   
   @DomName('WebGLShaderPrecisionFormat.rangeMin')
   @DocsEditable()
-  int get rangeMin => _blink.BlinkWebGLShaderPrecisionFormat.instance.rangeMin_Getter_(unwrap_jso(this));
+  int get rangeMin => _blink.BlinkWebGLShaderPrecisionFormat.instance.rangeMin_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6727,21 +6412,13 @@
   // To suppress missing implicit constructor warnings.
   factory Sync._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Sync internalCreateSync() {
-    return new Sync._internalWrap();
-  }
 
-  factory Sync._internalWrap() {
-    return new Sync.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Sync.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -6756,21 +6433,13 @@
   // To suppress missing implicit constructor warnings.
   factory Texture._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static Texture internalCreateTexture() {
-    return new Texture._internalWrap();
-  }
 
-  factory Texture._internalWrap() {
-    return new Texture.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   Texture.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -6786,21 +6455,13 @@
   // To suppress missing implicit constructor warnings.
   factory TransformFeedback._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static TransformFeedback internalCreateTransformFeedback() {
-    return new TransformFeedback._internalWrap();
-  }
 
-  factory TransformFeedback._internalWrap() {
-    return new TransformFeedback.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   TransformFeedback.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -6815,21 +6476,13 @@
   // To suppress missing implicit constructor warnings.
   factory UniformLocation._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static UniformLocation internalCreateUniformLocation() {
-    return new UniformLocation._internalWrap();
-  }
 
-  factory UniformLocation._internalWrap() {
-    return new UniformLocation.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   UniformLocation.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -6845,21 +6498,13 @@
   // To suppress missing implicit constructor warnings.
   factory VertexArrayObject._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static VertexArrayObject internalCreateVertexArrayObject() {
-    return new VertexArrayObject._internalWrap();
-  }
 
-  factory VertexArrayObject._internalWrap() {
-    return new VertexArrayObject.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   VertexArrayObject.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -6876,21 +6521,13 @@
   // To suppress missing implicit constructor warnings.
   factory VertexArrayObjectOes._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static VertexArrayObjectOes internalCreateVertexArrayObjectOes() {
-    return new VertexArrayObjectOes._internalWrap();
-  }
 
-  factory VertexArrayObjectOes._internalWrap() {
-    return new VertexArrayObjectOes.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   VertexArrayObjectOes.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
@@ -6906,21 +6543,13 @@
   // To suppress missing implicit constructor warnings.
   factory _WebGL2RenderingContextBase._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static _WebGL2RenderingContextBase internalCreate_WebGL2RenderingContextBase() {
-    return new _WebGL2RenderingContextBase._internalWrap();
-  }
 
-  factory _WebGL2RenderingContextBase._internalWrap() {
-    return new _WebGL2RenderingContextBase.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   _WebGL2RenderingContextBase.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
 }
 // 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
diff --git a/sdk/lib/web_sql/dartium/web_sql_dartium.dart b/sdk/lib/web_sql/dartium/web_sql_dartium.dart
index ee79e22..2e26f43 100644
--- a/sdk/lib/web_sql/dartium/web_sql_dartium.dart
+++ b/sdk/lib/web_sql/dartium/web_sql_dartium.dart
@@ -29,22 +29,11 @@
 // FIXME: Can we make this private?
 @Deprecated("Internal Use Only")
 final web_sqlBlinkMap = {
-  'Database': () => SqlDatabase,
-  'SQLError': () => SqlError,
-  'SQLResultSet': () => SqlResultSet,
-  'SQLResultSetRowList': () => SqlResultSetRowList,
-  'SQLTransaction': () => SqlTransaction,
-
-};
-
-// FIXME: Can we make this private?
-@Deprecated("Internal Use Only")
-final web_sqlBlinkFunctionMap = {
-  'Database': () => SqlDatabase.internalCreateSqlDatabase,
-  'SQLError': () => SqlError.internalCreateSqlError,
-  'SQLResultSet': () => SqlResultSet.internalCreateSqlResultSet,
-  'SQLResultSetRowList': () => SqlResultSetRowList.internalCreateSqlResultSetRowList,
-  'SQLTransaction': () => SqlTransaction.internalCreateSqlTransaction,
+  'Database': () => SqlDatabase.instanceRuntimeType,
+  'SQLError': () => SqlError.instanceRuntimeType,
+  'SQLResultSet': () => SqlResultSet.instanceRuntimeType,
+  'SQLResultSetRowList': () => SqlResultSetRowList.instanceRuntimeType,
+  'SQLTransaction': () => SqlTransaction.instanceRuntimeType,
 
 };
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -109,68 +98,60 @@
   // To suppress missing implicit constructor warnings.
   factory SqlDatabase._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static SqlDatabase internalCreateSqlDatabase() {
-    return new SqlDatabase._internalWrap();
-  }
 
-  factory SqlDatabase._internalWrap() {
-    return new SqlDatabase.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SqlDatabase.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
   @DomName('Database.version')
   @DocsEditable()
-  String get version => _blink.BlinkDatabase.instance.version_Getter_(unwrap_jso(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.instance.changeVersion_Callback_5_(unwrap_jso(this), oldVersion, newVersion, unwrap_jso((transaction) => callback(wrap_jso(transaction))), unwrap_jso((error) => errorCallback(wrap_jso(error))), unwrap_jso(() => successCallback()));
+      _blink.BlinkDatabase.instance.changeVersion_Callback_5_(this, oldVersion, newVersion, callback, errorCallback, successCallback);
       return;
     }
     if (errorCallback != null) {
-      _blink.BlinkDatabase.instance.changeVersion_Callback_4_(unwrap_jso(this), oldVersion, newVersion, unwrap_jso((transaction) => callback(wrap_jso(transaction))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkDatabase.instance.changeVersion_Callback_4_(this, oldVersion, newVersion, callback, errorCallback);
       return;
     }
     if (callback != null) {
-      _blink.BlinkDatabase.instance.changeVersion_Callback_3_(unwrap_jso(this), oldVersion, newVersion, unwrap_jso((transaction) => callback(wrap_jso(transaction))));
+      _blink.BlinkDatabase.instance.changeVersion_Callback_3_(this, oldVersion, newVersion, callback);
       return;
     }
-    _blink.BlinkDatabase.instance.changeVersion_Callback_2_(unwrap_jso(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.instance.readTransaction_Callback_3_(unwrap_jso(this), unwrap_jso((transaction) => callback(wrap_jso(transaction))), unwrap_jso((error) => errorCallback(wrap_jso(error))), unwrap_jso(() => successCallback()));
+      _blink.BlinkDatabase.instance.readTransaction_Callback_3_(this, callback, errorCallback, successCallback);
       return;
     }
     if (errorCallback != null) {
-      _blink.BlinkDatabase.instance.readTransaction_Callback_2_(unwrap_jso(this), unwrap_jso((transaction) => callback(wrap_jso(transaction))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkDatabase.instance.readTransaction_Callback_2_(this, callback, errorCallback);
       return;
     }
-    _blink.BlinkDatabase.instance.readTransaction_Callback_1_(unwrap_jso(this), unwrap_jso((transaction) => callback(wrap_jso(transaction))));
+    _blink.BlinkDatabase.instance.readTransaction_Callback_1_(this, callback);
     return;
   }
 
   void transaction(SqlTransactionCallback callback, [SqlTransactionErrorCallback errorCallback, VoidCallback successCallback]) {
     if (successCallback != null) {
-      _blink.BlinkDatabase.instance.transaction_Callback_3_(unwrap_jso(this), unwrap_jso((transaction) => callback(wrap_jso(transaction))), unwrap_jso((error) => errorCallback(wrap_jso(error))), unwrap_jso(() => successCallback()));
+      _blink.BlinkDatabase.instance.transaction_Callback_3_(this, callback, errorCallback, successCallback);
       return;
     }
     if (errorCallback != null) {
-      _blink.BlinkDatabase.instance.transaction_Callback_2_(unwrap_jso(this), unwrap_jso((transaction) => callback(wrap_jso(transaction))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
+      _blink.BlinkDatabase.instance.transaction_Callback_2_(this, callback, errorCallback);
       return;
     }
-    _blink.BlinkDatabase.instance.transaction_Callback_1_(unwrap_jso(this), unwrap_jso((transaction) => callback(wrap_jso(transaction))));
+    _blink.BlinkDatabase.instance.transaction_Callback_1_(this, callback);
     return;
   }
 
@@ -190,21 +171,13 @@
   // To suppress missing implicit constructor warnings.
   factory SqlError._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static SqlError internalCreateSqlError() {
-    return new SqlError._internalWrap();
-  }
 
-  factory SqlError._internalWrap() {
-    return new SqlError.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SqlError.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SQLError.CONSTRAINT_ERR')
   @DocsEditable()
   static const int CONSTRAINT_ERR = 6;
@@ -239,11 +212,11 @@
 
   @DomName('SQLError.code')
   @DocsEditable()
-  int get code => _blink.BlinkSQLError.instance.code_Getter_(unwrap_jso(this));
+  int get code => _blink.BlinkSQLError.instance.code_Getter_(this);
   
   @DomName('SQLError.message')
   @DocsEditable()
-  String get message => _blink.BlinkSQLError.instance.message_Getter_(unwrap_jso(this));
+  String get message => _blink.BlinkSQLError.instance.message_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -261,32 +234,24 @@
   // To suppress missing implicit constructor warnings.
   factory SqlResultSet._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static SqlResultSet internalCreateSqlResultSet() {
-    return new SqlResultSet._internalWrap();
-  }
 
-  factory SqlResultSet._internalWrap() {
-    return new SqlResultSet.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SqlResultSet.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SQLResultSet.insertId')
   @DocsEditable()
-  int get insertId => _blink.BlinkSQLResultSet.instance.insertId_Getter_(unwrap_jso(this));
+  int get insertId => _blink.BlinkSQLResultSet.instance.insertId_Getter_(this);
   
   @DomName('SQLResultSet.rows')
   @DocsEditable()
-  SqlResultSetRowList get rows => wrap_jso(_blink.BlinkSQLResultSet.instance.rows_Getter_(unwrap_jso(this)));
+  SqlResultSetRowList get rows => _blink.BlinkSQLResultSet.instance.rows_Getter_(this);
   
   @DomName('SQLResultSet.rowsAffected')
   @DocsEditable()
-  int get rowsAffected => _blink.BlinkSQLResultSet.instance.rowsAffected_Getter_(unwrap_jso(this));
+  int get rowsAffected => _blink.BlinkSQLResultSet.instance.rowsAffected_Getter_(this);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -304,32 +269,24 @@
   // To suppress missing implicit constructor warnings.
   factory SqlResultSetRowList._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static SqlResultSetRowList internalCreateSqlResultSetRowList() {
-    return new SqlResultSetRowList._internalWrap();
-  }
 
-  factory SqlResultSetRowList._internalWrap() {
-    return new SqlResultSetRowList.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SqlResultSetRowList.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   @DomName('SQLResultSetRowList.length')
   @DocsEditable()
-  int get length => _blink.BlinkSQLResultSetRowList.instance.length_Getter_(unwrap_jso(this));
+  int get length => _blink.BlinkSQLResultSetRowList.instance.length_Getter_(this);
   
   Map operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return wrap_jso(_blink.BlinkSQLResultSetRowList.instance.item_Callback_1_(unwrap_jso(this), index));
+    return _nativeIndexedGetter(index);
   }
 
-  Map _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkSQLResultSetRowList.instance.item_Callback_1_(unwrap_jso(this), index));
+  Map _nativeIndexedGetter(int index) => convertNativeToDart_Dictionary(_blink.BlinkSQLResultSetRowList.instance.item_Callback_1_(this, index));
 
   void operator[]=(int index, Map value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -371,7 +328,7 @@
 
   @DomName('SQLResultSetRowList.item')
   @DocsEditable()
-  Object item(int index) => wrap_jso(_blink.BlinkSQLResultSetRowList.instance.item_Callback_1_(unwrap_jso(this), index));
+  Object item(int index) => convertNativeToDart_Dictionary(_blink.BlinkSQLResultSetRowList.instance.item_Callback_1_(this, index));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -392,35 +349,27 @@
   // To suppress missing implicit constructor warnings.
   factory SqlTransaction._() { throw new UnsupportedError("Not supported"); }
 
-  @Deprecated("Internal Use Only")
-  static SqlTransaction internalCreateSqlTransaction() {
-    return new SqlTransaction._internalWrap();
-  }
 
-  factory SqlTransaction._internalWrap() {
-    return new SqlTransaction.internal_();
-  }
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   SqlTransaction.internal_() { }
 
-  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
-  int get hashCode => unwrap_jso(this).hashCode;
-
   void executeSql(String sqlStatement, [List arguments, SqlStatementCallback callback, SqlStatementErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkSQLTransaction.instance.executeSql_Callback_4_(unwrap_jso(this), sqlStatement, arguments, unwrap_jso((transaction, resultSet) => callback(wrap_jso(transaction), wrap_jso(resultSet))), unwrap_jso((transaction, error) => errorCallback(wrap_jso(transaction), wrap_jso(error))));
+      _blink.BlinkSQLTransaction.instance.executeSql_Callback_4_(this, sqlStatement, arguments, callback, errorCallback);
       return;
     }
     if (callback != null) {
-      _blink.BlinkSQLTransaction.instance.executeSql_Callback_3_(unwrap_jso(this), sqlStatement, arguments, unwrap_jso((transaction, resultSet) => callback(wrap_jso(transaction), wrap_jso(resultSet))));
+      _blink.BlinkSQLTransaction.instance.executeSql_Callback_3_(this, sqlStatement, arguments, callback);
       return;
     }
     if (arguments != null) {
-      _blink.BlinkSQLTransaction.instance.executeSql_Callback_2_(unwrap_jso(this), sqlStatement, arguments);
+      _blink.BlinkSQLTransaction.instance.executeSql_Callback_2_(this, sqlStatement, arguments);
       return;
     }
-    _blink.BlinkSQLTransaction.instance.executeSql_Callback_1_(unwrap_jso(this), sqlStatement);
+    _blink.BlinkSQLTransaction.instance.executeSql_Callback_1_(this, sqlStatement);
     return;
   }
 
diff --git a/tests/co19/co19-analyzer2.status b/tests/co19/co19-analyzer2.status
index 7cc7d20..fa1267b 100644
--- a/tests/co19/co19-analyzer2.status
+++ b/tests/co19/co19-analyzer2.status
@@ -299,19 +299,6 @@
 WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t06: StaticWarning # Please triage this failure.
 LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: StaticWarning # Please triage this failure.
 
-# Missing concrete implementation of setter 'XPathNSResolver.blink_jsObject' and getter 'XPathNSResolver.blink_jsObject'
-# TODO(terry): Dartium only because of implements instead of extends consider fixing by making blink_jsObject private
-#              with private wrap_jso and unwrap_jso in each library that delegates to the public wrap/unwrap_jso.
-LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t02: StaticWarning # Please triage this failure.
-LayoutTests/fast/xpath/4XPath/Core/test_node_test_t01: StaticWarning # Please triage this failure.
-LayoutTests/fast/xpath/4XPath/Core/test_node_test_t02: StaticWarning # Please triage this failure.
-LayoutTests/fast/xpath/attr-namespace_t01: StaticWarning # Please triage this failure.
-LayoutTests/fast/xpath/attr-namespace_t02: StaticWarning # Please triage this failure.
-LayoutTests/fast/xpath/node-name-case-sensitivity_t01: StaticWarning # Please triage this failure.
-LayoutTests/fast/xpath/node-name-case-sensitivity_t02: StaticWarning # Please triage this failure.
-LayoutTests/fast/xpath/py-dom-xpath/data_t01: StaticWarning # Please triage this failure.
-LayoutTests/fast/svg/getbbox_t01: StaticWarning # Please triage this failure.
-
 # co19 roll to Sep 29 2015 (3ed795ea02e022ef19c77cf1b6095b7c8f5584d0)
 Language/Classes/Abstract_Instance_Members/invocation_t03: MissingStaticWarning # Please triage this failure.
 Language/Classes/Abstract_Instance_Members/invocation_t04: MissingStaticWarning # Please triage this failure.
diff --git a/tests/co19/co19-dart2js.status b/tests/co19/co19-dart2js.status
index 2d3d20f..2ca320e 100644
--- a/tests/co19/co19-dart2js.status
+++ b/tests/co19/co19-dart2js.status
@@ -3233,18 +3233,13 @@
 LayoutTests/fast/canvas/canvas-blending-transforms_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-currentTransform_t01: RuntimeError # Feature is not implemented
 LayoutTests/fast/canvas/canvas-drawImage-scaled-copy-to-self_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-ellipse-360-winding_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-ellipse-negative-radius_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-ellipse-zero-lineto_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-ellipse_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-empty-image-pattern_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-fillStyle-no-quirks-parsing_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-font-consistency_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-getImageData-invalid_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-getImageData-large-crash_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-getImageData-largeNonintegralDimensions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-imageSmoothingEnabled-repaint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-imageSmoothingEnabled_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-large-dimensions_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-large-fills_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-lineDash-input-sequence_t01: RuntimeError # Please triage this failure
@@ -3261,70 +3256,15 @@
 LayoutTests/fast/canvas/drawImage-with-valid-image_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/getPutImageDataPairTest_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/setWidthResetAfterForcedRender_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/canvas/webgl/WebGLContextEvent_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/array-bounds-clamping_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/attrib-location-length-limits_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/bad-arguments-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/buffer-bind-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/buffer-data-array-buffer_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/canvas-2d-webgl-texture_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/canvas-resize-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/canvas-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/canvas-zero-size_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/compressed-tex-image_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias-t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/context-destroyed-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/context-lost-restored_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/context-lost_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/copy-tex-image-and-sub-image-2d_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/css-webkit-canvas-repaint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/css-webkit-canvas_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/draw-arrays-out-of-bounds_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/draw-elements-out-of-bounds_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/draw-webgl-to-canvas-2d_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/drawingbuffer-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/error-reporting_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/framebuffer-bindings-unaffected-on-resize_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/framebuffer-object-attachment_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/framebuffer-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/functions-returning-strings_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/get-active-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/gl-bind-attrib-location-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/gl-enable-enum-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/gl-enum-tests_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/gl-get-calls_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/gl-getshadersource_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/gl-getstring_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/gl-object-get-calls_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/gl-pixelstorei_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/gl-teximage_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/gl-uniformmatrix4fv_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/gl-vertex-attrib-zero-issues_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/gl-vertex-attrib_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/gl-vertexattribpointer_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/glsl-conformance_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/incorrect-context-object-behaviour_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/index-validation-copies-indices_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/index-validation-crash-with-buffer-sub-data_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/index-validation-verifies-too-many-indices_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/index-validation-with-resized-buffer_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/index-validation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/invalid-UTF-16_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/invalid-passed-params_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/is-object_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/null-object-behaviour_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/null-uniform-location_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/object-deletion-behaviour_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/oes-element-index-uint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/oes-vertex-array-object_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/point-size_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/premultiplyalpha-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/program-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/read-pixels-pack-alignment_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/read-pixels-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/renderbuffer-initialization_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/renderer-and-vendor-strings_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/shader-precision-format_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-array-buffer-view_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-canvas-rgb565_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-canvas-rgba4444_t01: RuntimeError # Please triage this failure
@@ -3338,39 +3278,20 @@
 LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgba4444_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgba5551_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgb565_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgb565_t01: RuntimeError, Timeout # Please triage this failure
 LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgba4444_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgba5551_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-uniform-binding-bugs_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-webgl_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgba5551_t01: RuntimeError, Timeout # Please triage this failure
+LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video_t01: RuntimeError, Timeout # Please triage this failure
 LayoutTests/fast/canvas/webgl/tex-input-validation_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/tex-sub-image-2d-bad-args_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/tex-sub-image-2d_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/tex-sub-image-cube-maps_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/texImage2DImageDataTest_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/texImageTest_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/texture-active-bind_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/texture-bindings-uneffected-on-resize_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/texture-color-profile_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/texture-complete_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/texture-npot_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/texture-transparent-pixels-initialized_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/triangle_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/uniform-location-length-limits_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/uniform-location_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/uninitialized-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/viewport-unchanged-upon-resize_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-composite-modes-repaint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-composite-modes_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/webgl-depth-texture_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-exceptions_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/webgl/webgl-large-texture_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-layer-update_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-specific_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-texture-binding-preserved_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-unprefixed-context-id_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-viewport-parameters-preserved_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css-generated-content/malformed-url_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css-generated-content/pseudo-animation_t01: Pass, RuntimeError # Please triage this failure
 LayoutTests/fast/css-generated-content/pseudo-animation-before-onload_t01: Pass, RuntimeError # Please triage this failure
@@ -3418,7 +3339,6 @@
 LayoutTests/fast/css-grid-layout/percent-padding-margin-resolution-grid-item_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css-grid-layout/percent-resolution-grid-item_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css-grid-layout/place-cell-by-index_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/height-property-value_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/add-remove-stylesheets-at-once-minimal-recalc-style_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/aspect-ratio-inheritance_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/aspect-ratio-parsing-tests_t01: RuntimeError # Please triage this failure
@@ -3459,9 +3379,7 @@
 LayoutTests/fast/css/inherit-initial-shorthand-values_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/invalid-predefined-color_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/invalidation/detach-reattach-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalidation/dynamic-selector-list-pseudo_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/invalidation/shadow-host-toggle_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalidation/targeted-class-any-pseudo_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/invalidation/targeted-class-host-pseudo_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/invalidation/targeted-class-shadow-combinator_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/invalidation/toggle-style-inside-shadow-root_t01: RuntimeError # Please triage this failure
@@ -3487,9 +3405,7 @@
 LayoutTests/fast/css/readonly-pseudoclass-opera-003_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/readonly-pseudoclass-opera-004_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/readonly-pseudoclass-opera-005_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/readwrite-contenteditable-recalc_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/shorthand-setProperty-important_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/sibling-selectors-dynamic_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/sticky/parsing-position-sticky_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/style-scoped/style-scoped-in-shadow_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/style-scoped/style-scoped-nested_t01: RuntimeError # Please triage this failure
@@ -3497,7 +3413,6 @@
 LayoutTests/fast/css/style-scoped/style-scoped-shadow-crash_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/style-scoped/style-scoped-with-dom-operation_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/style-scoped/style-scoped-with-important-rule_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/style-sharing-type-and-readonly_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/stylesheet-enable-first-alternate-on-load-sheet_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/stylesheet-enable-second-alternate-link_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/css/webkit-keyframes-errors_t01: RuntimeError # Please triage this failure
@@ -3523,7 +3438,6 @@
 LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-with-first-letter-style_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/Document/createElementNS-namespace-err_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Element/attribute-uppercase_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/Element/getClientRects_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/Element/offsetTop-table-cell_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/Element/setAttributeNS-namespace-err_t01: RuntimeError # Please triage this failure
@@ -3548,22 +3462,19 @@
 LayoutTests/fast/dom/HTMLDialogElement/top-layer-position-relative_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/top-layer-position-static_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDocument/active-element-gets-unforcusable_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLDocument/set-focus-on-valid-element_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/dom/HTMLDocument/set-focus-on-valid-element_t01: RuntimeError, Timeout # Please triage this failure
 LayoutTests/fast/dom/HTMLElement/insertAdjacentHTML-errors_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLElement/set-inner-outer-optimization_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLElement/spellcheck_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLFormElement/move-option-between-documents_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLImageElement/image-alt-text_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLImageElement/parse-src_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLInputElement/input-hidden-value_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLInputElement/input-image-alt-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLLabelElement/form/test1_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLLinkElement/link-and-subresource-test-nonexistent_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/dom/HTMLLinkElement/link-and-subresource-test_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/dom/HTMLLinkElement/prefetch-onerror_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/dom/HTMLLinkElement/prefetch-onload_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/dom/HTMLLinkElement/prefetch_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLObjectElement/form/test1_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLOptionElement/collection-setter-getter_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLOutputElement/dom-settable-token-list_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLScriptElement/async-false-inside-async-false-load_t01: RuntimeError # Please triage this failure
@@ -3602,11 +3513,8 @@
 LayoutTests/fast/dom/StyleSheet/css-medialist-item_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/StyleSheet/detached-shadow-style_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/StyleSheet/empty-shadow-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Text/next-element-sibling_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Text/previous-element-sibling_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/TreeWalker/TreeWalker-basic_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/Window/atob-btoa_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/getMatchedCSSRules-nested-rules_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/Window/getMatchedCSSRules-parent-stylesheets_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/Window/window-resize-contents_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/Window/window-resize_t01: RuntimeError # Please triage this failure
@@ -3635,7 +3543,6 @@
 LayoutTests/fast/dom/dataset-xhtml_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/dataset_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/document-set-title-mutations_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/document-set-title-no-child-on-empty_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/document-set-title-no-reuse_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/domparser-parsefromstring-mimetype-support_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/getElementsByClassName/dumpNodeList_t01: RuntimeError # Please triage this failure
@@ -3871,7 +3778,6 @@
 LayoutTests/fast/inline/out-of-flow-objects-and-whitespace-after-empty-inline_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/inline/parent-inline-element-padding-contributes-width_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/inline/positioned-element-padding-contributes-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/innerHTML/innerHTML-custom-tag_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/innerHTML/innerHTML-svg-write_t01: RuntimeError # Issue 25941
 LayoutTests/fast/layers/normal-flow-hit-test_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/loader/about-blank-hash-change_t01: Skip # Times out. Please triage this failure
@@ -3899,9 +3805,7 @@
 LayoutTests/fast/multicol/balance-unbreakable_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/break-after-always-bottom-margin_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/break-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/columns-shorthand-parsing_t02: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/cssom-view_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/flipped-blocks-hit-test_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/float-truncation_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/hit-test-above-or-below_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/hit-test-end-of-column-with-line-height_t01: RuntimeError # Please triage this failure
@@ -3913,7 +3817,6 @@
 LayoutTests/fast/multicol/newmulticol/balance-maxheight_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/orphans-relayout_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/vertical-lr/float-truncation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/vertical-lr/image-inside-nested-blocks-with-border_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/vertical-rl/break-properties_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/vertical-rl/float-truncation_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/vertical-rl/image-inside-nested-blocks-with-border_t01: RuntimeError # Please triage this failure
@@ -4017,9 +3920,6 @@
 LayoutTests/fast/text/sub-pixel/text-scaling-vertical_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/text/sub-pixel/text-scaling-webfont_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/text/text-combine-shrink-to-fit_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/tokenizer/entities_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/tokenizer/entities_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/tokenizer/entities_t03: RuntimeError # Please triage this failure
 LayoutTests/fast/transforms/bounding-rect-zoom_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/transforms/hit-test-large-scale_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/url/anchor_t01: RuntimeError # Please triage this failure
@@ -4102,8 +4002,6 @@
 LibTest/html/Element/getAttributeNS_A02_t01: RuntimeError # Please triage this failure
 LibTest/html/Element/getClientRects_A01_t02: RuntimeError # Please triage this failure
 LibTest/html/Element/getNamespacedAttributes_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/isContentEditable_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/isContentEditable_A02_t01: RuntimeError # Please triage this failure
 LibTest/html/Element/isTagSupported_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/Element/isTagSupported_A01_t02: RuntimeError # Please triage this failure
 LibTest/html/Element/leftView_A01_t01: RuntimeError # Please triage this failure
@@ -4144,7 +4042,6 @@
 LibTest/html/IFrameElement/getClientRects_A01_t02: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/getNamespacedAttributes_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/innerHtml_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/isContentEditable_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/leftView_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/marginEdge_A01_t01: RuntimeError # Please triage this failure
 LibTest/html/IFrameElement/offsetTo_A01_t01: RuntimeError # Please triage this failure
diff --git a/tests/co19/co19-dartium.status b/tests/co19/co19-dartium.status
index 76298ff..c550a6f 100644
--- a/tests/co19/co19-dartium.status
+++ b/tests/co19/co19-dartium.status
@@ -18,10 +18,14 @@
 [ $compiler == none && $runtime == dartium && $system == windows ]
 LayoutTests/fast/writing-mode/vertical-inline-block-hittest_t01: Pass, RuntimeError # Issue 21605
 WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-002_t01: RuntimeError # Please triage this failure.
+WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t01: Skip # Timesout Issue 26134
 
 [ $compiler == none && $runtime == dartium && $system != windows ]
 LayoutTests/fast/css/font-face-unicode-range-monospace_t01: RuntimeError # co19-roll r761: Please triage this failure.
 
+[ $compiler == none && $runtime == dartium && $system == linux ]
+language/mixin_illegal_constructor_test/01: Skip # Issue 43
+
 [ $compiler == none && $runtime == dartium && ($system == windows || $system == linux) ]
 LayoutTests/fast/canvas/webgl/buffer-data-array-buffer_t01: RuntimeError # 45 roll webgl doesn't run on on windows/linux bots.
 LayoutTests/fast/canvas/webgl/canvas-zero-size_t01: RuntimeError # 45 rollwebgl doesn't run on on windows/linux bots.
@@ -75,7 +79,6 @@
 LayoutTests/fast/css/box-sizing-border-box-dynamic-padding-border-update_t01: RuntimeError # co19-roll r761: Please triage this failure.
 LayoutTests/fast/css/display-inline-block-scrollbar_t01: RuntimeError # co19-roll r761: Please triage this failure.
 LayoutTests/fast/css/fixed-width-intrinsic-width-excludes-scrollbars_t01: RuntimeError # co19-roll r761: Please triage this failure.
-LayoutTests/fast/css/style-scoped/style-scoped-scoping-nodes-different-order_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/dom/HTMLDialogElement/top-layer-position-relative_t01: RuntimeError # Please triage this failure.
 LayoutTests/fast/dom/HTMLDialogElement/top-layer-position-static_t01: RuntimeError # Please triage this failure.
 LayoutTests/fast/dom/HTMLLabelElement/form/test1_t01: RuntimeError # co19-roll r722: Please triage this failure.
@@ -201,6 +204,9 @@
 Language/Libraries_and_Scripts/URIs/syntax_t14: RuntimeError # Please triage this failure.
 Language/Libraries_and_Scripts/URIs/syntax_t15: RuntimeError # Please triage this failure.
 Language/Metadata/before_variable_t01: RuntimeError # Please triage this failure.
+Language/Mixins/Mixin_Application/error_t01: Fail # co19 issue 43
+Language/Mixins/Mixin_Application/error_t02: Fail # co19 issue 43
+Language/Mixins/declaring_constructor_t01: Fail # co19 issue 43
 Language/Mixins/not_object_superclass_t01: Fail # Please triage this failure.
 Language/Mixins/reference_to_super_t01: Fail # Please triage this failure.
 Language/Statements/Assert/execution_t02: skip # co19 issue 734
@@ -562,10 +568,8 @@
 LayoutTests/fast/dynamic/insertAdjacentElement_t01: Skip # Timeout. co19-roll r786: Please triage this failure.
 LayoutTests/fast/dynamic/insertAdjacentHTML_t01: Pass, RuntimeError # co19 issue 11.
 LayoutTests/fast/dynamic/recursive-layout_t01: RuntimeError # co19-roll r786: Please triage this failure.
-LayoutTests/fast/events/add-event-without-document_t01: RuntimeError # co19-roll r786: Please triage this failure.
 LayoutTests/fast/events/change-overflow-on-overflow-change_t01: Timeout # Dartium 45 roll. Issue 25754
 LayoutTests/fast/events/clipboard-clearData_t01: Skip # Timeout. co19-roll r786: Please triage this failure.
-LayoutTests/fast/events/clipboard-dataTransferItemList-remove_t01: RuntimeError # Issue 22532
 LayoutTests/fast/events/clipboard-dataTransferItemList_t01: Skip # Timeout. co19-roll r786: Please triage this failure.
 LayoutTests/fast/events/div-focus_t01: Pass, RuntimeError # co19-roll r786: Please triage this failure.
 LayoutTests/fast/events/document-elementFromPoint_t01: RuntimeError # co19-roll r786: Please triage this failure.
@@ -927,7 +931,6 @@
 LayoutTests/fast/xpath/4XPath/Core/test_node_test_t02: RuntimeError # co19-roll r786: Please triage this failure.
 LayoutTests/fast/xpath/4XPath/Core/test_parser_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/xpath/ambiguous-operators_t01: RuntimeError # co19-roll r761: Please triage this failure.
-LayoutTests/fast/xpath/attr-namespace_t01: RuntimeError # Dartium JsInterop failure
 LayoutTests/fast/xpath/attr-namespace_t02: RuntimeError # co19-roll r786: Please triage this failure.
 LayoutTests/fast/xpath/ensure-null-namespace_t01: RuntimeError # co19-roll r761: Please triage this failure.
 LayoutTests/fast/xpath/implicit-node-args_t01: RuntimeError # co19-roll r761: Please triage this failure.
@@ -1349,3 +1352,42 @@
 WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/dom-tree-accessors-002_t01: RuntimeError #  45 Roll co19 test rewrite issue 25807
 WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-event-interface/event-path-001_t01: RuntimeError # 45 roll issue https://github.com/dart-lang/co19/issues/32
 WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-002_t01: RuntimeError # 45 roll issue https://github.com/dart-lang/co19/issues/33
+# Must fix failures below after JsInterop checkin.
+WebPlatformTest/custom-elements/instantiating/createElement_A02_t01: RuntimeError # Issue 26134
+WebPlatformTest/custom-elements/instantiating/isAttribute_A01_t02: RuntimeError # Issue 26134
+WebPlatformTest/custom-elements/instantiating/createElementNS_A04_t01: RuntimeError # Issue 26134
+WebPlatformTest/custom-elements/instantiating/createElementNS_A03_t01: RuntimeError # Issue 26134
+WebPlatformTest/custom-elements/instantiating/isAttribute_A01_t01: RuntimeError # Issue 26134
+WebPlatformTest/custom-elements/instantiating/createElementNS_A02_t01: RuntimeError # Issue 26134
+WebPlatformTest/custom-elements/instantiating/createElement_A03_t01: RuntimeError # Issue 26134
+WebPlatformTest/custom-elements/instantiating/createElement_A04_t01: RuntimeError # Issue 26134
+WebPlatformTest/dom/nodes/Node-appendChild_t01: RuntimeError # Issue 26134
+WebPlatformTest/dom/nodes/attributes/setAttribute_A01_t01: RuntimeError # Issue 26134
+LayoutTests/fast/dom/Document/createElement-invalid-names_t01: RuntimeError # Issue 26134
+LayoutTests/fast/dom/createDocumentType2_t01: RuntimeError # Issue 26134
+LayoutTests/fast/dom/createElementNS_t01: RuntimeError # Issue 26134
+LayoutTests/fast/dom/HTMLTemplateElement/cycles-in-shadow_t01: RuntimeError # Issue 26134
+LayoutTests/fast/dom/HTMLTemplateElement/cycles_t01: RuntimeError # Issue 26134
+LayoutTests/fast/dom/computed-style-set-property_t01: RuntimeError # Issue 26134
+LayoutTests/fast/dom/custom/element-type_t01: RuntimeError # Issue 26134
+LayoutTests/fast/dom/custom/type-extensions_t01: RuntimeError # Issue 26134
+LayoutTests/fast/dom/custom/element-upgrade_t01: RuntimeError # Issue 26134
+LayoutTests/fast/dom/custom/document-register-type-extensions_t01: RuntimeError # Issue 26134
+LayoutTests/fast/dom/custom/document-register-namespace_t01: RuntimeError # Issue 26134
+LayoutTests/fast/dom/DOMException/prototype-object_t01: RuntimeError # Issue 26134
+LayoutTests/fast/dom/shadow/shadow-hierarchy-exception_t01: RuntimeError # Issue 26134
+LayoutTests/fast/dom/Node/contains-method_t01: RuntimeError # Issue 26134
+LayoutTests/fast/dom/MutationObserver/observe-attributes_t01: RuntimeError # Issue 26134
+LayoutTests/fast/events/mutation-during-append-child_t01: RuntimeError # Issue 26134
+LayoutTests/fast/events/mutation-during-insert-before_t01: RuntimeError # Issue 26134
+LayoutTests/fast/events/clipboard-dataTransferItemList-remove_t01: Skip # Issue 26134, timesout
+LibTest/html/Document/text_A01_t01: RuntimeError # Issue 26134
+LibTest/html/Document/insertBefore_A01_t01: RuntimeError # Issue 26134
+LibTest/html/Document/insertAllBefore_A01_t01: RuntimeError # Issue 26134
+LibTest/html/IFrameElement/insertBefore_A01_t01: RuntimeError # Issue 26134
+LibTest/html/IFrameElement/insertAllBefore_A01_t01: RuntimeError # Issue 26134
+LibTest/html/Element/text_A01_t01: RuntimeError # Issue 26134
+LibTest/html/Element/insertBefore_A01_t01: RuntimeError # Issue 26134
+LibTest/html/Element/insertAllBefore_A01_t01: RuntimeError # Issue 26134
+LibTest/html/CanvasRenderingContext2D/addEventListener_A01_t06: Skip # Issue 26134, timeout
+html/cross_domain_iframe_test: RuntimeError # Issue 26134
diff --git a/tests/compiler/dart2js/analyze_api_test.dart b/tests/compiler/dart2js/analyze_api_test.dart
index 908ae11..e121190 100644
--- a/tests/compiler/dart2js/analyze_api_test.dart
+++ b/tests/compiler/dart2js/analyze_api_test.dart
@@ -19,6 +19,9 @@
  */
 // TODO(johnniwinther): Support canonical URIs as keys.
 const Map<String, List<String>> WHITE_LIST = const {
+  'sdk/lib/web_gl/dart2js/web_gl_dart2js.dart': const [
+    "is not defined for the class 'RenderingContext'", // Issue 26111
+  ],
 };
 
 void main() {
diff --git a/tests/compiler/dart2js/analyze_helper.dart b/tests/compiler/dart2js/analyze_helper.dart
index 8db5912..70a1f22 100644
--- a/tests/compiler/dart2js/analyze_helper.dart
+++ b/tests/compiler/dart2js/analyze_helper.dart
@@ -17,6 +17,9 @@
 import 'package:compiler/src/source_file_provider.dart';
 import 'package:compiler/src/util/uri_extras.dart';
 
+/// Option for hiding whitelisted messages.
+const String HIDE_WHITELISTED = '--hide-whitelisted';
+
 /**
  * Map of whitelisted warnings and errors.
  *
@@ -34,12 +37,15 @@
   bool hasHint = false;
   bool hasErrors = false;
   bool lastWasWhitelisted = false;
+  bool showWhitelisted = true;
 
   Map<String, Map<dynamic/*String|MessageKind*/, int>> whiteListMap
       = new Map<String, Map<dynamic/*String|MessageKind*/, int>>();
+  List<MessageKind> skipList;
 
   CollectingDiagnosticHandler(
       Map<String, List/*<String|MessageKind>*/> whiteList,
+      this.skipList,
       SourceFileProvider provider)
       : super(provider) {
     whiteList.forEach((String file, List/*<String|MessageKind>*/ messageParts) {
@@ -85,6 +91,9 @@
     if (uri == null) {
       return false;
     }
+    if (skipList.contains(message.kind)) {
+      return true;
+    }
     String path = uri.path;
     for (String file in whiteListMap.keys) {
       if (path.contains(file)) {
@@ -113,6 +122,9 @@
       if (checkWhiteList(uri, message, text)) {
         // Suppress whitelisted warnings.
         lastWasWhitelisted = true;
+        if (showWhitelisted || verbose) {
+          super.report(message, uri, begin, end, text, kind);
+        }
         return;
       }
       hasWarnings = true;
@@ -121,6 +133,9 @@
       if (checkWhiteList(uri, message, text)) {
         // Suppress whitelisted hints.
         lastWasWhitelisted = true;
+        if (showWhitelisted || verbose) {
+          super.report(message, uri, begin, end, text, kind);
+        }
         return;
       }
       hasHint = true;
@@ -129,6 +144,9 @@
       if (checkWhiteList(uri, message, text)) {
         // Suppress whitelisted errors.
         lastWasWhitelisted = true;
+        if (showWhitelisted || verbose) {
+          super.report(message, uri, begin, end, text, kind);
+        }
         return;
       }
       hasErrors = true;
@@ -156,10 +174,17 @@
   TREE_SHAKING,
 }
 
+/// Analyzes the file(s) in [uriList] using the provided [mode] and checks that
+/// no messages (errors, warnings or hints) are emitted.
+///
+/// Messages can be generally allowed using [skipList] or on a per-file basis
+/// using [whiteList].
 Future analyze(List<Uri> uriList,
                Map<String, List/*<String|MessageKind>*/> whiteList,
                {AnalysisMode mode: AnalysisMode.ALL,
-                CheckResults checkResults}) async {
+                CheckResults checkResults,
+                List<String> options: const <String>[],
+                List<MessageKind> skipList: const <MessageKind>[]}) async {
   String testFileName =
       relativize(Uri.base, Platform.script, Platform.isWindows);
 
@@ -177,9 +202,9 @@
   var packageRoot =
       currentDirectory.resolve(Platform.packageRoot);
   var provider = new CompilerSourceFileProvider();
-  var handler = new CollectingDiagnosticHandler(whiteList, provider);
-  var options = <String>[Flags.analyzeOnly, '--categories=Client,Server',
-      Flags.showPackageWarnings];
+  var handler = new CollectingDiagnosticHandler(whiteList, skipList, provider);
+  options = <String>[Flags.analyzeOnly, '--categories=Client,Server',
+      Flags.showPackageWarnings]..addAll(options);
   switch (mode) {
     case AnalysisMode.URI:
     case AnalysisMode.MAIN:
@@ -191,6 +216,12 @@
     case AnalysisMode.TREE_SHAKING:
       break;
   }
+  if (options.contains(Flags.verbose)) {
+    handler.verbose = true;
+  }
+  if (options.contains(HIDE_WHITELISTED)) {
+    handler.showWhitelisted = false;
+  }
   var compiler = new CompilerImpl(
       provider,
       null,
@@ -212,12 +243,15 @@
 
   if (mode == AnalysisMode.URI) {
     for (Uri uri in uriList) {
+      print('Analyzing uri: $uri');
       await compiler.analyzeUri(uri);
     }
   } else if (mode != AnalysisMode.TREE_SHAKING) {
+    print('Analyzing libraries: $uriList');
     compiler.librariesToAnalyzeWhenRun = uriList;
     await compiler.run(null);
   } else {
+    print('Analyzing entry point: ${uriList.single}');
     await compiler.run(uriList.single);
   }
 
diff --git a/tests/compiler/dart2js/analyze_test_test.dart b/tests/compiler/dart2js/analyze_test_test.dart
index 5e28cf0..4a2321b 100644
--- a/tests/compiler/dart2js/analyze_test_test.dart
+++ b/tests/compiler/dart2js/analyze_test_test.dart
@@ -26,10 +26,6 @@
  */
 // TODO(johnniwinther): Support canonical URIs as keys.
 const Map<String, List/*<String|MessageKind>*/> WHITE_LIST = const {
-  // Several tests import mirrors; any of these might trigger the warning.
-  ".dart": const [
-      MessageKind.IMPORT_EXPERIMENTAL_MIRRORS,
-  ],
   "/test/src/util/": const [
       "Library 'package:async/async.dart' doesn't export a "
       "'ForkableStream' declaration.",
@@ -55,28 +51,50 @@
   "http_test.dart",
 ];
 
-main(List<String> arguments) {
-  bool verbose = arguments.contains('-v');
+const List<MessageKind> MESSAGE_SKIP_LIST = const <MessageKind>[
+  // TODO(johnniwinther): Support checking of this warning. (Issue 26132)
+  MessageKind.IMPORT_EXPERIMENTAL_MIRRORS,
+];
 
-  List<String> options = <String>[
-    Flags.analyzeOnly,
-    Flags.analyzeMain,
-    '--categories=Client,Server'];
-  if (verbose) {
+main(List<String> arguments) {
+  List<String> options = <String>[];
+  if (arguments.contains('-v') || arguments.contains(Flags.verbose)) {
     options.add(Flags.verbose);
   }
-  asyncTest(() async {
-    List<Uri> uriList = <Uri>[];
-    Directory dir =
-        new Directory.fromUri(Uri.base.resolve('tests/compiler/dart2js/'));
-    for (FileSystemEntity entity in dir.listSync(recursive: true)) {
-      if (entity is File && entity.path.endsWith('.dart')) {
-        Uri file = Uri.base.resolve(nativeToUriPath(entity.path));
-        if (!SKIP_LIST.any((skip) => file.path.contains(skip))) {
-          uriList.add(file);
+  List<Uri> uriList = <Uri>[];
+  for (String arg in arguments) {
+    if (!arg.startsWith('-')) {
+      for (String line in new File(arg).readAsLinesSync()) {
+        line = line.trim();
+        if (line.startsWith('Analyzing uri: ')) {
+          int filenameOffset = line.indexOf('tests/compiler/dart2js/');
+          if (filenameOffset != -1) {
+            uriList.add(Uri.base.resolve(
+                nativeToUriPath(line.substring(filenameOffset))));
+          }
         }
       }
     }
-    await analyze(uriList, WHITE_LIST, mode: AnalysisMode.URI);
+  }
+
+  asyncTest(() async {
+    if (uriList.isEmpty) {
+      Directory dir =
+          new Directory.fromUri(Uri.base.resolve('tests/compiler/dart2js/'));
+      for (FileSystemEntity entity in dir.listSync(recursive: true)) {
+        if (entity is File && entity.path.endsWith('.dart')) {
+          Uri file = Uri.base.resolve(nativeToUriPath(entity.path));
+          if (!SKIP_LIST.any((skip) => file.path.contains(skip))) {
+            uriList.add(file);
+          }
+        }
+      }
+    }
+    await analyze(
+        uriList,
+        WHITE_LIST,
+        mode: AnalysisMode.URI,
+        options: options,
+        skipList: MESSAGE_SKIP_LIST);
   });
 }
diff --git a/tests/compiler/dart2js/exit_code_test.dart b/tests/compiler/dart2js/exit_code_test.dart
index ec9c160..11a04b1 100644
--- a/tests/compiler/dart2js/exit_code_test.dart
+++ b/tests/compiler/dart2js/exit_code_test.dart
@@ -58,12 +58,18 @@
                 environment: environment,
                 packageConfig: packageConfig,
                 packagesDiscoveryProvider: findPackages)) {
-    scanner = new TestScanner(this);
-    resolver = new TestResolver(this, backend.constantCompilerTask);
     reporter = new TestDiagnosticReporter(this, super.reporter);
     test('Compiler');
   }
 
+  @override
+  ScannerTask createScannerTask() => new TestScanner(this);
+
+  @override
+  ResolverTask createResolverTask() {
+    return new TestResolver(this, backend.constantCompilerTask);
+  }
+
   Future<bool> run(Uri uri) {
     test('Compiler.run');
     return super.run(uri);
diff --git a/tests/compiler/dart2js/mock_compiler.dart b/tests/compiler/dart2js/mock_compiler.dart
index 2d4862c..c08dbde 100644
--- a/tests/compiler/dart2js/mock_compiler.dart
+++ b/tests/compiler/dart2js/mock_compiler.dart
@@ -268,7 +268,7 @@
     return null;
   }
 
-  Future<Script> readScript(Spannable node, Uri uri) {
+  Future<Script> readScript(Uri uri, [Spannable spannable]) {
     SourceFile sourceFile = sourceFiles[uri.toString()];
     if (sourceFile == null) throw new ArgumentError(uri);
     return new Future.value(new Script(uri, uri, sourceFile));
diff --git a/tests/compiler/dart2js/serialization_analysis_test.dart b/tests/compiler/dart2js/serialization_analysis_test.dart
index e8c651d..19aedf7 100644
--- a/tests/compiler/dart2js/serialization_analysis_test.dart
+++ b/tests/compiler/dart2js/serialization_analysis_test.dart
@@ -242,6 +242,7 @@
       diagnosticHandler: diagnosticCollector,
       beforeRun: (Compiler compiler) {
         Deserializer deserializer = new Deserializer.fromText(
+            new DeserializationContext(),
             serializedData,
             const JsonSerializationDecoder());
         deserializer.plugins.add(compiler.backend.serialization.deserializer);
@@ -271,14 +272,14 @@
 }
 
 String serialize(Compiler compiler) {
-  Serializer serializer = new Serializer(const JsonSerializationEncoder());
+  Serializer serializer = new Serializer();
   serializer.plugins.add(compiler.backend.serialization.serializer);
   serializer.plugins.add(new WorldImpactSerializer(compiler.resolution));
 
   for (LibraryElement library in compiler.libraryLoader.libraries) {
     serializer.serialize(library);
   }
-  return serializer.toText();
+  return serializer.toText(const JsonSerializationEncoder());
 }
 
 const String WORLD_IMPACT_TAG = 'worldImpact';
diff --git a/tests/compiler/dart2js/serialization_library_test.dart b/tests/compiler/dart2js/serialization_library_test.dart
new file mode 100644
index 0000000..df59fbc
--- /dev/null
+++ b/tests/compiler/dart2js/serialization_library_test.dart
@@ -0,0 +1,130 @@
+// Copyright (c) 2016, 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 dart2js.serialization_library_test;
+
+import 'dart:io';
+import 'memory_compiler.dart';
+import 'package:async_helper/async_helper.dart';
+import 'package:compiler/src/commandline_options.dart';
+import 'package:compiler/src/common/names.dart';
+import 'package:compiler/src/constants/constructors.dart';
+import 'package:compiler/src/constants/expressions.dart';
+import 'package:compiler/src/dart_types.dart';
+import 'package:compiler/src/compiler.dart';
+import 'package:compiler/src/diagnostics/invariant.dart';
+import 'package:compiler/src/elements/elements.dart';
+import 'package:compiler/src/elements/visitor.dart';
+import 'package:compiler/src/ordered_typeset.dart';
+import 'package:compiler/src/serialization/element_serialization.dart';
+import 'package:compiler/src/serialization/json_serializer.dart';
+import 'package:compiler/src/serialization/serialization.dart';
+
+import 'serialization_test.dart';
+
+main(List<String> arguments) {
+  // Ensure that we can print out constant expressions.
+  DEBUG_MODE = true;
+
+  Uri entryPoint;
+  String outPath;
+  int shardCount = 3;
+  bool prettyPrint = false;
+  for (String arg in arguments) {
+    if (arg.startsWith('--')) {
+      if (arg.startsWith('--out=')) {
+        outPath = arg.substring('--out='.length);
+      } else if (arg == '--pretty-print') {
+        prettyPrint = true;
+      } else if (arg.startsWith('--shards=')) {
+        shardCount = int.parse(arg.substring('--shards='.length));
+      } else {
+        print("Unknown option $arg");
+      }
+    } else {
+      if (entryPoint != null) {
+        print("Multiple entrypoints are not supported.");
+      }
+      entryPoint = Uri.parse(arg);
+    }
+  }
+  if (entryPoint == null) {
+    entryPoint = Uris.dart_core;
+  }
+  asyncTest(() async {
+    CompilationResult result = await runCompiler(
+        entryPoint: entryPoint, options: [Flags.analyzeAll]);
+    Compiler compiler = result.compiler;
+    testSerialization(compiler.libraryLoader.libraries,
+                      outPath: outPath,
+                      prettyPrint: prettyPrint,
+                      shardCount: shardCount);
+  });
+}
+
+void testSerialization(Iterable<LibraryElement> libraries1,
+                       {String outPath,
+                        bool prettyPrint,
+                        int shardCount: 3}) {
+  if (shardCount < 1 || shardCount > libraries1.length) {
+    shardCount = libraries1.length;
+  }
+  List<List<LibraryElement>> librarySplits = <List<LibraryElement>>[];
+  int offset = 0;
+  int shardSize = (libraries1.length / shardCount).ceil();
+  for (int shard = 0; shard < shardCount; shard++) {
+    List<LibraryElement> libraries = <LibraryElement>[];
+    for (int index = 0; index < shardSize; index++) {
+      if (offset + index < libraries1.length) {
+        libraries.add(libraries1.elementAt(offset + index));
+      }
+    }
+    librarySplits.add(libraries);
+    offset += shardSize;
+  }
+  print(librarySplits.join('\n'));
+  List<String> texts = <String>[];
+  for (int shard = 0; shard < shardCount; shard++) {
+    List<LibraryElement> libraries = librarySplits[shard];
+    Serializer serializer = new Serializer(
+        shouldInclude: (e) => libraries.contains(e.library));
+    for (LibraryElement library in libraries) {
+      serializer.serialize(library);
+    }
+    String text = serializer.toText(const JsonSerializationEncoder());
+    String outText = text;
+    if (prettyPrint) {
+      outText = serializer.prettyPrint();
+    }
+    if (outPath != null) {
+      String name = outPath;
+      String ext = '';
+      int dotPos = outPath.lastIndexOf('.');
+      if (dotPos != -1) {
+        name = outPath.substring(0, dotPos);
+        ext = outPath.substring(dotPos);
+      }
+      new File('$name$shard$ext').writeAsStringSync(outText);
+    } else if (prettyPrint) {
+      print(outText);
+    }
+    texts.add(text);
+  }
+  DeserializationContext deserializationContext =
+      new DeserializationContext();
+  for (int shard = 0; shard < shardCount; shard++) {
+    new Deserializer.fromText(
+        deserializationContext, texts[shard], const JsonSerializationDecoder());
+  }
+  List<LibraryElement> libraries2 = <LibraryElement>[];
+  for (LibraryElement library1 in libraries1) {
+    LibraryElement library2 =
+        deserializationContext.lookupLibrary(library1.canonicalUri);
+    if (library2 == null) {
+      throw new ArgumentError('No library ${library1.canonicalUri} found.');
+    }
+    checkLibraryContent('library1', 'library2', 'library', library1, library2);
+    libraries2.add(library2);
+  }
+}
\ No newline at end of file
diff --git a/tests/compiler/dart2js/serialization_test.dart b/tests/compiler/dart2js/serialization_test.dart
index 3522c41..0f965a3 100644
--- a/tests/compiler/dart2js/serialization_test.dart
+++ b/tests/compiler/dart2js/serialization_test.dart
@@ -7,6 +7,7 @@
 import 'dart:io';
 import 'memory_compiler.dart';
 import 'package:async_helper/async_helper.dart';
+import 'package:compiler/src/commandline_options.dart';
 import 'package:compiler/src/constants/constructors.dart';
 import 'package:compiler/src/constants/expressions.dart';
 import 'package:compiler/src/dart_types.dart';
@@ -47,7 +48,7 @@
   }
   asyncTest(() async {
     CompilationResult result = await runCompiler(
-        entryPoint: entryPoint, options: ['--analyze-all']);
+        entryPoint: entryPoint, options: [Flags.analyzeAll]);
     Compiler compiler = result.compiler;
     testSerialization(compiler.libraryLoader.libraries,
                       outPath: outPath,
@@ -58,11 +59,11 @@
 void testSerialization(Iterable<LibraryElement> libraries1,
                        {String outPath,
                         bool prettyPrint}) {
-  Serializer serializer = new Serializer(const JsonSerializationEncoder());
+  Serializer serializer = new Serializer();
   for (LibraryElement library1 in libraries1) {
     serializer.serialize(library1);
   }
-  String text = serializer.toText();
+  String text = serializer.toText(const JsonSerializationEncoder());
   String outText = text;
   if (prettyPrint) {
     outText = serializer.prettyPrint();
@@ -74,6 +75,7 @@
   }
 
   Deserializer deserializer = new Deserializer.fromText(
+      new DeserializationContext(),
       text, const JsonSerializationDecoder());
   List<LibraryElement> libraries2 = <LibraryElement>[];
   for (LibraryElement library1 in libraries1) {
@@ -86,13 +88,14 @@
     libraries2.add(library2);
   }
 
-  Serializer serializer2 = new Serializer(const JsonSerializationEncoder());
+  Serializer serializer2 = new Serializer();
   for (LibraryElement library2 in libraries2) {
     serializer2.serialize(library2);
   }
-  String text2 = serializer2.toText();
+  String text2 = serializer2.toText(const JsonSerializationEncoder());
 
   Deserializer deserializer3 = new Deserializer.fromText(
+      new DeserializationContext(),
       text2, const JsonSerializationDecoder());
   for (LibraryElement library1 in libraries1) {
     LibraryElement library2 =
@@ -548,13 +551,28 @@
       Element member1 = element1.localLookup(name);
       Element member2 = element2.localLookup(name);
       if (member1 == null) {
-        print('Missing member for $member2 in\n ${members1.join('\n ')}');
-        continue;
+        String message =
+            'Missing member for $member2 in\n ${members1.join('\n ')}';
+        if (member2.isAbstractField) {
+          // TODO(johnniwinther): Ensure abstract fields are handled correctly.
+          print(message);
+          continue;
+        } else {
+          throw message;
+        }
       }
       if (member2 == null) {
-        print('Missing member for $member1 in\n ${members2.join('\n ')}');
-        continue;
+        String message =
+            'Missing member for $member1 in\n ${members2.join('\n ')}';
+        if (member1.isAbstractField) {
+          // TODO(johnniwinther): Ensure abstract fields are handled correctly.
+          print(message);
+          continue;
+        } else {
+          throw message;
+        }
       }
+      //print('Checking member ${member1} against ${member2}');
       visit(member1, member2);
     }
   }
@@ -621,6 +639,15 @@
         element1.interfaces.toList(),
         element2.interfaces.toList());
 
+    List<ConstructorElement> getConstructors(ClassElement cls) {
+      return cls.implementation.constructors.map((c) => c.declaration).toList();
+    }
+
+    checkElementLists(
+        element1, element2, 'constructors',
+        getConstructors(element1),
+        getConstructors(element2));
+
     visitMembers(element1, element2);
   }
 
diff --git a/tests/corelib/corelib.status b/tests/corelib/corelib.status
index 021d7ba..4552337 100644
--- a/tests/corelib/corelib.status
+++ b/tests/corelib/corelib.status
@@ -107,9 +107,7 @@
 [ $compiler == dart2js && $runtime == chromeOnAndroid ]
 list_as_map_test: Pass, Slow # TODO(kasperl): Please triage.
 
-[ $compiler == dart2js && ($runtime == firefox || $runtime == safari || $runtime == chrome || $runtime == drt) ]
-
-[ $compiler == dart2js && ($runtime == safari || $runtime == safarimobilesim) ]
+[ $compiler == dart2js && $runtime == safarimobilesim ]
 string_split_test: RuntimeError # Issue 21431
 
 [ $compiler == dart2js && $runtime == safarimobilesim ]
diff --git a/tests/corelib/double_parse_test.dart b/tests/corelib/double_parse_test.dart
index 6f7e8fb..9ea4569 100644
--- a/tests/corelib/double_parse_test.dart
+++ b/tests/corelib/double_parse_test.dart
@@ -1,6 +1,8 @@
 // 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=--no-use-field-guards
+// VMOptions=
 
 import "dart:math" show pow;
 import "package:expect/expect.dart";
diff --git a/tests/corelib/num_sign_test.dart b/tests/corelib/num_sign_test.dart
index d2ee968..3976f76 100644
--- a/tests/corelib/num_sign_test.dart
+++ b/tests/corelib/num_sign_test.dart
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 // Test num.clamp.
+// VMOptions=--no-use-field-guards
+// VMOptions=
 
 import "package:expect/expect.dart";
 
diff --git a/tests/html/html.status b/tests/html/html.status
index c7df0fe..742f19d 100644
--- a/tests/html/html.status
+++ b/tests/html/html.status
@@ -7,16 +7,10 @@
 
 [ $compiler == none && ($runtime == dartium || $runtime == drt) ]
 
-js_array_test: Skip # Dartium JSInterop failure
 mirrors_js_typed_interop_test: Fail # Missing expected failure (Issue 25044)
 js_typed_interop_side_cast_exp_test: Fail, OK # tests dart2js-specific behavior.
 
-cross_domain_iframe_test: RuntimeError # Dartium JSInterop failure
-indexeddb_2_test: Fail # Dartium JSInterop failure. Identity preservation on array deferred copy.
-js_test/transferrables: RuntimeError # Dartium JSInterop failure
-js_test/JsArray: RuntimeError # Dartium JSInterop failure
 native_gc_test: Skip # Dartium JSInterop failure
-transferables_test: RuntimeError # Dartium JSInterop failure
 
 [ $compiler == none && ($runtime == drt || $runtime == dartium ) ]
 worker_api_test: Fail # Issue 10223
@@ -64,6 +58,9 @@
 async_test: RuntimeError, OK  # Uses Isolate.spawn.
 isolates_test: RuntimeError, OK  # Uses Isolate.spawn.
 
+[ $compiler == none && ($runtime == drt || $runtime == dartium ) && $checked]
+cross_domain_iframe_test: RuntimeError # Issue 26134
+
 [ $compiler == none && ($runtime == drt || $runtime == dartium ) && $mode == debug ]
 websocket_test/websocket: Skip # Issue 17666
 canvasrenderingcontext2d_test/drawImage_video_element_dataUrl: Skip # Issue 17666
@@ -272,12 +269,12 @@
 media_stream_test/supported_MediaStreamEvent: Fail
 media_stream_test/supported_MediaStreamTrackEvent: Fail
 media_stream_test/supported_media: Fail
-performance_api_test/supported: Fail
 rtc_test/supported: Fail
 shadow_dom_test/supported: Fail
 speechrecognition_test/supported: Fail
 
 [ $runtime == safarimobilesim ]
+performance_api_test/supported: Fail
 indexeddb_1_test/supported: Fail
 element_types_test/supported_template: Fail
 xhr_test/json: Fail # Safari doesn't support JSON response type
diff --git a/tests/html/js_array_test.dart b/tests/html/js_array_test.dart
index 598cadf..753ced3 100644
--- a/tests/html/js_array_test.dart
+++ b/tests/html/js_array_test.dart
@@ -511,8 +511,10 @@
 
       expect(descriptor.value, equals("a"));
       expect(descriptor.writable, isTrue);
-      expect(descriptor.enumerable, isTrue);
-      expect(descriptor.configurable, isTrue);
+      // TODO(jacobr): commented out until https://github.com/dart-lang/sdk/issues/26128
+      // is fixed.
+      // expect(descriptor.enumerable, isTrue);
+      // expect(descriptor.configurable, isTrue);
 
       descriptor = getOwnPropertyDescriptor(list, "length");
       expect(descriptor.value, equals(2));
diff --git a/tests/html/js_test.dart b/tests/html/js_test.dart
index a902d59..ae9d9b3 100644
--- a/tests/html/js_test.dart
+++ b/tests/html/js_test.dart
@@ -240,34 +240,31 @@
       expect(identical(c1, c2), isTrue);
     });
 
-  /*
-    TODO(jacobr): enable this test when dartium supports maintaining proxy
-    equality.
-
     test('identical JS objects should have identical proxies', () {
       var o1 = new JsObject(context['Foo'], [1]);
       context['f1'] = o1;
       var o2 = context['f1'];
-      expect(equals(o1, o2), isTrue);
+      expect(identical(o1, o2), isTrue);
     });
 
+/*
+ TODO(jacobr): enable this test when dartium supports maintaining proxy
+    equality.
     test('identical Dart objects should have identical proxies', () {
       var o1 = new TestDartObject();
       expect(context.callMethod('identical', [o1, o1]), isTrue);
     });
-
-    test('identical Dart functions should have identical proxies', () {
-      var f1 = () => print("I'm a Function!");
-      expect(context.callMethod('identical', [f1, f1]), isTrue);
-    });
     */
 
-    // TODO(jacobr): switch from equals to indentical when dartium supports
-    // maintaining proxy equality.
-    test('identical JS functions should have equal proxies', () {
+    test('identical Dart functions should have identical proxies', () {
+      var f1 = allowInterop(() => print("I'm a Function!"));
+      expect(context.callMethod('identical', [f1, f1]), isTrue);
+    });
+
+    test('identical JS functions should have identical proxies', () {
       var f1 = context['Object'];
       var f2 = context['Object'];
-      expect(f1, equals(f2));
+      expect(identical(f1, f2), isTrue);
     });
 
     // TODO(justinfagnani): old tests duplicate checks above, remove
@@ -454,7 +451,7 @@
       expect(context['razzle'].apply([]), equals(42));
     });
 
-    test('JsFunction.apply on a function that uses "this"', () {
+    test('JsFunction.apply on a function that uses this', () {
       var object = new Object();
       expect(context['returnThis'].apply([], thisArg: object), same(object));
     });
@@ -517,7 +514,7 @@
     test('pass Array to JS', () {
       context['a'] = [1, 2, 3];
       expect(context.callMethod('isPropertyInstanceOf',
-          ['a', context['Array']]), isFalse);
+          ['a', context['Array']]), isTrue);
       var a = context['a'];
       expect(a, new isInstanceOf<List>());
       expect(a, isNot(new isInstanceOf<JsArray>()));
diff --git a/tests/html/wrapping_collections_test.dart b/tests/html/wrapping_collections_test.dart
index 176bcad..218d255 100644
--- a/tests/html/wrapping_collections_test.dart
+++ b/tests/html/wrapping_collections_test.dart
@@ -18,7 +18,7 @@
   });
 
   test("Access through dart:html", () {
-    var dartPerformance = wrap_jso(js.context['performance']);
+    var dartPerformance = js.JsNative.toTypedObject(js.context['performance']);
     var dartEntries = dartPerformance.getEntries();
     dartEntries.forEach((x) {
         expect(x is PerformanceEntry, isTrue);
diff --git a/tests/language/cha_deopt2_test.dart b/tests/language/cha_deopt2_test.dart
index 38274e0..d6b75ea 100644
--- a/tests/language/cha_deopt2_test.dart
+++ b/tests/language/cha_deopt2_test.dart
@@ -2,6 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 // VMOptions=--optimization-counter-threshold=100 --no-background-compilation
+// VMOptions=--optimization-counter-threshold=100 --no-background-compilation --no-use-field-guards
 
 // Test lazy deoptimization at type checks with deferred loading.
 
diff --git a/tests/language/cha_deopt3_test.dart b/tests/language/cha_deopt3_test.dart
index 6dc964e..4c7db2b 100644
--- a/tests/language/cha_deopt3_test.dart
+++ b/tests/language/cha_deopt3_test.dart
@@ -2,6 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 // VMOptions=--optimization-counter-threshold=100 --no-background-compilation
+// VMOptions=--optimization-counter-threshold=100 --no-background-compilation --no-use-field-guards
 
 // Test lazy deoptimization at type checks with interface implementation.
 
diff --git a/tests/language/const_redirect_skips_supertype_test.dart b/tests/language/const_redirect_skips_supertype_test.dart
new file mode 100644
index 0000000..c84aa62
--- /dev/null
+++ b/tests/language/const_redirect_skips_supertype_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2016, 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.
+
+// Since C redirects to C.named, it doesn't implicitly refer to B's
+// unnamed constructor.  Therefore there is no cycle.
+
+class B {
+  final x;
+  const B() : x = y;
+  const B.named() : x = null;
+}
+class C extends B {
+  const C() : this.named();
+  const C.named() : super.named();
+}
+const y = const C();
+
+main() {
+  print(y);
+}
diff --git a/tests/language/language.status b/tests/language/language.status
index 261ea59..766408b 100644
--- a/tests/language/language.status
+++ b/tests/language/language.status
@@ -153,10 +153,11 @@
 
 [ ($noopt || $compiler == precompiler || $compiler == dart2app) ]
 # Deferred loading happens eagerly
-regress_23408_test: RuntimeError
+regress_23408_test: Skip
 deferred_inheritance_constraints_test: Skip
-deferred_load_constants_test: Skip # multitest gets confused
-tearoff_basic_test: RuntimeError, Crash # Conflicting flag.
+deferred_global_test: Skip
+deferred_load_constants_test: Skip
+tearoff_basic_test: Skip
 
 vm/type_vm_test: RuntimeError # Expects line and column numbers
 vm/type_cast_vm_test: RuntimeError # Line number mismatch.
@@ -173,15 +174,11 @@
 generic_test: SkipByDesign # Requires checked mode.
 map_literal4_test: SkipByDesign # Requires checked mode.
 
-
 [ $runtime == dart_precompiled ]
-deferred_global_test: RuntimeError # Tries to produce a stack trace.
-ct_const2_test: Pass, Crash # Incompatible flag --compile_all
-hello_dart_test: Pass, Crash # Incompatible flag --compile_all
-
-implicit_closure_test: Pass, Crash # --use_slow_path
-
-deopt_inlined_function_lazy_test: Pass, Crash # Incompatible flag: --deoptimize-alot
+ct_const2_test: Skip # Incompatible flag: --compile_all
+hello_dart_test: Skip # Incompatible flag: --compile_all
+implicit_closure_test: Skip # Incompatible flag: --use_slow_path
+deopt_inlined_function_lazy_test: Skip # Incompatible flag: --deoptimize-alot
 
 [ $runtime == dart_product ]
 # Deferred loading happens eagerly (not sure why this works on precompiled code).
diff --git a/tests/language/nan_identical_test.dart b/tests/language/nan_identical_test.dart
index 5f171be..07b66f3 100644
--- a/tests/language/nan_identical_test.dart
+++ b/tests/language/nan_identical_test.dart
@@ -8,15 +8,14 @@
 
 import "package:expect/expect.dart";
 
-double uint64toDouble(int i) {
+double createOtherNAN() {
   var buffer = new Uint8List(8).buffer;
   var bdata = new ByteData.view(buffer);
-  bdata.setUint64(0, i);
-  return bdata.getFloat64(0);
-}
-
-double createOtherNAN() {
-  return uint64toDouble((1 << 64) - 2);
+  bdata.setFloat64(0, double.NAN);
+  bdata.setInt8(7, bdata.getInt8(7) ^ 1);  // Flip bit 0, big endian.
+  double result = bdata.getFloat64(0);
+  Expect.isTrue(result.isNaN);
+  return result;
 }
 
 main() {
diff --git a/tests/lib/lib.status b/tests/lib/lib.status
index 6319860..b44b584c 100644
--- a/tests/lib/lib.status
+++ b/tests/lib/lib.status
@@ -105,7 +105,6 @@
 [ $runtime == safari || $runtime == safarimobilesim ]
 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 # Issue 16831
 convert/json_test: Fail # https://bugs.webkit.org/show_bug.cgi?id=134920
 
 [ ($runtime == safari && $builder_tag == mac10_7)|| $runtime == safarimobilesim ]
@@ -262,6 +261,7 @@
 
 [ $compiler == dart2js && $runtime == safarimobilesim ]
 mirrors/mirrors_reader_test: SkipSlow # Times out. Issue 20806.
+mirrors/null_test: Fail # Issue 16831
 
 [ $compiler == dart2js && $runtime == jsshell ]
 async/schedule_microtask_test: Fail  # Preamble file does not correctly implement scheduleImmediate.
diff --git a/tests/lib/mirrors/mirror_in_static_init_test.dart b/tests/lib/mirrors/mirror_in_static_init_test.dart
index ae52922..471675e 100644
--- a/tests/lib/mirrors/mirror_in_static_init_test.dart
+++ b/tests/lib/mirrors/mirror_in_static_init_test.dart
@@ -19,7 +19,7 @@
 
 final int staticField = () {
   var lib = currentMirrorSystem().findLibrary(#mirror_in_static_init_test);
-  var lst = new List.from(lib.declarations.values);
+  var lst = new List.from(lib.declarations[#C].declarations.values);
   return 42;
 }();
 
diff --git a/tests/standalone/standalone.status b/tests/standalone/standalone.status
index 7cd6257..730d959 100644
--- a/tests/standalone/standalone.status
+++ b/tests/standalone/standalone.status
@@ -116,7 +116,7 @@
 [ $compiler == dart2js && $cps_ir && $checked ]
 *: Skip # `assert` not implemented
 
-[ ($runtime == vm || $runtime == dart_product) && $mode == debug ]
+[ ($runtime == vm || $runtime == dart_product) ]
 precompilation_dart2js_test: Pass, Slow
 
 [ ($runtime == vm || $runtime == dart_product) && $arch == ia32 ]
@@ -127,6 +127,9 @@
 precompilation_test: SkipSlow
 precompilation_dart2js_test: SkipSlow
 
+[ ($runtime == vm || $runtime == dart_product) && ($arch == arm || $arch == arm64) ]
+io/file_stream_test: Skip # Issue 26109
+
 [ $compiler == dart2js && $jscl ]
 assert_test: RuntimeError, OK # Assumes unspecified fields on the AssertionError.
 deoptimization_test: RuntimeError, OK # Requires bigint.
diff --git a/tests/try/try.status b/tests/try/try.status
index d6d7ca7..f84f339 100644
--- a/tests/try/try.status
+++ b/tests/try/try.status
@@ -18,9 +18,11 @@
 web/incremental_compilation_update_test: SkipByDesign # Test uses eval, not supported in CSP mode.
 
 [ $runtime == safari || $runtime == safarimobilesim ]
-web/cursor_position_test: Fail # Issue 19836
 web/incremental_compilation_update_test: Skip # Safari may crash on this test.
 
+[ $runtime == safarimobilesim ]
+web/cursor_position_test: Fail # Issue 19836
+
 [ $runtime == safari && $checked ]
 # The following tests flake with this error:
 #   type '*Theme' is not a subtype of type 'Theme'
diff --git a/tools/VERSION b/tools/VERSION
index 4d89b8c..a42c595 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 1
 MINOR 16
 PATCH 0
-PRERELEASE 2
+PRERELEASE 3
 PRERELEASE_PATCH 0
diff --git a/tools/dartium/generate_app/generate_cached_patches.dart b/tools/dartium/generate_app/generate_cached_patches.dart
new file mode 100644
index 0000000..21ca4fb
--- /dev/null
+++ b/tools/dartium/generate_app/generate_cached_patches.dart
@@ -0,0 +1,18 @@
+// 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:js" as js;
+
+void main() {
+  try {
+    var cached_files = js.createCachedPatchesFile();
+    print("$cached_files");
+  } catch (e) {
+    var workedElem = document.querySelector("#worked");
+    var failedElem = document.querySelector("#failed");
+    workedElem.style.dispay = 'none';
+    failedElem.style.visibility = 'inline';
+  }
+}
+
diff --git a/tools/dartium/generate_app/generate_cached_patches.html b/tools/dartium/generate_app/generate_cached_patches.html
new file mode 100644
index 0000000..e6c24b6
--- /dev/null
+++ b/tools/dartium/generate_app/generate_cached_patches.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+
+	<style>
+	    div {
+      background: #ffffff;
+      text-align: center;
+      width: 50%;
+      margin: 10% 10% 25% 25%;
+    }
+	
+    div#worked {
+      border: 5px solid green;
+      color: green;
+    }
+
+    div#failed {
+      border: 5px solid red;
+      color: red;
+    }
+
+	.cached_file_done {
+      font-family: arial;
+      font-size: 24pt;
+     }
+
+    .cached_file_name {
+      color: gray;
+      font-size: 16pt;
+      vertical-align: text-bottom;
+    }
+	</style>
+
+    <script async type="application/dart" src="generate_cached_patches.dart"></script>
+    <script async src="packages/browser/dart.js"></script>
+  </head> 
+	<body>
+      <div id=worked>
+        <span class=cached_file_done>Close Dartium</span><br/><br/>
+        <span class=cached_file_done>File: </span>
+        <span class=cached_file_name>sdk/lib/js/dartium/cached_patches.dart</span><br/><br/>
+        <span class=cached_file_done>GENERATED</span>
+      </div>
+      <div id=failed style="display: none;">
+        <span class=cached_file_done>FAILED</span><br/><br/>
+        <span class=cached_file_done>File: </span>
+        <span class=cached_file_name>sdk/lib/js/dartium/cached_patches.dart</span><br/><br/>
+        <span class=cached_file_done>NOT GENERATED</span>
+      </div>
+    </body>
+</html>
+
diff --git a/tools/dartium/generate_patches.sh b/tools/dartium/generate_patches.sh
new file mode 100755
index 0000000..ec2011a
--- /dev/null
+++ b/tools/dartium/generate_patches.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+#
+
+set -x
+
+#   generate_patches.sh [systems]
+#
+# Convenience script to generate patches for JsInterop under Dartium.  Do not call from build steps or tests
+# - call fremontcutbuilder and dartdomgenerator instead. Do not add 'real'
+# functionality here - change the python code instead.
+#
+# I find it essential to generate all the systems so I know if I am breaking
+# other systems.  My habit is to run:
+#
+#   ./go.sh
+
+# 1. After running go.sh libraries in sdk/lib may change.
+# 2. Build Dartium.
+# 3. Run this script and sdk/lib/js/dartium/cached_patches will be created.
+# 4. Rebuild Dartium.
+# 5. Commit files in sdk/lib
+
+LOCATION_DARTIUM="../../../out/Release"
+DARTIUM="$LOCATION_DARTIUM"
+
+DART_APP_LOCATION="file://"$PWD"/generate_app/generate_cached_patches.html"
+DARTIUM_ARGS=" --user-data-dir=out --disable-web-security --no-sandbox --enable-logging=stderr"
+CACHED_PATCHES_FILE=""$PWD"/../../sdk/lib/js/dartium/cached_patches.dart"
+
+if [[ "$1" != "" ]] ; then
+  DARTIM="$1"
+fi
+
+cmd=""$DARTIUM"/chrome "$DARTIUM_ARGS" "$DART_APP_LOCATION" 3>&1 1>&2- 2>&3 | \
+  (sed -n '/START_OF_CACHED_PATCHES/,/END_OF_CACHED_PATCHES/p') > "$CACHED_PATCHES_FILE""
+
+reset && eval "${cmd}"
+
+
diff --git a/tools/deps/dartium.deps/DEPS b/tools/deps/dartium.deps/DEPS
index 7187fd1..eea84da 100644
--- a/tools/deps/dartium.deps/DEPS
+++ b/tools/deps/dartium.deps/DEPS
@@ -9,7 +9,7 @@
 
 vars.update({
   "dartium_chromium_commit": "b16942297fc65fd478c6f46afd1c3aaecde77009",
-  "dartium_webkit_commit": "bf6d7afefd0ed68cae4a595a8fb8eea089303326",
+  "dartium_webkit_commit": "2223637e68ed9a95ee9bf07c2e597262e75f4b0c",
   "chromium_base_revision": "338390",
 
   # We use mirrors of all github repos to guarantee reproducibility and
@@ -53,6 +53,7 @@
   "pub_rev": "@9d707158fedc86fc2b02f62cdfe804902b098d9d",
   "pub_semver_tag": "@1.2.0",
   "quiver_tag": "@0.21.4",
+  "root_certificates_rev": "@aed07942ce98507d2be28cbd29e879525410c7fc",
   "shelf_rev": "@1e87b79b21ac5e6fa2f93576d6c06eaa65285ef4",
   "shelf_web_socket_rev": "@ff170cec2c0e4e5722cdf47c557be63b5035a602",
   "source_span_rev": "@42501132e43599a151ba6727d340e44442f86c05",
@@ -64,7 +65,7 @@
   "watcher_tag": "@0.9.5",
   "yaml_rev": "@563a5ffd4a800a2897b8f4dd6b19f2a370df2f2b",
   "zlib_rev": "@c3d0a6190f2f8c924a05ab6cc97b8f975bddd33f",
-  "web_components_rev": "@0e636b534d9b12c9e96f841e6679398e91a986ec",
+  "web_components_rev": "@6349e09f9118dce7ae1b309af5763745e25a9d61",
   "WebCore_rev": "@a86fe28efadcfc781f836037a80f27e22a5dad17",
 
   "co19_rev": "@3ed795ea02e022ef19c77cf1b6095b7c8f5584d0",
@@ -137,6 +138,9 @@
       Var("chromium_git")
       + "/external/github.com/google/quiver-dart.git"
       + Var("quiver_tag"),
+  "src/dart/third_party/root_certificates":
+      (Var("github_mirror") % "root_certificates")
+      + Var("root_certificates_rev"),
   "src/dart/third_party/pkg/shelf":
       (Var("github_mirror") % "shelf") + Var("shelf_rev"),
   "src/dart/third_party/pkg/shelf_web_socket":
diff --git a/tools/dom/docs/docs.json b/tools/dom/docs/docs.json
index 5b936a6..123447d 100644
--- a/tools/dom/docs/docs.json
+++ b/tools/dom/docs/docs.json
@@ -5181,44 +5181,6 @@
     },
     "WebGLRenderingContext": {
       "members": {
-        "bufferData": [
-          "/**",
-          "   * Buffers the specified data.",
-          "   *",
-          "   * The [bufferData] method is provided for WebGL API compatibility reasons, but",
-          "   * it is highly recommended that you use [bufferDataTyped] or [bufferByteData]",
-          "   * depending on your purposes.",
-          "   */"
-        ],
-        "bufferSubData": [
-          "/**",
-          "   * Buffers the specified subset of data.",
-          "   *",
-          "   * The [bufferSubData] method is provided for WebGL API compatibility reasons, but",
-          "   * it is highly recommended that you use [bufferSubDataTyped] or [bufferSubByteData]",
-          "   * depending on your purposes.",
-          "   */"
-        ],
-        "texImage2D": [
-          "/**",
-          "   * Updates the currently bound texture to [data].",
-          "   *",
-          "   * The [texImage2D] method is provided for WebGL API compatibility reasons, but it",
-          "   * is highly recommended that you use [texImage2DUntyped] or [texImage2DTyped]",
-          "   * (or for more specificity, the more specialized [texImage2DImageData],",
-          "   * [texImage2DCanvas], [texImage2DVideo]).",
-          "   */"
-        ],
-        "texSubImage2D": [
-          "/**",
-          "   * Updates a sub-rectangle of the currently bound texture to [data].",
-          "   *",
-          "   * The [texSubImage2D] method is provided for WebGL API compatibility reasons, but it",
-          "   * is highly recommended that you use [texSubImage2DUntyped] or [texSubImage2DTyped]",
-          "   * (or for more specificity, the more specialized [texSubImage2DImageData],",
-          "   * [texSubImage2DCanvas], [texSubImage2DVideo]).",
-          "   */"
-        ]
       }
     }
   },
diff --git a/tools/dom/dom.json b/tools/dom/dom.json
index a7863c4..3437c02 100644
--- a/tools/dom/dom.json
+++ b/tools/dom/dom.json
@@ -16927,12 +16927,24 @@
       "blitFramebuffer": {
         "support_level": "untriaged"
       },
+      "bufferByteData": {
+        "support_level": "untriaged"
+      },
       "bufferData": {
         "support_level": "untriaged"
       },
+      "bufferDataTyped": {
+        "support_level": "untriaged"
+      },
+      "bufferSubByteData": {
+        "support_level": "untriaged"
+      },
       "bufferSubData": {
         "support_level": "untriaged"
       },
+      "bufferSubDataTyped": {
+        "support_level": "untriaged"
+      },
       "canvas": {
         "support_level": "untriaged"
       },
@@ -17365,6 +17377,18 @@
       "texImage2D": {
         "support_level": "untriaged"
       },
+      "texImage2DCanvas": {
+        "support_level": "untriaged"
+      },
+      "texImage2DImage": {
+        "support_level": "untriaged"
+      },
+      "texImage2DImageData": {
+        "support_level": "untriaged"
+      },
+      "texImage2DVideo": {
+        "support_level": "untriaged"
+      },
       "texImage3D": {
         "support_level": "untriaged"
       },
@@ -17383,6 +17407,18 @@
       "texSubImage2D": {
         "support_level": "untriaged"
       },
+      "texSubImage2DCanvas": {
+        "support_level": "untriaged"
+      },
+      "texSubImage2DImage": {
+        "support_level": "untriaged"
+      },
+      "texSubImage2DImageData": {
+        "support_level": "untriaged"
+      },
+      "texSubImage2DVideo": {
+        "support_level": "untriaged"
+      },
       "texSubImage3D": {
         "support_level": "untriaged"
       },
diff --git a/tools/dom/scripts/css_code_generator.py b/tools/dom/scripts/css_code_generator.py
index 74de8e4..ef7555a 100644
--- a/tools/dom/scripts/css_code_generator.py
+++ b/tools/dom/scripts/css_code_generator.py
@@ -154,7 +154,7 @@
 $if DARTIUM
   bool _hasProperty(String propertyName) =>
   $if JSINTEROP
-      _blink.BlinkCSSStyleDeclaration.instance.$__propertyQuery___Callback_1_(unwrap_jso(this), propertyName) != null;
+      _blink.BlinkCSSStyleDeclaration.instance.$__propertyQuery___Callback_1_(this, propertyName);
   $else
       _blink.BlinkCSSStyleDeclaration.$__propertyQuery___Callback_1(this, propertyName);
   $endif
diff --git a/tools/dom/scripts/dartdomgenerator.py b/tools/dom/scripts/dartdomgenerator.py
index b528141..c0315df2 100755
--- a/tools/dom/scripts/dartdomgenerator.py
+++ b/tools/dom/scripts/dartdomgenerator.py
@@ -234,6 +234,25 @@
   _logger.info('Updating Css Properties.')
   css_code_generator.GenerateCssTemplateFile()
 
+CACHED_PATCHES = """
+// START_OF_CACHED_PATCHES
+// 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.
+
+// DO NOT EDIT GENERATED FILE.
+
+library cached_patches;
+
+var cached_patches = {
+    /********************************************************
+     *****                                              *****
+     *****  MUST RUN tools/dartium/generate_patches.sh  *****
+     *****                                              *****
+     ********************************************************/
+};
+"""
+
 def main():
   parser = optparse.OptionParser()
   parser.add_option('--parallel', dest='parallel',
@@ -327,6 +346,14 @@
           os.path.join(dartium_output_dir, '%s_dartium.dart' % library_name),
           os.path.join('..', '..', '..', 'sdk', 'lib', library_name, 'dartium'))
 
+    # Blow away the cached_patches.dart needs to be re-generated for Dartium
+    # see tools/dartium/generate_patches.sh
+    cached_patches_filename = os.path.join('..', '..', '..', 'sdk', 'lib', 'js', 'dartium',
+                                           'cached_patches.dart')
+    cached_patches = open(cached_patches_filename, 'w')
+    cached_patches.write(CACHED_PATCHES);
+    cached_patches.close()
+
   if '_blink' in systems:
     _logger.info('Generating dartium _blink file.')
     file_generation_start_time = time.time()
diff --git a/tools/dom/scripts/generate_blink_file.py b/tools/dom/scripts/generate_blink_file.py
index 6f274da..4beb0a5 100644
--- a/tools/dom/scripts/generate_blink_file.py
+++ b/tools/dom/scripts/generate_blink_file.py
@@ -7,9 +7,85 @@
 """Generates sdk/lib/_blink/dartium/_blink_dartium.dart file."""
 
 import os
-
+from sets import Set
 from generator import AnalyzeOperation, AnalyzeConstructor
 
+# This is list of all methods with native c++ implementations
+# If performing a dartium merge, the best practice is to comment out this list,
+# ensure everything runs, and then uncomment this list which might possibly
+# introduce breaking changes due to changes to these method signatures.
+_js_custom_members = Set([
+    'Document.createElement',
+    'Element.id',
+    'Element.tagName',
+    'Element.className',
+    'Element.setAttribute',
+    'Element.getAttribute',
+    # Consider adding this method so there is a fast path to access only
+    # element children.
+    # 'NonDocumentTypeChildNode.nextElementSibling',
+    'Node.appendChild', # actually not removed, just native implementation.
+    'Node.cloneNode',
+    'Node.insertBefore',    
+    'Node.lastChild',
+    'Node.firstChild',
+    'Node.parentElement',
+    'Node.parentNode',
+    'Node.childNodes',
+    'Node.removeChild',
+    'Node.contains',
+    'Node.nextSibling',
+    'Node.previousSibling',
+    'ChildNode.remove',
+    'Document.createTextNode',
+    'Window.location',
+    'Location.href',
+    'Node.querySelector',
+
+    'HTMLElement.hidden',
+    'HTMLElement.style',
+    'Element.attributes',
+    'Window.innerWidth',
+
+    'NodeList.length',
+    'NodeList.item',
+    'ParentNode.children',
+    'ParentNode.firstElementChild',
+    'ParentNode.lastElementChild',
+    'Event.target',
+    'MouseEvent.clientY',
+    'MouseEvent.clientX',
+
+    'Node.nodeType',
+    'Node.textContent',
+    
+    'HTMLCollection.length',
+    'HTMLCollection.item',
+    'Node.lastElementChild',
+    'Node.firstElementChild',
+    'HTMLElement_tabIndex',
+
+    'Element.clientWidth',
+    'Element.clientHeight',
+    'Document.body',
+    'Element.removeAttribute',
+    'Element.getBoundingClientRect',
+    'CSSStyleDeclaration.getPropertyValue',
+    'CSSStyleDeclaration.setProperty',
+    'CSSStyleDeclaration.__propertyQuery__',
+
+    # TODO(jacobr): consider implementing these methods as well as they show
+    # up in benchmarks for some sample applications.
+    #'Document.createEvent',
+    #'Document.initEvent',
+    #'EventTarget.dispatchEvent',
+     ])
+
+# Uncomment out this line  to short circuited native methods and run all of
+# dart:html through JS interop except for createElement which is slightly more
+# tightly natively wired.
+# _js_custom_members = Set([])
+
 HEADER = """/* 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.
@@ -50,13 +126,14 @@
 
   static register(document, tag, customType, extendsTagName) native "Utils_register";
 
-  static createElement(document, tagName) native "Utils_createElement";
+  // Defines an interceptor if there is an appropriate JavaScript prototype to define it on.
+  // In any case, returns a typed JS wrapper compatibile with dart:html and the new
+  // typed JS Interop.
+  static defineInterceptorCustomElement(jsObject, Type type) native "Utils_defineInterceptorCustomElement";
+  static setInstanceInterceptor(o, Type type, {bool customElement: false}) native "Utils_setInstanceInterceptor";
 
-  static constructElement(element_type, jsObject) native "Utils_constructor_create";
-
+  // This method will throw if the element isn't actually a real Element.
   static initializeCustomElement(element) native "Utils_initializeCustomElement";
-
-  static changeElementWrapper(element, type) native "Utils_changeElementWrapper";
 }
 
 class Blink_DOMWindowCrossFrame {
@@ -106,9 +183,63 @@
 }
 
 // Calls through JsNative but returns DomException instead of error strings.
+class Stats {
+  Stats(this.name) {
+    counts = new Map<String, int>();
+  }
+
+  String name;
+  Map<String, int> counts;
+  clear() {
+    counts.clear();
+  }
+
+  track(String v) {
+    counts[v] = counts.putIfAbsent(v, ()=> 0) + 1;
+  }
+  toString() {
+    StringBuffer sb = new StringBuffer();
+    sb.write('================');
+    sb.write('$name ${counts.length}');
+    var keys = counts.keys.toList();
+    keys.sort((a,b) => counts[b].compareTo(counts[a]));
+    for (var key in keys) {
+      print("$key => ${counts[key]}");
+    }
+    sb.write('---------------');
+    sb.write('================');
+    return sb;
+  }
+}
+
+bool TRACK_STATS = true;
+dumpStats() {
+  print("------------ STATS ----------------");
+  print(Blink_JsNative_DomException.getPropertyStats.toString()); 
+  print(Blink_JsNative_DomException.setPropertyStats.toString());
+  print(Blink_JsNative_DomException.callMethodStats.toString());
+  print(Blink_JsNative_DomException.constructorStats.toString());
+  print("-----------------------------------");
+}
+
+clearStats() {
+  Blink_JsNative_DomException.getPropertyStats.clear();
+  Blink_JsNative_DomException.setPropertyStats.clear();
+  Blink_JsNative_DomException.callMethodStats.clear();  
+  Blink_JsNative_DomException.constructorStats.clear();  
+}
+
 class Blink_JsNative_DomException {
-  static getProperty(js.JsObject o, name) {
+  static var getPropertyStats = new Stats('get property');
+  static var setPropertyStats = new Stats('set property');
+  static var callMethodStats = new Stats('call method');
+  static var constructorStats = new Stats('constructor');
+
+  static var constructors = new Map<String, dynamic>();
+
+  static getProperty(o, String name) {
     try {
+      if (TRACK_STATS) getPropertyStats.track(name);
       return js.JsNative.getProperty(o, name);
     } catch (e) {
       // Re-throw any errors (returned as a string) as a DomException.
@@ -116,8 +247,51 @@
     }
   }
 
-  static callMethod(js.JsObject o, String method, List args) {
+  static propertyQuery(o, String name) {
     try {
+      if (TRACK_STATS) getPropertyStats.track('__propertyQuery__');
+      return js.JsNative.getProperty(o, name);
+    } catch (e) {
+      // Re-throw any errors (returned as a string) as a DomException.
+      throw new DomException.jsInterop(e);
+    }
+  }
+
+  static callConstructor0(String name) {
+    try {
+      if (TRACK_STATS) constructorStats.track(name);
+      var constructor = constructors.putIfAbsent(name, () => js.context[name]);
+      return js.JsNative.callConstructor0(constructor);
+    } catch (e) {
+      // Re-throw any errors (returned as a string) as a DomException.
+      throw new DomException.jsInterop(e);
+    }
+  }
+
+  static callConstructor(String name, List args) {
+    try {
+      if (TRACK_STATS) constructorStats.track(name);
+      var constructor = constructors.putIfAbsent(name, () => js.context[name]);
+      return js.JsNative.callConstructor(constructor, args);
+    } catch (e) {
+      // Re-throw any errors (returned as a string) as a DomException.
+      throw new DomException.jsInterop(e);
+    }
+  }
+
+  static setProperty(o, String name, value) {
+    try {
+      if (TRACK_STATS) setPropertyStats.track(name);
+      return js.JsNative.setProperty(o, name, value);
+    } catch (e) {
+      // Re-throw any errors (returned as a string) as a DomException.
+      throw new DomException.jsInterop(e);
+    }
+  }
+
+  static callMethod(o, String method, List args) {
+    try {
+      if (TRACK_STATS) callMethodStats.track(method);
       return js.JsNative.callMethod(o, method, args);
     } catch (e) {
       // Re-throw any errors (returned as a string) as a DomException.
@@ -137,38 +311,73 @@
 """
 
 #(interface_name)
-CONSTRUCTOR_0 = '  constructorCallback_0_() => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "%s"), []);\n\n'
+
+#
+CONSTRUCTOR_0 = ['  constructorCallback_0_()',
+                 ' => Blink_JsNative_DomException.callConstructor0("%s");\n\n',
+                 ' native "Blink_Constructor_%s";\n\n']
 
 #(argument_count, arguments, interface_name, arguments)
-CONSTRUCTOR_ARGS = '  constructorCallback_%s_(%s) => new js.JsObject(Blink_JsNative_DomException.getProperty(js.context, "%s"), [%s]);\n\n'
+CONSTRUCTOR_ARGS = ['  constructorCallback_%s_(%s)',
+   ' => Blink_JsNative_DomException.callConstructor("%s", [%s]);\n\n',
+   ' native "Blink_Constructor_Args_%s" /* %s */;\n\n']
 
 #(attribute_name, attribute_name)
-ATTRIBUTE_GETTER = '  %s_Getter_(mthis) => Blink_JsNative_DomException.getProperty(mthis, "%s");\n\n'
-ATTRIBUTE_SETTER = '  %s_Setter_(mthis, __arg_0) => mthis["%s"] = __arg_0;\n\n'
+ATTRIBUTE_GETTER = ['  %s_Getter_(mthis)',
+                    ' => Blink_JsNative_DomException.getProperty(mthis /* %s */, "%s");\n\n',
+                    ' native "Blink_Getter_%s_%s";\n\n'
+                    ]
+
+ATTRIBUTE_SETTER = ['  %s_Setter_(mthis, __arg_0)',
+                    ' => Blink_JsNative_DomException.setProperty(mthis /* %s */, "%s", __arg_0);\n\n',
+                    ' native "Blink_Setter_%s_%s";\n\n'
+                    ]
 
 #(operation_name, operationName)
-OPERATION_0 = '  %s_Callback_0_(mthis) => Blink_JsNative_DomException.callMethod(mthis, "%s", []);\n\n'
+OPERATION_0 = ['  %s_Callback_0_(mthis)',
+               ' => Blink_JsNative_DomException.callMethod(mthis /* %s */, "%s", []);\n\n',
+               ' native "Blink_Operation_0_%s_%s";\n\n'
+               ]
 
 # getter, setter, deleter and propertyQuery code
-OPERATION_1 = '  $%s_Callback_1_(mthis, __arg_0) => Blink_JsNative_DomException.callMethod(mthis, "%s", [__arg_0]);\n\n'
-OPERATION_2 = '  $%s_Callback_2_(mthis, __arg_0, __arg_1) => Blink_JsNative_DomException.callMethod(mthis, "%s", [__arg_0, __arg_1]);\n\n'
-OPERATION_PQ = '  $%s_Callback_1_(mthis, __arg_0) => mthis[__arg_0];\n\n'
+OPERATION_1 = ['  $%s_Callback_1_(mthis, __arg_0)',
+               ' => Blink_JsNative_DomException.callMethod(mthis /* %s */, "%s", [__arg_0]);\n\n',
+               ' native "Blink_Operation_1_%s_%s";\n\n'
+               ]
+
+OPERATION_2 = ['  $%s_Callback_2_(mthis, __arg_0, __arg_1)',
+               ' => Blink_JsNative_DomException.callMethod(mthis /* %s */, "%s", [__arg_0, __arg_1]);\n\n',
+               ' native "Blink_Operation_2_%s_%s";\n\n']
+
+OPERATION_PQ = ['  $%s_Callback_1_(mthis, __arg_0)',
+                ' => Blink_JsNative_DomException.propertyQuery(mthis, __arg_0); /* %s */ \n\n',
+                ' native "Blink_Operation_PQ_%s";\n\n']
 
 #(operation_name, argument_count, arguments, operation_name, arguments)
 ARGUMENT_NUM = "__arg_%s"
-OPERATION_ARGS = '  %s_Callback_%s_(mthis, %s) => Blink_JsNative_DomException.callMethod(mthis, "%s", [%s]);\n\n'
+OPERATION_ARGS = ['  %s_Callback_%s_(mthis, %s)',
+                  ' => Blink_JsNative_DomException.callMethod(mthis /* %s */, "%s", [%s]);\n\n',
+                  ' native "Blink_Operation_%s_%s"; /* %s */\n\n']
+
+
 
 # get class property to make static call.
 CLASS_STATIC = 'Blink_JsNative_DomException.getProperty(js.context, "%s")'
 
 # name, classname_getproperty, name
-STATIC_ATTRIBUTE_GETTER = '  %s_Getter_() => Blink_JsNative_DomException.getProperty(%s, "%s");\n\n'
+STATIC_ATTRIBUTE_GETTER = ['  %s_Getter_()',
+                           ' => Blink_JsNative_DomException.getProperty(%s /* %s */, "%s");\n\n',
+                           ' /* %s */ native "Blink_Static_getter_%s_%s"']
 
 # name, classname_getproperty, name
-STATIC_OPERATION_0 = '  %s_Callback_0_() => Blink_JsNative_DomException.callMethod(%s, "%s", []);\n\n'
+STATIC_OPERATION_0 = ['  %s_Callback_0_()',
+                      ' => Blink_JsNative_DomException.callMethod(%s /* %s */, "%s", []);\n\n',
+                      ' /* %s */ native "Blink_Static_Operation_0_%s_%s']
 
 # name, argsCount, args, classname_getproperty, name, args
-STATIC_OPERATION_ARGS = '  %s_Callback_%s_(%s) => Blink_JsNative_DomException.callMethod(%s, "%s", [%s]);\n\n'
+STATIC_OPERATION_ARGS = ['  %s_Callback_%s_(%s)',
+                         ' => Blink_JsNative_DomException.callMethod(%s /* %s */, "%s", [%s]);\n\n',
+                         ' /* %s */ native "Blink_Static_Operations_%s_%s" /* %s */ \n\n']
 
 CLASS_DEFINITION_END = """}
 
@@ -197,6 +406,27 @@
 def rename_constructor(name):
   return constructor_renames[name] if name in constructor_renames else name
 
+
+def _Find_Match(interface_id, member, member_prefix, candidates):
+  member_name = interface_id + '.' + member
+  if member_name in candidates:
+    return member_name
+  member_name = interface_id + '.' + member_prefix + member
+  if member_name in candidates:
+    return member_name
+  member_name = interface_id + '.*'
+  if member_name in candidates:
+    return member_name
+
+def _Is_Native(interface, member):
+  return _Find_Match(interface, member, '', _js_custom_members)
+
+def Select_Stub(template, is_native):
+  if is_native:
+    return template[0] + template[2]
+  else:
+    return template[0] + template[1]
+
 def Generate_Blink(output_dir, database, type_registry):
   blink_filename = os.path.join(output_dir, '_blink_dartium.dart')
   blink_file = open(blink_filename, 'w')
@@ -226,7 +456,7 @@
       _Emit_Blink_Constructors(blink_file, analyzed_constructors)
     elif 'Constructor' in interface.ext_attrs:
       # Zero parameter constructor.
-      blink_file.write(CONSTRUCTOR_0 % rename_constructor(name))
+      blink_file.write(Select_Stub(CONSTRUCTOR_0, _Is_Native(name, 'constructor')) % rename_constructor(name))
 
     _Process_Attributes(blink_file, interface, interface.attributes)
     _Process_Operations(blink_file, interface, interface.operations)
@@ -250,27 +480,29 @@
 
   for callback_index in range(arg_min_count, arg_max_count):
     if callback_index == 0:
-      blink_file.write(CONSTRUCTOR_0 % (rename_constructor(name)))
+      blink_file.write(Select_Stub(CONSTRUCTOR_0, _Is_Native(name, 'constructor')) % (rename_constructor(name)))
     else:
       arguments = []
       for i in range(0, callback_index):
         arguments.append(ARGUMENT_NUM % i)
       argument_list = ', '.join(arguments)
-      blink_file.write(CONSTRUCTOR_ARGS % (callback_index, argument_list, rename_constructor(name), argument_list))
+      blink_file.write(
+        Select_Stub(CONSTRUCTOR_ARGS, _Is_Native(name, 'constructor')) % (callback_index, argument_list, rename_constructor(name), argument_list))
 
 def _Process_Attributes(blink_file, interface, attributes):
   # Emit an interface's attributes and operations.
   for attribute in sorted(attributes, ConstantOutputOrder):
     name = attribute.id
+    is_native = _Is_Native(interface.id, name)
     if attribute.is_read_only:
       if attribute.is_static:
         class_property = CLASS_STATIC % interface.id
-        blink_file.write(STATIC_ATTRIBUTE_GETTER % (name, class_property, name))
+        blink_file.write(Select_Stub(STATIC_ATTRIBUTE_GETTER, is_native) % (name, class_property, interface.id, name))
       else:
-        blink_file.write(ATTRIBUTE_GETTER % (name, name))
+        blink_file.write(Select_Stub(ATTRIBUTE_GETTER, is_native) % (name, interface.id, name))
     else:
-      blink_file.write(ATTRIBUTE_GETTER % (name, name))
-      blink_file.write(ATTRIBUTE_SETTER % (name, name))
+      blink_file.write(Select_Stub(ATTRIBUTE_GETTER, is_native) % (name, interface.id, name))
+      blink_file.write(Select_Stub(ATTRIBUTE_SETTER, is_native) % (name, interface.id, name))
 
 def _Process_Operations(blink_file, interface, operations):
   analyzeOperations = []
@@ -292,6 +524,7 @@
   analyzed = AnalyzeOperation(interface, analyzeOperations)
   (arg_min_count, arg_max_count) = generate_parameter_entries(analyzed.param_infos)
   name = analyzed.js_name
+  is_native = _Is_Native(interface.id, name)
 
   operation = analyzeOperations[0]
   if (name.startswith('__') and \
@@ -299,13 +532,13 @@
        'setter' in operation.specials or \
        'deleter' in operation.specials)):
     if name == '__propertyQuery__':
-      blink_file.write(OPERATION_PQ % (name))
+      blink_file.write(Select_Stub(OPERATION_PQ, is_native) % (name, interface.id))
     else:
       arg_min_count = arg_max_count
       if arg_max_count == 2:
-        blink_file.write(OPERATION_1 % (name, name))
+        blink_file.write(Select_Stub(OPERATION_1, is_native) % (name, interface.id, name))
       elif arg_max_count == 3:
-        blink_file.write(OPERATION_2 % (name, name))
+        blink_file.write(Select_Stub(OPERATION_2, is_native) % (name, interface.id, name))
       else:
         print "FATAL ERROR: _blink emitter operator %s.%s" % (interface.id, name)
         exit
@@ -316,9 +549,9 @@
     if callback_index == 0:
       if operation.is_static:
         class_property = CLASS_STATIC % interface.id
-        blink_file.write(STATIC_OPERATION_0 % (name, class_property, name))
+        blink_file.write(Select_Stub(STATIC_OPERATION_0, is_native) % (name, class_property, interface.id, name))
       else:
-        blink_file.write(OPERATION_0 % (name, name))
+        blink_file.write(Select_Stub(OPERATION_0, is_native) % (name, interface.id, name))
     else:
       arguments = []
       for i in range(0, callback_index):
@@ -326,6 +559,6 @@
       argument_list = ', '.join(arguments)
       if operation.is_static:
         class_property = CLASS_STATIC % interface.id
-        blink_file.write(STATIC_OPERATION_ARGS % (name, callback_index, argument_list, class_property, name, argument_list))
+        blink_file.write(Select_Stub(STATIC_OPERATION_ARGS, is_native) % (name, callback_index, argument_list, class_property, interface.id, name, argument_list))
       else:
-        blink_file.write(OPERATION_ARGS % (name, callback_index, argument_list, name, argument_list))
+        blink_file.write(Select_Stub(OPERATION_ARGS, is_native) % (name, callback_index, argument_list, interface.id, name, argument_list))
diff --git a/tools/dom/scripts/generator.py b/tools/dom/scripts/generator.py
index 7e6fe8b..90f8b34 100644
--- a/tools/dom/scripts/generator.py
+++ b/tools/dom/scripts/generator.py
@@ -543,29 +543,28 @@
         type_id = p.type_id
         # Unwrap the type to get the JsObject if Type is:
         #
-        #    - known IDL type
         #    - type_id is None then it's probably a union type or overloaded
         #      it's a dynamic/any type
         #    - type is Object
         #
-        # JsObject maybe stored in the Dart class.
         if (wrap_unwrap_type_blink(type_id, type_registry)):
           type_is_callback = self.isCallback(type_registry, type_id)
           if (dart_js_interop and type_id == 'EventListener' and
               self.name in ['addEventListener', 'removeEventListener']):
-              # Events fired need use a JsFunction not a anonymous closure to
+              # Events fired need use a JSFunction not a anonymous closure to
               # insure the event can really be removed.
-              parameters.append('unwrap_jso(js.allowInterop(%s))' % p.name)
-          elif dart_js_interop and type_id == 'FontFaceSetForEachCallback':
+              parameters.append('js.allowInterop(%s)' % p.name)
+# These commented out cases don't actually generate any code.              
+#          elif dart_js_interop and type_id == 'FontFaceSetForEachCallback':
               # forEach is supported in the DOM for FontFaceSet as it iterates
               # over the Javascript Object the callback parameters are also
               # Javascript objects and must be wrapped.
-              parameters.append('unwrap_jso((fontFace, fontFaceAgain, set) => %s(wrap_jso(fontFace), wrap_jso(fontFaceAgain), wrap_jso(set)))' % p.name)
-          elif dart_js_interop and type_id == 'HeadersForEachCallback':
+ #             parameters.append('(fontFace, fontFaceAgain, set) => %s(fontFace, fontFaceAgain, wrap_jso(set))' % p.name)
+#          elif dart_js_interop and type_id == 'HeadersForEachCallback':
               # forEach is supported in the DOM for Headers as it iterates
               # over the Javascript Object the callback parameters are also
               # Javascript objects and must be wrapped.
-              parameters.append('unwrap_jso((String value, String key, map) => %s(value, key, wrap_jso(map)))' % p.name)
+#              parameters.append('(String value, String key, map) => %s(value, key, wrap_jso(map))' % p.name)
           elif dart_js_interop and type_is_callback and not(isRemoveOperation):
             # Any remove operation that has a a callback doesn't need wrapping.
             # TODO(terry): Kind of hacky but handles all the cases we care about
@@ -579,15 +578,15 @@
                 dart_type = type_registry.DartType(callback_arg.type.id) + ' '
               callback_args_decl.append('%s%s' % (dart_type, callback_arg.id))
               if wrap_unwrap_type_blink(callback_arg.type.id, type_registry):
-                callback_args_call.append('wrap_jso(%s)' % callback_arg.id)
+                callback_args_call.append(callback_arg.id)
               else:
                 callback_args_call.append(callback_arg.id)
-            parameters.append('unwrap_jso((%s) => %s(%s))' %
+            parameters.append('(%s) => %s(%s)' %
                               (", ".join(callback_args_decl),
-                               p.name,
-                               ", ".join(callback_args_call)))
+                              p.name,
+                              ", ".join(callback_args_call)))
           else:
-            parameters.append('unwrap_jso(%s)' % p.name)
+            parameters.append(p.name)
         else:
           if dart_js_interop:
             conversion = backend._InputConversion(p.type_id, self.declared_name)
@@ -1495,6 +1494,8 @@
   # Get the list type NNNN inside of List<NNNN>
   return return_type[5:-1] if isList(return_type) else return_type
 
+# TODO(jacobr): remove these obsolete methods as we don't actually
+# perform any wrapping.
 def wrap_unwrap_list_blink(return_type, type_registry):
   """Return True if the type is the list type is a blink know
      type e.g., List<Node>, List<FontFace>, etc."""
@@ -1508,14 +1509,9 @@
     unwrap_jso"""
     if return_type and return_type.startswith('Html'):
         return_type = return_type.replace('Html', 'HTML', 1)
-    return (type_registry.HasInterface(return_type) or not(return_type) or
+    return (not(return_type) or
             return_type == 'Object' or
-            return_type == 'dynamic' or
-            return_type == 'Future' or
-            return_type == 'SqlDatabase' or # renamed to Database
-            return_type == 'HTMLElement' or
-            return_type == 'MutationObserver' or
-            (return_type.endswith('[]') and return_type != 'DOMString[]'))
+            return_type == 'dynamic')
 
 def wrap_type_blink(return_type, type_registry):
     """Returns True if the type is a blink type that requires wrap_jso but
diff --git a/tools/dom/scripts/htmldartgenerator.py b/tools/dom/scripts/htmldartgenerator.py
index 8e62fac..89e3c3a 100644
--- a/tools/dom/scripts/htmldartgenerator.py
+++ b/tools/dom/scripts/htmldartgenerator.py
@@ -626,7 +626,7 @@
             (factory_params, converted_arguments) = self._ConvertArgumentTypes(
                 stmts_emitter, arguments, argument_count, constructor_info)
             args = ', '.join(converted_arguments)
-            call_template = 'wrap_jso($FACTORY_NAME($FACTORY_PARAMS))'
+            call_template = '$FACTORY_NAME($FACTORY_PARAMS)'
         else:
             qualified_name = emitter.Format(
                 '$FACTORY.$NAME',
diff --git a/tools/dom/scripts/htmlrenamer.py b/tools/dom/scripts/htmlrenamer.py
index 7bb618a..2712916 100644
--- a/tools/dom/scripts/htmlrenamer.py
+++ b/tools/dom/scripts/htmlrenamer.py
@@ -454,38 +454,6 @@
       '_createObjectUrlFromWebKitSource',
   'URL.createObjectURL(MediaStream stream)': 'createObjectUrlFromStream',
   'URL.createObjectURL(Blob blob)': 'createObjectUrlFromBlob',
-  'WebGLRenderingContextBase.texImage2D(unsigned long target, long level, '
-      'unsigned long internalformat, unsigned long format, unsigned long '
-      'type, ImageData pixels)': 'texImage2DImageData',
-  'WebGLRenderingContextBase.texImage2D(unsigned long target, long level, '
-      'unsigned long internalformat, unsigned long format, unsigned long '
-      'type, HTMLImageElement image)': 'texImage2DImage',
-  'WebGLRenderingContextBase.texImage2D(unsigned long target, long level, '
-      'unsigned long internalformat, unsigned long format, unsigned long '
-      'type, HTMLCanvasElement canvas)': 'texImage2DCanvas',
-  'WebGLRenderingContextBase.texImage2D(unsigned long target, long level, '
-      'unsigned long internalformat, unsigned long format, unsigned long '
-      'type, HTMLVideoElement video)': 'texImage2DVideo',
-  'WebGLRenderingContextBase.texSubImage2D(unsigned long target, long level, '
-      'long xoffset, long yoffset, unsigned long format, unsigned long type, '
-      'ImageData pixels)': 'texSubImage2DImageData',
-  'WebGLRenderingContextBase.texSubImage2D(unsigned long target, long level, '
-      'long xoffset, long yoffset, unsigned long format, unsigned long type, '
-      'HTMLImageElement image)': 'texSubImage2DImage',
-  'WebGLRenderingContextBase.texSubImage2D(unsigned long target, long level, '
-      'long xoffset, long yoffset, unsigned long format, unsigned long type, '
-      'HTMLCanvasElement canvas)': 'texSubImage2DCanvas',
-  'WebGLRenderingContextBase.texSubImage2D(unsigned long target, long level, '
-      'long xoffset, long yoffset, unsigned long format, unsigned long type, '
-      'HTMLVideoElement video)': 'texSubImage2DVideo',
-  'WebGLRenderingContextBase.bufferData(unsigned long target, '
-      'ArrayBuffer data, unsigned long usage)': 'bufferByteData',
-  'WebGLRenderingContextBase.bufferData(unsigned long target, '
-      'ArrayBufferView data, unsigned long usage)': 'bufferDataTyped',
-  'WebGLRenderingContextBase.bufferSubData(unsigned long target, '
-      'long long offset, ArrayBuffer data)': 'bufferSubByteData',
-  'WebGLRenderingContextBase.bufferSubData(unsigned long target, '
-      'long long offset, ArrayBufferView data)': 'bufferSubDataTyped',
   'WebSocket.send(ArrayBuffer data)': 'sendByteBuffer',
   'WebSocket.send(ArrayBufferView data)': 'sendTypedData',
   'WebSocket.send(DOMString data)': 'sendString',
@@ -525,10 +493,6 @@
   'CanvasRenderingContext2D.isPointInStroke',
   'CanvasRenderingContext2D.stroke',
   'Navigator.sendBeacon',
-  'WebGLRenderingContextBase.bufferData',
-  'WebGLRenderingContextBase.bufferSubData',
-  'WebGLRenderingContextBase.texImage2D',
-  'WebGLRenderingContextBase.texSubImage2D',
 ])
 
 for member in convert_to_future_members:
diff --git a/tools/dom/scripts/systemhtml.py b/tools/dom/scripts/systemhtml.py
index 672d97e..efceff6 100644
--- a/tools/dom/scripts/systemhtml.py
+++ b/tools/dom/scripts/systemhtml.py
@@ -586,7 +586,7 @@
         class_modifiers = ''
       else:
         # For Dartium w/ JsInterop these suppressed interfaces are needed to
-        # instanciate the internal classes when wrap_jso is called for a JS object.
+        # instanciate the internal classes.
         if (self._renamer.ShouldSuppressInterface(self._interface) and
             not(isinstance(self._backend, Dart2JSBackend)) and
             self._options.dart_js_interop):
@@ -600,21 +600,10 @@
 
     class_name = self._interface_type_info.implementation_name()
 
-    js_interop_equivalence_op = \
-      '  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);\n' \
-      + '  int get hashCode => unwrap_jso(this).hashCode;\n'
-    # ClientRect overrides the equivalence operator.
-    if interface_name == 'ClientRect' or interface_name == 'DomRectReadOnly':
-        js_interop_equivalence_op = ''
-
     js_interop_wrapper = '''
 
   @Deprecated("Internal Use Only")
-  static {0} internalCreate{0}() {{
-    return new {0}._internalWrap();
-  }}
-
-  external factory {0}._internalWrap();
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   {0}.internal_() : super.internal_();
@@ -622,19 +611,13 @@
 '''.format(class_name)
     if base_class == 'NativeFieldWrapperClass2' or base_class == 'DartHtmlDomObject':
         js_interop_wrapper = '''
-  @Deprecated("Internal Use Only")
-  static {0} internalCreate{0}() {{
-    return new {0}._internalWrap();
-  }}
 
-  factory {0}._internalWrap() {{
-    return new {0}.internal_();
-  }}
+  @Deprecated("Internal Use Only")
+  external static Type get instanceRuntimeType;
 
   @Deprecated("Internal Use Only")
   {0}.internal_() {{ }}
-
-{1}'''.format(class_name, js_interop_equivalence_op)
+'''.format(class_name)
         # Change to use the synthesized class so we can construct with a mixin
         # classes prefixed with name of NativeFieldWrapperClass2 don't have a
         # default constructor so classes with mixins can't be new'd.
@@ -1285,13 +1268,9 @@
     emitters = library_emitter.Emit(
         self._template, AUXILIARY_DIR=massage_path(auxiliary_dir))
     if isinstance(emitters, tuple):
-      if self._dart_js_interop:
-        imports_emitter, map_emitter, function_emitter = emitters
-      else:
-        imports_emitter, map_emitter = emitters
-        function_emitter = None
+      imports_emitter, map_emitter = emitters
     else:
-      imports_emitter, map_emitter, function_emitter = emitters, None, None
+      imports_emitter, map_emitter = emitters, None
 
     for path in sorted(self._paths):
       relpath = os.path.relpath(path, library_file_dir)
@@ -1304,26 +1283,10 @@
       items.sort()
       for (idl_name, dart_name) in items:
         map_emitter.Emit(
-          "  '$IDL_NAME': () => $DART_NAME,\n",
+          "  '$IDL_NAME': () => $DART_NAME.instanceRuntimeType,\n",
           IDL_NAME=idl_name,
           DART_NAME=dart_name)
 
-    # Emit the $!TYPE_FUNCTION_MAP
-    if function_emitter:
-      items = self._typeMap.items()
-      items.sort()
-      for (idl_name, dart_name) in items:
-        # DOMStringMap is in the abstract list but is used as a concrete class
-        # in Dartium.
-        if not IsPureInterface(idl_name):
-          # Handle classes that are concrete (abstract can't be instantiated).
-          function_emitter.Emit(
-            "  '$IDL_NAME': () => $DART_NAME.internalCreate$DART_NAME,\n",
-            IDL_NAME=idl_name,
-            DART_NAME=dart_name)
-      if self._dart_path.endswith('html_dartium.dart'):
-        function_emitter.Emit("  'polymer-element': () => HtmlElement.internalCreateHtmlElement,\n")
-
 
 # ------------------------------------------------------------------------------
 
diff --git a/tools/dom/scripts/systemnative.py b/tools/dom/scripts/systemnative.py
index 1fd37f4..6d0c94d 100644
--- a/tools/dom/scripts/systemnative.py
+++ b/tools/dom/scripts/systemnative.py
@@ -22,6 +22,8 @@
               'password', 'pathname', 'port', 'protocol',
               'search', 'username']
 
+_promise_to_future = Conversion('convertNativePromiseToDartFuture', 'dynamic', 'Future')
+
 def array_type(data_type):
     matched = re.match(r'([\w\d_\s]+)\[\]', data_type)
     if not matched:
@@ -108,6 +110,16 @@
   def CustomJSMembers(self):
     return {}
 
+  def _OutputConversion(self, idl_type, member):
+    conversion = FindConversion(idl_type, 'get', self._interface.id, member)
+    # TODO(jacobr) handle promise consistently in dart2js and dartium.
+    if idl_type == 'Promise':
+      return _promise_to_future
+    if conversion:
+      if conversion.function_name in ('_convertNativeToDart_Window', '_convertNativeToDart_EventTarget', 'convertNativeToDart_DateTime', 'convertNativeToDart_ImageData'):
+        return None
+    return conversion
+
   def _InputConversion(self, idl_type, member):
     return FindConversion(idl_type, 'set', self._interface.id, member)
 
@@ -250,7 +262,7 @@
         self._members_emitter.Emit(
             '\n  @DocsEditable()\n'
             '  static $INTERFACE_NAME $FACTORY_METHOD_NAME($PARAMETERS) => '
-            'wrap_jso($TOPLEVEL_NAME($OUTPARAMETERS));\n',
+            '$TOPLEVEL_NAME($OUTPARAMETERS);\n',
             INTERFACE_NAME=self._interface_type_info.interface_name(),
             FACTORY_METHOD_NAME=factory_method_name,
             PARAMETERS=typed_formals,
@@ -272,7 +284,7 @@
         self._interface, self._interface.id, '  ')
 
     self._members_emitter.Emit(
-        '\n  $(ANNOTATIONS)factory $CTOR($PARAMS) => wrap_jso(_create($FACTORY_PARAMS));\n',
+        '\n  $(ANNOTATIONS)factory $CTOR($PARAMS) => _create($FACTORY_PARAMS);\n',
         ANNOTATIONS=annotations,
         CTOR=constructor_info._ConstructorFullName(self._DartType),
         PARAMS=constructor_info.ParametersAsDeclaration(self._DartType),
@@ -536,7 +548,7 @@
         # JsObject maybe stored in the Dart class.
         return_wrap_jso = wrap_return_type_blink(return_type, attr.type.id, self._type_registry)
     wrap_unwrap_list.append(return_wrap_jso)       # wrap_jso the returned object
-    wrap_unwrap_list.append(self._dart_use_blink)  # this must be unwrap_jso
+    wrap_unwrap_list.append(self._dart_use_blink) 
 
     # This seems to have been replaced with Custom=Getter (see above), but
     # check to be sure we don't see the old syntax
@@ -545,10 +557,13 @@
     auto_scope_setup = self._GenerateAutoSetupScope(attr.id, native_suffix)
     native_entry = \
         self.DeriveNativeEntry(attr.id, 'Getter', None)
+    output_conversion = self._OutputConversion(attr.type.id, attr.id)
+
     cpp_callback_name = self._GenerateNativeBinding(attr.id, 1,
         dart_declaration, attr.is_static, return_type, parameters,
         native_suffix, is_custom, auto_scope_setup, native_entry=native_entry,
-        wrap_unwrap_list=wrap_unwrap_list, dictionary_return=dictionary_returned)
+        wrap_unwrap_list=wrap_unwrap_list, dictionary_return=dictionary_returned,
+        output_conversion=output_conversion)
     if is_custom:
       return
 
@@ -583,9 +598,7 @@
 
     # Is the setter value a DartClass (that has a JsObject) or the type is
     # None (it's a dynamic/any type) then unwrap_jso before passing to blink.
-    parameters = ['unwrap_jso(value)' if (isinstance(type_info, InterfaceIDLTypeInfo) or
-                                          not(attr.type.id) or ptype == 'Object')
-                  else 'value']
+    parameters = ['value']
 
     dart_declaration = 'set %s(%s value)' % (html_name, ptype)
     is_custom = _IsCustom(attr) and (_IsCustomValue(attr, None) or
@@ -651,6 +664,12 @@
       self._EmitExplicitIndexedGetter(dart_element_type)
     else:
       is_custom = any((op.id == 'item' and _IsCustom(op)) for op in self._interface.operations)
+
+      output_conversion = self._OutputConversion(element_type, 'item')
+      conversion_name = ''
+      if output_conversion:
+        conversion_name = output_conversion.function_name
+
       # First emit a toplevel function to do the native call
       # Calls to this are emitted elsewhere,
       dart_native_name, resolver_string = \
@@ -663,40 +682,22 @@
                                         dart_native_name)
 
       type_info = self._TypeInfo(element_type)
-      # Does nativeIndexGetter return a DartClass (JsObject) if so wrap_jso.
-      wrap_jso_start = ''
-      wrap_jso_end = ''
-      if (isinstance(type_info, InterfaceIDLTypeInfo) or
-          wrap_type_blink(type_info.narrow_dart_type(), self._type_registry)):
-          wrap_jso_start = 'wrap_jso('
-          wrap_jso_end = ')'
       blinkNativeIndexed = """
   $TYPE operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return %s$(DART_NATIVE_NAME)(unwrap_jso(this), index)%s;
+    return _nativeIndexedGetter(index);
   }
 
-  $TYPE _nativeIndexedGetter(int index) => %s$(DART_NATIVE_NAME)(unwrap_jso(this), index)%s;
-""" % (wrap_jso_start, wrap_jso_end, wrap_jso_start, wrap_jso_end)
-      # Wrap the type to store the JsObject if Type is:
-      #
-      #    - known IDL type
-      #    - type_id is None then it's probably a union type or overloaded
-      #      it's a dynamic/any type
-      #    - type is Object
-      #
-      # JsObject maybe stored in the Dart class.
-      if isinstance(type_info, InterfaceIDLTypeInfo) or not(type_info) or dart_element_type == 'Object':
-          blinkNativeIndexedGetter = \
-              ' {0}$(DART_NATIVE_NAME)(unwrap_jso(this), index){1};\n'.format('wrap_jso(', ')')
-      else:
-          blinkNativeIndexedGetter = \
-              ' $(DART_NATIVE_NAME)(unwrap_jso(this), index);\n'
+  $TYPE _nativeIndexedGetter(int index) => $(CONVERSION_NAME)($(DART_NATIVE_NAME)(this, index));
+"""
+      blinkNativeIndexedGetter = \
+          ' $(DART_NATIVE_NAME)(this, index);\n'
       self._members_emitter.Emit(blinkNativeIndexed,
                                  DART_NATIVE_NAME=dart_qualified_name,
                                  TYPE=self.SecureOutputType(element_type),
-                                 INTERFACE=self._interface.id)
+                                 INTERFACE=self._interface.id,
+                                 CONVERSION_NAME=conversion_name)
 
     if self._HasNativeIndexSetter():
       self._EmitNativeIndexSetter(dart_element_type)
@@ -798,6 +799,8 @@
 
     operation = info.operations[0]
 
+    output_conversion = self._OutputConversion(operation.type.id, operation.id)
+
     dictionary_returned = False
     # Return type for dictionary is any (untyped).
     if operation.type.id == 'Dictionary':
@@ -821,20 +824,14 @@
     if self._dart_use_blink:
         # Wrap the type to store the JsObject if Type is:
         #
-        #    - known IDL type
-        #    - type_id is None then it's probably a union type or overloaded
         #      it's a dynamic/any type
         #    - type is Object
         #
         # JsObject maybe stored in the Dart class.
         return_wrap_jso = wrap_return_type_blink(return_type, info.type_name, self._type_registry)
         return_type_info = self._type_registry.TypeInfo(info.type_name)
-        if (isinstance(return_type_info, SequenceIDLTypeInfo) and
-            not isinstance(return_type_info._item_info, PrimitiveIDLTypeInfo)):
-                return_wrap_jso = True
     # wrap_jso the returned object
     wrap_unwrap_list.append(return_wrap_jso)
-    # The 'this' parameter must be unwrap_jso
     wrap_unwrap_list.append(self._dart_use_blink)
 
     if info.callback_args:
@@ -852,7 +849,8 @@
         native_suffix, is_custom, auto_scope_setup,
         native_entry=native_entry,
         wrap_unwrap_list=wrap_unwrap_list,
-        dictionary_return=dictionary_returned)
+        dictionary_return=dictionary_returned,
+        output_conversion=output_conversion)
       if not is_custom:
         self._GenerateOperationNativeCallback(operation, operation.arguments, cpp_callback_name, auto_scope_setup)
     else:
@@ -880,7 +878,7 @@
       base_name = '_%s_%s' % (operation.id, version)
       static = True
       if not operation.is_static:
-        actuals = ['unwrap_jso(this)' if self._dart_use_blink else 'this'] + actuals
+        actuals = ['this'] + actuals
         formals = ['mthis'] + formals
       actuals_s = ", ".join(actuals)
       formals_s = ", ".join(formals)
@@ -892,10 +890,7 @@
       overload_name = \
           self.DeriveQualifiedBlinkName(self._interface.id,
                                         overload_base_name)
-      if return_wrap_jso:
-          call_emitter.Emit('wrap_jso($NAME($ARGS))', NAME=overload_name, ARGS=actuals_s)
-      else:
-          call_emitter.Emit('$NAME($ARGS)', NAME=overload_name, ARGS=actuals_s)
+      call_emitter.Emit('$NAME($ARGS)', NAME=overload_name, ARGS=actuals_s)
       auto_scope_setup = \
         self._GenerateAutoSetupScope(base_name, native_suffix)
       cpp_callback_name = self._GenerateNativeBinding(
@@ -927,7 +922,7 @@
   def _GenerateNativeBinding(self, idl_name, argument_count, dart_declaration,
       static, return_type, parameters, native_suffix, is_custom,
       auto_scope_setup=True, emit_metadata=True, emit_to_native=False,
-      native_entry=None, wrap_unwrap_list=[], dictionary_return=False):
+      native_entry=None, wrap_unwrap_list=[], dictionary_return=False, output_conversion=None):
     metadata = []
     if emit_metadata:
       metadata = self._metadata.GetFormattedMetadata(
@@ -946,10 +941,7 @@
 
     if not static:
         formals = ", ".join(['mthis'] + parameters)
-        if wrap_unwrap_list and wrap_unwrap_list[1]:
-            actuals = ", ".join(['unwrap_jso(this)'] + parameters)
-        else:
-            actuals = ", ".join(['this'] + parameters)
+        actuals = ", ".join(['this'] + parameters)
     else:
         formals = ", ".join(parameters)
         actuals = ", ".join(parameters)
@@ -969,11 +961,17 @@
             emit_template = '''
   $METADATA$DART_DECLARATION => $DART_NAME($ACTUALS);
   '''
-            if wrap_unwrap_list and wrap_unwrap_list[0]:
+            if output_conversion and not dictionary_return:
+              conversion_template = '''
+  $METADATA$DART_DECLARATION => %s($DART_NAME($ACTUALS));
+  '''
+              emit_template = conversion_template % output_conversion.function_name
+
+            elif wrap_unwrap_list and wrap_unwrap_list[0]:
                 if return_type == 'Rectangle':
                     jso_util_method = 'make_dart_rectangle'
                 elif wrap_unwrap_list[0]:
-                    jso_util_method = 'wrap_jso'
+                    jso_util_method = ''
 
                 if dictionary_return:
                   emit_jso_template = '''
diff --git a/tools/dom/src/dartium_CustomElementSupport.dart b/tools/dom/src/dartium_CustomElementSupport.dart
index e769e88..c957145 100644
--- a/tools/dom/src/dartium_CustomElementSupport.dart
+++ b/tools/dom/src/dartium_CustomElementSupport.dart
@@ -29,40 +29,11 @@
   }
 
   Element upgrade(element) {
-    var jsObject;
-    var tag;
-    var isNativeElementExtension = false;
-
-    try {
-      tag = _getCustomElementName(element);
-    } catch (e) {
-      isNativeElementExtension = element.localName == _extendsTag;
+    // Only exact type matches are supported- cannot be a subclass.
+    if (element.runtimeType != _nativeType) {
+      throw new ArgumentError('element is not subclass of $_nativeType');
     }
-
-    if (element.runtimeType == HtmlElement || element.runtimeType == TemplateElement) {
-      if (tag != _extendsTag) {
-        throw new UnsupportedError('$tag is not registered.');
-      }
-      jsObject = unwrap_jso(element);
-    } else if (element.runtimeType == js.JsObject) {
-      // It's a Polymer core element (written in JS).
-      jsObject = element;
-    } else if (isNativeElementExtension) {
-      // Extending a native element.
-      jsObject = element.blink_jsObject;
-
-      // Element to extend is the real tag.
-      tag = element.localName;
-    } else if (tag != null && element.localName != tag) {
-      throw new UnsupportedError('Element is incorrect type. Got ${element.runtimeType}, expected native Html or Svg element to extend.');
-    } else if (tag == null) {
-      throw new UnsupportedError('Element is incorrect type. Got ${element.runtimeType}, expected HtmlElement/JsObject.');
-    }
-
-    // Remember Dart class to tagName for any upgrading done in wrap_jso.
-    addCustomElementType(tag, _type, _extendsTag);
-
-    return _createCustomUpgrader(_type, jsObject);
+    return _createCustomUpgrader(_type, element);
   }
 }
 
diff --git a/tools/dom/src/dartium_KeyEvent.dart b/tools/dom/src/dartium_KeyEvent.dart
index 9997689..b0a494a 100644
--- a/tools/dom/src/dartium_KeyEvent.dart
+++ b/tools/dom/src/dartium_KeyEvent.dart
@@ -30,13 +30,7 @@
 @Experimental()
 class KeyEvent extends _WrappedEvent implements KeyboardEvent {
   /** Needed because KeyboardEvent is implements.
-   *  TODO(terry): Consider making blink_jsObject private (add underscore) for
-   *               all blink_jsObject.  Then needed private wrap/unwrap_jso
-   *               functions that delegate to a public wrap/unwrap_jso.
    */
-  @Deprecated("Internal Use Only")
-  js.JsObject blink_jsObject;
-
   /** The parent KeyboardEvent that this KeyEvent is wrapping and "fixing". */
   KeyboardEvent _parent;
 
diff --git a/tools/dom/src/dartium_WrappedEvent.dart b/tools/dom/src/dartium_WrappedEvent.dart
index 2364158..a4e0ace 100644
--- a/tools/dom/src/dartium_WrappedEvent.dart
+++ b/tools/dom/src/dartium_WrappedEvent.dart
@@ -6,15 +6,14 @@
 
 /**
  * Helper class to implement custom events which wrap DOM events.
+ * TODO(jacobr): consider using dart JsNative.$setInstanceInterceptor
+ * instead of using wrappers as that would allow passing these wrappers
+ * back through dispatchEvent unlike the current implementation.
+ * See https://github.com/dart-lang/sdk/issues/16869
  */
 class _WrappedEvent implements Event {
   /** Needed because KeyboardEvent is implements.
-   *  TODO(terry): Consider making blink_jsObject private (add underscore) for
-   *               all blink_jsObject.  Then needed private wrap/unwrap_jso
-   *               functions that delegate to a public wrap/unwrap_jso.
    */
-  js.JsObject blink_jsObject;
-
   final Event wrapped;
 
   /** The CSS selector involved with event delegation. */
diff --git a/tools/dom/src/native_DOMImplementation.dart b/tools/dom/src/native_DOMImplementation.dart
index 2aad83f..97487bf 100644
--- a/tools/dom/src/native_DOMImplementation.dart
+++ b/tools/dom/src/native_DOMImplementation.dart
@@ -124,8 +124,6 @@
     }
   }
 
-  static maybeUnwrapJso(obj) => unwrap_jso(obj);
-
   static List convertToList(List list) {
     // FIXME: [possible optimization]: do not copy the array if Dart_IsArray is fine w/ it.
     final length = list.length;
@@ -189,15 +187,14 @@
     return element;
   }
 
-  static window() => wrap_jso(js.context['window']);
-
   static forwardingPrint(String message) => _blink.Blink_Utils.forwardingPrint(message);
   static void spawnDomHelper(Function f, int replyTo) =>
       _blink.Blink_Utils.spawnDomHelper(f, replyTo);
 
   // TODO(vsm): Make this API compatible with spawnUri.  It should also
   // return a Future<Isolate>.
-  static spawnDomUri(String uri) => wrap_jso(_blink.Blink_Utils.spawnDomUri(uri));
+  // TODO(jacobr): IS THIS RIGHT? I worry we have broken conversion from Promise to Future.
+  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.
@@ -774,13 +771,13 @@
     return [
         "inspect",
         (o) {
-          host.callMethod("_inspect", [unwrap_jso(o)]);
+          js.JsNative.callMethod(host, "_inspect", [o]);
           return o;
         },
         "dir",
-        window().console.dir,
+        window.console.dir,
         "dirxml",
-        window().console.dirxml
+        window.console.dirxml
         // FIXME: add copy method.
         ];
   }
@@ -804,38 +801,34 @@
   }
 
   static void _register(Document document, String tag, Type customType,
-    String extendsTagName) => _blink.Blink_Utils.register(unwrap_jso(document), tag, customType, extendsTagName);
+    String extendsTagName) => _blink.Blink_Utils.register(document, tag, customType, extendsTagName);
 
   static Element createElement(Document document, String tagName) =>
-      wrap_jso(_blink.Blink_Utils.createElement(unwrap_jso(document), tagName));
-
-  static Element changeElementWrapper(HtmlElement element, Type type) =>
-      wrap_jso(_blink.Blink_Utils.changeElementWrapper(unwrap_jso(element), type));
+      _blink.Blink_Utils.createElement(document, tagName);
 }
 
+// TODO(jacobr): this seems busted. I believe we are actually
+// giving users real windows for opener, parent, top, etc.
+// Or worse, we are probaly returning a raw JSObject.
 class _DOMWindowCrossFrame extends DartHtmlDomObject implements
     WindowBase {
-  /** Needed because KeyboardEvent is implements.
-   *  TODO(terry): Consider making blink_jsObject private (add underscore) for
-   *               all blink_jsObject.  Then needed private wrap/unwrap_jso
-   *               functions that delegate to a public wrap/unwrap_jso.
-   */
-  js.JsObject blink_jsObject;
 
   _DOMWindowCrossFrame.internal();
+  
+  static _createSafe(win) => _blink.Blink_Utils.setInstanceInterceptor(win, _DOMWindowCrossFrame);
 
   // Fields.
-  HistoryBase get history => wrap_jso(_blink.Blink_DOMWindowCrossFrame.get_history(unwrap_jso(this)));
-  LocationBase get location => wrap_jso(_blink.Blink_DOMWindowCrossFrame.get_location(unwrap_jso(this)));
-  bool get closed => wrap_jso(_blink.Blink_DOMWindowCrossFrame.get_closed(unwrap_jso(this)));
-  WindowBase get opener => wrap_jso(_blink.Blink_DOMWindowCrossFrame.get_opener(unwrap_jso(this)));
-  WindowBase get parent => wrap_jso(_blink.Blink_DOMWindowCrossFrame.get_parent(unwrap_jso(this)));
-  WindowBase get top => wrap_jso(_blink.Blink_DOMWindowCrossFrame.get_top(unwrap_jso(this)));
+  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(unwrap_jso(this));
+  void close() => _blink.Blink_DOMWindowCrossFrame.close(this);
   void postMessage(/*SerializedScriptValue*/ message, String targetOrigin, [List messagePorts]) =>
-      _blink.Blink_DOMWindowCrossFrame.postMessage(unwrap_jso(this),
+      _blink.Blink_DOMWindowCrossFrame.postMessage(this,
          convertDartToNative_SerializedScriptValue(message), targetOrigin, messagePorts);
 
   // Implementation support.
@@ -869,9 +862,9 @@
   _HistoryCrossFrame.internal();
 
   // Methods.
-  void back() => _blink.Blink_HistoryCrossFrame.back(unwrap_jso(this));
-  void forward() => _blink.Blink_HistoryCrossFrame.forward(unwrap_jso(this));
-  void go(int distance) => _blink.Blink_HistoryCrossFrame.go(unwrap_jso(this), distance);
+  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";
@@ -881,7 +874,7 @@
   _LocationCrossFrame.internal();
 
   // Fields.
-  set href(String h) => _blink.Blink_LocationCrossFrame.set_href(unwrap_jso(this), h);
+  set href(String h) => _blink.Blink_LocationCrossFrame.set_href(this, h);
 
   // Implementation support.
   String get typeName => "Location";
diff --git a/tools/dom/templates/html/dart2js/html_dart2js.darttemplate b/tools/dom/templates/html/dart2js/html_dart2js.darttemplate
index 30400a1..ead9d63 100644
--- a/tools/dom/templates/html/dart2js/html_dart2js.darttemplate
+++ b/tools/dom/templates/html/dart2js/html_dart2js.darttemplate
@@ -150,7 +150,4 @@
   throw new UnimplementedError();
 }
 
-/// Dartium functions that are a NOOP in dart2js.
-unwrap_jso(dartClass_instance) => dartClass_instance;
-wrap_jso(jsObject) => jsObject;
 createCustomUpgrader(Type customElementClass, $this) => $this;
diff --git a/tools/dom/templates/html/dartium/html_dartium.darttemplate b/tools/dom/templates/html/dartium/html_dartium.darttemplate
index 66a18e0..c92c27e 100644
--- a/tools/dom/templates/html/dartium/html_dartium.darttemplate
+++ b/tools/dom/templates/html/dartium/html_dartium.darttemplate
@@ -37,7 +37,6 @@
 import 'dart:html_common';
 import 'dart:indexed_db';
 import 'dart:indexed_db' show indexed_dbBlinkMap;
-import 'dart:indexed_db' show indexed_dbBlinkFunctionMap;
 import 'dart:isolate';
 import 'dart:js' as js;
 import "dart:convert";
@@ -49,17 +48,14 @@
 import 'dart:typed_data';
 import 'dart:web_gl' as gl;
 import 'dart:web_gl' show web_glBlinkMap;
-import 'dart:web_gl' show web_glBlinkFunctionMap;
 import 'dart:web_sql';
 // Not actually used, but imported since dart:html can generate these objects.
 import 'dart:svg' as svg;
 import 'dart:svg' show svgBlinkMap;
-import 'dart:svg' show svgBlinkFunctionMap;
 import 'dart:svg' show Matrix;
 import 'dart:svg' show SvgSvgElement;
 import 'dart:web_audio' as web_audio;
 import 'dart:web_audio' show web_audioBlinkMap;
-import 'dart:web_audio' show web_audioBlinkFunctionMap;
 import 'dart:_blink' as _blink;
 import 'dart:developer';
 
@@ -118,7 +114,7 @@
   }
 $if DARTIUM
 $if JSINTEROP
-  _window = wrap_jso(js.JsNative.getProperty(js.context, 'window'));
+  _window = js.JsNative.toTypedObject(js.context);
 $else
   _window = _Utils.window();
 $endif
@@ -161,11 +157,19 @@
   'JsObject': () => js.JsObject,
   'JsFunction': () => js.JsFunction,
   'JsArray': () => js.JsArray,
+  // We have to call .instanceRuntimeType as these classes have a private
+  // implementation class defined dynamically at runtime via a patch file.
+  'JSObject': () => js.JSObject.instanceRuntimeType,
+  'JSFunction': () => js.JSFunction.instanceRuntimeType,
+  'JSArray': () => js.JSArray.instanceRuntimeType,
 $!TYPE_MAP
 };
 
 // TODO(leafp): We may want to move this elsewhere if html becomes
 // a package to avoid dartium depending on pkg:html.
+@Deprecated("Internal Use Only")
+getHtmlCreateType(String key) => _getType(key);
+
 Type _getType(String key) {
   var result;
 
@@ -252,102 +256,15 @@
   return null;
 }
 
+// TODO(jacobr): it would be nice to place this in a consistent place for dart2js and dartium.
+_convertNativeToDart_XHR_Response(o) {
+  if (o is Document) {
+    return o;
+  }
+  return convertNativeToDart_SerializedScriptValue(o);
+}
+
 $if JSINTEROP
-// FIXME: Can we make this private?
-@Deprecated("Internal Use Only")
-final htmlBlinkFunctionMap = {
-$!TYPE_FUNCTION_MAP
-};
-
-// TODO(terry): We may want to move this elsewhere if html becomes
-// a package to avoid dartium depending on pkg:html.
-@Deprecated("Internal Use Only")
-getHtmlCreateFunction(String key) {
-  var result;
-
-  // TODO(vsm): Add Cross Frame and JS types here as well.
-
-  // Check the html library.
-  result = _getHtmlFunction(key);
-  if (result != null) {
-    return result;
-  }
-
-  // Check the web gl library.
-  result = _getWebGlFunction(key);
-  if (result != null) {
-    return result;
-  }
-
-  // Check the indexed db library.
-  result = _getIndexDbFunction(key);
-  if (result != null) {
-    return result;
-  }
-
-  // Check the web audio library.
-  result = _getWebAudioFunction(key);
-  if (result != null) {
-    return result;
-  }
-
-  // Check the web sql library.
-  result = _getWebSqlFunction(key);
-  if (result != null) {
-    return result;
-  }
-
-  // Check the svg library.
-  result = _getSvgFunction(key);
-  if (result != null) {
-    return result;
-  }
-
-  return null;
-}
-
-Function _getHtmlFunction(String key) {
-  if (htmlBlinkFunctionMap.containsKey(key)) {
-    return htmlBlinkFunctionMap[key]();
-  }
-  return null;
-}
-
-Function _getWebGlFunction(String key) {
-  if (web_glBlinkFunctionMap.containsKey(key)) {
-    return web_glBlinkFunctionMap[key]();
-  }
-  return null;
-}
-
-Function _getIndexDbFunction(String key) {
-  if (indexed_dbBlinkFunctionMap.containsKey(key)) {
-    return indexed_dbBlinkFunctionMap[key]();
-  }
-  return null;
-}
-
-Function _getWebAudioFunction(String key) {
-  if (web_audioBlinkFunctionMap.containsKey(key)) {
-    return web_audioBlinkFunctionMap[key]();
-  }
-  return null;
-}
-
-Function _getWebSqlFunction(String key) {
-  if (web_sqlBlinkFunctionMap.containsKey(key)) {
-    return web_sqlBlinkFunctionMap[key]();
-  }
-  return null;
-}
-
-Function _getSvgFunction(String key) {
-  if (svgBlinkFunctionMap.containsKey(key)) {
-    return svgBlinkFunctionMap[key]();
-  }
-  return null;
-}
-
 
 /******************************************************************************
  **********                                                          **********
@@ -368,22 +285,14 @@
   var jsObject;
   var tag = "";
   var runtimeType = element.runtimeType;
-  if (runtimeType == HtmlElement) {
-    tag = element.localName;
-  } else if (runtimeType == TemplateElement) {
+  if (runtimeType == TemplateElement) {
     // Data binding with a Dart class.
     tag = element.attributes['is'];
-  } else if (runtimeType == js.JsObject) {
-    // It's a Polymer core element (written in JS).
-    // Make sure it's an element anything else we can ignore.
-    if (element.hasProperty('nodeType') && element['nodeType'] == 1) {
-      if (js.JsNative.callMethod(element, 'hasAttribute', ['is'])) {
-        // It's data binding use the is attribute.
-        tag = js.JsNative.callMethod(element, 'getAttribute', ['is']);
-      } else {
-        // It's a custom element we want the local name.
-        tag = element['localName'];
-      }
+  } else if (element is HtmlElement) {
+    tag = element.attributes['is'];
+    if (tag == null) {
+      // It's a custom element we want the local name.
+      tag = element.localName;
     }
   } else {
     throw new UnsupportedError('Element is incorrect type. Got ${runtimeType}, expected HtmlElement/HtmlTemplate/JsObject.');
@@ -412,12 +321,16 @@
   }
 }
 
+// TODO(jacobr): we shouldn't be generating this call in the dart:html
+// bindings but we are.
+_convertDartToNative_EventTarget(target) => target;
+
 @Deprecated("Internal Use Only")
 Map<String, dynamic> convertNativeObjectToDartMap(js.JsObject jsObject) {
   var result = new Map();
   var keys = js.JsNative.callMethod(js.JsNative.getProperty(js.context, 'Object'), 'keys', [jsObject]);
   for (var key in keys) {
-    result[key] = wrap_jso(js.JsNative.getProperty(jsObject, key));
+    result[key] = js.JsNative.getProperty(jsObject, key);
   }
   return result;
 }
@@ -426,25 +339,7 @@
  * Upgrade the JS HTMLElement to the Dart class.  Used by Dart's Polymer.
  */
 _createCustomUpgrader(Type customElementClass, $this) {
-  var dartClass;
-  try {
-    dartClass = _blink.Blink_Utils.constructElement(customElementClass, $this);
-  } catch (e) {
-    // Did the dartClass get allocated but the created failed?  Otherwise, other
-    // components inside of this failed somewhere (could be JS custom element).
-    if (dartClass != null) {
-      // Yes, mark as didn't upgrade.
-      dartClass._badUpgrade();
-    }
-    throw e;
-  } finally {
-    // Need to remember the Dart class that was created for this custom so
-    // return it and setup the blink_jsObject to the $this that we'll be working
-    // with as we talk to blink.
-    js.setDartHtmlWrapperFor($this, dartClass);
-  }
-
-  return dartClass;
+  return _blink.Blink_Utils.setInstanceInterceptor($this, customElementClass, customElement: true);
 }
 
 $else
diff --git a/tools/dom/templates/html/dartium/indexed_db_dartium.darttemplate b/tools/dom/templates/html/dartium/indexed_db_dartium.darttemplate
index ef3928c..dee0cac 100644
--- a/tools/dom/templates/html/dartium/indexed_db_dartium.darttemplate
+++ b/tools/dom/templates/html/dartium/indexed_db_dartium.darttemplate
@@ -112,10 +112,66 @@
 $!TYPE_MAP
 };
 
-$if JSINTEROP
-// FIXME: Can we make this private?
-@Deprecated("Internal Use Only")
-final indexed_dbBlinkFunctionMap = {
-$!TYPE_FUNCTION_MAP
-};
-$endif
+
+//
+// Per http://www.w3.org/TR/IndexedDB/#key-construct
+//
+// "A value is said to be a valid key if it is one of the following types: Array
+// JavaScript objects [ECMA-262], DOMString [WEBIDL], Date [ECMA-262] or float
+// [WEBIDL]. However Arrays are only valid keys if every item in the array is
+// defined and is a valid key (i.e. sparse arrays can not be valid keys) and if
+// the Array doesn't directly or indirectly contain itself. Any non-numeric
+// properties are ignored, and thus does not affect whether the Array is a valid
+// key. Additionally, if the value is of type float, it is only a valid key if
+// it is not NaN, and if the value is of type Date it is only a valid key if its
+// [[PrimitiveValue]] internal property, as defined by [ECMA-262], is not NaN."
+
+// What is required is to ensure that an Lists in the key are actually
+// JavaScript arrays, and any Dates are JavaScript Dates.
+
+
+/**
+ * Converts a native IDBKey into a Dart object.
+ *
+ * May return the original input.  May mutate the original input (but will be
+ * idempotent if mutation occurs).  It is assumed that this conversion happens
+ * on native IDBKeys on all paths that return IDBKeys from native DOM calls.
+ *
+ * If necessary, JavaScript Dates are converted into Dart Dates.
+ */
+_convertNativeToDart_IDBKey(nativeKey) {
+  containsDate(object) {
+    if (object is DateTime) return true;
+    if (object is List) {
+      for (int i = 0; i < object.length; i++) {
+        if (containsDate(object[i])) return true;
+      }
+    }
+    return false;  // number, string.
+  }
+  if (nativeKey is DateTime) {
+    throw new UnimplementedError('Key containing DateTime');
+  }
+  // TODO: Cache conversion somewhere?
+  return nativeKey;
+}
+
+/**
+ * Converts a Dart object into a valid IDBKey.
+ *
+ * May return the original input.  Does not mutate input.
+ *
+ * If necessary, [dartKey] may be copied to ensure all lists are converted into
+ * JavaScript Arrays and Dart Dates into JavaScript Dates.
+ */
+_convertDartToNative_IDBKey(dartKey) {
+  // TODO: Implement.
+  return dartKey;
+}
+
+
+
+/// May modify original.  If so, action is idempotent.
+_convertNativeToDart_IDBAny(object) {
+  return convertNativeToDart_AcceptStructuredClone(object, mustCopy: false);
+}
\ No newline at end of file
diff --git a/tools/dom/templates/html/dartium/svg_dartium.darttemplate b/tools/dom/templates/html/dartium/svg_dartium.darttemplate
index ab2a99d..17f119b 100644
--- a/tools/dom/templates/html/dartium/svg_dartium.darttemplate
+++ b/tools/dom/templates/html/dartium/svg_dartium.darttemplate
@@ -28,11 +28,3 @@
 final svgBlinkMap = {
 $!TYPE_MAP
 };
-
-$if JSINTEROP
-// FIXME: Can we make this private?
-@Deprecated("Internal Use Only")
-final svgBlinkFunctionMap = {
-$!TYPE_FUNCTION_MAP
-};
-$endif
diff --git a/tools/dom/templates/html/dartium/web_audio_dartium.darttemplate b/tools/dom/templates/html/dartium/web_audio_dartium.darttemplate
index 43b42c9..b9c02a7 100644
--- a/tools/dom/templates/html/dartium/web_audio_dartium.darttemplate
+++ b/tools/dom/templates/html/dartium/web_audio_dartium.darttemplate
@@ -22,11 +22,3 @@
 final web_audioBlinkMap = {
 $!TYPE_MAP
 };
-
-$if JSINTEROP
-// FIXME: Can we make this private?
-@Deprecated("Internal Use Only")
-final web_audioBlinkFunctionMap = {
-$!TYPE_FUNCTION_MAP
-};
-$endif
diff --git a/tools/dom/templates/html/dartium/web_gl_dartium.darttemplate b/tools/dom/templates/html/dartium/web_gl_dartium.darttemplate
index 7cc4289..2258b2e 100644
--- a/tools/dom/templates/html/dartium/web_gl_dartium.darttemplate
+++ b/tools/dom/templates/html/dartium/web_gl_dartium.darttemplate
@@ -24,11 +24,3 @@
 final web_glBlinkMap = {
 $!TYPE_MAP
 };
-
-$if JSINTEROP
-// FIXME: Can we make this private?
-@Deprecated("Internal Use Only")
-final web_glBlinkFunctionMap = {
-$!TYPE_FUNCTION_MAP
-};
-$endif
diff --git a/tools/dom/templates/html/dartium/web_sql_dartium.darttemplate b/tools/dom/templates/html/dartium/web_sql_dartium.darttemplate
index 21ef127..03135a3 100644
--- a/tools/dom/templates/html/dartium/web_sql_dartium.darttemplate
+++ b/tools/dom/templates/html/dartium/web_sql_dartium.darttemplate
@@ -30,11 +30,3 @@
 final web_sqlBlinkMap = {
 $!TYPE_MAP
 };
-
-$if JSINTEROP
-// FIXME: Can we make this private?
-@Deprecated("Internal Use Only")
-final web_sqlBlinkFunctionMap = {
-$!TYPE_FUNCTION_MAP
-};
-$endif
\ No newline at end of file
diff --git a/tools/dom/templates/html/impl/impl_Blob.darttemplate b/tools/dom/templates/html/impl/impl_Blob.darttemplate
index 0b12452..e2617c2 100644
--- a/tools/dom/templates/html/impl/impl_Blob.darttemplate
+++ b/tools/dom/templates/html/impl/impl_Blob.darttemplate
@@ -31,15 +31,15 @@
     // TODO: any coercions on the elements of blobParts, e.g. coerce a typed
     // array to ArrayBuffer if it is a total view.
 
-    var parts = convertDartToNative_List(blobParts.map(unwrap_jso).toList());
+    var parts = convertDartToNative_List(blobParts);
     if (type == null && endings == null) {
-      return wrap_jso(_blink.BlinkBlob.instance.constructorCallback_1_(parts));
+      return _blink.BlinkBlob.instance.constructorCallback_1_(parts);
     }
     var bag = {};
     if (type != null) bag['type'] = type;
     if (endings != null) bag['endings'] = endings;
-    return wrap_jso(_blink.BlinkBlob.instance.constructorCallback_2_(parts,
-        convertDartToNative_Dictionary(bag)));
+    return _blink.BlinkBlob.instance.constructorCallback_2_(parts,
+        convertDartToNative_Dictionary(bag));
   }
   $endif
 $endif
diff --git a/tools/dom/templates/html/impl/impl_CSSStyleDeclaration.darttemplate b/tools/dom/templates/html/impl/impl_CSSStyleDeclaration.darttemplate
index 7cb4628..495011e2 100644
--- a/tools/dom/templates/html/impl/impl_CSSStyleDeclaration.darttemplate
+++ b/tools/dom/templates/html/impl/impl_CSSStyleDeclaration.darttemplate
@@ -63,7 +63,7 @@
 $if DARTIUM
   bool _hasProperty(String propertyName) =>
   $if JSINTEROP
-      _blink.BlinkCSSStyleDeclaration.instance.$__propertyQuery___Callback_1_(unwrap_jso(this), propertyName) != null;
+      _blink.BlinkCSSStyleDeclaration.instance.$__propertyQuery___Callback_1_(this, propertyName);
   $else
       _blink.BlinkCSSStyleDeclaration.$__propertyQuery___Callback_1(this, propertyName);
   $endif
diff --git a/tools/dom/templates/html/impl/impl_CustomEvent.darttemplate b/tools/dom/templates/html/impl/impl_CustomEvent.darttemplate
index e16b74a..b2a787e 100644
--- a/tools/dom/templates/html/impl/impl_CustomEvent.darttemplate
+++ b/tools/dom/templates/html/impl/impl_CustomEvent.darttemplate
@@ -23,9 +23,7 @@
     // first-chance exceptions. Can expand this list in the future as needed.
     if (detail is List || detail is Map || detail is String || detail is num) {
       try {
-$if DART2JS
         detail = convertDartToNative_SerializedScriptValue(detail);
-$endif
         e._initCustomEvent(type, canBubble, cancelable, detail);
       } catch(_) {
         e._initCustomEvent(type, canBubble, cancelable, null);
@@ -34,11 +32,6 @@
       e._initCustomEvent(type, canBubble, cancelable, null);
     }
 
-$if DARTIUM
-    // Need for identity.
-    js.setDartHtmlWrapperFor(e.blink_jsObject, e);
-
-$endif
     return e;
   }
 
diff --git a/tools/dom/templates/html/impl/impl_DataTransferItemList.darttemplate b/tools/dom/templates/html/impl/impl_DataTransferItemList.darttemplate
index 31455d6..ab0442a 100644
--- a/tools/dom/templates/html/impl/impl_DataTransferItemList.darttemplate
+++ b/tools/dom/templates/html/impl/impl_DataTransferItemList.darttemplate
@@ -15,7 +15,7 @@
     // TODO(alanknight): I think that all the __getter__ generators should just
     // do property access, but that's major surgery. This one is a problem, so
     // just hard-code it for now.
-    return _blink.Blink_JsNative_DomException.getProperty(unwrap_jso(this), index);
+    return _blink.Blink_JsNative_DomException.getProperty(this, index);
 $endif
   }
 
diff --git a/tools/dom/templates/html/impl/impl_Document.darttemplate b/tools/dom/templates/html/impl/impl_Document.darttemplate
index ca0705a..9dae6c7 100644
--- a/tools/dom/templates/html/impl/impl_Document.darttemplate
+++ b/tools/dom/templates/html/impl/impl_Document.darttemplate
@@ -68,23 +68,9 @@
         ? _createElement_2(tagName)
         : _createElement(tagName, typeExtension);
 $else
-    var newElement = (typeExtension == null) ?
-      _blink.BlinkDocument.instance.createElement_Callback_1_(unwrap_jso(this), tagName) :
-      _blink.BlinkDocument.instance.createElement_Callback_2_(unwrap_jso(this), tagName, typeExtension);
-
-    var wrapped = js.getDartHtmlWrapperFor(newElement);  // Here's our Dart class.
-    if (wrapped != null) {
-      wrapped.blink_jsObject = newElement;
-    } else {
-      wrapped = wrap_jso(newElement);
-      if (wrapped == null) {
-        wrapped = wrap_jso_custom_element(newElement);
-      } else {
-        js.setDartHtmlWrapperFor(wrapped.blink_jsObject, wrapped);
-      }
-    }
-
-    return wrapped;
+    return (typeExtension == null) ?
+      _blink.BlinkDocument.instance.createElement_Callback_1_(this, tagName) :
+      _blink.BlinkDocument.instance.createElement_Callback_2_(this, tagName, typeExtension);
 $endif
   }
 
@@ -110,25 +96,9 @@
         ? _createElementNS_2(namespaceURI, qualifiedName)
         : _createElementNS(namespaceURI, qualifiedName, typeExtension);
 $else
-    var newElement = (typeExtension == null) ?
-      _blink.BlinkDocument.instance.createElementNS_Callback_2_(unwrap_jso(this), namespaceURI, qualifiedName) :
-      _blink.BlinkDocument.instance.createElementNS_Callback_3_(unwrap_jso(this), namespaceURI, qualifiedName, typeExtension);
-
-    var wrapped;
-
-    wrapped = js.getDartHtmlWrapperFor(newElement);  // Here's our Dart class.
-    if (wrapped != null) {
-      wrapped.blink_jsObject = newElement;
-    } else {
-      wrapped = wrap_jso(newElement);
-      if (wrapped == null) {
-        wrapped = wrap_jso_custom_element(newElement);
-      } else {
-        js.setDartHtmlWrapperFor(wrapped.blink_jsObject, wrapped);  // Here's our Dart class.
-      }
-    }
-
-    return wrapped;
+    return (typeExtension == null) ?
+      _blink.BlinkDocument.instance.createElementNS_Callback_2_(this, namespaceURI, qualifiedName) :
+      _blink.BlinkDocument.instance.createElementNS_Callback_3_(this, namespaceURI, qualifiedName, typeExtension);    
 $endif
   }
 
diff --git a/tools/dom/templates/html/impl/impl_DocumentType.darttemplate b/tools/dom/templates/html/impl/impl_DocumentType.darttemplate
index 88e7e6e..aad4158 100644
--- a/tools/dom/templates/html/impl/impl_DocumentType.darttemplate
+++ b/tools/dom/templates/html/impl/impl_DocumentType.darttemplate
@@ -9,8 +9,8 @@
 $!MEMBERS
 $if DARTIUM
   // Override this methods for Dartium _DocumentType can't be abstract.
-  Element get nextElementSibling => wrap_jso(_blink.BlinkDocumentType.instance.nextElementSibling_Getter_(unwrap_jso(this)));
-  Element get previousElementSibling => wrap_jso(_blink.BlinkDocumentType.instance.previousElementSibling_Getter_(unwrap_jso(this)));
+  Element get nextElementSibling => _blink.BlinkDocumentType.instance.nextElementSibling_Getter_(this);
+  Element get previousElementSibling => _blink.BlinkDocumentType.instance.previousElementSibling_Getter_(this);
 $endif
 }
 
diff --git a/tools/dom/templates/html/impl/impl_Element.darttemplate b/tools/dom/templates/html/impl/impl_Element.darttemplate
index 4b8173b..399e90d 100644
--- a/tools/dom/templates/html/impl/impl_Element.darttemplate
+++ b/tools/dom/templates/html/impl/impl_Element.darttemplate
@@ -380,7 +380,15 @@
    *     }
    *     document.registerElement('x-custom', CustomElement);
    */
+$if DART2JS
   Element.created() : super._created();
+$else
+  Element.created() : super._created() {
+    // Validate that this is a custom element & possibly perform additional
+    // initialization.
+    _blink.Blink_Utils.initializeCustomElement(this);
+  }
+$endif
 
   /**
    * Creates the HTML element specified by the tag name.
@@ -1483,24 +1491,20 @@
   static var _htmlCollection = js.context["HTMLCollection"];
   static var _nodeList = js.context["NodeList"];
 
+  static const _evilAttributeNames =
+      const ['attributes', 'lastChild', 'children', 'childNodes'];
+
   static bool _hasCorruptedAttributes(Element element) {
-    var attributes = unwrap_jso(element)["attributes"];
-    if (!attributes.instanceof(_namedNodeMap)) {
-      return true;
-    }
-    var childNodes = unwrap_jso(element.childNodes);
-    var length = childNodes["length"];
-    var lastChild = unwrap_jso(element.lastChild);
-    if (null != lastChild &&
-        lastChild != childNodes[length - 1]) {
-      return true;
-    }
-    var children = unwrap_jso(element._children);
-    if (null != children) { // On Safari, children can apparently be null.
-      if (!children.instanceof(_htmlCollection) ||
-          children.instanceof(_nodeList)) {
-	return true;
-      }
+    // We have trusted access to children and to attributes of objects,
+    // so we can inspect directly for attempts at DOM clobbering.
+    var child = element.firstChild;
+    while( child != null)  {
+      if (child is Element) {
+      for (var attributeName in ["id", "name"]) {
+        var childAttribute = child.getAttribute(attributeName);
+        if (_evilAttributeNames.contains(childAttribute)) return true;
+      }}
+      child = child.nextNode;
     }
     return false;
   }
@@ -1509,6 +1513,7 @@
   static bool _hasCorruptedAttributesAdditionalCheck(Element element) => false;
 $endif
 
+$if DART2JS
   static String _safeTagName(element) {
     String result = 'element tag unavailable';
     try {
@@ -1518,6 +1523,15 @@
     } catch (e) {}
     return result;
   }
+$else
+  static String _safeTagName(element) {
+    try {
+      // Safe as we plumb directly to a C++ native method.
+      return element.tagName;
+    } catch (e) {}
+    return 'element tag unavailable';
+  }
+$endif  
 
 $if DART2JS
   @DomName('Element.offsetParent')
@@ -1570,52 +1584,52 @@
 
 $else
   // Need to explicitly delegate because Element is no longer abstract for Dartium.
-  bool get isContentEditable => _blink.BlinkHTMLElement.instance.isContentEditable_Getter_(unwrap_jso(this));
-  void click() => _blink.BlinkHTMLElement.instance.click_Callback_0_(unwrap_jso(this));
+  bool get isContentEditable => _blink.BlinkHTMLElement.instance.isContentEditable_Getter_(this);
+  void click() => _blink.BlinkHTMLElement.instance.click_Callback_0_(this);
 
   @DomName('Element.offsetParent')
   @DocsEditable()
-  Element get offsetParent => wrap_jso(_blink.BlinkElement.instance.offsetParent_Getter_(unwrap_jso(this)));
+  Element get offsetParent => _blink.BlinkElement.instance.offsetParent_Getter_(this);
 
   @DomName('Element.offsetHeight')
   @DocsEditable()
-  int get offsetHeight => _blink.BlinkElement.instance.offsetHeight_Getter_(unwrap_jso(this));
+  int get offsetHeight => _blink.BlinkElement.instance.offsetHeight_Getter_(this);
 
   @DomName('Element.offsetLeft')
   @DocsEditable()
-  int get offsetLeft => _blink.BlinkElement.instance.offsetLeft_Getter_(unwrap_jso(this));
+  int get offsetLeft => _blink.BlinkElement.instance.offsetLeft_Getter_(this);
 
   @DomName('Element.offsetTop')
   @DocsEditable()
-  int get offsetTop => _blink.BlinkElement.instance.offsetTop_Getter_(unwrap_jso(this));
+  int get offsetTop => _blink.BlinkElement.instance.offsetTop_Getter_(this);
 
   @DomName('Element.offsetWidth')
   @DocsEditable()
-  int get offsetWidth => _blink.BlinkElement.instance.offsetWidth_Getter_(unwrap_jso(this));
+  int get offsetWidth => _blink.BlinkElement.instance.offsetWidth_Getter_(this);
 
   @DomName('Element.scrollHeight')
   @DocsEditable()
-  int get scrollHeight => _blink.BlinkElement.instance.scrollHeight_Getter_(unwrap_jso(this)).round();
+  int get scrollHeight => _blink.BlinkElement.instance.scrollHeight_Getter_(this).round();
 
   @DomName('Element.scrollLeft')
   @DocsEditable()
-  int get scrollLeft => _blink.BlinkElement.instance.scrollLeft_Getter_(unwrap_jso(this)).round();
+  int get scrollLeft => _blink.BlinkElement.instance.scrollLeft_Getter_(this).round();
 
   @DomName('Element.scrollLeft')
   @DocsEditable()
-  set scrollLeft(int value) => _blink.BlinkElement.instance.scrollLeft_Setter_(unwrap_jso(this), value.round());
+  set scrollLeft(int value) => _blink.BlinkElement.instance.scrollLeft_Setter_(this, value.round());
 
   @DomName('Element.scrollTop')
   @DocsEditable()
-  int get scrollTop => _blink.BlinkElement.instance.scrollTop_Getter_(unwrap_jso(this)).round();
+  int get scrollTop => _blink.BlinkElement.instance.scrollTop_Getter_(this).round();
 
   @DomName('Element.scrollTop')
   @DocsEditable()
-  set scrollTop(int value) => _blink.BlinkElement.instance.scrollTop_Setter_(unwrap_jso(this), value.round());
+  set scrollTop(int value) => _blink.BlinkElement.instance.scrollTop_Setter_(this, value.round());
 
   @DomName('Element.scrollWidth')
   @DocsEditable()
-  int get scrollWidth => _blink.BlinkElement.instance.scrollWidth_Getter_(unwrap_jso(this)).round();
+  int get scrollWidth => _blink.BlinkElement.instance.scrollWidth_Getter_(this).round();
 $endif
 
 $!MEMBERS
diff --git a/tools/dom/templates/html/impl/impl_FileReader.darttemplate b/tools/dom/templates/html/impl/impl_FileReader.darttemplate
index ba5278f..d698e37 100644
--- a/tools/dom/templates/html/impl/impl_FileReader.darttemplate
+++ b/tools/dom/templates/html/impl/impl_FileReader.darttemplate
@@ -13,7 +13,7 @@
 $if DART2JS
     var res = JS('Null|String|NativeByteBuffer', '#.result', this);
 $else
-    var res = _blink.BlinkFileReader.instance.result_Getter_(unwrap_jso(this));
+    var res = _blink.BlinkFileReader.instance.result_Getter_(this);
 $endif
     if (res is ByteBuffer) {
       return new Uint8List.view(res);
diff --git a/tools/dom/templates/html/impl/impl_HTMLAudioElement.darttemplate b/tools/dom/templates/html/impl/impl_HTMLAudioElement.darttemplate
index 838a8be..e8da200 100644
--- a/tools/dom/templates/html/impl/impl_HTMLAudioElement.darttemplate
+++ b/tools/dom/templates/html/impl/impl_HTMLAudioElement.darttemplate
@@ -10,9 +10,9 @@
 $if JSINTEROP
   factory AudioElement([String src]) {
     if (src == null)
-      return wrap_jso(_blink.BlinkHTMLAudioElement.instance.constructorCallback_0_());
+      return _blink.BlinkHTMLAudioElement.instance.constructorCallback_0_();
     else
-      return wrap_jso(_blink.BlinkHTMLAudioElement.instance.constructorCallback_1_(src));
+      return _blink.BlinkHTMLAudioElement.instance.constructorCallback_1_(src);
   }
 $else
   factory AudioElement([String src]) => new AudioElement._(src);
diff --git a/tools/dom/templates/html/impl/impl_HTMLDocument.darttemplate b/tools/dom/templates/html/impl/impl_HTMLDocument.darttemplate
index 61fc715..7768aad 100644
--- a/tools/dom/templates/html/impl/impl_HTMLDocument.darttemplate
+++ b/tools/dom/templates/html/impl/impl_HTMLDocument.darttemplate
@@ -413,9 +413,6 @@
       }
       var elemProto = js.JsNative.callMethod(js.JsNative.getProperty(js.context, 'Object'), "create", [js.JsNative.getProperty(baseElement, 'prototype')]);
 
-      // Remember for any upgrading done in wrap_jso.
-      addCustomElementType(tag, customElementClass, extendsTag);
-
       // TODO(terry): Hack to stop recursion re-creating custom element when the
       //              created() constructor of the custom element does e.g.,
       //
@@ -427,77 +424,42 @@
       //              until stack overflow.
       //
       //              See https://github.com/dart-lang/sdk/issues/23666
-      int creating = 0;
+      int creating = 0; // TODO(jacobr): I think I broke thise case. Will fix monday.
 
       // If any JS code is hooked we want to call it too.
-      var oldCreatedCallback = elemProto['createdCallback'];
-      var oldAttributeChangedCallback = elemProto['attributeChangedCallback'];
-      var oldAttachedCallback = elemProto['attachedCallback'];
-      var oldDetachedCallback = elemProto['detachedCallback'];
+      var oldCreatedCallback = js.JsNative.getProperty(elemProto, 'createdCallback');
+      var oldAttributeChangedCallback = js.JsNative.getProperty(elemProto, 'attributeChangedCallback');
+      var oldAttachedCallback = js.JsNative.getProperty(elemProto, 'attachedCallback');
+      var oldDetachedCallback = js.JsNative.getProperty(elemProto, 'detachedCallback');
 
-      // TODO(jacobr): warning:
-      elemProto['createdCallback'] = js.JsNative.withThis(($this) {
-        if (_getJSClassName(reflectClass(customElementClass).superclass) != null && creating < 2) {
-          creating++;
-
-          var dartClass;
-          try {
-            if (extendsTag != null) {
-              // If we're extending a native element then create that element.
-              // Then upgrade that element to the customElementClass through
-              // normal flow.
-              dartClass = document.createElement(extendsTag);
-              js.setDartHtmlWrapperFor($this, dartClass);
-              dartClass.blink_jsObject = $this;
-            }
-
-            // Upgrade to the CustomElement Dart class.
-            dartClass = _blink.Blink_Utils.constructElement(customElementClass, $this);
-          } catch (e) {
-            // Got a problem make it an HtmlElement and rethrow the error.
-            dartClass = HtmlElement.internalCreateHtmlElement();
-            // We need to remember the JS object (because constructElement failed
-            // it normally sets up the blink_jsObject.
-            dartClass.blink_jsObject = $this;
-
-            // Mark to only try this once don't try upgrading from HtmlElement
-            // to the user's Dart class - we had a problem.
-            dartClass._badUpgrade();
-            throw e;
-          } finally {
-            // Need to remember the Dart class that was created for this custom so
-            // return it and setup the blink_jsObject to the $this that we'll be working
-            // with as we talk to blink.
-            js.setDartHtmlWrapperFor($this, dartClass);
-
-            creating--;
-          }
-        }
-
+      js.JsNative.setProperty(elemProto, 'createdCallback', js.allowInteropCaptureThis(($this) {
+        // The created callback has already been called by the very act of passing a JS
+        // custom element from JS to Dart.
         if (oldCreatedCallback != null)
-          oldCreatedCallback.apply([], thisArg: unwrap_jso($this));
-      });
-      elemProto['attributeChangedCallback'] = new js.JsFunction.withThis(($this, attrName, oldVal, newVal) {
+          oldCreatedCallback.apply([], thisArg: $this);
+      }));
+      js.JsNative.setProperty(elemProto, 'attributeChangedCallback', js.allowInteropCaptureThis(($this, attrName, oldVal, newVal) {
         $this.attributeChanged(attrName, oldVal, newVal);
 
         if (oldAttributeChangedCallback != null)
-          oldAttributeChangedCallback.apply([], thisArg: unwrap_jso($this));
-      });
-      elemProto['attachedCallback'] = new js.JsFunction.withThis(($this) {
+          oldAttributeChangedCallback.apply([], thisArg: $this);
+      }));
+      js.JsNative.setProperty(elemProto, 'attachedCallback', js.allowInteropCaptureThis(($this) {
         $this.attached();
 
         if (oldAttachedCallback != null)
-          oldAttachedCallback.apply([], thisArg: unwrap_jso($this));
-      });
-      elemProto['detachedCallback'] = new js.JsFunction.withThis(($this) {
+          oldAttachedCallback.apply([], thisArg: $this);
+      }));
+      js.JsNative.setProperty(elemProto, 'detachedCallback', js.allowInteropCaptureThis(($this) {
         $this.detached();
 
         if (oldDetachedCallback != null)
-          oldDetachedCallback.apply([], thisArg: unwrap_jso($this));
-      });
+          oldDetachedCallback.apply([], thisArg: $this);
+      }));
       // document.registerElement('x-foo', {prototype: elemProto, extends: extendsTag});
       var jsMap = new js.JsObject.jsify({'prototype': elemProto, 'extends': extendsTag});
-      js.JsNative.callMethod(js.JsNative.getProperty(js.context, 'document'), 'registerElement', [tag, jsMap]);
+      _blink.Blink_Utils.defineInterceptorCustomElement(elemProto, customElementClass);
+      js.JsNative.callMethod(document, 'registerElement', [tag, jsMap]);
     }
 $endif
   }
diff --git a/tools/dom/templates/html/impl/impl_HTMLElement.darttemplate b/tools/dom/templates/html/impl/impl_HTMLElement.darttemplate
index 1d12631..2f16d16 100644
--- a/tools/dom/templates/html/impl/impl_HTMLElement.darttemplate
+++ b/tools/dom/templates/html/impl/impl_HTMLElement.darttemplate
@@ -7,18 +7,4 @@
 @DocsEditable()
 $(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
 $!MEMBERS
-$if DARTIUM
-  // Flags to only try upgrading once. If there's a failure don't try upgrading
-  // anymore.
-  bool _badUpgradeOccurred = false;
-
-  /// Required for SDK Infrastructure. Internal use only.
-  ///
-  /// Did this encounter a failure attempting to upgrade to
-  /// a custom element.
-  @Deprecated("Required for SDK Infrastructure. Internal use only.")
-  bool get isBadUpgrade => _badUpgradeOccurred;
-
-  void _badUpgrade() { _badUpgradeOccurred = true; }
-$endif
 }
diff --git a/tools/dom/templates/html/impl/impl_IDBDatabase.darttemplate b/tools/dom/templates/html/impl/impl_IDBDatabase.darttemplate
index 8a74ad3..3d396ef 100644
--- a/tools/dom/templates/html/impl/impl_IDBDatabase.darttemplate
+++ b/tools/dom/templates/html/impl/impl_IDBDatabase.darttemplate
@@ -72,14 +72,14 @@
     if (storeName_OR_storeNames == null) {
       throw new ArgumentError("stores may not be null in transaction");
     } else if (storeName_OR_storeNames is String || storeName_OR_storeNames is DomStringList) {
-      names = unwrap_jso(storeName_OR_storeNames);
+      names = storeName_OR_storeNames;
     } else if (storeName_OR_storeNames is List<String>) {
       names = convertDartToNative_List(storeName_OR_storeNames);
     } else {
       throw new ArgumentError("Invalid store(s) $store_Name_OR_storeNames");
     }
 
-    return wrap_jso(_blink.BlinkIDBDatabase.instance.transaction_Callback_2_(unwrap_jso(this), names, mode));
+    return _blink.BlinkIDBDatabase.instance.transaction_Callback_2_(this, names, mode);
   }
 
   Transaction transactionList(List<String> storeNames, String mode) => transaction(storeNames, mode);
diff --git a/tools/dom/templates/html/impl/impl_MessageEvent.darttemplate b/tools/dom/templates/html/impl/impl_MessageEvent.darttemplate
index 19d77d1..1b13a76 100644
--- a/tools/dom/templates/html/impl/impl_MessageEvent.darttemplate
+++ b/tools/dom/templates/html/impl/impl_MessageEvent.darttemplate
@@ -35,7 +35,7 @@
   @DomName('MessageEvent.data')
   @DocsEditable()
   dynamic get data => convertNativeToDart_SerializedScriptValue(
-      _blink.BlinkMessageEvent.instance.data_Getter_(unwrap_jso(this)));
+      _blink.BlinkMessageEvent.instance.data_Getter_(this));
 
 $else
   // TODO(alanknight): This really should be generated by the
diff --git a/tools/dom/templates/html/impl/impl_MutationObserver.darttemplate b/tools/dom/templates/html/impl/impl_MutationObserver.darttemplate
index de07dcb..8a3e409 100644
--- a/tools/dom/templates/html/impl/impl_MutationObserver.darttemplate
+++ b/tools/dom/templates/html/impl/impl_MutationObserver.darttemplate
@@ -20,13 +20,7 @@
   }
 $if DARTIUM
   @DocsEditable()
-  $if JSINTEROP
-  static MutationObserver _create(callback) => wrap_jso(_blink.BlinkMutationObserver.instance.constructorCallback_1_((mutations, observer) {
-    callback(wrap_jso(mutations), wrap_jso(observer));
-  }));
-  $else
   static MutationObserver _create(callback) => _blink.BlinkMutationObserver.instance.constructorCallback_1_(callback);
-  $endif
 $endif
 
   /**
diff --git a/tools/dom/templates/html/impl/impl_Node.darttemplate b/tools/dom/templates/html/impl/impl_Node.darttemplate
index 17bc601..4362733 100644
--- a/tools/dom/templates/html/impl/impl_Node.darttemplate
+++ b/tools/dom/templates/html/impl/impl_Node.darttemplate
@@ -200,14 +200,7 @@
 $if DART2JS
   Node._created() : super._created();
 $else
-  Node._created() : super._created() {
-    // By this point blink_jsObject should be setup if it's not then we weren't
-    // called by the registerElement createdCallback - probably created() was
-    // called directly which is verboten.
-    if (this.blink_jsObject == null) {
-      throw new DomException.jsInterop("the created constructor cannot be called directly");
-    }
-  }
+  Node._created() : super._created();
 $endif
 
   /**
@@ -304,7 +297,7 @@
    */
   @DomName('Node.childNodes')
   @DocsEditable()
-  List<Node> get childNodes => wrap_jso(_blink.BlinkNode.instance.childNodes_Getter_(unwrap_jso(this)));
+  List<Node> get childNodes => _blink.BlinkNode.instance.childNodes_Getter_(this);
 $else
   /**
    * A list of this node's children.
diff --git a/tools/dom/templates/html/impl/impl_SVGCursorElement.darttemplate b/tools/dom/templates/html/impl/impl_SVGCursorElement.darttemplate
index 1aa46f4..9983a3e 100644
--- a/tools/dom/templates/html/impl/impl_SVGCursorElement.darttemplate
+++ b/tools/dom/templates/html/impl/impl_SVGCursorElement.darttemplate
@@ -9,11 +9,11 @@
 $!MEMBERS
 $if DARTIUM
   // Override these methods for Dartium _SVGCursorElement can't be abstract.
-  StringList get requiredExtensions => wrap_jso(_blink.BlinkSVGCursorElement.instance.requiredExtensions_Getter_(unwrap_jso(this)));
-  StringList get requiredFeatures => wrap_jso(_blink.BlinkSVGCursorElement.instance.requiredFeatures_Getter_(unwrap_jso(this)));
-  StringList get systemLanguage => wrap_jso(_blink.BlinkSVGCursorElement.instance.systemLanguage_Getter_(unwrap_jso(this)));
-  AnimatedString get href => wrap_jso(_blink.BlinkSVGCursorElement.instance.href_Getter_(unwrap_jso(this)));
-  bool hasExtension(String extension) => _blink.BlinkSVGCursorElement.instance.hasExtension_Callback_1_(unwrap_jso(this), extension);
+  StringList get requiredExtensions => _blink.BlinkSVGCursorElement.instance.requiredExtensions_Getter_(this);
+  StringList get requiredFeatures => _blink.BlinkSVGCursorElement.instance.requiredFeatures_Getter_(this);
+  StringList get systemLanguage => _blink.BlinkSVGCursorElement.instance.systemLanguage_Getter_(this);
+  AnimatedString get href => _blink.BlinkSVGCursorElement.instance.href_Getter_(this);
+  bool hasExtension(String extension) => _blink.BlinkSVGCursorElement.instance.hasExtension_Callback_1_(this, extension);
 $endif
 }
 
diff --git a/tools/dom/templates/html/impl/impl_SVGElement.darttemplate b/tools/dom/templates/html/impl/impl_SVGElement.darttemplate
index b41f7ec..fec3eb6 100644
--- a/tools/dom/templates/html/impl/impl_SVGElement.darttemplate
+++ b/tools/dom/templates/html/impl/impl_SVGElement.darttemplate
@@ -146,18 +146,8 @@
 
 $if JSINTEROP
   set _svgClassName(AnimatedString value) =>
-      _blink.BlinkSVGElement.instance.className_Setter_(unwrap_jso(this), unwrap_jso(value));
+      _blink.BlinkSVGElement.instance.className_Setter_(this, value);
 
-  String get className => _svgClassName.baseVal;
-
-  // Unbelievable hack. We can't create an SvgAnimatedString, but we can get
-  // the existing one and change its baseVal. Then we call the blink setter directly
-  // TODO(alanknight): Handle suppressing the SVGAnimated<*> better
-  set className(String s) {
-    var oldClass = _svgClassName;
-    oldClass.baseVal = s;
-    _svgClassName = oldClass;
-  }
 $endif
 $!MEMBERS
 }
diff --git a/tools/dom/templates/html/impl/impl_SVGFEDropShadowElement.darttemplate b/tools/dom/templates/html/impl/impl_SVGFEDropShadowElement.darttemplate
index 96363a8..6f51e04 100644
--- a/tools/dom/templates/html/impl/impl_SVGFEDropShadowElement.darttemplate
+++ b/tools/dom/templates/html/impl/impl_SVGFEDropShadowElement.darttemplate
@@ -9,11 +9,11 @@
 $!MEMBERS
 $if DARTIUM
   // Override these methods for Dartium _SVGFEDropShadowElement can't be abstract.
-  AnimatedLength get height => wrap_jso(_blink.BlinkSVGFEDropShadowElement.instance.height_Getter_(unwrap_jso(this)));
-  AnimatedString get result => wrap_jso(_blink.BlinkSVGFEDropShadowElement.instance.result_Getter_(unwrap_jso(this)));
-  AnimatedLength get width => wrap_jso(_blink.BlinkSVGFEDropShadowElement.instance.width_Getter_(unwrap_jso(this)));
-  AnimatedLength get x => wrap_jso(_blink.BlinkSVGFEDropShadowElement.instance.x_Getter_(unwrap_jso(this)));
-  AnimatedLength get y => wrap_jso(_blink.BlinkSVGFEDropShadowElement.instance.y_Getter_(unwrap_jso(this)));
+  AnimatedLength get height => _blink.BlinkSVGFEDropShadowElement.instance.height_Getter_(this);
+  AnimatedString get result => _blink.BlinkSVGFEDropShadowElement.instance.result_Getter_(this);
+  AnimatedLength get width => _blink.BlinkSVGFEDropShadowElement.instance.width_Getter_(this);
+  AnimatedLength get x => _blink.BlinkSVGFEDropShadowElement.instance.x_Getter_(this);
+  AnimatedLength get y => _blink.BlinkSVGFEDropShadowElement.instance.y_Getter_(this);
 $endif
 }
 
diff --git a/tools/dom/templates/html/impl/impl_SVGGlyphRefElement.darttemplate b/tools/dom/templates/html/impl/impl_SVGGlyphRefElement.darttemplate
index 4c88084..fd1178e 100644
--- a/tools/dom/templates/html/impl/impl_SVGGlyphRefElement.darttemplate
+++ b/tools/dom/templates/html/impl/impl_SVGGlyphRefElement.darttemplate
@@ -9,7 +9,7 @@
 $!MEMBERS
 $if DARTIUM
   // Override these methods for Dartium _SVGGlyphRefElement can't be abstract.
-  AnimatedString get href => wrap_jso(_blink.BlinkSVGGlyphRefElement.instance.href_Getter_(unwrap_jso(this)));
+  AnimatedString get href => _blink.BlinkSVGGlyphRefElement.instance.href_Getter_(this);
 $endif
 }
 
diff --git a/tools/dom/templates/html/impl/impl_SVGMPathElement.darttemplate b/tools/dom/templates/html/impl/impl_SVGMPathElement.darttemplate
index 59e012e..649cbcf 100644
--- a/tools/dom/templates/html/impl/impl_SVGMPathElement.darttemplate
+++ b/tools/dom/templates/html/impl/impl_SVGMPathElement.darttemplate
@@ -9,7 +9,7 @@
 $!MEMBERS
 $if DARTIUM
   // Override these methods for Dartium _SVGMPathElement can't be abstract.
-  AnimatedString get href => wrap_jso(_blink.BlinkSVGMPathElement.instance.href_Getter_(unwrap_jso(this)));
+  AnimatedString get href => _blink.BlinkSVGMPathElement.instance.href_Getter_(this);
 $endif
 }
 
diff --git a/tools/dom/templates/html/impl/impl_ServiceWorkerMessageEvent.darttemplate b/tools/dom/templates/html/impl/impl_ServiceWorkerMessageEvent.darttemplate
index 42a803f..4cfa667 100644
--- a/tools/dom/templates/html/impl/impl_ServiceWorkerMessageEvent.darttemplate
+++ b/tools/dom/templates/html/impl/impl_ServiceWorkerMessageEvent.darttemplate
@@ -17,7 +17,7 @@
   @DomName('ServiceWorkerMessageEvent.data')
   @DocsEditable()
   dynamic get data => convertNativeToDart_SerializedScriptValue(
-      _blink.BlinkMessageEvent.instance.data_Getter_(unwrap_jso(this)));
+      _blink.BlinkMessageEvent.instance.data_Getter_(this));
 $else
   // TODO(alanknight): This really should be generated by the
   // _OutputConversion in the systemnative.py script, but that doesn't
diff --git a/tools/dom/templates/html/impl/impl_Touch.darttemplate b/tools/dom/templates/html/impl/impl_Touch.darttemplate
index bab04a5..889485d 100644
--- a/tools/dom/templates/html/impl/impl_Touch.darttemplate
+++ b/tools/dom/templates/html/impl/impl_Touch.darttemplate
@@ -20,14 +20,14 @@
   int get __radiusX => JS('num', '#.radiusX', this).round();
   int get __radiusY => JS('num', '#.radiusY', this).round();
 $else
-  int get __clientX => _blink.BlinkTouch.instance.clientX_Getter_(unwrap_jso(this)).round();
-  int get __clientY => _blink.BlinkTouch.instance.clientY_Getter_(unwrap_jso(this)).round();
-  int get __screenX => _blink.BlinkTouch.instance.screenX_Getter_(unwrap_jso(this)).round();
-  int get __screenY => _blink.BlinkTouch.instance.screenY_Getter_(unwrap_jso(this)).round();
-  int get __pageX => _blink.BlinkTouch.instance.pageX_Getter_(unwrap_jso(this)).round();
-  int get __pageY => _blink.BlinkTouch.instance.pageY_Getter_(unwrap_jso(this)).round();
-  int get __radiusX => _blink.BlinkTouch.instance.radiusX_Getter_(unwrap_jso(this)).round();
-  int get __radiusY => _blink.BlinkTouch.instance.radiusY_Getter_(unwrap_jso(this)).round();
+  int get __clientX => _blink.BlinkTouch.instance.clientX_Getter_(this).round();
+  int get __clientY => _blink.BlinkTouch.instance.clientY_Getter_(this).round();
+  int get __screenX => _blink.BlinkTouch.instance.screenX_Getter_(this).round();
+  int get __screenY => _blink.BlinkTouch.instance.screenY_Getter_(this).round();
+  int get __pageX => _blink.BlinkTouch.instance.pageX_Getter_(this).round();
+  int get __pageY => _blink.BlinkTouch.instance.pageY_Getter_(this).round();
+  int get __radiusX => _blink.BlinkTouch.instance.radiusX_Getter_(this).round();
+  int get __radiusY => _blink.BlinkTouch.instance.radiusY_Getter_(this).round();
 $endif
 
   @DomName('Touch.clientX')
diff --git a/tools/dom/templates/html/impl/impl_WebGLRenderingContext.darttemplate b/tools/dom/templates/html/impl/impl_WebGLRenderingContext.darttemplate
index a78940e..029a38b 100644
--- a/tools/dom/templates/html/impl/impl_WebGLRenderingContext.darttemplate
+++ b/tools/dom/templates/html/impl/impl_WebGLRenderingContext.darttemplate
@@ -11,85 +11,68 @@
    * Sets the currently bound texture to [data].
    *
    * [data] can be either an [ImageElement], a
-   * [CanvasElement], a [VideoElement], or an [ImageData] object.
+   * [CanvasElement], a [VideoElement], [TypedData] or an [ImageData] object.
    *
-   * To use [texImage2d] with a TypedData object, use [texImage2dTyped].
-   *
+   * This is deprecated in favor of [texImage2D].
    */
-$if DART2JS
-  @JSName('texImage2D')
-  void texImage2DUntyped(int targetTexture, int levelOfDetail, 
-      int internalFormat, int format, int type, data) native;
-$else
-  void texImage2DUntyped(int targetTexture, int levelOfDetail, 
+  @Deprecated("Use texImage2D")
+  void texImage2DUntyped(int targetTexture, int levelOfDetail,
       int internalFormat, int format, int type, data) {
-    if (data is ImageElement) {
-      texImage2DImage(targetTexture, levelOfDetail, internalFormat, format,
-          type, data);
-    } else if (data is ImageData) {
-      texImage2DImageData(targetTexture, levelOfDetail, internalFormat, format,
-          type, data);
-    } else if (data is CanvasElement) {
-      texImage2DCanvas(targetTexture, levelOfDetail, internalFormat, format,
-          type, data);
-    } else {
-      texImage2DVideo(targetTexture, levelOfDetail, internalFormat, format,
-          type, data);
-    }
+    texImage2D(targetText, levelOfDetail, internalFormat, format, type, data);
   }
-$endif
 
   /**
    * Sets the currently bound texture to [data].
+   *
+   * This is deprecated in favour of [texImage2D].
    */
-$if DART2JS
-  @JSName('texImage2D')
-  void texImage2DTyped(int targetTexture, int levelOfDetail,
-      int internalFormat, int width, int height, int border, int format,
-      int type, TypedData data) native;
-$else
+  @Deprecated("Use texImage2D")
   void texImage2DTyped(int targetTexture, int levelOfDetail, int internalFormat,
       int width, int height, int border, int format, int type, TypedData data) {
     texImage2D(targetTexture, levelOfDetail, internalFormat,
         width, height, border, format, type, data);
   }
-$endif
 
   /**
    * Updates a sub-rectangle of the currently bound texture to [data].
    *
    * [data] can be either an [ImageElement], a
-   * [CanvasElement], a [VideoElement], or an [ImageData] object.
-   *
-   * To use [texSubImage2d] with a TypedData object, use [texSubImage2dTyped].
+   * [CanvasElement], a [VideoElement], [TypedData] or an [ImageData] object.
    *
    */
-$if DART2JS
-  @JSName('texSubImage2D')
+  @Deprecated("Use texSubImage2D")
   void texSubImage2DUntyped(int targetTexture, int levelOfDetail,
-      int xOffset, int yOffset, int format, int type, data) native;
-$else
-  void texSubImage2DUntyped(int targetTexture, int levelOfDetail, 
       int xOffset, int yOffset, int format, int type, data) {
     texSubImage2D(targetTexture, levelOfDetail, xOffset, yOffset,
         format, type, data);
   }
-$endif
 
   /**
    * Updates a sub-rectangle of the currently bound texture to [data].
    */
-$if DART2JS
-  @JSName('texSubImage2D')
+  @Deprecated("Use texSubImage2D")
   void texSubImage2DTyped(int targetTexture, int levelOfDetail,
       int xOffset, int yOffset, int width, int height, int border, int format,
-      int type, TypedData data) native;
-$else
-  void texSubImage2DTyped(int targetTexture, int levelOfDetail,
-      int xOffset, int yOffset, int width, int height, int format,
       int type, TypedData data) {
     texSubImage2D(targetTexture, levelOfDetail, xOffset, yOffset,
         width, height, format, type, data);
   }
-$endif
+
+  /**
+   * Set the bufferData to [data].
+   */
+  @Deprecated("Use bufferData")
+  void bufferDataTyped(int target, TypedData data, int usage) {
+    bufferData2D(targetTexture, levelOfDetail, xOffset, yOffset,
+        format, type, data);
+  }
+
+  /**
+   * Set the bufferSubData to [data].
+   */
+  @Deprecated("Use bufferSubData")
+  void bufferSubDataTyped(int target, TypedData data, int usage) {
+    bufferSubData2D(targetTexture, levelOfDetail, xOffset, yOffset,
+        format, type, data);
+  }
 }
diff --git a/tools/dom/templates/html/impl/impl_WheelEvent.darttemplate b/tools/dom/templates/html/impl/impl_WheelEvent.darttemplate
index d4f5d3f..f141680 100644
--- a/tools/dom/templates/html/impl/impl_WheelEvent.darttemplate
+++ b/tools/dom/templates/html/impl/impl_WheelEvent.darttemplate
@@ -44,7 +44,7 @@
         type, convertDartToNative_Dictionary(options));
 
 $else
-    return wrap_jso(_blink.BlinkWheelEvent.instance.constructorCallback_2_(type, convertDartToNative_Dictionary(options)));
+    return _blink.BlinkWheelEvent.instance.constructorCallback_2_(type, convertDartToNative_Dictionary(options));
 $endif
   }
 
diff --git a/tools/dom/templates/html/impl/impl_Window.darttemplate b/tools/dom/templates/html/impl/impl_Window.darttemplate
index 0b64409..521fd00 100644
--- a/tools/dom/templates/html/impl/impl_Window.darttemplate
+++ b/tools/dom/templates/html/impl/impl_Window.darttemplate
@@ -297,19 +297,19 @@
 $else
   @DomName('Window.pageXOffset')
   @DocsEditable()
-  int get pageXOffset => _blink.BlinkWindow.instance.pageXOffset_Getter_(unwrap_jso(this)).round();
+  int get pageXOffset => _blink.BlinkWindow.instance.pageXOffset_Getter_(this).round();
 
   @DomName('Window.pageYOffset')
   @DocsEditable()
-  int get pageYOffset => _blink.BlinkWindow.instance.pageYOffset_Getter_(unwrap_jso(this)).round();
+  int get pageYOffset => _blink.BlinkWindow.instance.pageYOffset_Getter_(this).round();
 
   @DomName('Window.scrollX')
   @DocsEditable()
-  int get scrollX => _blink.BlinkWindow.instance.scrollX_Getter_(unwrap_jso(this)).round();
+  int get scrollX => _blink.BlinkWindow.instance.scrollX_Getter_(this).round();
 
   @DomName('Window.scrollY')
   @DocsEditable()
-  int get scrollY => _blink.BlinkWindow.instance.scrollY_Getter_(unwrap_jso(this)).round();
+  int get scrollY => _blink.BlinkWindow.instance.scrollY_Getter_(this).round();
 $endif
 }
 
diff --git a/tools/dom/templates/html/impl/impl_WorkerLocation.darttemplate b/tools/dom/templates/html/impl/impl_WorkerLocation.darttemplate
index 73623a9..97ace81 100644
--- a/tools/dom/templates/html/impl/impl_WorkerLocation.darttemplate
+++ b/tools/dom/templates/html/impl/impl_WorkerLocation.darttemplate
@@ -9,15 +9,15 @@
 $!MEMBERS
 $if DARTIUM
   // Override these methods for Dartium _WorkerLocation can't be abstract.
-  String get hash => _blink.BlinkWorkerLocation.instance.hash_Getter_(unwrap_jso(this));
-  String get host => _blink.BlinkWorkerLocation.instance.host_Getter_(unwrap_jso(this));
-  String get hostname => _blink.BlinkWorkerLocation.instance.hostname_Getter_(unwrap_jso(this));
-  String get href => _blink.BlinkWorkerLocation.instance.href_Getter_(unwrap_jso(this));
-  String get origin => _blink.BlinkWorkerLocation.instance.origin_Getter_(unwrap_jso(this));
-  String get pathname => _blink.BlinkWorkerLocation.instance.pathname_Getter_(unwrap_jso(this));
-  String get port => _blink.BlinkWorkerLocation.instance.port_Getter_(unwrap_jso(this));
-  String get protocol => _blink.BlinkWorkerLocation.instance.protocol_Getter_(unwrap_jso(this));
-  String get search => _blink.BlinkWorkerLocation.instance.search_Getter_(unwrap_jso(this));
+  String get hash => _blink.BlinkWorkerLocation.instance.hash_Getter_(this);
+  String get host => _blink.BlinkWorkerLocation.instance.host_Getter_(this);
+  String get hostname => _blink.BlinkWorkerLocation.instance.hostname_Getter_(this);
+  String get href => _blink.BlinkWorkerLocation.instance.href_Getter_(this);
+  String get origin => _blink.BlinkWorkerLocation.instance.origin_Getter_(this);
+  String get pathname => _blink.BlinkWorkerLocation.instance.pathname_Getter_(this);
+  String get port => _blink.BlinkWorkerLocation.instance.port_Getter_(this);
+  String get protocol => _blink.BlinkWorkerLocation.instance.protocol_Getter_(this);
+  String get search => _blink.BlinkWorkerLocation.instance.search_Getter_(this);
 $endif
 }
 
diff --git a/tools/dom/templates/html/impl/impl_WorkerNavigator.darttemplate b/tools/dom/templates/html/impl/impl_WorkerNavigator.darttemplate
index 137390c..18707fb 100644
--- a/tools/dom/templates/html/impl/impl_WorkerNavigator.darttemplate
+++ b/tools/dom/templates/html/impl/impl_WorkerNavigator.darttemplate
@@ -9,15 +9,15 @@
 $!MEMBERS
 $if DARTIUM
   // Override these methods for Dartium _WorkerNavigator can't be abstract.
-  String get appCodeName => _blink.BlinkWorkerNavigator.instance.appCodeName_Getter_(unwrap_jso(this));
-  String get appName => _blink.BlinkWorkerNavigator.instance.appCodeName_Getter_(unwrap_jso(this));
-  String get appVersion => _blink.BlinkWorkerNavigator.instance.appVersion_Getter_(unwrap_jso(this));
-  bool get dartEnabled => _blink.BlinkWorkerNavigator.instance.dartEnabled_Getter_(unwrap_jso(this));
-  String get platform => _blink.BlinkWorkerNavigator.instance.platform_Getter_(unwrap_jso(this));
-  String get product => _blink.BlinkWorkerNavigator.instance.product_Getter_(unwrap_jso(this));
-  String get userAgent => _blink.BlinkWorkerNavigator.instance.userAgent_Getter_(unwrap_jso(this));
-  int get hardwareConcurrency => _blink.BlinkWorkerNavigator.instance.hardwareConcurrency_Getter_(unwrap_jso(this));
-  bool get onLine => _blink.BlinkWorkerNavigator.instance.onLine_Getter_(unwrap_jso(this));
+  String get appCodeName => _blink.BlinkWorkerNavigator.instance.appCodeName_Getter_(this);
+  String get appName => _blink.BlinkWorkerNavigator.instance.appCodeName_Getter_(this);
+  String get appVersion => _blink.BlinkWorkerNavigator.instance.appVersion_Getter_(this);
+  bool get dartEnabled => _blink.BlinkWorkerNavigator.instance.dartEnabled_Getter_(this);
+  String get platform => _blink.BlinkWorkerNavigator.instance.platform_Getter_(this);
+  String get product => _blink.BlinkWorkerNavigator.instance.product_Getter_(this);
+  String get userAgent => _blink.BlinkWorkerNavigator.instance.userAgent_Getter_(this);
+  int get hardwareConcurrency => _blink.BlinkWorkerNavigator.instance.hardwareConcurrency_Getter_(this);
+  bool get onLine => _blink.BlinkWorkerNavigator.instance.onLine_Getter_(this);
 $endif
 }
 
diff --git a/tools/dom/templates/html/impl/impl_XMLHttpRequest.darttemplate b/tools/dom/templates/html/impl/impl_XMLHttpRequest.darttemplate
index 7ee15d1..9ad00f6 100644
--- a/tools/dom/templates/html/impl/impl_XMLHttpRequest.darttemplate
+++ b/tools/dom/templates/html/impl/impl_XMLHttpRequest.darttemplate
@@ -404,9 +404,9 @@
 $if JSINTEROP
   void open(String method, String url, {bool async, String user, String password}) {
     if (async == null && user == null && password == null) {
-      _blink.BlinkXMLHttpRequest.instance.open_Callback_2_(unwrap_jso(this), method, url);
+      _blink.BlinkXMLHttpRequest.instance.open_Callback_2_(this, method, url);
     } else {
-      _blink.BlinkXMLHttpRequest.instance.open_Callback_5_(unwrap_jso(this), method, url, async, user, password);
+      _blink.BlinkXMLHttpRequest.instance.open_Callback_5_(this, method, url, async, user, password);
     }
   }
 $else
diff --git a/tools/testing/dart/test_runner.dart b/tools/testing/dart/test_runner.dart
index a4abf47..0fe9f18 100644
--- a/tools/testing/dart/test_runner.dart
+++ b/tools/testing/dart/test_runner.dart
@@ -2634,16 +2634,6 @@
 }
 
 bool shouldRetryCommand(CommandOutput output) {
-  var command = output.command;
-  // We rerun tests on Safari because 6.2 and 7.1 are flaky. Issue 21434.
-  if (command is BrowserTestCommand &&
-      command.retry &&
-      command.browser == 'safari' &&
-      output is BrowserControllerTestOutcome &&
-      output._rawOutcome != Expectation.PASS) {
-    return true;
-  }
-
   if (!output.successful) {
     List<String> stdout, stderr;
 
@@ -2668,6 +2658,7 @@
     }
 
     // We currently rerun dartium tests, see issue 14074.
+    final command = output.command;
     if (command is BrowserTestCommand &&
         command.retry &&
         command.browser == 'dartium') {